Migrate twenty ui to jotai (#17900)
## Remove Recoil from twenty-ui Completely removes the `recoil` dependency from `twenty-ui` by converting all atoms, hooks, and providers to Jotai equivalents. ### twenty-ui - `createState` now returns a Jotai `PrimitiveAtom` instead of a Recoil atom - `iconsState`, `IconsProvider`, `useIcons` converted to Jotai (`useSetAtom`, `useAtomValue`) - `RecoilRootDecorator` now uses Jotai `Provider` (name kept for compat) - Deleted unused `invalidAvatarUrlsState` (Avatar already uses `invalidAvatarUrlsAtomV2`) - Removed `recoil` from `package.json` ### twenty-front - Created local Recoil `createState` at `@/ui/utilities/state/utils/createState` for ~112 state files still on Recoil - Updated all imports accordingly - Removed `iconsState` from Recoil snapshot preservation in `useAuth` (lives in Jotai store now)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { type Locale } from 'date-fns';
|
||||
import { enUS } from 'date-fns/locale';
|
||||
import { type APP_LOCALES } from 'twenty-shared/translations';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
type DateLocaleState = {
|
||||
locale?: keyof typeof APP_LOCALES;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const forceRegisteredActionsByKeyState = createState<
|
||||
Record<string, boolean | undefined>
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const emailThreadIdWhenEmailThreadWasClosedState = createState<
|
||||
string | null
|
||||
>({
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { type ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const activityTargetableEntityArrayState = createState<
|
||||
ActivityTargetableObject[]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const canCreateActivityState = createState<boolean>({
|
||||
key: 'canCreateActivityState',
|
||||
defaultValue: false,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isActivityInCreateModeState = createState<boolean>({
|
||||
key: 'isActivityInCreateModeState',
|
||||
defaultValue: false,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isUpsertingActivityInDBState = createState<boolean>({
|
||||
key: 'isUpsertingActivityInDBState',
|
||||
defaultValue: false,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isAppEffectRedirectEnabledState = createState<boolean>({
|
||||
key: 'isAppEffectRedirectEnabledState',
|
||||
defaultValue: true,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const verifyEmailRedirectPathState = createState<string | undefined>({
|
||||
key: 'verifyEmailRedirectPathState',
|
||||
|
||||
@@ -20,7 +20,6 @@ import {
|
||||
import { isMultiWorkspaceEnabledState } from '@/client-config/states/isMultiWorkspaceEnabledState';
|
||||
import { SnackBarComponentInstanceContext } from '@/ui/feedback/snack-bar-manager/contexts/SnackBarComponentInstanceContext';
|
||||
import { renderHook } from '@testing-library/react';
|
||||
import { iconsState } from 'twenty-ui/display';
|
||||
import { SupportDriver } from '~/generated-metadata/graphql';
|
||||
|
||||
const redirectSpy = jest.fn();
|
||||
@@ -159,7 +158,6 @@ describe('useAuth', () => {
|
||||
const { result } = renderHook(
|
||||
() => {
|
||||
const client = useApolloClient();
|
||||
const icons = useRecoilValue(iconsState);
|
||||
const workspaceAuthProviders = useRecoilValue(
|
||||
workspaceAuthProvidersState,
|
||||
);
|
||||
@@ -175,7 +173,6 @@ describe('useAuth', () => {
|
||||
...useAuth(),
|
||||
client,
|
||||
state: {
|
||||
icons,
|
||||
workspaceAuthProviders,
|
||||
billing,
|
||||
isDeveloperDefaultSignInPrefilled,
|
||||
@@ -200,7 +197,6 @@ describe('useAuth', () => {
|
||||
|
||||
const { state } = result.current;
|
||||
|
||||
expect(state.icons).toEqual({});
|
||||
expect(state.workspaceAuthProviders).toEqual(null);
|
||||
expect(state.billing).toBeNull();
|
||||
expect(state.isDeveloperDefaultSignInPrefilled).toBe(false);
|
||||
|
||||
@@ -67,7 +67,6 @@ import { i18n } from '@lingui/core';
|
||||
import { useNavigate, useSearchParams } from 'react-router-dom';
|
||||
import { SOURCE_LOCALE } from 'twenty-shared/translations';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { iconsState } from 'twenty-ui/display';
|
||||
import { cookieStorage } from '~/utils/cookie-storage';
|
||||
import { getWorkspaceUrl } from '~/utils/getWorkspaceUrl';
|
||||
|
||||
@@ -132,7 +131,6 @@ export const useAuth = () => {
|
||||
|
||||
const emptySnapshot = snapshot_UNSTABLE();
|
||||
|
||||
const iconsValue = snapshot.getLoadable(iconsState).getValue();
|
||||
const authProvidersValue = snapshot
|
||||
.getLoadable(workspaceAuthProvidersState)
|
||||
.getValue();
|
||||
@@ -164,7 +162,6 @@ export const useAuth = () => {
|
||||
.getValue();
|
||||
|
||||
const initialSnapshot = emptySnapshot.map(({ set }) => {
|
||||
set(iconsState, iconsValue);
|
||||
set(workspaceAuthProvidersState, authProvidersValue);
|
||||
set(billingState, billing);
|
||||
set(
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
import { type AvailableWorkspaces } from '~/generated-metadata/graphql';
|
||||
|
||||
export const availableWorkspacesState = createState<AvailableWorkspaces>({
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { type BillingCheckoutSession } from '@/auth/types/billingCheckoutSession.type';
|
||||
import { BILLING_CHECKOUT_SESSION_DEFAULT_VALUE } from '@/billing/constants/BillingCheckoutSessionDefaultValue';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const billingCheckoutSessionState = createState<BillingCheckoutSession>({
|
||||
key: 'billingCheckoutSessionState',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
import { type User } from '~/generated-metadata/graphql';
|
||||
|
||||
export type CurrentUser = Pick<
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type ObjectPermissions } from 'twenty-shared/types';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
import { type UserWorkspace } from '~/generated-metadata/graphql';
|
||||
|
||||
export type CurrentUserWorkspace = Pick<
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
import { type DeletedWorkspaceMember } from '~/generated-metadata/graphql';
|
||||
|
||||
export const currentWorkspaceDeletedMembersState = createState<
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type WorkspaceMember } from '@/workspace-member/types/WorkspaceMember';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export type CurrentWorkspaceMember = Omit<
|
||||
WorkspaceMember,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type PartialWorkspaceMember } from '@/settings/roles/types/RoleWithPartialMembers';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const currentWorkspaceMembersState = createState<
|
||||
PartialWorkspaceMember[]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
import {
|
||||
type Application,
|
||||
type Role,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isCurrentUserLoadedState = createState<boolean>({
|
||||
key: 'isCurrentUserLoadedState',
|
||||
defaultValue: false,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
import { type AuthToken } from '~/generated-metadata/graphql';
|
||||
|
||||
export const loginTokenState = createState<AuthToken['token'] | null>({
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const previousUrlState = createState<string>({
|
||||
key: 'previousUrlState',
|
||||
defaultValue: '',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const qrCodeState = createState<string | null>({
|
||||
key: 'qrCodeState',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { SignInUpMode } from '@/auth/types/signInUpMode';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const signInUpModeState = createState<SignInUpMode>({
|
||||
key: 'signInUpModeState',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export enum SignInUpStep {
|
||||
Init = 'init',
|
||||
Email = 'email',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
import { type AuthTokenPair } from '~/generated-metadata/graphql';
|
||||
import { cookieStorageEffect } from '~/utils/recoil/cookieStorageEffect';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type PublicWorkspaceDataOutput } from '~/generated-metadata/graphql';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const workspacePublicDataState =
|
||||
createState<PublicWorkspaceDataOutput | null>({
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const captchaTokenState = createState<string | undefined>({
|
||||
key: 'captchaTokenState',
|
||||
defaultValue: undefined,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isCaptchaScriptLoadedState = createState<boolean>({
|
||||
key: 'isCaptchaScriptLoadedState',
|
||||
defaultValue: false,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isRequestingCaptchaTokenState = createState<boolean>({
|
||||
key: 'isRequestingCaptchaTokenState',
|
||||
defaultValue: false,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isLoadingTokensFromExtensionState = createState<boolean | null>({
|
||||
key: 'isLoadingTokensFromExtensionState',
|
||||
defaultValue: null,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
import { type ClientAiModelConfig } from '~/generated-metadata/graphql';
|
||||
|
||||
export const aiModelsState = createState<ClientAiModelConfig[]>({
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const allowRequestsToTwentyIconsState = createState<boolean>({
|
||||
key: 'allowRequestsToTwentyIcons',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type ApiConfig } from '~/generated-metadata/graphql';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const apiConfigState = createState<ApiConfig | null>({
|
||||
key: 'apiConfigState',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const appVersionState = createState<string | undefined>({
|
||||
key: 'appVersion',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type AuthProviders } from '~/generated-metadata/graphql';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const authProvidersState = createState<AuthProviders>({
|
||||
key: 'authProvidersState',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type Billing } from '~/generated-metadata/graphql';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const billingState = createState<Billing | null>({
|
||||
key: 'billingState',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const calendarBookingPageIdState = createState<string | null>({
|
||||
key: 'calendarBookingPageIdState',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const canManageFeatureFlagsState = createState<boolean>({
|
||||
key: 'canManageFeatureFlagsState',
|
||||
defaultValue: false,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type Captcha } from '~/generated-metadata/graphql';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const captchaState = createState<Captcha | null>({
|
||||
key: 'captchaState',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const chromeExtensionIdState = createState<string | null | undefined>({
|
||||
key: 'chromeExtensionIdState',
|
||||
defaultValue: null,
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { type ClientConfig } from '@/client-config/types/ClientConfig';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
type ClientConfigApiStatus = {
|
||||
isLoadedOnce: boolean;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isAnalyticsEnabledState = createState<boolean>({
|
||||
key: 'isAnalyticsEnabled',
|
||||
defaultValue: false,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isAttachmentPreviewEnabledState = createState<boolean>({
|
||||
key: 'isAttachmentPreviewEnabled',
|
||||
defaultValue: false,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const isClickHouseConfiguredState = createState<boolean>({
|
||||
key: 'isClickHouseConfigured',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const isCloudflareIntegrationEnabledState = createState<boolean>({
|
||||
key: 'isCloudflareIntegrationEnabled',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isConfigVariablesInDbEnabledState = createState<boolean>({
|
||||
key: 'isConfigVariablesInDbEnabled',
|
||||
defaultValue: false,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isDeveloperDefaultSignInPrefilledState = createState<boolean>({
|
||||
key: 'isDeveloperDefaultSignInPrefilledState',
|
||||
defaultValue: false,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isEmailVerificationRequiredState = createState<boolean>({
|
||||
key: 'isEmailVerificationRequired',
|
||||
defaultValue: false,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const isEmailingDomainsEnabledState = createState<boolean>({
|
||||
key: 'isEmailingDomainsEnabled',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isGoogleCalendarEnabledState = createState<boolean>({
|
||||
key: 'isGoogleCalendarEnabled',
|
||||
defaultValue: false,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isGoogleMessagingEnabledState = createState<boolean>({
|
||||
key: 'isGoogleMessagingEnabled',
|
||||
defaultValue: false,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const isImapSmtpCaldavEnabledState = createState<boolean>({
|
||||
key: 'isImapSmtpCaldavEnabled',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isMicrosoftCalendarEnabledState = createState<boolean>({
|
||||
key: 'isMicrosoftCalendarEnabled',
|
||||
defaultValue: false,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isMicrosoftMessagingEnabledState = createState<boolean>({
|
||||
key: 'isMicrosoftMessagingEnabled',
|
||||
defaultValue: false,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isMultiWorkspaceEnabledState = createState<boolean>({
|
||||
key: 'isMultiWorkspaceEnabled',
|
||||
defaultValue: false,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type Sentry } from '~/generated-metadata/graphql';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const sentryConfigState = createState<Sentry | null>({
|
||||
key: 'sentryConfigState',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
import { type Support, SupportDriver } from '~/generated-metadata/graphql';
|
||||
|
||||
export const supportChatState = createState<Support>({
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { type MorphItem } from '@/object-record/multiple-objects/types/MorphItem';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const commandMenuNavigationMorphItemsByPageState = createState<
|
||||
Map<string, MorphItem[]>
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
import { type CommandMenuPages } from '@/command-menu/types/CommandMenuPages';
|
||||
import { type IconComponent } from 'twenty-ui/display';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export type CommandMenuNavigationStackItem = {
|
||||
page: CommandMenuPages;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type IconComponent } from 'twenty-ui/display';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const commandMenuPageInfoState = createState<{
|
||||
title?: string;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { CommandMenuPages } from '@/command-menu/types/CommandMenuPages';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const commandMenuPageState = createState<CommandMenuPages>({
|
||||
key: 'command-menu/commandMenuPageState',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const commandMenuSearchState = createState<string>({
|
||||
key: 'command-menu/commandMenuSearchState',
|
||||
defaultValue: '',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const hasUserSelectedCommandState = createState({
|
||||
key: 'hasUserSelectedCommandState',
|
||||
defaultValue: false,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const isCommandMenuClosingState = createState({
|
||||
key: 'command-menu/isCommandMenuClosingState',
|
||||
defaultValue: false,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type ClientConfig } from '@/client-config/types/ClientConfig';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const domainConfigurationState = createState<
|
||||
Pick<ClientConfig, 'frontDomain' | 'defaultSubdomain'>
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { cookieStorageEffect } from '~/utils/recoil/cookieStorageEffect';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const lastAuthenticatedWorkspaceDomainState = createState<
|
||||
| {
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ import { detectNumberFormat } from '@/localization/utils/detection/detectNumberF
|
||||
import { detectTimeFormat } from '@/localization/utils/detection/detectTimeFormat';
|
||||
import { detectTimeZone } from '@/localization/utils/detection/detectTimeZone';
|
||||
import { CalendarStartDay } from 'twenty-shared/constants';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export type WorkspaceMemberFormatPreferences = {
|
||||
timeZone: string;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const currentMobileNavigationDrawerState = createState<
|
||||
'main' | 'settings'
|
||||
>({
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { localStorageEffect } from '~/utils/recoil/localStorageEffect';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const lastVisitedObjectMetadataItemIdState = createState<string | null>({
|
||||
key: 'lastVisitedObjectMetadataItemIdState',
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { localStorageEffect } from '~/utils/recoil/localStorageEffect';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const lastVisitedViewPerObjectMetadataItemState = createState<Record<
|
||||
string,
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import type { FieldMetadataItemUpdate } from '@/object-metadata/types/FieldMetadataItemUpdate';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const lastFieldMetadataItemUpdateState =
|
||||
createState<FieldMetadataItemUpdate | null>({
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const objectMetadataItemsState = createState<ObjectMetadataItem[]>({
|
||||
key: 'objectMetadataItemsState',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const shouldAppBeLoadingState = createState<boolean>({
|
||||
key: 'shouldAppBeLoadingState',
|
||||
defaultValue: false,
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const lastShowPageRecordIdState = createState<string | null>({
|
||||
key: 'lastShowPageRecordIdState',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const recordIndexCalendarFieldMetadataIdState = createState<
|
||||
string | null
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
import { ViewCalendarLayout } from '~/generated-metadata/graphql';
|
||||
|
||||
export const recordIndexCalendarLayoutState = createState<ViewCalendarLayout>({
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
import { type FieldMetadata } from '@/object-record/record-field/ui/types/FieldMetadata';
|
||||
import { type ColumnDefinition } from '@/object-record/record-table/types/ColumnDefinition';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const recordIndexFieldDefinitionsState = createState<
|
||||
ColumnDefinition<FieldMetadata>[]
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { ViewOpenRecordInType } from '@/views/types/ViewOpenRecordInType';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const recordIndexOpenRecordInState = createState<ViewOpenRecordInType>({
|
||||
key: 'recordIndexOpenRecordInState',
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { type ViewType } from '@/views/types/ViewType';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const recordIndexViewTypeState = createState<ViewType | undefined>({
|
||||
key: 'recordIndexViewTypeState',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const isMergeInProgressState = createState<boolean>({
|
||||
key: 'isMergeInProgress',
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { type MergeManySettings } from '@/object-record/hooks/useMergeManyRecords';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const mergeSettingsState = createState<MergeManySettings>({
|
||||
key: 'mergeSettingsState',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const viewableRecordIdState = createState<string | null>({
|
||||
key: 'activities/viewable-record-id',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
// TODO: deprecate this state once we remove IS_COMMAND_MENU_V2_ENABLED flag
|
||||
export const viewableRecordNameSingularState = createState<string | null>({
|
||||
key: 'activities/viewable-record-name-singular',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const tableWidthResizeIsActiveState = createState({
|
||||
key: 'tableWidthResizeIsActiveState',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const currentPageLayoutIdState = createState<string | null>({
|
||||
key: 'currentPageLayoutIdState',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type PageLayout } from '@/page-layout/types/PageLayout';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const recordPageLayoutsState = createState<PageLayout[]>({
|
||||
key: 'recordPageLayoutsState',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type FavoriteFolder } from '@/favorites/types/FavoriteFolder';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const prefetchFavoriteFoldersState = createState<FavoriteFolder[]>({
|
||||
key: 'prefetchFavoriteFoldersState',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type Favorite } from '@/favorites/types/Favorite';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const prefetchFavoritesState = createState<Favorite[]>({
|
||||
key: 'prefetchFavoritesState',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
import { type NavigationMenuItem } from '~/generated-metadata/graphql';
|
||||
|
||||
export const prefetchNavigationMenuItemsState = createState<
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { type ConfigVariableGroupFilter } from '@/settings/admin-panel/config-variables/types/ConfigVariableGroupFilter';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const configVariableGroupFilterState =
|
||||
createState<ConfigVariableGroupFilter>({
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { type ConfigVariableSourceFilter } from '@/settings/admin-panel/config-variables/types/ConfigVariableSourceFilter';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const configVariableSourceFilterState =
|
||||
createState<ConfigVariableSourceFilter>({
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const showHiddenGroupVariablesState = createState<boolean>({
|
||||
key: 'showHiddenGroupVariablesState',
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { type DomainValidRecords } from '~/generated-metadata/graphql';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const customDomainRecordsState = createState<{
|
||||
customDomainRecords: DomainValidRecords | null;
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { type DomainValidRecords } from '~/generated-metadata/graphql';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const publicDomainRecordsState = createState<{
|
||||
publicDomainRecords: DomainValidRecords | null;
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { type PublicDomain } from '~/generated-metadata/graphql';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const selectedPublicDomainState = createState<PublicDomain | undefined>({
|
||||
key: 'selectedPublicDomainState',
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
import { type FindManyLogicFunctionsQuery } from '~/generated-metadata/graphql';
|
||||
|
||||
export type LogicFunction =
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
export const openAPIReferenceState = createState<any>({
|
||||
key: 'OpenAPIReference',
|
||||
defaultValue: null,
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
import { type ApprovedAccessDomain } from '~/generated-metadata/graphql';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const approvedAccessDomainsState = createState<
|
||||
Omit<ApprovedAccessDomain, '__typename'>[]
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
/* @license Enterprise */
|
||||
|
||||
import { type SSOIdentityProvider } from '@/settings/security/types/SSOIdentityProvider';
|
||||
import { createState } from 'twenty-ui/utilities';
|
||||
import { createState } from '@/ui/utilities/state/utils/createState';
|
||||
|
||||
export const SSOIdentitiesProvidersState = createState<
|
||||
Omit<SSOIdentityProvider, '__typename'>[]
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user