Rework atom naming (#18240)
## Summary - **Enhanced the `matching-state-variable` ESLint rule** to enforce consistent naming for `ComponentState`, `FamilyState`, and `ComponentFamilyState` hooks — previously it only covered `useAtomState` and `useAtomStateValue` - **The rule now checks 12 hooks** across three categories: value hooks (`useAtomComponentStateValue`, `useAtomFamilyStateValue`, etc.), state hooks (`useAtomComponentState`, `useAtomComponentFamilyState`), and setter hooks (`useSetAtomState`, `useSetAtomComponentState`, `useSetAtomFamilyState`, `useSetAtomComponentFamilyState`) - **Fixed all 225 resulting lint violations** across 151 files, renaming variables to match their state atom names (e.g. `currentViewId` → `contextStoreCurrentViewId`, `selectedRecord` → `recordStore`). Cases where the same state is accessed with different family keys/instance IDs are suppressed with `eslint-disable-next-line`. ## Naming convention | Hook | State argument | Valid | Invalid | |------|---------------|-------|---------| | `useAtomStateValue` | `fooState` | `const foo = ...` | `const bar = ...` | | `useAtomComponentStateValue` | `fooComponentState` | `const foo = ...` | `const bar = ...` | | `useAtomFamilyStateValue` | `fooFamilyState` | `const foo = ...` | `const bar = ...` | | `useAtomComponentFamilyStateValue` | `fooComponentFamilyState` | `const foo = ...` | `const bar = ...` | | `useAtomState` | `fooState` | `const [foo, setFoo] = ...` | `const [bar, setBar] = ...` | | `useAtomComponentState` | `fooComponentState` | `const [foo, setFoo] = ...` | `const [bar, setBar] = ...` | | `useAtomComponentFamilyState` | `fooComponentFamilyState` | `const [foo, setFoo] = ...` | `const [bar, setBar] = ...` | | `useSetAtomState` | `fooState` | `const setFoo = ...` | `const setBar = ...` | | `useSetAtomComponentState` | `fooComponentState` | `const setFoo = ...` | `const setBar = ...` | | `useSetAtomFamilyState` | `fooFamilyState` | `const setFoo = ...` | `const setBar = ...` | | `useSetAtomComponentFamilyState` | `fooComponentFamilyState` | `const setFoo = ...` | `const setBar = ...` |
This commit is contained in:
+10
-6
@@ -14,18 +14,22 @@ export const IsAppMetadataReadyEffect = () => {
|
||||
const isLoggedIn = useIsLogged();
|
||||
const currentUser = useAtomStateValue(currentUserState);
|
||||
const currentWorkspace = useAtomStateValue(currentWorkspaceState);
|
||||
const objectMetadataItemsEntry = useAtomFamilyStateValue(
|
||||
const metadataStore = useAtomFamilyStateValue(
|
||||
metadataStoreState,
|
||||
'objectMetadataItems',
|
||||
);
|
||||
const viewsEntry = useAtomFamilyStateValue(metadataStoreState, 'views');
|
||||
// eslint-disable-next-line twenty/matching-state-variable
|
||||
const metadataStoreViews = useAtomFamilyStateValue(
|
||||
metadataStoreState,
|
||||
'views',
|
||||
);
|
||||
const setIsAppMetadataReady = useSetAtomState(isAppMetadataReadyState);
|
||||
|
||||
useEffect(() => {
|
||||
const hasActiveWorkspace = isWorkspaceActiveOrSuspended(currentWorkspace);
|
||||
|
||||
const areObjectsLoaded = objectMetadataItemsEntry.status === 'up-to-date';
|
||||
const areViewsLoaded = viewsEntry.status === 'up-to-date';
|
||||
const areObjectsLoaded = metadataStore.status === 'up-to-date';
|
||||
const areViewsLoaded = metadataStoreViews.status === 'up-to-date';
|
||||
|
||||
if (!areObjectsLoaded) {
|
||||
setIsAppMetadataReady(false);
|
||||
@@ -41,8 +45,8 @@ export const IsAppMetadataReadyEffect = () => {
|
||||
isLoggedIn,
|
||||
currentUser,
|
||||
currentWorkspace,
|
||||
objectMetadataItemsEntry.status,
|
||||
viewsEntry.status,
|
||||
metadataStore.status,
|
||||
metadataStoreViews.status,
|
||||
setIsAppMetadataReady,
|
||||
]);
|
||||
|
||||
|
||||
+3
-3
@@ -41,7 +41,7 @@ export const UserMetadataProviderInitialEffect = () => {
|
||||
const setCurrentWorkspaceMembers = useSetAtomState(
|
||||
currentWorkspaceMembersState,
|
||||
);
|
||||
const setCurrentWorkspaceMembersWithDeleted = useSetAtomState(
|
||||
const setCurrentWorkspaceDeletedMembers = useSetAtomState(
|
||||
currentWorkspaceDeletedMembersState,
|
||||
);
|
||||
const setIsCurrentUserLoaded = useSetAtomState(isCurrentUserLoadedState);
|
||||
@@ -151,7 +151,7 @@ export const UserMetadataProviderInitialEffect = () => {
|
||||
}
|
||||
|
||||
if (isDefined(deletedWorkspaceMembers)) {
|
||||
setCurrentWorkspaceMembersWithDeleted(deletedWorkspaceMembers);
|
||||
setCurrentWorkspaceDeletedMembers(deletedWorkspaceMembers);
|
||||
}
|
||||
|
||||
if (isDefined(availableWorkspaces)) {
|
||||
@@ -172,7 +172,7 @@ export const UserMetadataProviderInitialEffect = () => {
|
||||
setCurrentWorkspace,
|
||||
setCurrentWorkspaceMember,
|
||||
initializeFormatPreferences,
|
||||
setCurrentWorkspaceMembersWithDeleted,
|
||||
setCurrentWorkspaceDeletedMembers,
|
||||
updateLocaleCatalog,
|
||||
setIsCurrentUserLoaded,
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user