Add segmented GVL reference data maintenance

Dieser Commit ist enthalten in:
2026-06-10 20:35:27 +02:00
Ursprung d0dc1978e4
Commit 61a20c424c
6 geänderte Dateien mit 180 neuen und 22 gelöschten Zeilen
@@ -0,0 +1,69 @@
"use strict";
const purgeGvlReferenceDataButton = document.getElementById(
"purge-gvl-reference-data-button"
);
const gvlReferenceMaintenanceStatus = document.getElementById(
"gvl-reference-maintenance-status"
);
document.addEventListener("DOMContentLoaded", () => {
purgeGvlReferenceDataButton?.addEventListener("click", async () => {
await purgeGvlReferenceData();
});
});
async function purgeGvlReferenceData() {
if (!confirm(buildGvlReferenceDataPurgeConfirmationText())) {
renderGvlReferenceMaintenanceStatus("Abgebrochen.");
return;
}
purgeGvlReferenceDataButton.disabled = true;
renderGvlReferenceMaintenanceStatus("GVL-Referenzdaten werden bereinigt...");
try {
const result = await browser.runtime.sendMessage({
type: "purge_gvl_reference_data"
});
if (!result?.success) {
throw new Error(result?.error ?? "purge_gvl_reference_data_failed");
}
renderGvlReferenceMaintenanceStatus(
buildGvlReferenceDataPurgeSuccessMessage(result)
);
} catch (error) {
renderGvlReferenceMaintenanceStatus(
"GVL-Referenzdaten konnten nicht bereinigt werden."
);
console.warn("VG-Observe GVL reference data purge failed", error);
} finally {
purgeGvlReferenceDataButton.disabled = false;
}
}
function buildGvlReferenceDataPurgeConfirmationText() {
return [
"GVL-Referenzdaten bereinigen?",
"",
"Betroffen: GVL-Referenzdaten der Browser-DB.",
"Nicht betroffen: Consent-Daten, Request-Beobachtungen, Analyse-Daten.",
"",
"Diese Aktion entfernt lokale GVL-Referenzdaten aus der Browser-Datenbank."
].join("\n");
}
function buildGvlReferenceDataPurgeSuccessMessage(result) {
const clearedCount = Object.values(result.clearedStores ?? {}).reduce(
(total, count) => total + Number(count ?? 0),
0
);
return `GVL-Referenzdaten bereinigt: ${clearedCount} Records entfernt.`;
}
function renderGvlReferenceMaintenanceStatus(message) {
gvlReferenceMaintenanceStatus.textContent = message;
}