diff --git a/src/apps/dashboard/components/widgets/ServerInfoWidget.tsx b/src/apps/dashboard/components/widgets/ServerInfoWidget.tsx index e7914f0f7c..bc06bc6201 100644 --- a/src/apps/dashboard/components/widgets/ServerInfoWidget.tsx +++ b/src/apps/dashboard/components/widgets/ServerInfoWidget.tsx @@ -15,9 +15,15 @@ type ServerInfoWidgetProps = { onScanLibrariesClick?: () => void; onRestartClick?: () => void; onShutdownClick?: () => void; + isScanning?: boolean; }; -const ServerInfoWidget = ({ onScanLibrariesClick, onRestartClick, onShutdownClick }: ServerInfoWidgetProps) => { +const ServerInfoWidget = ({ + onScanLibrariesClick, + onRestartClick, + onShutdownClick, + isScanning +}: ServerInfoWidgetProps) => { const { data: systemInfo, isPending } = useSystemInfo(); return ( @@ -63,6 +69,7 @@ const ServerInfoWidget = ({ onScanLibrariesClick, onRestartClick, onShutdownClic sx={{ fontWeight: 'bold' }} + disabled={isScanning} > {globalize.translate('ButtonScanAllLibraries')} diff --git a/src/apps/dashboard/routes/index.tsx b/src/apps/dashboard/routes/index.tsx index 78071200d8..5a6c475d39 100644 --- a/src/apps/dashboard/routes/index.tsx +++ b/src/apps/dashboard/routes/index.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useState } from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import Page from 'components/Page'; import globalize from 'lib/globalize'; import Box from '@mui/material/Box'; @@ -16,6 +16,7 @@ import RunningTasksWidget from '../components/widgets/RunningTasksWidget'; import DevicesWidget from '../components/widgets/DevicesWidget'; import { useStartTask } from '../features/tasks/api/useStartTask'; import ItemCountsWidget from '../components/widgets/ItemCountsWidget'; +import { TaskState } from '@jellyfin/sdk/lib/generated-client/models/task-state'; export const Component = () => { const [ isRestartConfirmDialogOpen, setIsRestartConfirmDialogOpen ] = useState(false); @@ -26,6 +27,10 @@ export const Component = () => { const { data: tasks } = useLiveTasks({ isHidden: false }); + const librariesTask = useMemo(() => ( + tasks?.find((value) => value.Key === 'RefreshLibrary') + ), [ tasks ]); + const promptRestart = useCallback(() => { setIsRestartConfirmDialogOpen(true); }, []); @@ -94,6 +99,7 @@ export const Component = () => { onScanLibrariesClick={onScanLibraries} onRestartClick={promptRestart} onShutdownClick={promptShutdown} + isScanning={librariesTask?.State !== TaskState.Idle} /> diff --git a/src/apps/dashboard/routes/libraries/index.tsx b/src/apps/dashboard/routes/libraries/index.tsx index 5ba9cfac70..462c8c0209 100644 --- a/src/apps/dashboard/routes/libraries/index.tsx +++ b/src/apps/dashboard/routes/libraries/index.tsx @@ -70,7 +70,7 @@ export const Component = () => {