From a695a4103a801c9b41e092bf5816136fe1fee2e1 Mon Sep 17 00:00:00 2001 From: Dariusz L Date: Wed, 5 Aug 2026 13:35:08 +0200 Subject: [PATCH] refactor: unify credential check bindings --- tests/test_downloads_tab_workflow_route.mjs | 16 ++++ web/resolver/views/options_methods.js | 88 +++++++++------------ 2 files changed, 55 insertions(+), 49 deletions(-) diff --git a/tests/test_downloads_tab_workflow_route.mjs b/tests/test_downloads_tab_workflow_route.mjs index 33e1b93..441ba86 100644 --- a/tests/test_downloads_tab_workflow_route.mjs +++ b/tests/test_downloads_tab_workflow_route.mjs @@ -4703,6 +4703,22 @@ test('automatic opening remains conditional on unresolved models', () => { assert.match(optionsMethodsSource, /auto_open_on_missing: Boolean\(autoOpenOnMissingInput\?\.checked\)/); }); +test('options credential checks preserve every endpoint contract', () => { + const contracts = [ + ['/model_resolver/civitai/session-token/check', 'civitai_session_token', 'Paste token first'], + ['/model_resolver/civitai/api-key/check', 'civitai_key', 'Paste API key first'], + ['/model_resolver/huggingface/token/check', 'hf_token', 'Paste token first'], + ['/model_resolver/brave/api-key/check', 'brave_search_api_key', 'Paste API key first'] + ]; + + assert.match(optionsMethodsSource, /const checkCredential = async/); + contracts.forEach(([endpoint, payloadKey, missingText]) => { + assert.match(optionsMethodsSource, new RegExp(`endpoint: '${endpoint}'`)); + assert.match(optionsMethodsSource, new RegExp(`payloadKey: '${payloadKey}'`)); + assert.match(optionsMethodsSource, new RegExp(`missingText: '${missingText}'`)); + }); +}); + test('automatic opening preserves the current resolver display mode', () => { const openResolverForDetectedMissingModels = eval(`(${extractMethod(modelResolverSource, 'openResolverForDetectedMissingModels')})`); const refreshReasons = []; diff --git a/web/resolver/views/options_methods.js b/web/resolver/views/options_methods.js index e38a2af..7b28aac 100644 --- a/web/resolver/views/options_methods.js +++ b/web/resolver/views/options_methods.js @@ -3401,57 +3401,47 @@ export const optionsMethods = { checkAria2Status({ useUnsavedPath: false }); } - if (civitaiSessionCheckBtn) { - civitaiSessionCheckBtn.addEventListener('click', () => { - checkCredential({ - input: civitaiSessionInput, - button: civitaiSessionCheckBtn, - statusEl: civitaiSessionCheckStatus, - endpoint: '/model_resolver/civitai/session-token/check', - payloadKey: 'civitai_session_token', - missingText: 'Paste token first' - }); - }); - } + const credentialChecks = [ + { + input: civitaiSessionInput, + button: civitaiSessionCheckBtn, + statusEl: civitaiSessionCheckStatus, + endpoint: '/model_resolver/civitai/session-token/check', + payloadKey: 'civitai_session_token', + missingText: 'Paste token first' + }, + { + input: civitaiInput, + button: civitaiKeyCheckBtn, + statusEl: civitaiKeyCheckStatus, + endpoint: '/model_resolver/civitai/api-key/check', + payloadKey: 'civitai_key', + missingText: 'Paste API key first' + }, + { + input: hfInput, + button: hfTokenCheckBtn, + statusEl: hfTokenCheckStatus, + endpoint: '/model_resolver/huggingface/token/check', + payloadKey: 'hf_token', + missingText: 'Paste token first' + }, + { + input: braveInput, + button: braveKeyCheckBtn, + statusEl: braveKeyCheckStatus, + endpoint: '/model_resolver/brave/api-key/check', + payloadKey: 'brave_search_api_key', + missingText: 'Paste API key first' + } + ]; - if (civitaiKeyCheckBtn) { - civitaiKeyCheckBtn.addEventListener('click', () => { - checkCredential({ - input: civitaiInput, - button: civitaiKeyCheckBtn, - statusEl: civitaiKeyCheckStatus, - endpoint: '/model_resolver/civitai/api-key/check', - payloadKey: 'civitai_key', - missingText: 'Paste API key first' - }); + credentialChecks.forEach((config) => { + if (!config.button) return; + config.button.addEventListener('click', () => { + checkCredential(config); }); - } - - if (hfTokenCheckBtn) { - hfTokenCheckBtn.addEventListener('click', () => { - checkCredential({ - input: hfInput, - button: hfTokenCheckBtn, - statusEl: hfTokenCheckStatus, - endpoint: '/model_resolver/huggingface/token/check', - payloadKey: 'hf_token', - missingText: 'Paste token first' - }); - }); - } - - if (braveKeyCheckBtn) { - braveKeyCheckBtn.addEventListener('click', () => { - checkCredential({ - input: braveInput, - button: braveKeyCheckBtn, - statusEl: braveKeyCheckStatus, - endpoint: '/model_resolver/brave/api-key/check', - payloadKey: 'brave_search_api_key', - missingText: 'Paste API key first' - }); - }); - } + }); loadModelListStatus(false); loadBaseModelsStatus(false);