diff --git a/crates/miroir-proxy/admin-ui/dist/app.js b/crates/miroir-proxy/admin-ui/dist/app.js index f4aa7fb..0dffebb 100644 --- a/crates/miroir-proxy/admin-ui/dist/app.js +++ b/crates/miroir-proxy/admin-ui/dist/app.js @@ -1569,31 +1569,104 @@ }); } - function previewSettingsChanges() { + async function previewSettingsChanges() { + const indexUid = state.currentSettingsIndex; const editor = document.getElementById('settingsEditor'); const newSettings = JSON.parse(editor.value); - const currentJson = document.getElementById('currentSettingsJson').textContent; - const currentSettings = JSON.parse(currentJson || '{}'); - // Compute fingerprint of new settings - const newFingerprint = computeFingerprint(newSettings); - document.getElementById('newFingerprint').textContent = newFingerprint; + try { + // Call the 2PC preview endpoint + const preview = await fetchAPI(`/indexes/${indexUid}/settings`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(newSettings) + }); - // Compute diff - const diffSummary = document.getElementById('diffSummary'); - const diff = computeDiff(currentSettings, newSettings); + // Display fingerprint info + document.getElementById('newFingerprint').textContent = preview.proposedFingerprint || 'N/A'; + const currentFingerprint = preview.currentFingerprint || 'N/A'; + document.getElementById('currentFingerprint').textContent = currentFingerprint; - if (diff.length === 0) { - diffSummary.innerHTML = '
No changes detected.
'; - } else { - diffSummary.innerHTML = diff.map(line => - `${escapeHtml(flow.phase2.expectedFingerprint || '').substring(0, 16)}...No changes detected.
'; + } else { + diffSummary.innerHTML = diff.map(change => { + let text = ''; + let className = ''; + + switch (change.type) { + case 'added': + text = `+ ${change.key}: ${JSON.stringify(change.value)}`; + className = 'added'; + break; + case 'removed': + text = `- ${change.key}: ${JSON.stringify(change.oldValue)}`; + className = 'removed'; + break; + case 'modified': + text = `~ ${change.key}: ${JSON.stringify(change.old)} → ${JSON.stringify(change.new)}`; + className = 'modified'; + break; + } + + return `
+ Current Fingerprint:
+