diff --git a/site/scripts/build-yaml-to-dts.ts b/site/scripts/build-yaml-to-dts.ts index 6b0787c86..849c5b79d 100644 --- a/site/scripts/build-yaml-to-dts.ts +++ b/site/scripts/build-yaml-to-dts.ts @@ -4,8 +4,8 @@ import { Project } from 'ts-morph' import yaml from 'yaml' const buildYamlToDts = [ - './source/pages/Simulateurs/économie-collaborative/activités.yaml', - './source/pages/Simulateurs/économie-collaborative/activités.en.yaml', + './source/pages/assistants/économie-collaborative/activités.yaml', + './source/pages/assistants/économie-collaborative/activités.en.yaml', ] const transform = (data: Record, filePath: string) => { diff --git a/site/scripts/runScriptOnFileChange/index.ts b/site/scripts/runScriptOnFileChange/index.ts index 0b4d18f31..fad5e6ab7 100644 --- a/site/scripts/runScriptOnFileChange/index.ts +++ b/site/scripts/runScriptOnFileChange/index.ts @@ -9,8 +9,8 @@ export const runScriptOnFileChange = async () => { options: [ { paths: [ - './source/pages/Simulateurs/économie-collaborative/activités.yaml', - './source/pages/Simulateurs/économie-collaborative/activités.en.yaml', + './source/pages/assistants/économie-collaborative/activités.yaml', + './source/pages/assistants/économie-collaborative/activités.en.yaml', ], run: 'yarn build:yaml-to-dts', }, diff --git a/site/source/components/Redirections.tsx b/site/source/components/Redirections.tsx index ee25fa4d0..fce912fbe 100644 --- a/site/source/components/Redirections.tsx +++ b/site/source/components/Redirections.tsx @@ -60,6 +60,16 @@ export default function Redirections({ children }: Props) { absoluteSitePaths.assistants['choix-du-statut'].index ), }, + { + paths: [ + '/simulateurs/économie-collaborative/*', + '/calculators/sharing-economy/*', + ], + to: decodeURI(pathname).replace( + /^\/(simulateurs|calculators)/, + absoluteSitePaths.assistants.index + ), + }, ] satisfies { paths: string[]; to: string }[] }, [ absoluteSitePaths.assistants, diff --git a/site/source/pages/Plan.tsx b/site/source/pages/Plan.tsx index 0e4fbb21f..92f34f835 100644 --- a/site/source/pages/Plan.tsx +++ b/site/source/pages/Plan.tsx @@ -153,7 +153,7 @@ export default function Plan() {
  • Assistant à la déclaration des revenus des plateformes en diff --git a/site/source/pages/Simulateurs/metadata-src.ts b/site/source/pages/Simulateurs/metadata-src.ts index 139a9cf00..8cc742f89 100644 --- a/site/source/pages/Simulateurs/metadata-src.ts +++ b/site/source/pages/Simulateurs/metadata-src.ts @@ -6,6 +6,7 @@ import { déclarationRevenuIndépendantBetaConfig } from '../assistants/declarat import { demandeMobilitéConfig } from '../assistants/demande-mobilité/config' import { pourMonEntrepriseConfig } from '../assistants/pour-mon-entreprise/config' import { rechercheCodeApeConfig } from '../assistants/recherche-code-ape/config' +import { économieCollaborativeConfig } from '../assistants/économie-collaborative/config' import { artisteAuteurConfig } from './artiste-auteur/config' import { autoEntrepreneurConfig } from './auto-entrepreneur/config' import { auxiliaireMédicalConfig } from './auxiliaire-médical/config' @@ -30,7 +31,6 @@ import { professionLibéraleConfig } from './profession-libérale/config' import { sageFemmeConfig } from './sage-femme/config' import { salariéConfig } from './salarié/config' import { sasuConfig } from './sasu/config' -import { économieCollaborativeConfig } from './économie-collaborative/config' /** * Contient l'intégralité des données concernant les différents simulateurs et assistants diff --git a/site/source/pages/assistants/choix-du-statut/choix-statut-juridique/config.ts b/site/source/pages/assistants/choix-du-statut/choix-statut-juridique/config.ts index de4047665..9ab3bce76 100644 --- a/site/source/pages/assistants/choix-du-statut/choix-statut-juridique/config.ts +++ b/site/source/pages/assistants/choix-du-statut/choix-statut-juridique/config.ts @@ -1,10 +1,6 @@ -// import {NavigateToChoixStatutJuridique} from '.' - -import { NavigateToChoixStatutJuridique } from '.' import ChoixDuStatut from '..' import { config } from '../../../Simulateurs/configs/config' import { SimulatorsDataParams } from '../../../Simulateurs/configs/types' -import GuideStatut from '../GuideStatut' export function choixStatutJuridiqueConfig({ t, diff --git a/site/source/pages/Simulateurs/économie-collaborative/ActiviteCard/index.tsx b/site/source/pages/assistants/économie-collaborative/ActiviteCard/index.tsx similarity index 98% rename from site/source/pages/Simulateurs/économie-collaborative/ActiviteCard/index.tsx rename to site/source/pages/assistants/économie-collaborative/ActiviteCard/index.tsx index 37cac0ff3..56c945d4f 100644 --- a/site/source/pages/Simulateurs/économie-collaborative/ActiviteCard/index.tsx +++ b/site/source/pages/assistants/économie-collaborative/ActiviteCard/index.tsx @@ -111,7 +111,7 @@ export const ActiviteCard = ({ light onClick={(e) => e.stopPropagation()} to={ - absoluteSitePaths.simulateurs.économieCollaborative.index + + absoluteSitePaths.assistants.économieCollaborative.index + '/' + title } diff --git a/site/source/pages/Simulateurs/économie-collaborative/Activité.tsx b/site/source/pages/assistants/économie-collaborative/Activité.tsx similarity index 97% rename from site/source/pages/Simulateurs/économie-collaborative/Activité.tsx rename to site/source/pages/assistants/économie-collaborative/Activité.tsx index 630e01158..4a8aa8227 100644 --- a/site/source/pages/Simulateurs/économie-collaborative/Activité.tsx +++ b/site/source/pages/assistants/économie-collaborative/Activité.tsx @@ -35,9 +35,7 @@ export default function Activité() { const activité = getTranslatedActivité(title, language) if (state && !(title in state)) { return ( - + ) } @@ -66,7 +64,7 @@ export default function Activité() { } const seuilRevenus = state?.[title].seuilRevenus ?? undefined - const estExonérée = estExonéréeSelector(title)(state) + const estExonérée = state && estExonéréeSelector(title)(state) return (
    diff --git a/site/source/pages/Simulateurs/économie-collaborative/ActivitésSelection.tsx b/site/source/pages/assistants/économie-collaborative/ActivitésSelection.tsx similarity index 91% rename from site/source/pages/Simulateurs/économie-collaborative/ActivitésSelection.tsx rename to site/source/pages/assistants/économie-collaborative/ActivitésSelection.tsx index b38b2113c..e56cdc031 100644 --- a/site/source/pages/Simulateurs/économie-collaborative/ActivitésSelection.tsx +++ b/site/source/pages/assistants/économie-collaborative/ActivitésSelection.tsx @@ -86,13 +86,13 @@ type ActivitéSelectionProps = { export const ActivitéSelection = ({ activités, - currentActivité, + currentActivité = '', }: ActivitéSelectionProps) => { const { state } = useContext(StoreContext) - const activitéRépondue = activitésRéponduesSelector(state) - const nextButtonDisabled = activitésEffectuéesSelector(state).every( - (a) => !activités.includes(a) - ) + const activitéRépondue = (state && activitésRéponduesSelector(state)) ?? [] + const nextButtonDisabled = + state !== null && + activitésEffectuéesSelector(state).every((a) => !activités.includes(a)) return ( <> @@ -114,10 +114,7 @@ export const ActivitéSelection = ({ })} - + ) } diff --git a/site/source/pages/Simulateurs/économie-collaborative/Exonérations.tsx b/site/source/pages/assistants/économie-collaborative/Exonérations.tsx similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/Exonérations.tsx rename to site/source/pages/assistants/économie-collaborative/Exonérations.tsx diff --git a/site/source/pages/Simulateurs/économie-collaborative/NextButton.tsx b/site/source/pages/assistants/économie-collaborative/NextButton.tsx similarity index 83% rename from site/source/pages/Simulateurs/économie-collaborative/NextButton.tsx rename to site/source/pages/assistants/économie-collaborative/NextButton.tsx index f70e5b322..c3dbffcab 100644 --- a/site/source/pages/Simulateurs/économie-collaborative/NextButton.tsx +++ b/site/source/pages/assistants/économie-collaborative/NextButton.tsx @@ -16,12 +16,12 @@ type NextButtonProps = { export default function NextButton({ activité, disabled }: NextButtonProps) { const { absoluteSitePaths } = useSitePaths() const { state, dispatch } = useContext(StoreContext) - const nextActivité = nextActivitéSelector(state, activité) + const nextActivité = state && nextActivitéSelector(state, activité) const nextTo = nextActivité - ? absoluteSitePaths.simulateurs.économieCollaborative.index + + ? absoluteSitePaths.assistants.économieCollaborative.index + '/' + nextActivité - : absoluteSitePaths.simulateurs.économieCollaborative.votreSituation + : absoluteSitePaths.assistants.économieCollaborative.votreSituation return (

    diff --git a/site/source/pages/Simulateurs/économie-collaborative/StoreContext.tsx b/site/source/pages/assistants/économie-collaborative/StoreContext.tsx similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/StoreContext.tsx rename to site/source/pages/assistants/économie-collaborative/StoreContext.tsx diff --git a/site/source/pages/Simulateurs/économie-collaborative/VotreSituation.tsx b/site/source/pages/assistants/économie-collaborative/VotreSituation.tsx similarity index 97% rename from site/source/pages/Simulateurs/économie-collaborative/VotreSituation.tsx rename to site/source/pages/assistants/économie-collaborative/VotreSituation.tsx index c322e8811..fe7259923 100644 --- a/site/source/pages/Simulateurs/économie-collaborative/VotreSituation.tsx +++ b/site/source/pages/assistants/économie-collaborative/VotreSituation.tsx @@ -30,7 +30,7 @@ export default function VotreSituation() { const { state } = useContext(StoreContext) const { t } = useTranslation() - if (!activitésEffectuéesSelector(state).length) { + if (!state || !activitésEffectuéesSelector(state).length) { return } @@ -169,7 +169,7 @@ const ActivitéList = ({ activités }: { activités: string[] }) => { title={title} answered label={ - régimeGénéralDisponibleSelector(state, title) ? ( + state && régimeGénéralDisponibleSelector(state, title) ? ( Régime général disponible diff --git a/site/source/pages/Simulateurs/économie-collaborative/actions.ts b/site/source/pages/assistants/économie-collaborative/actions.ts similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/actions.ts rename to site/source/pages/assistants/économie-collaborative/actions.ts diff --git a/site/source/pages/Simulateurs/économie-collaborative/activités.en.yaml b/site/source/pages/assistants/économie-collaborative/activités.en.yaml similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/activités.en.yaml rename to site/source/pages/assistants/économie-collaborative/activités.en.yaml diff --git a/site/source/pages/Simulateurs/économie-collaborative/activités.en.yaml.d.ts b/site/source/pages/assistants/économie-collaborative/activités.en.yaml.d.ts similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/activités.en.yaml.d.ts rename to site/source/pages/assistants/économie-collaborative/activités.en.yaml.d.ts diff --git a/site/source/pages/Simulateurs/économie-collaborative/activités.yaml b/site/source/pages/assistants/économie-collaborative/activités.yaml similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/activités.yaml rename to site/source/pages/assistants/économie-collaborative/activités.yaml diff --git a/site/source/pages/Simulateurs/économie-collaborative/activités.yaml.d.ts b/site/source/pages/assistants/économie-collaborative/activités.yaml.d.ts similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/activités.yaml.d.ts rename to site/source/pages/assistants/économie-collaborative/activités.yaml.d.ts diff --git a/site/source/pages/Simulateurs/économie-collaborative/activitésData.ts b/site/source/pages/assistants/économie-collaborative/activitésData.ts similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/activitésData.ts rename to site/source/pages/assistants/économie-collaborative/activitésData.ts diff --git a/site/source/pages/Simulateurs/économie-collaborative/config.ts b/site/source/pages/assistants/économie-collaborative/config.ts similarity index 79% rename from site/source/pages/Simulateurs/économie-collaborative/config.ts rename to site/source/pages/assistants/économie-collaborative/config.ts index cc40f7e51..1edf70c89 100644 --- a/site/source/pages/Simulateurs/économie-collaborative/config.ts +++ b/site/source/pages/assistants/économie-collaborative/config.ts @@ -1,15 +1,27 @@ import ÉconomieCollaborative from '.' -import { config } from '../configs/config' -import { SimulatorsDataParams } from '../configs/types' +import { config } from '../../Simulateurs/configs/config' +import { SimulatorsDataParams } from '../../Simulateurs/configs/types' export function économieCollaborativeConfig({ t, sitePaths, }: SimulatorsDataParams) { return config({ + beta: true, id: 'économie-collaborative', - path: sitePaths.simulateurs.économieCollaborative.index, + pathId: 'assistants.économieCollaborative.index', + path: sitePaths.assistants.économieCollaborative.index, + iframePath: 'economie-collaborative', tracking: 'economie_collaborative', + icône: '🙋', + title: t( + 'pages.économie-collaborative.title', + 'Assistant à la déclaration des revenus des plateformes en ligne' + ), + shortName: t( + 'pages.économie-collaborative.shortname', + 'Assistant économie collaborative' + ), meta: { title: t( 'pages.économie-collaborative.meta.title', @@ -20,18 +32,6 @@ export function économieCollaborativeConfig({ 'Airbnb, Drivy, Blablacar, Leboncoin... Découvrez comment être en règle dans vos déclarations' ), }, - icône: '🙋', - pathId: 'simulateurs.économieCollaborative.index', - iframePath: 'economie-collaborative', - beta: true, - shortName: t( - 'pages.économie-collaborative.shortname', - 'Assistant économie collaborative' - ), - title: t( - 'pages.économie-collaborative.title', - 'Assistant à la déclaration des revenus des plateformes en ligne' - ), component: ÉconomieCollaborative, } as const) } diff --git a/site/source/pages/Simulateurs/économie-collaborative/customReduceReducers.ts b/site/source/pages/assistants/économie-collaborative/customReduceReducers.ts similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/customReduceReducers.ts rename to site/source/pages/assistants/économie-collaborative/customReduceReducers.ts diff --git a/site/source/pages/Simulateurs/économie-collaborative/images/car.svg b/site/source/pages/assistants/économie-collaborative/images/car.svg similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/images/car.svg rename to site/source/pages/assistants/économie-collaborative/images/car.svg diff --git a/site/source/pages/Simulateurs/économie-collaborative/images/checklist.svg b/site/source/pages/assistants/économie-collaborative/images/checklist.svg similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/images/checklist.svg rename to site/source/pages/assistants/économie-collaborative/images/checklist.svg diff --git a/site/source/pages/Simulateurs/économie-collaborative/images/multitasking.svg b/site/source/pages/assistants/économie-collaborative/images/multitasking.svg similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/images/multitasking.svg rename to site/source/pages/assistants/économie-collaborative/images/multitasking.svg diff --git a/site/source/pages/Simulateurs/économie-collaborative/images/pizzaSharing.svg b/site/source/pages/assistants/économie-collaborative/images/pizzaSharing.svg similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/images/pizzaSharing.svg rename to site/source/pages/assistants/économie-collaborative/images/pizzaSharing.svg diff --git a/site/source/pages/Simulateurs/économie-collaborative/index.tsx b/site/source/pages/assistants/économie-collaborative/index.tsx similarity index 92% rename from site/source/pages/Simulateurs/économie-collaborative/index.tsx rename to site/source/pages/assistants/économie-collaborative/index.tsx index 5480db865..0a46aa522 100644 --- a/site/source/pages/Simulateurs/économie-collaborative/index.tsx +++ b/site/source/pages/assistants/économie-collaborative/index.tsx @@ -15,7 +15,7 @@ import VotreSituation from './VotreSituation' export default function ÉconomieCollaborative() { const { relativeSitePaths, absoluteSitePaths } = useSitePaths() - const { économieCollaborative } = absoluteSitePaths.simulateurs + const { économieCollaborative } = absoluteSitePaths.assistants const iframePath = useSimulatorsData()['économie-collaborative'].iframePath ?? '' const indexPath = useIsEmbedded() @@ -41,7 +41,7 @@ export default function ÉconomieCollaborative() { } /> } /> diff --git a/site/source/pages/Simulateurs/économie-collaborative/reducer.ts b/site/source/pages/assistants/économie-collaborative/reducer.ts similarity index 100% rename from site/source/pages/Simulateurs/économie-collaborative/reducer.ts rename to site/source/pages/assistants/économie-collaborative/reducer.ts diff --git a/site/source/pages/Simulateurs/économie-collaborative/selectors.js b/site/source/pages/assistants/économie-collaborative/selectors.ts similarity index 68% rename from site/source/pages/Simulateurs/économie-collaborative/selectors.js rename to site/source/pages/assistants/économie-collaborative/selectors.ts index 5ea2d3b5b..96e0a09b7 100644 --- a/site/source/pages/Simulateurs/économie-collaborative/selectors.js +++ b/site/source/pages/assistants/économie-collaborative/selectors.ts @@ -1,8 +1,14 @@ import { getActivité, hasConditions } from './activitésData' +import { State } from './reducer' const filterActivités = - (filter = () => true) => - (state) => + ( + filter: ( + activitéData: State[keyof State], + activitéTitle: string + ) => boolean = () => true + ) => + (state: State) => Object.entries(state) .filter( ([activitéTitle, activitéData]) => @@ -10,33 +16,38 @@ const filterActivités = ) .map(([activité]) => activité) -export const nextActivitéSelector = (state, currentActivité) => +export const nextActivitéSelector = (state: State, currentActivité?: string) => filterActivités( ({ vue }, activitéTitle) => !vue && activitéTitle !== currentActivité )(state)[0] -const estExonérée = (critèresExonération, activité) => { +const estExonérée = ( + critèresExonération: State[keyof State]['critèresExonération'], + activité: keyof State +) => { if (!critèresExonération.length) { return false } - if (getActivité(activité)['exonérée si']) { + const acti = getActivité(activité) + if ('exonérée si' in acti && acti['exonérée si']) { return critèresExonération.some(Boolean) } + return critèresExonération.every((value) => value === false) } -export const estExonéréeSelector = (activité) => (state) => +export const estExonéréeSelector = (activité: string) => (state: State) => estExonérée(state[activité].critèresExonération, activité) export const activitésEffectuéesSelector = filterActivités() export const activitésRéponduesSelector = filterActivités( ({ vue }, activité) => vue && hasConditions(activité) ) -export const déclarationsSelector = (state) => ({ +export const déclarationsSelector = (state: State) => ({ RÉGIME_GÉNÉRAL_DISPONIBLE: filterActivités( ({ seuilRevenus, critèresExonération }, activité) => ['RÉGIME_GÉNÉRAL_NON_DISPONIBLE', 'RÉGIME_GÉNÉRAL_DISPONIBLE'].includes( - seuilRevenus + seuilRevenus ?? '' ) && !estExonérée(critèresExonération, activité) )(state), AUCUN: filterActivités( @@ -50,6 +61,9 @@ export const déclarationsSelector = (state) => ({ )(state), }) -export const régimeGénéralDisponibleSelector = (state, activité) => +export const régimeGénéralDisponibleSelector = ( + state: State, + activité: string +) => state[activité].seuilRevenus === 'RÉGIME_GÉNÉRAL_DISPONIBLE' && !estExonérée(state[activité].critèresExonération, activité) diff --git a/site/source/sitePaths.ts b/site/source/sitePaths.ts index c07f0b01e..6f07be5d8 100644 --- a/site/source/sitePaths.ts +++ b/site/source/sitePaths.ts @@ -29,6 +29,10 @@ const rawSitePathsFr = { 'recherche-code-ape': 'recherche-code-ape', 'déclaration-charges-sociales-indépendant': 'declaration-charges-sociales-independant', + économieCollaborative: { + index: 'économie-collaborative', + votreSituation: 'votre-situation', + }, 'pour-mon-entreprise': { index: 'pour-mon-entreprise', entreprise: ':entreprise', @@ -80,10 +84,6 @@ const rawSitePathsFr = { cipav: 'cipav', }, 'chômage-partiel': 'chômage-partiel', - économieCollaborative: { - index: 'économie-collaborative', - votreSituation: 'votre-situation', - }, is: 'impot-societe', dividendes: 'dividendes', }, @@ -114,6 +114,10 @@ const rawSitePathsEn = { 'recherche-code-ape': 'search-code-ape', 'déclaration-charges-sociales-indépendant': 'declaration-social-charges-independent', + économieCollaborative: { + index: 'sharing-economy', + votreSituation: 'your-situation', + }, 'pour-mon-entreprise': { index: 'for-my-business', entreprise: ':entreprise', @@ -165,10 +169,6 @@ const rawSitePathsEn = { 'expert-comptable': 'accountant', cipav: 'cipav', }, - économieCollaborative: { - index: 'sharing-economy', - votreSituation: 'your-situation', - }, is: 'corporate-tax', dividendes: 'dividends', },