1- import { useEffect , useState } from 'react' ;
1+ import { useMemo , useState } from 'react' ;
22
33import { useLocalContext } from '@graasp/apps-query-client' ;
44import { PermissionLevel } from '@graasp/sdk' ;
55
6- import { CurrentStateAppData , CurrentStateData } from '@/config/appDataTypes' ;
6+ import { CurrentStateData } from '@/config/appDataTypes' ;
77import { INITIAL_STATE } from '@/config/constants' ;
88import { ActivityStatus , ActivityType } from '@/interfaces/interactionProcess' ;
99import { useAppDataContext } from '@/modules/context/AppDataContext' ;
1010import { useSettings } from '@/modules/context/SettingsContext' ;
11- import { getAllStates , getCurrentRound , getCurrentState } from '@/utils/state' ;
11+ import { getAllStates , getCurrentState } from '@/utils/state' ;
1212
1313export interface UseActivityStateValues {
1414 activityState : {
@@ -26,23 +26,19 @@ export interface UseActivityStateValues {
2626}
2727
2828const useActivityState = ( ) : UseActivityStateValues => {
29- const [ round , setRound ] = useState ( 0 ) ;
3029 const [ stateWarning , setStateWarning ] = useState ( false ) ;
3130 const { appData, postAppData, patchAppData, deleteAppData } =
3231 useAppDataContext ( ) ;
3332 const { orchestrator } = useSettings ( ) ;
34- const [ activityState , setActivityState ] = useState < CurrentStateAppData > ( ) ;
3533 const { permission } = useLocalContext ( ) ;
3634
37- useEffect ( ( ) => {
35+ const activityState = useMemo ( ( ) => {
3836 const state = getCurrentState ( appData , orchestrator . id ) ;
3937 setStateWarning ( state ?. multipleStatesFound === true ) ;
40- setActivityState ( state . currentState ) ;
41- const r = getCurrentRound ( appData , orchestrator . id ) ;
42- if ( r ) {
43- setRound ( r ) ;
44- }
45- } , [ appData , orchestrator . id , round ] ) ;
38+ return state . currentState ;
39+ } , [ appData , orchestrator ] ) ;
40+
41+ const round = useMemo ( ( ) => activityState ?. data . round || 0 , [ activityState ] ) ;
4642
4743 const postDefaultActivityState = ( ) : void => {
4844 if ( permission === PermissionLevel . Admin ) {
@@ -74,7 +70,6 @@ const useActivityState = (): UseActivityStateValues => {
7470
7571 const nextRound = ( ) : void => {
7672 const newRound = round + 1 ;
77- setRound ( newRound ) ;
7873 updateActivityState ( {
7974 round : newRound ,
8075 } ) ;
@@ -95,7 +90,6 @@ const useActivityState = (): UseActivityStateValues => {
9590 const states = getAllStates ( appData ) ;
9691 states . forEach ( ( { id } ) => deleteAppData ( { id } ) ) ;
9792 postDefaultActivityState ( ) ;
98- setRound ( 0 ) ;
9993 } ;
10094
10195 return {
0 commit comments