Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Charles Bochet
2026-02-23 12:01:37 +01:00
committed by GitHub
parent 22bc3004b9
commit b51eb6471f
538 changed files with 4664 additions and 4127 deletions
@@ -1,11 +1,15 @@
import { act, renderHook } from '@testing-library/react';
import { RecoilRoot, useSetRecoilState } from 'recoil';
import { createElement } from 'react';
import { Provider as JotaiProvider } from 'jotai';
import { RecoilRoot } from 'recoil';
import { v4 } from 'uuid';
import {
type CurrentWorkspace,
currentWorkspaceState,
} from '@/auth/states/currentWorkspaceState';
import { useSetRecoilStateV2 } from '@/ui/utilities/state/jotai/hooks/useSetRecoilStateV2';
import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore';
import { useSubscriptionStatus } from '@/workspace/hooks/useSubscriptionStatus';
import {
SubscriptionStatus,
@@ -19,11 +23,18 @@ const currentWorkspace = {
allowImpersonation: true,
} as CurrentWorkspace;
const Wrapper = ({ children }: { children: React.ReactNode }) =>
createElement(
JotaiProvider,
{ store: jotaiStore },
createElement(RecoilRoot, null, children),
);
const renderHooks = () => {
const { result } = renderHook(
() => {
const subscriptionStatus = useSubscriptionStatus();
const setCurrentWorkspace = useSetRecoilState(currentWorkspaceState);
const setCurrentWorkspace = useSetRecoilStateV2(currentWorkspaceState);
return {
subscriptionStatus,
@@ -31,7 +42,7 @@ const renderHooks = () => {
};
},
{
wrapper: RecoilRoot,
wrapper: Wrapper,
},
);
return { result };
@@ -1,10 +1,10 @@
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
import { useRecoilValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilValueV2';
import { extractFeatureFlagMapFromWorkspace } from '@/workspace/utils/extractFeatureFlagMapFromWorkspace';
import { useRecoilValue } from 'recoil';
import { type FeatureFlagKey } from '~/generated-metadata/graphql';
export const useFeatureFlagsMap = (): Record<FeatureFlagKey, boolean> => {
const currentWorkspace = useRecoilValue(currentWorkspaceState);
const currentWorkspace = useRecoilValueV2(currentWorkspaceState);
return extractFeatureFlagMapFromWorkspace(currentWorkspace);
};
@@ -1,10 +1,9 @@
import { useRecoilValue } from 'recoil';
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
import { useRecoilValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilValueV2';
import { type FeatureFlagKey } from '~/generated-metadata/graphql';
export const useIsFeatureEnabled = (featureKey: FeatureFlagKey | null) => {
const currentWorkspace = useRecoilValue(currentWorkspaceState);
const currentWorkspace = useRecoilValueV2(currentWorkspaceState);
if (!featureKey) {
return false;
@@ -1,9 +1,8 @@
import { useRecoilValue } from 'recoil';
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
import { useRecoilValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilValueV2';
export const useIsSomeMeteredProductCapReached = (): boolean => {
const billingSubscriptionItems = useRecoilValue(currentWorkspaceState)
const billingSubscriptionItems = useRecoilValueV2(currentWorkspaceState)
?.currentBillingSubscription?.billingSubscriptionItems;
if (!billingSubscriptionItems) {
@@ -1,11 +1,10 @@
import { useRecoilValue } from 'recoil';
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
import { useRecoilValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilValueV2';
import { type WorkspaceActivationStatus } from 'twenty-shared/workspace';
export const useIsWorkspaceActivationStatusEqualsTo = (
activationStatus: WorkspaceActivationStatus,
): boolean => {
const currentWorkspace = useRecoilValue(currentWorkspaceState);
const currentWorkspace = useRecoilValueV2(currentWorkspaceState);
return currentWorkspace?.activationStatus === activationStatus;
};
@@ -1,9 +1,8 @@
import { useRecoilValue } from 'recoil';
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
import { useRecoilValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilValueV2';
import { type SubscriptionStatus } from '~/generated-metadata/graphql';
export const useSubscriptionStatus = (): SubscriptionStatus | undefined => {
const currentWorkspace = useRecoilValue(currentWorkspaceState);
const currentWorkspace = useRecoilValueV2(currentWorkspaceState);
return currentWorkspace?.currentBillingSubscription?.status;
};