Show template load errors

This commit is contained in:
Paul Huliganga 2026-04-21 23:18:16 -04:00
parent 90113a6514
commit 2681d7d5ba
2 changed files with 14 additions and 1 deletions

View File

@ -15,6 +15,7 @@ export const state = {
docusignAccountSelectionRequired: false, docusignAccountSelectionRequired: false,
}, },
templates: [], // [{ adobe_id, name, status, blockers, warnings, ... }] templates: [], // [{ adobe_id, name, status, blockers, warnings, ... }]
templatesError: null, // Visible error state for template loading failures
selectedIds: new Set(), selectedIds: new Set(),
lastMigrationResults: null, // final batch job results lastMigrationResults: null, // final batch job results
issueCount: 0, // blocked template count (drives nav badge) issueCount: 0, // blocked template count (drives nav badge)

View File

@ -30,15 +30,20 @@ function readiness(t) {
export async function refreshTemplates() { export async function refreshTemplates() {
if (!state.auth.adobe || !state.auth.docusign) { if (!state.auth.adobe || !state.auth.docusign) {
setState('templates', []); setState('templates', []);
setState('templatesError', null);
updateDerivedState(); updateDerivedState();
return; return;
} }
try { try {
const data = await api.templates.status(); const data = await api.templates.status();
setState('templates', data.templates || []); setState('templates', data.templates || []);
setState('templatesError', null);
updateDerivedState(); updateDerivedState();
} catch (e) { } catch (e) {
console.warn('refreshTemplates failed:', e.message); console.warn('refreshTemplates failed:', e.message);
setState('templates', []);
setState('templatesError', e.data?.error || e.message || 'Failed to load templates.');
updateDerivedState();
} }
} }
@ -84,6 +89,13 @@ function _render() {
</div> </div>
` : ''} ` : ''}
${state.templatesError ? `
<div class="callout error">
<span class="callout-icon"></span>
Template loading failed: ${escHtml(state.templatesError)}
</div>
` : ''}
<!-- Filter bar --> <!-- Filter bar -->
<div class="filter-bar"> <div class="filter-bar">
<input type="search" class="search-input" id="template-search" <input type="search" class="search-input" id="template-search"
@ -131,7 +143,7 @@ function _render() {
<div class="empty-state"> <div class="empty-state">
<div class="empty-state-icon">📄</div> <div class="empty-state-icon">📄</div>
<div class="empty-state-title">${state.templates.length ? 'No templates match your filter' : 'No templates found'}</div> <div class="empty-state-title">${state.templates.length ? 'No templates match your filter' : 'No templates found'}</div>
<div class="empty-state-sub">${state.templates.length ? 'Try clearing the search or filter.' : 'Connect Adobe Sign to load templates.'}</div> <div class="empty-state-sub">${state.templates.length ? 'Try clearing the search or filter.' : (state.templatesError ? 'The template load failed. Check the error message above.' : 'Connect Adobe Sign to load templates.')}</div>
</div> </div>
</td></tr>` </td></tr>`
} }