5095 move onboardingstatus computation from frontend to backend (#5954)

- move front `onboardingStatus` computing to server side
- add logic to `useSetNextOnboardingStatus`
- update some missing redirections in
`usePageChangeEffectNavigateLocation`
- separate subscriptionStatus from onboardingStatus
This commit is contained in:
martmull
2024-06-28 17:32:02 +02:00
committed by GitHub
parent 1a66db5bff
commit b8f33f6f59
78 changed files with 1767 additions and 1763 deletions

View File

@ -8,7 +8,6 @@ export const UPDATE_WORKSPACE = gql`
displayName
logo
allowImpersonation
subscriptionStatus
}
}
`;

View File

@ -0,0 +1,57 @@
import { act } from 'react-dom/test-utils';
import { renderHook } from '@testing-library/react';
import { RecoilRoot, useSetRecoilState } from 'recoil';
import { v4 } from 'uuid';
import {
CurrentWorkspace,
currentWorkspaceState,
} from '@/auth/states/currentWorkspaceState';
import { useSubscriptionStatus } from '@/workspace/hooks/useSubscriptionStatus';
import { SubscriptionStatus } from '~/generated/graphql';
const currentWorkspace = {
id: '1',
currentBillingSubscription: { status: SubscriptionStatus.Incomplete },
activationStatus: 'active',
allowImpersonation: true,
} as CurrentWorkspace;
const renderHooks = () => {
const { result } = renderHook(
() => {
const subscriptionStatus = useSubscriptionStatus();
const setCurrentWorkspace = useSetRecoilState(currentWorkspaceState);
return {
subscriptionStatus,
setCurrentWorkspace,
};
},
{
wrapper: RecoilRoot,
},
);
return { result };
};
describe('useSubscriptionStatus', () => {
Object.values(SubscriptionStatus).forEach((subscriptionStatus) => {
it(`should return "${subscriptionStatus}"`, async () => {
const { result } = renderHooks();
const { setCurrentWorkspace } = result.current;
act(() => {
setCurrentWorkspace({
...currentWorkspace,
currentBillingSubscription: {
id: v4(),
status: subscriptionStatus,
},
});
});
expect(result.current.subscriptionStatus).toBe(subscriptionStatus);
});
});
});

View File

@ -0,0 +1,9 @@
import { useRecoilValue } from 'recoil';
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
import { SubscriptionStatus } from '~/generated/graphql';
export const useSubscriptionStatus = (): SubscriptionStatus | undefined => {
const currentWorkspace = useRecoilValue(currentWorkspaceState);
return currentWorkspace?.currentBillingSubscription?.status;
};