fix undefined source toggle error
CI / compose (push) Successful in 14m33s

This commit is contained in:
Marco0300
2026-09-04 15:02:11 +02:00
parent b7a43b5074
commit 772abbeac0
3 changed files with 4 additions and 2 deletions
+1
View File
@@ -360,6 +360,7 @@ $('aiProviderForm').addEventListener('submit',saveAiProviderSettings);$('aiProvi
const actionButton = event.target.closest?.('[data-source-action="toggle"]'); const actionButton = event.target.closest?.('[data-source-action="toggle"]');
if (!actionButton) return; if (!actionButton) return;
const source = findRegisteredSource(actionButton.dataset.sourceId); const source = findRegisteredSource(actionButton.dataset.sourceId);
if (!source) return;
const needsPromptConfig = ['public_website','dns','rdap','ct_logs','openstreetmap','wikidata','common_crawl'].includes(sourceType(source)); const needsPromptConfig = ['public_website','dns','rdap','ct_logs','openstreetmap','wikidata','common_crawl'].includes(sourceType(source));
if (source && !source.configured && source.available && needsPromptConfig) { event.preventDefault(); event.stopImmediatePropagation(); configureSourceFromUi(source, actionButton); } if (source && !source.configured && source.available && needsPromptConfig) { event.preventDefault(); event.stopImmediatePropagation(); configureSourceFromUi(source, actionButton); }
}, true); }, true);
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"schema": 1, "schema": 1,
"version": "phase-28", "version": "phase-29",
"entrypoints": [ "entrypoints": [
"config.js", "config.js",
"app.js", "app.js",
@@ -14,7 +14,7 @@
], ],
"integrity": { "integrity": {
"config.js": "sha256-40caf170414913b9ab63df455d1510d6ce11f1904b40441f20396291861f76fe", "config.js": "sha256-40caf170414913b9ab63df455d1510d6ce11f1904b40441f20396291861f76fe",
"app.js": "sha256-ab5c2ac47fa221b9894eaf1a7802b9f60a010beed27b0d0e4d3ba84ffa03f2c1", "app.js": "sha256-3a474d4753b84fa27ecac448056d13c4ee25341eb7877950fb52a8dc6922716f",
"styles.css": "sha256-ba90290ab11e82a6b2639dfd70d1e74502c1cacb2b26cf1db92b45beb67ac03f", "styles.css": "sha256-ba90290ab11e82a6b2639dfd70d1e74502c1cacb2b26cf1db92b45beb67ac03f",
"index.html": "sha256-316b06d3062b77330962c303020ab4577cbbbc8c92bf33a99957ab167cb85ea2", "index.html": "sha256-316b06d3062b77330962c303020ab4577cbbbc8c92bf33a99957ab167cb85ea2",
"health.html": "sha256-c352a6f37aa24628cfc8d5709a70ff2d94181d192ed5fe00916cca9378a61d81", "health.html": "sha256-c352a6f37aa24628cfc8d5709a70ff2d94181d192ed5fe00916cca9378a61d81",
+1
View File
@@ -84,6 +84,7 @@ check('auth.display-name-greeting', 'authenticated display name drives the greet
check('sources.registry-status', 'source registry exposes governed configuration and operational status fields', all(['source_code', 'display_name', 'configured', 'available', 'enabled', 'API credential', 'Terms', 'Owner', 'Rate limit', 'Daily quota', 'Last health', 'Success / error', 'Circuit', 'data-source-action="review"', 'data-source-action="test"'], token => `${html}\n${js}\n${css}`.includes(token))); check('sources.registry-status', 'source registry exposes governed configuration and operational status fields', all(['source_code', 'display_name', 'configured', 'available', 'enabled', 'API credential', 'Terms', 'Owner', 'Rate limit', 'Daily quota', 'Last health', 'Success / error', 'Circuit', 'data-source-action="review"', 'data-source-action="test"'], token => `${html}\n${js}\n${css}`.includes(token)));
check('sources.optional-gated', 'optional adapters are rendered unavailable until configured', all(['/api/v1/sources/adapters', 'configuration-gated', 'Optional adapter', 'source.optional', 'available:Boolean(adapter.available)'], token => `${html}\n${js}\n${css}`.includes(token))); check('sources.optional-gated', 'optional adapters are rendered unavailable until configured', all(['/api/v1/sources/adapters', 'configuration-gated', 'Optional adapter', 'source.optional', 'available:Boolean(adapter.available)'], token => `${html}\n${js}\n${css}`.includes(token)));
check('sources.registered-actions', 'registered sources keep Review/Test actions actionable while previews remain disabled', js.includes("${!source.id?'disabled':''}") && js.includes("if (!source || !source.id)")); check('sources.registered-actions', 'registered sources keep Review/Test actions actionable while previews remain disabled', js.includes("${!source.id?'disabled':''}") && js.includes("if (!source || !source.id)"));
check('sources.toggle-guard', 'source toggle handler ignores unknown rows before reading source fields', js.includes("const source = findRegisteredSource(actionButton.dataset.sourceId);\n if (!source) return;\n const needsPromptConfig"));
check('sources.setup-affordances', 'manual and CSV setup affordances remain explicit and disabled by default', all(['Manual records', 'CSV import', 'CSV content is required', 'enabled:false', 'remains disabled'], token => `${html}\n${js}\n${css}`.includes(token))); check('sources.setup-affordances', 'manual and CSV setup affordances remain explicit and disabled by default', all(['Manual records', 'CSV import', 'CSV content is required', 'enabled:false', 'remains disabled'], token => `${html}\n${js}\n${css}`.includes(token)));
check('discovery.operator-controls', 'discovery builder and run controls are represented', all(['data-run-action="pause"', 'data-run-action="resume"', 'data-run-action="cancel"', 'live-log', 'source-health', 'daily_limit', 'source_ids', 'schedule'], token => `${html}\n${js}\n${css}`.includes(token))); check('discovery.operator-controls', 'discovery builder and run controls are represented', all(['data-run-action="pause"', 'data-run-action="resume"', 'data-run-action="cancel"', 'live-log', 'source-health', 'daily_limit', 'source_ids', 'schedule'], token => `${html}\n${js}\n${css}`.includes(token)));
check('prospects.filter-contract', 'prospect explorer exposes source, geography, category, and contact filters', all(['sourceFilter', 'geographyFilter', 'categoryFilter', 'contactStatusFilter', 'contact_status'], token => `${html}\n${js}\n${css}`.includes(token))); check('prospects.filter-contract', 'prospect explorer exposes source, geography, category, and contact filters', all(['sourceFilter', 'geographyFilter', 'categoryFilter', 'contactStatusFilter', 'contact_status'], token => `${html}\n${js}\n${css}`.includes(token)));