Introduce ComponentState (#4386)

* Proof of concept ComponentState

* Migrate to createState and createFamilyState

* Refactor

* Fix

* Fix tests

* Fix lint

* Fix tests

* Re-enable coverage
This commit is contained in:
Charles Bochet
2024-03-09 11:31:00 +01:00
committed by GitHub
parent 17511be0cf
commit 86c0f311f5
451 changed files with 1718 additions and 2557 deletions

View File

@ -15,17 +15,17 @@ import { isNonNullable } from '~/utils/isNonNullable';
export const ClientConfigProvider: React.FC<React.PropsWithChildren> = ({
children,
}) => {
const setAuthProviders = useSetRecoilState(authProvidersState);
const setIsDebugMode = useSetRecoilState(isDebugModeState);
const setAuthProviders = useSetRecoilState(authProvidersState());
const setIsDebugMode = useSetRecoilState(isDebugModeState());
const setIsSignInPrefilled = useSetRecoilState(isSignInPrefilledState);
const setIsSignUpDisabled = useSetRecoilState(isSignUpDisabledState);
const setIsSignInPrefilled = useSetRecoilState(isSignInPrefilledState());
const setIsSignUpDisabled = useSetRecoilState(isSignUpDisabledState());
const setBilling = useSetRecoilState(billingState);
const setTelemetry = useSetRecoilState(telemetryState);
const setSupportChat = useSetRecoilState(supportChatState);
const setBilling = useSetRecoilState(billingState());
const setTelemetry = useSetRecoilState(telemetryState());
const setSupportChat = useSetRecoilState(supportChatState());
const setSentryConfig = useSetRecoilState(sentryConfigState);
const setSentryConfig = useSetRecoilState(sentryConfigState());
const { data, loading } = useGetClientConfigQuery();

View File

@ -1,8 +1,7 @@
import { atom } from 'recoil';
import { createState } from '@/ui/utilities/state/utils/createState';
import { AuthProviders } from '~/generated/graphql';
export const authProvidersState = atom<AuthProviders>({
export const authProvidersState = createState<AuthProviders>({
key: 'authProvidersState',
default: { google: false, magicLink: false, password: true },
defaultValue: { google: false, magicLink: false, password: true },
});

View File

@ -1,8 +1,7 @@
import { atom } from 'recoil';
import { createState } from '@/ui/utilities/state/utils/createState';
import { Billing } from '~/generated/graphql';
export const billingState = atom<Billing | null>({
export const billingState = createState<Billing | null>({
key: 'billingState',
default: null,
defaultValue: null,
});

View File

@ -1,6 +1,6 @@
import { atom } from 'recoil';
import { createState } from '@/ui/utilities/state/utils/createState';
export const isDebugModeState = atom<boolean>({
export const isDebugModeState = createState<boolean>({
key: 'isDebugModeState',
default: false,
defaultValue: false,
});

View File

@ -1,6 +1,6 @@
import { atom } from 'recoil';
import { createState } from '@/ui/utilities/state/utils/createState';
export const isSignInPrefilledState = atom<boolean>({
export const isSignInPrefilledState = createState<boolean>({
key: 'isSignInPrefilledState',
default: false,
defaultValue: false,
});

View File

@ -1,6 +1,6 @@
import { atom } from 'recoil';
import { createState } from '@/ui/utilities/state/utils/createState';
export const isSignUpDisabledState = atom<boolean>({
export const isSignUpDisabledState = createState<boolean>({
key: 'isSignUpDisabledState',
default: false,
defaultValue: false,
});

View File

@ -1,8 +1,7 @@
import { atom } from 'recoil';
import { createState } from '@/ui/utilities/state/utils/createState';
import { Sentry } from '~/generated/graphql';
export const sentryConfigState = atom<Sentry | null>({
export const sentryConfigState = createState<Sentry | null>({
key: 'sentryConfigState',
default: null,
defaultValue: null,
});

View File

@ -1,10 +1,9 @@
import { atom } from 'recoil';
import { createState } from '@/ui/utilities/state/utils/createState';
import { Support } from '~/generated/graphql';
export const supportChatState = atom<Support>({
export const supportChatState = createState<Support>({
key: 'supportChatState',
default: {
defaultValue: {
supportDriver: 'none',
supportFrontChatId: null,
},

View File

@ -1,8 +1,7 @@
import { atom } from 'recoil';
import { createState } from '@/ui/utilities/state/utils/createState';
import { Telemetry } from '~/generated/graphql';
export const telemetryState = atom<Telemetry>({
export const telemetryState = createState<Telemetry>({
key: 'telemetryState',
default: { enabled: true, anonymizationEnabled: true },
defaultValue: { enabled: true, anonymizationEnabled: true },
});