This commit dates the transition from a global user session to individual account handling based on user ID. The transition was made across several components, notably the account settings, icons, and selector. This change improves performance by reducing unnecessary requests and ensures more accurate data handling. The commit also includes some cleanups and minor fixes spread across different components.
71 lines
2.0 KiB
TypeScript
71 lines
2.0 KiB
TypeScript
import {
|
|
BorderedNavigationMenu,
|
|
BorderedNavigationMenuItem,
|
|
} from '@kit/ui/bordered-navigation-menu';
|
|
import { If } from '@kit/ui/if';
|
|
|
|
import { AppLogo } from '~/components/app-logo';
|
|
import { ProfileAccountDropdownContainer } from '~/components/personal-account-dropdown-container';
|
|
import featuresFlagConfig from '~/config/feature-flags.config';
|
|
import { personalAccountNavigationConfig } from '~/config/personal-account-navigation.config';
|
|
|
|
// home imports
|
|
import { HomeAccountSelector } from '../_components/home-account-selector';
|
|
import { UserNotifications } from '../_components/user-notifications';
|
|
import { type UserWorkspace } from '../_lib/server/user-workspace.loader';
|
|
|
|
export function HomeMenuNavigation(props: { workspace: UserWorkspace }) {
|
|
const { workspace, user, accounts } = props.workspace;
|
|
|
|
const routes = personalAccountNavigationConfig.routes.reduce<
|
|
Array<{
|
|
path: string;
|
|
label: string;
|
|
Icon?: React.ReactNode;
|
|
end?: boolean | undefined;
|
|
}>
|
|
>((acc, item) => {
|
|
if ('children' in item) {
|
|
return [...acc, ...item.children];
|
|
}
|
|
|
|
if ('divider' in item) {
|
|
return acc;
|
|
}
|
|
|
|
return [...acc, item];
|
|
}, []);
|
|
|
|
return (
|
|
<div className={'flex w-full flex-1 justify-between'}>
|
|
<div className={'flex items-center space-x-8'}>
|
|
<AppLogo />
|
|
|
|
<BorderedNavigationMenu>
|
|
{routes.map((route) => (
|
|
<BorderedNavigationMenuItem {...route} key={route.path} />
|
|
))}
|
|
</BorderedNavigationMenu>
|
|
</div>
|
|
|
|
<div className={'flex justify-end space-x-2.5'}>
|
|
<If condition={featuresFlagConfig.enableTeamAccounts}>
|
|
<HomeAccountSelector
|
|
userId={user.id}
|
|
accounts={accounts}
|
|
collapsed={false}
|
|
/>
|
|
</If>
|
|
|
|
<UserNotifications userId={user.id} />
|
|
|
|
<ProfileAccountDropdownContainer
|
|
collapsed={true}
|
|
user={user}
|
|
account={workspace}
|
|
/>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|