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 = () => {
}
- loading={librariesTask && librariesTask.State === TaskState.Running}
+ loading={librariesTask && librariesTask.State !== TaskState.Idle}
loadingPosition='start'
variant='outlined'
>