Refresh admin data on menu open
This commit is contained in:
parent
a7435852c4
commit
b5c256eee6
@ -34,6 +34,7 @@ export default function AdminAppMenu({
|
||||
tagsCount,
|
||||
selectedPhotoIds,
|
||||
setSelectedPhotoIds,
|
||||
refreshAdminData,
|
||||
clearAuthStateAndRedirect,
|
||||
} = useAppState();
|
||||
|
||||
@ -116,6 +117,7 @@ export default function AdminAppMenu({
|
||||
header="Admin menu"
|
||||
icon={<BiLockAlt size={16} className="translate-y-[-0.5px]" />}
|
||||
align="start"
|
||||
onOpen={refreshAdminData}
|
||||
className={clsx(
|
||||
'border-medium',
|
||||
className,
|
||||
|
||||
@ -1,4 +1,10 @@
|
||||
import { ComponentProps, ReactNode, useCallback, useState } from 'react';
|
||||
import {
|
||||
ComponentProps,
|
||||
ReactNode,
|
||||
useCallback,
|
||||
useEffect,
|
||||
useState,
|
||||
} from 'react';
|
||||
import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
|
||||
import { clsx } from 'clsx/lite';
|
||||
import { FiMoreHorizontal } from 'react-icons/fi';
|
||||
@ -12,6 +18,7 @@ export default function MoreMenu({
|
||||
buttonClassName,
|
||||
ariaLabel,
|
||||
align = 'end',
|
||||
onOpen,
|
||||
...props
|
||||
}: {
|
||||
items: ComponentProps<typeof MoreMenuItem>[]
|
||||
@ -20,6 +27,7 @@ export default function MoreMenu({
|
||||
className?: string
|
||||
buttonClassName?: string
|
||||
ariaLabel: string
|
||||
onOpen?: () => void
|
||||
} & ComponentProps<typeof DropdownMenu.Content>){
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
|
||||
@ -27,6 +35,10 @@ export default function MoreMenu({
|
||||
setIsOpen(false);
|
||||
}, [setIsOpen]);
|
||||
|
||||
useEffect(() => {
|
||||
if (isOpen) { onOpen?.(); }
|
||||
}, [isOpen, onOpen]);
|
||||
|
||||
return (
|
||||
<DropdownMenu.Root open={isOpen} onOpenChange={setIsOpen}>
|
||||
<DropdownMenu.Trigger asChild>
|
||||
|
||||
@ -29,6 +29,7 @@ export interface AppStateContext {
|
||||
// ADMIN
|
||||
adminUpdateTimes?: Date[]
|
||||
registerAdminUpdate?: () => void
|
||||
refreshAdminData?: () => void
|
||||
photosCount?: number
|
||||
photosCountHidden?: number
|
||||
uploadsCount?: number
|
||||
|
||||
@ -96,7 +96,11 @@ export default function AppStateProvider({
|
||||
}, [auth, authError]);
|
||||
const isUserSignedIn = Boolean(userEmail);
|
||||
|
||||
const { data: adminData, error: adminError } = useSWR(
|
||||
const {
|
||||
data: adminData,
|
||||
error: adminError,
|
||||
mutate: refreshAdminData,
|
||||
} = useSWR(
|
||||
isUserSignedIn ? 'getAdminData' : null,
|
||||
getAdminDataAction, {
|
||||
refreshInterval: 1000 * 60,
|
||||
@ -164,6 +168,7 @@ export default function AppStateProvider({
|
||||
// ADMIN
|
||||
adminUpdateTimes,
|
||||
registerAdminUpdate,
|
||||
refreshAdminData,
|
||||
photosCount,
|
||||
photosCountHidden,
|
||||
uploadsCount,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user