|
1 | | -import { FC } from 'react'; |
| 1 | +import { FC, lazy, Suspense, SuspenseProps } from 'react'; |
2 | 2 |
|
3 | 3 | import { ActivityType } from '@/interfaces/interactionProcess'; |
4 | 4 |
|
5 | 5 | import { useLocalContext } from '@graasp/apps-query-client'; |
6 | 6 | import { useActivityContext } from '../context/ActivityContext'; |
7 | | -import ResponseCollection from '../responseCollection/ResponseCollection'; |
8 | | -import ResponseEvaluation from '../responseEvaluation/ResponseEvaluation'; |
9 | 7 | import OrchestrationBar from '../orchestration/OrchestrationBar'; |
10 | 8 | import { useSettings } from '../context/SettingsContext'; |
11 | | -import ResultsView from '../results/ResultsView'; |
| 9 | +import Loader from '../common/Loader'; |
| 10 | + |
| 11 | +const ActivitySuspense: FC<SuspenseProps> = (props) => ( |
| 12 | + <Suspense fallback={<Loader />} {...props}> |
| 13 | + {props.children} |
| 14 | + </Suspense> |
| 15 | +); |
| 16 | + |
| 17 | +const getResponseEvaluation = (): JSX.Element => { |
| 18 | + const ResponseEvaluation = lazy( |
| 19 | + () => import('../responseEvaluation/ResponseEvaluation.js'), |
| 20 | + ); |
| 21 | + return ( |
| 22 | + <ActivitySuspense> |
| 23 | + <ResponseEvaluation /> |
| 24 | + </ActivitySuspense> |
| 25 | + ); |
| 26 | +}; |
| 27 | + |
| 28 | +const getResultsView = (): JSX.Element => { |
| 29 | + const ResultsView = lazy(() => import('../results/ResultsView.js')); |
| 30 | + return ( |
| 31 | + <ActivitySuspense> |
| 32 | + <ResultsView /> |
| 33 | + </ActivitySuspense> |
| 34 | + ); |
| 35 | +}; |
| 36 | + |
| 37 | +const getResponseCollection = (): JSX.Element => { |
| 38 | + const ResponseCollection = lazy( |
| 39 | + () => import('../responseCollection/ResponseCollection.js'), |
| 40 | + ); |
| 41 | + return ( |
| 42 | + <ActivitySuspense> |
| 43 | + <ResponseCollection /> |
| 44 | + </ActivitySuspense> |
| 45 | + ); |
| 46 | +}; |
12 | 47 |
|
13 | 48 | const getActivityComponent = (activity: ActivityType): JSX.Element => { |
14 | 49 | switch (activity) { |
15 | 50 | case ActivityType.Evaluation: |
16 | | - return <ResponseEvaluation />; |
| 51 | + return getResponseEvaluation(); |
17 | 52 | case ActivityType.Results: |
18 | | - return <ResultsView />; |
| 53 | + return getResultsView(); |
19 | 54 | default: |
20 | | - return <ResponseCollection />; |
| 55 | + return getResponseCollection(); |
21 | 56 | } |
22 | 57 | }; |
23 | 58 |
|
|
0 commit comments