Remove ImportDialog and all manual credential management. The browser handles 401 challenges natively for same-origin fetch requests — it shows its own credential prompt, retries, and caches the result for the session. No JS-level auth code is needed. - api.js: remove authHeader() and all credentials parameters - store.js: remove credentials field - ImportDialog.js: deleted - AppShell.js: remove showImport/openImport/onMounted dialog machinery; pass importOnLoad through to PaneCP - PaneCP.js: inline doImport() (was in ImportDialog); auto-triggers on mount when importOnLoad is true; shows inline import error on failure - StatusPoller.js: remove credentials arg from fetchStatus() - style.css: remove .se-import-dialog and .se-overlay blocks
41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
const U = window.NEUSICIAN_URLS;
|
|
|
|
export const URLS = U;
|
|
|
|
export async function fetchAstLog() {
|
|
const res = await fetch(U.astlog);
|
|
if (!res.ok) throw new Error(`${res.status} ${res.statusText}`);
|
|
return res.text();
|
|
}
|
|
|
|
export async function fetchScoreText() {
|
|
const res = await fetch(U.score);
|
|
if (!res.ok) throw new Error(`${res.status} ${res.statusText}`);
|
|
return res.text();
|
|
}
|
|
|
|
export async function putScoreText(text) {
|
|
const res = await fetch(U.score, {
|
|
method: 'PUT',
|
|
headers: { 'Content-Type': 'text/yaml' },
|
|
body: text,
|
|
});
|
|
if (!res.ok) throw new Error(`${res.status} ${res.statusText}`);
|
|
return res;
|
|
}
|
|
|
|
export async function fetchStatus() {
|
|
const res = await fetch(U.status);
|
|
if (!res.ok) throw new Error(`${res.status} ${res.statusText}`);
|
|
return res.json();
|
|
}
|
|
|
|
export async function fetchAudioWidget(resultUrl, errors) {
|
|
const params = new URLSearchParams();
|
|
if (resultUrl) params.set('result_url', resultUrl);
|
|
if (errors) params.set('errors', errors);
|
|
const res = await fetch(`${U.audiowidget}?${params}`);
|
|
if (!res.ok || res.status === 204) return '';
|
|
return res.text();
|
|
}
|