.manual check
This commit is contained in:
@@ -32,7 +32,6 @@ import { useMetadata } from "@/hooks/useMetadata";
|
|||||||
import { useLyrics } from "@/hooks/useLyrics";
|
import { useLyrics } from "@/hooks/useLyrics";
|
||||||
import { useCover } from "@/hooks/useCover";
|
import { useCover } from "@/hooks/useCover";
|
||||||
import { useAvailability } from "@/hooks/useAvailability";
|
import { useAvailability } from "@/hooks/useAvailability";
|
||||||
import { ensureApiStatusCheckStarted } from "@/lib/api-status";
|
|
||||||
import { useDownloadQueueDialog } from "@/hooks/useDownloadQueueDialog";
|
import { useDownloadQueueDialog } from "@/hooks/useDownloadQueueDialog";
|
||||||
import { useDownloadProgress } from "@/hooks/useDownloadProgress";
|
import { useDownloadProgress } from "@/hooks/useDownloadProgress";
|
||||||
import { buildPlaylistFolderName } from "@/lib/playlist";
|
import { buildPlaylistFolderName } from "@/lib/playlist";
|
||||||
@@ -198,7 +197,6 @@ function App() {
|
|||||||
};
|
};
|
||||||
mediaQuery.addEventListener("change", handleChange);
|
mediaQuery.addEventListener("change", handleChange);
|
||||||
checkForUpdates();
|
checkForUpdates();
|
||||||
ensureApiStatusCheckStarted();
|
|
||||||
void loadHistory();
|
void loadHistory();
|
||||||
return () => {
|
return () => {
|
||||||
mediaQuery.removeEventListener("change", handleChange);
|
mediaQuery.removeEventListener("change", handleChange);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import { RefreshCw, CheckCircle2, XCircle, Loader2 } from "lucide-react";
|
import { SearchCheck, CheckCircle2, XCircle, Loader2 } from "lucide-react";
|
||||||
import { TidalIcon, QobuzIcon, AmazonIcon, LrclibIcon, MusicBrainzIcon } from "./PlatformIcons";
|
import { TidalIcon, QobuzIcon, AmazonIcon, LrclibIcon, MusicBrainzIcon } from "./PlatformIcons";
|
||||||
import { useApiStatus } from "@/hooks/useApiStatus";
|
import { useApiStatus } from "@/hooks/useApiStatus";
|
||||||
export function ApiStatusTab() {
|
export function ApiStatusTab() {
|
||||||
const { sources, statuses, isCheckingAll, refreshAll } = useApiStatus();
|
const { sources, statuses, isCheckingAll, checkAll } = useApiStatus();
|
||||||
return (<div className="space-y-6">
|
return (<div className="space-y-6">
|
||||||
<div className="flex items-center justify-end">
|
<div className="flex items-center justify-end">
|
||||||
<Button variant="outline" onClick={() => void refreshAll()} disabled={isCheckingAll} className="gap-2">
|
<Button variant="outline" onClick={() => void checkAll()} disabled={isCheckingAll} className="gap-2">
|
||||||
<RefreshCw className={`h-4 w-4 ${isCheckingAll ? "animate-spin" : ""}`}/>
|
{isCheckingAll ? <Loader2 className="h-4 w-4 animate-spin"/> : <SearchCheck className="h-4 w-4"/>}
|
||||||
Refresh All
|
Check
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { API_SOURCES, checkAllApiStatuses, ensureApiStatusCheckStarted, getApiStatusState, subscribeApiStatus, } from "@/lib/api-status";
|
import { API_SOURCES, checkAllApiStatuses, getApiStatusState, subscribeApiStatus, } from "@/lib/api-status";
|
||||||
export function useApiStatus() {
|
export function useApiStatus() {
|
||||||
const [state, setState] = useState(getApiStatusState);
|
const [state, setState] = useState(getApiStatusState);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
ensureApiStatusCheckStarted();
|
|
||||||
return subscribeApiStatus(() => {
|
return subscribeApiStatus(() => {
|
||||||
setState(getApiStatusState());
|
setState(getApiStatusState());
|
||||||
});
|
});
|
||||||
@@ -11,6 +10,6 @@ export function useApiStatus() {
|
|||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
sources: API_SOURCES,
|
sources: API_SOURCES,
|
||||||
refreshAll: () => checkAllApiStatuses(true),
|
checkAll: () => checkAllApiStatuses(false),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,17 +91,6 @@ export function subscribeApiStatus(listener: () => void): () => void {
|
|||||||
listeners.delete(listener);
|
listeners.delete(listener);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
export function hasApiStatusResults(): boolean {
|
|
||||||
return API_SOURCES.some((source) => {
|
|
||||||
const status = apiStatusState.statuses[source.id];
|
|
||||||
return status === "online" || status === "offline";
|
|
||||||
});
|
|
||||||
}
|
|
||||||
export function ensureApiStatusCheckStarted(): void {
|
|
||||||
if (!activeCheckAll && !hasApiStatusResults()) {
|
|
||||||
void checkAllApiStatuses(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export async function checkAllApiStatuses(forceRefresh: boolean = false): Promise<void> {
|
export async function checkAllApiStatuses(forceRefresh: boolean = false): Promise<void> {
|
||||||
if (activeCheckAll) {
|
if (activeCheckAll) {
|
||||||
return activeCheckAll;
|
return activeCheckAll;
|
||||||
|
|||||||
Reference in New Issue
Block a user