From 5c6cd2410e7b0eaffbb114c1e3234a76afd16f3a Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sat, 12 Nov 2022 01:22:12 -0800 Subject: [PATCH] Set user profile in server state --- src/renderer/layouts/default-layout.tsx | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/renderer/layouts/default-layout.tsx b/src/renderer/layouts/default-layout.tsx index 8b4a57099..78b6b474b 100644 --- a/src/renderer/layouts/default-layout.tsx +++ b/src/renderer/layouts/default-layout.tsx @@ -4,7 +4,8 @@ import { Outlet } from 'react-router'; import styled from 'styled-components'; import { SideQueue } from '@/renderer/features/side-queue/components/side-queue'; import { Titlebar } from '@/renderer/features/titlebar/components/titlebar'; -import { useAppStore } from '@/renderer/store'; +import { useUserDetail } from '@/renderer/features/users'; +import { useAppStore, useAuthStore } from '@/renderer/store'; import { constrainRightSidebarWidth, constrainSidebarWidth, @@ -97,6 +98,27 @@ export const DefaultLayout = ({ shell }: DefaultLayoutProps) => { const rightSidebarRef = useRef(null); const [isResizing, setIsResizing] = useState(false); const [isResizingRight, setIsResizingRight] = useState(false); + const userId = useAuthStore((state) => state.permissions.id); + const login = useAuthStore((state) => state.login); + + // Fetch and cache user profile + useUserDetail( + { userId }, + { + onSuccess: (res) => { + const props = { + permissions: { + id: res.data.id, + isAdmin: res.data.isAdmin, + isSuperAdmin: res.data.isSuperAdmin, + username: res.data.username, + }, + }; + + login(props); + }, + } + ); const startResizing = useCallback((position: 'left' | 'right') => { if (position === 'left') return setIsResizing(true);