1
0
Fork 0
mirror of https://github.com/sussy-code/smov.git synced 2024-12-29 16:07:40 +01:00

Merge pull request #939 from qtchaos/admin-update

Update the admin page to run workers in parallel
This commit is contained in:
William Oldham 2024-02-25 22:20:15 +00:00 committed by GitHub
commit 0a86c59cfb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 8 deletions

View file

@ -29,7 +29,7 @@ export function TMDBTestPart() {
return setStatus({
hasTested: true,
success: false,
errorText: "TMDB api key is not set",
errorText: "TMDB API key is not set",
});
}
const isJWT = tmdbApiKey.split(".").length > 2;
@ -37,7 +37,7 @@ export function TMDBTestPart() {
return setStatus({
hasTested: true,
success: false,
errorText: "TMDB api key is not a read only key",
errorText: "TMDB API key is not a read only key",
});
}
@ -48,7 +48,7 @@ export function TMDBTestPart() {
hasTested: true,
success: false,
errorText:
"Failed to call tmdb, double check api key and your internet connection",
"Failed to call TMDB, double check API key and your internet connection",
});
}
@ -61,7 +61,7 @@ export function TMDBTestPart() {
return (
<>
<Heading2 className="mb-8 mt-12">TMDB tests</Heading2>
<Heading2 className="mb-8 mt-12">TMDB test</Heading2>
<Box>
<div className="flex items-center">
<div className="flex-1">

View file

@ -52,14 +52,18 @@ export function WorkerTestPart() {
{ id: string; status: "error" | "success"; error?: Error }[]
>([]);
const [buttonDisabled, setButtonDisabled] = useState(false);
const [testState, runTests] = useAsyncFn(async () => {
setButtonDisabled(true);
function updateWorker(id: string, data: (typeof workerState)[number]) {
setWorkerState((s) => {
return [...s.filter((v) => v.id !== id), data];
});
}
setWorkerState([]);
for (const worker of workerList) {
const workerPromises = workerList.map(async (worker) => {
try {
if (worker.url.endsWith("/")) {
updateWorker(worker.id, {
@ -67,7 +71,7 @@ export function WorkerTestPart() {
status: "error",
error: new Error("URL ends with slash"),
});
continue;
return;
}
await singularProxiedFetch(
worker.url,
@ -85,7 +89,10 @@ export function WorkerTestPart() {
error: err as Error,
});
}
}
});
await Promise.all(workerPromises);
setTimeout(() => setButtonDisabled(false), 5000);
}, [workerList, setWorkerState]);
return (
@ -112,7 +119,12 @@ export function WorkerTestPart() {
})}
<Divider />
<div className="flex justify-end">
<Button theme="purple" loading={testState.loading} onClick={runTests}>
<Button
theme="purple"
loading={testState.loading}
onClick={buttonDisabled ? undefined : runTests}
disabled={buttonDisabled}
>
Test workers
</Button>
</div>