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:
Charles Bochet
2026-02-25 22:28:25 +01:00
committed by GitHub
parent 1b805a36f3
commit bc4ae35bc4
321 changed files with 1824 additions and 1518 deletions
@@ -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,
]);
@@ -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,
]);