Migrate more to Jotai (#17903)

Here we go again
This commit is contained in:
Charles Bochet
2026-02-12 18:13:31 +01:00
committed by GitHub
parent 3075707bf8
commit d5a8cc2085
48 changed files with 134 additions and 105 deletions
@@ -9,7 +9,6 @@ import { showHiddenGroupVariablesState } from '@/settings/admin-panel/config-var
import styled from '@emotion/styled';
import { t } from '@lingui/core/macro';
import { useMemo, useState } from 'react';
import { useRecoilState } from 'recoil';
import { H2Title } from 'twenty-ui/display';
import { Section } from 'twenty-ui/layout';
import {
@@ -18,6 +17,7 @@ import {
} from '~/generated-metadata/graphql';
import { normalizeSearchText } from '~/utils/normalizeSearchText';
import { ConfigVariableSearchInput } from './ConfigVariableSearchInput';
import { useRecoilStateV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilStateV2';
const StyledControlsContainer = styled.div`
display: flex;
@@ -37,11 +37,11 @@ export const SettingsAdminConfigVariables = () => {
const [search, setSearch] = useState('');
const [showHiddenGroupVariables, setShowHiddenGroupVariables] =
useRecoilState(showHiddenGroupVariablesState);
useRecoilStateV2(showHiddenGroupVariablesState);
const [configVariableSourceFilter, setConfigVariableSourceFilter] =
useRecoilState(configVariableSourceFilterState);
useRecoilStateV2(configVariableSourceFilterState);
const [configVariableGroupFilter, setConfigVariableGroupFilter] =
useRecoilState(configVariableGroupFilterState);
useRecoilStateV2(configVariableGroupFilterState);
const allGroups = useMemo(
() => configVariables?.getConfigVariablesGrouped.groups ?? [],
@@ -1,8 +1,8 @@
import { type ConfigVariableGroupFilter } from '@/settings/admin-panel/config-variables/types/ConfigVariableGroupFilter';
import { createState } from '@/ui/utilities/state/utils/createState';
import { createStateV2 } from '@/ui/utilities/state/jotai/utils/createStateV2';
export const configVariableGroupFilterState =
createState<ConfigVariableGroupFilter>({
createStateV2<ConfigVariableGroupFilter>({
key: 'configVariableGroupFilterState',
defaultValue: 'all',
});
@@ -1,8 +1,8 @@
import { type ConfigVariableSourceFilter } from '@/settings/admin-panel/config-variables/types/ConfigVariableSourceFilter';
import { createState } from '@/ui/utilities/state/utils/createState';
import { createStateV2 } from '@/ui/utilities/state/jotai/utils/createStateV2';
export const configVariableSourceFilterState =
createState<ConfigVariableSourceFilter>({
createStateV2<ConfigVariableSourceFilter>({
key: 'configVariableSourceFilterState',
defaultValue: 'all',
});
@@ -1,6 +1,6 @@
import { createState } from '@/ui/utilities/state/utils/createState';
import { createStateV2 } from '@/ui/utilities/state/jotai/utils/createStateV2';
export const showHiddenGroupVariablesState = createState<boolean>({
export const showHiddenGroupVariablesState = createStateV2<boolean>({
key: 'showHiddenGroupVariablesState',
defaultValue: false,
});
@@ -1,8 +1,8 @@
import { useRecoilState } from 'recoil';
import { isDefined } from 'twenty-shared/utils';
import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
import { publicDomainRecordsState } from '@/settings/domains/states/publicDomainRecordsState';
import { useCheckPublicDomainValidRecordsMutation } from '~/generated-metadata/graphql';
import { useRecoilStateV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilStateV2';
export const useCheckPublicDomainValidRecords = () => {
const [checkPublicDomainValidRecords] =
@@ -10,7 +10,7 @@ export const useCheckPublicDomainValidRecords = () => {
const { enqueueErrorSnackBar } = useSnackBar();
const [{ isLoading, publicDomainRecords }, setPublicDomainRecords] =
useRecoilState(publicDomainRecordsState);
useRecoilStateV2(publicDomainRecordsState);
const checkPublicDomainRecords = (domain: string) => {
if (isLoading) {
@@ -1,7 +1,7 @@
import { type DomainValidRecords } from '~/generated-metadata/graphql';
import { createState } from '@/ui/utilities/state/utils/createState';
import { createStateV2 } from '@/ui/utilities/state/jotai/utils/createStateV2';
export const publicDomainRecordsState = createState<{
export const publicDomainRecordsState = createStateV2<{
publicDomainRecords: DomainValidRecords | null;
isLoading: boolean;
}>({
@@ -5,7 +5,7 @@ import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
import { ApolloError } from '@apollo/client';
import styled from '@emotion/styled';
import { useLingui } from '@lingui/react/macro';
import { useRecoilState, useRecoilValue } from 'recoil';
import { useRecoilState } from 'recoil';
import { capitalize } from 'twenty-shared/utils';
import { IconGoogle, IconMicrosoft, IconPassword } from 'twenty-ui/display';
import { Card } from 'twenty-ui/layout';
@@ -13,6 +13,7 @@ import {
type AuthProviders,
useUpdateWorkspaceMutation,
} from '~/generated-metadata/graphql';
import { useRecoilValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilValueV2';
const StyledSettingsSecurityOptionsList = styled.div`
display: flex;
@@ -24,7 +25,7 @@ export const SettingsSecurityAuthBypassOptionsList = () => {
const { t } = useLingui();
const { enqueueErrorSnackBar } = useSnackBar();
const authProviders = useRecoilValue(authProvidersState);
const authProviders = useRecoilValueV2(authProvidersState);
const [currentWorkspace, setCurrentWorkspace] = useRecoilState(
currentWorkspaceState,
@@ -22,6 +22,7 @@ import {
} from '~/generated-metadata/graphql';
import { Toggle2FA } from './Toggle2FA';
import { useRecoilValueV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilValueV2';
const StyledSettingsSecurityOptionsList = styled.div`
display: flex;
@@ -34,7 +35,7 @@ export const SettingsSecurityAuthProvidersOptionsList = () => {
const { enqueueErrorSnackBar } = useSnackBar();
const SSOIdentitiesProviders = useRecoilValue(SSOIdentitiesProvidersState);
const authProviders = useRecoilValue(authProvidersState);
const authProviders = useRecoilValueV2(authProvidersState);
const [currentWorkspace, setCurrentWorkspace] = useRecoilState(
currentWorkspaceState,
@@ -4,8 +4,9 @@ import { useSnackBar } from '@/ui/feedback/snack-bar-manager/hooks/useSnackBar';
import { gql, useMutation } from '@apollo/client';
import { useLingui } from '@lingui/react/macro';
import { useEffect } from 'react';
import { useRecoilState, useRecoilValue } from 'recoil';
import { useRecoilValue } from 'recoil';
import { isDefined } from 'twenty-shared/utils';
import { useRecoilStateV2 } from '@/ui/utilities/state/jotai/hooks/useRecoilStateV2';
const INITIATE_OTP_PROVISIONING_FOR_AUTHENTICATED_USER = gql`
mutation initiateOTPProvisioningForAuthenticatedUser {
@@ -17,7 +18,7 @@ const INITIATE_OTP_PROVISIONING_FOR_AUTHENTICATED_USER = gql`
export const TwoFactorAuthenticationSetupForSettingsEffect = () => {
const { enqueueErrorSnackBar } = useSnackBar();
const [qrCode, setQrCode] = useRecoilState(qrCodeState);
const [qrCode, setQrCode] = useRecoilStateV2(qrCodeState);
const currentUser = useRecoilValue(currentUserState);
const { t } = useLingui();