mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1import React from 'react'
2import {msg} from '@lingui/macro'
3import {useLingui} from '@lingui/react'
4
5import {Layout, OnboardingControls} from '#/screens/Onboarding/Layout'
6import {Context, initialState, reducer} from '#/screens/Onboarding/state'
7import {StepFinished} from '#/screens/Onboarding/StepFinished'
8import {StepInterests} from '#/screens/Onboarding/StepInterests'
9import {StepProfile} from '#/screens/Onboarding/StepProfile'
10import {Portal} from '#/components/Portal'
11
12export function Onboarding() {
13 const {_} = useLingui()
14 const [state, dispatch] = React.useReducer(reducer, {
15 ...initialState,
16 })
17
18 const interestsDisplayNames = React.useMemo(() => {
19 return {
20 news: _(msg`News`),
21 journalism: _(msg`Journalism`),
22 nature: _(msg`Nature`),
23 art: _(msg`Art`),
24 comics: _(msg`Comics`),
25 writers: _(msg`Writers`),
26 culture: _(msg`Culture`),
27 sports: _(msg`Sports`),
28 pets: _(msg`Pets`),
29 animals: _(msg`Animals`),
30 books: _(msg`Books`),
31 education: _(msg`Education`),
32 climate: _(msg`Climate`),
33 science: _(msg`Science`),
34 politics: _(msg`Politics`),
35 fitness: _(msg`Fitness`),
36 tech: _(msg`Tech`),
37 dev: _(msg`Software Dev`),
38 comedy: _(msg`Comedy`),
39 gaming: _(msg`Video Games`),
40 food: _(msg`Food`),
41 cooking: _(msg`Cooking`),
42 }
43 }, [_])
44
45 return (
46 <Portal>
47 <OnboardingControls.Provider>
48 <Context.Provider
49 value={React.useMemo(
50 () => ({state, dispatch, interestsDisplayNames}),
51 [state, dispatch, interestsDisplayNames],
52 )}>
53 <Layout>
54 {state.activeStep === 'profile' && <StepProfile />}
55 {state.activeStep === 'interests' && <StepInterests />}
56 {state.activeStep === 'finished' && <StepFinished />}
57 </Layout>
58 </Context.Provider>
59 </OnboardingControls.Provider>
60 </Portal>
61 )
62}