6431 create new field activationStatus inside workspace table (#6439)

Closes #6431 
- create new field `activationStatus`
- create migration commands
- add logic to update `activationStatus` on workspace activation and on
stripe subscriptionStatus change

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
bosiraphael
2024-07-30 12:36:39 +02:00
committed by GitHub
parent 8e35edad30
commit cd4263f7fd
16 changed files with 242 additions and 30 deletions

View File

@ -6,6 +6,7 @@ import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
import { useFindManyObjectMetadataItems } from '@/object-metadata/hooks/useFindManyObjectMetadataItems';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { getObjectMetadataItemsMock } from '@/object-metadata/utils/getObjectMetadataItemsMock';
import { WorkspaceActivationStatus } from '~/generated/graphql';
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
@ -25,7 +26,7 @@ export const ObjectMetadataItemsLoadEffect = () => {
useEffect(() => {
const toSetObjectMetadataItems =
isUndefinedOrNull(currentUser) ||
currentWorkspace?.activationStatus !== 'active'
currentWorkspace?.activationStatus !== WorkspaceActivationStatus.Active
? getObjectMetadataItemsMock()
: newObjectMetadataItems;
if (

View File

@ -7,6 +7,7 @@ import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadat
import { getObjectMetadataItemsMock } from '@/object-metadata/utils/getObjectMetadataItemsMock';
import { isDefined } from '~/utils/isDefined';
import { WorkspaceActivationStatus } from '~/generated/graphql';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
export const useObjectMetadataItem = ({
@ -26,7 +27,7 @@ export const useObjectMetadataItem = ({
let objectMetadataItems = useRecoilValue(objectMetadataItemsState);
if (currentWorkspace?.activationStatus !== 'active') {
if (currentWorkspace?.activationStatus !== WorkspaceActivationStatus.Active) {
objectMetadataItem =
mockObjectMetadataItems.find(
(objectMetadataItem) =>

View File

@ -3,6 +3,7 @@ import { useRecoilValue } from 'recoil';
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
import { getObjectMetadataItemsMock } from '@/object-metadata/utils/getObjectMetadataItemsMock';
import { WorkspaceActivationStatus } from '~/generated/graphql';
import { isDefined } from '~/utils/isDefined';
export const useObjectNamePluralFromSingular = ({
@ -20,7 +21,7 @@ export const useObjectNamePluralFromSingular = ({
}),
);
if (currentWorkspace?.activationStatus !== 'active') {
if (currentWorkspace?.activationStatus !== WorkspaceActivationStatus.Active) {
objectMetadataItem =
mockObjectMetadataItems.find(
(objectMetadataItem) =>

View File

@ -3,6 +3,7 @@ import { useRecoilValue } from 'recoil';
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
import { getObjectMetadataItemsMock } from '@/object-metadata/utils/getObjectMetadataItemsMock';
import { WorkspaceActivationStatus } from '~/generated/graphql';
import { isDefined } from '~/utils/isDefined';
export const useObjectNameSingularFromPlural = ({
@ -21,7 +22,7 @@ export const useObjectNameSingularFromPlural = ({
}),
);
if (currentWorkspace?.activationStatus !== 'active') {
if (currentWorkspace?.activationStatus !== WorkspaceActivationStatus.Active) {
objectMetadataItem =
mockObjectMetadataItems.find(
(objectMetadataItem) =>

View File

@ -9,6 +9,7 @@ import { useRecordTableRecordGqlFields } from '@/object-record/record-index/hook
import { useRecordTableStates } from '@/object-record/record-table/hooks/internal/useRecordTableStates';
import { useRecordTable } from '@/object-record/record-table/hooks/useRecordTable';
import { SIGN_IN_BACKGROUND_MOCK_COMPANIES } from '@/sign-in-background-mock/constants/SignInBackgroundMockCompanies';
import { WorkspaceActivationStatus } from '~/generated/graphql';
export const useFindManyParams = (
objectNameSingular: string,
@ -65,7 +66,7 @@ export const useLoadRecordIndexTable = (objectNameSingular: string) => {
return {
records:
currentWorkspace?.activationStatus === 'active'
currentWorkspace?.activationStatus === WorkspaceActivationStatus.Active
? records
: SIGN_IN_BACKGROUND_MOCK_COMPANIES,
totalCount: totalCount,

View File

@ -1,5 +1,5 @@
import { act } from 'react-dom/test-utils';
import { renderHook } from '@testing-library/react';
import { act } from 'react-dom/test-utils';
import { RecoilRoot, useSetRecoilState } from 'recoil';
import { v4 } from 'uuid';
@ -8,12 +8,15 @@ import {
currentWorkspaceState,
} from '@/auth/states/currentWorkspaceState';
import { useSubscriptionStatus } from '@/workspace/hooks/useSubscriptionStatus';
import { SubscriptionStatus } from '~/generated/graphql';
import {
SubscriptionStatus,
WorkspaceActivationStatus,
} from '~/generated/graphql';
const currentWorkspace = {
id: '1',
currentBillingSubscription: { status: SubscriptionStatus.Incomplete },
activationStatus: 'active',
activationStatus: WorkspaceActivationStatus.Active,
allowImpersonation: true,
} as CurrentWorkspace;