rename setup → settings throughout; persist arr creds even on test failure
All checks were successful
Build and Push Docker Image / build (push) Successful in 36s
All checks were successful
Build and Push Docker Image / build (push) Successful in 36s
Two cleanups:
1. Rename the page from 'Setup' to 'Settings' all the way down. The H1
already said Settings; the file/component/api path were lying.
- src/features/setup/ → src/features/settings/
- SetupPage.tsx → SettingsPage.tsx, SetupPage → SettingsPage,
SetupData → SettingsData, setupCache → settingsCache
- server/api/setup.ts → server/api/settings.ts
- /api/setup → /api/settings (only consumer is our frontend)
- server/index.tsx import + route mount renamed
- ScanPage's local setupChecked → configChecked
2. Sonarr (and Radarr) save flow: persist the values BEFORE running the
connection test. The previous code returned early if the test failed,
silently dropping what the user typed — explained the user's report
that Sonarr 'forgets' the input. Now setConfig fires unconditionally
on a valid (non-empty) URL+key; the test result is returned as
{ ok, saved, testError } so the UI can show 'Saved & connected' on
success or '⚠ Saved, but connection test failed: …' on failure
instead of erasing the input.
Note: setup_complete config key kept as-is — it represents 'has the user
configured Jellyfin' which is conceptually setup and not user-visible.
This commit is contained in:
@@ -37,6 +37,10 @@ app.post("/jellyfin", async (c) => {
|
||||
return c.json({ ok: true });
|
||||
});
|
||||
|
||||
// Persist values BEFORE testing the connection. The previous behaviour
|
||||
// silently dropped what the user typed when the test failed (e.g. Sonarr
|
||||
// not yet reachable), making the field appear to "forget" the input on
|
||||
// reload. Save first, surface the test result as a warning the UI can show.
|
||||
app.post("/radarr", async (c) => {
|
||||
const body = await c.req.json<{ url?: string; api_key?: string }>();
|
||||
const url = body.url?.replace(/\/$/, "");
|
||||
@@ -47,14 +51,12 @@ app.post("/radarr", async (c) => {
|
||||
return c.json({ ok: false, error: "URL and API key are required" }, 400);
|
||||
}
|
||||
|
||||
const result = await testRadarr({ url, apiKey });
|
||||
if (!result.ok) return c.json({ ok: false, error: result.error });
|
||||
|
||||
setConfig("radarr_url", url);
|
||||
setConfig("radarr_api_key", apiKey);
|
||||
setConfig("radarr_enabled", "1");
|
||||
|
||||
return c.json({ ok: true });
|
||||
const result = await testRadarr({ url, apiKey });
|
||||
return c.json({ ok: result.ok, saved: true, testError: result.ok ? undefined : result.error });
|
||||
});
|
||||
|
||||
app.post("/sonarr", async (c) => {
|
||||
@@ -67,14 +69,12 @@ app.post("/sonarr", async (c) => {
|
||||
return c.json({ ok: false, error: "URL and API key are required" }, 400);
|
||||
}
|
||||
|
||||
const result = await testSonarr({ url, apiKey });
|
||||
if (!result.ok) return c.json({ ok: false, error: result.error });
|
||||
|
||||
setConfig("sonarr_url", url);
|
||||
setConfig("sonarr_api_key", apiKey);
|
||||
setConfig("sonarr_enabled", "1");
|
||||
|
||||
return c.json({ ok: true });
|
||||
const result = await testSonarr({ url, apiKey });
|
||||
return c.json({ ok: result.ok, saved: true, testError: result.ok ? undefined : result.error });
|
||||
});
|
||||
|
||||
app.post("/subtitle-languages", async (c) => {
|
||||
Reference in New Issue
Block a user