var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var PersistentStorageDialog_1; import { Button } from "@mariozechner/mini-lit/dist/Button.js"; import { DialogContent, DialogHeader } from "@mariozechner/mini-lit/dist/Dialog.js"; import { DialogBase } from "@mariozechner/mini-lit/dist/DialogBase.js"; import { html } from "lit"; import { customElement, state } from "lit/decorators.js"; import { i18n } from "../utils/i18n.js"; let PersistentStorageDialog = PersistentStorageDialog_1 = class PersistentStorageDialog extends DialogBase { constructor() { super(...arguments); this.requesting = false; this.modalWidth = "min(500px, 90vw)"; this.modalHeight = "auto"; } /** * Request persistent storage permission. * Returns true if browser granted persistent storage, false otherwise. */ static async request() { // Check if already persisted if (navigator.storage?.persisted) { const alreadyPersisted = await navigator.storage.persisted(); if (alreadyPersisted) { console.log("✓ Persistent storage already granted"); return true; } } // Show dialog and wait for user response const dialog = new PersistentStorageDialog_1(); dialog.open(); const userApproved = await new Promise((resolve) => { dialog.resolvePromise = resolve; }); if (!userApproved) { console.warn("⚠ User declined persistent storage - sessions may be lost"); return false; } // User approved, request from browser if (!navigator.storage?.persist) { console.warn("⚠ Persistent storage API not available"); return false; } try { const granted = await navigator.storage.persist(); if (granted) { console.log("✓ Persistent storage granted - sessions will be preserved"); } else { console.warn("⚠ Browser denied persistent storage - sessions may be lost under storage pressure"); } return granted; } catch (error) { console.error("Failed to request persistent storage:", error); return false; } } handleGrant() { if (this.resolvePromise) { this.resolvePromise(true); this.resolvePromise = undefined; } this.close(); } handleDeny() { if (this.resolvePromise) { this.resolvePromise(false); this.resolvePromise = undefined; } this.close(); } close() { super.close(); if (this.resolvePromise) { this.resolvePromise(false); } } renderContent() { return html ` ${DialogContent({ children: html ` ${DialogHeader({ title: i18n("Storage Permission Required"), description: i18n("This app needs persistent storage to save your conversations"), })}
${i18n("Why is this needed?")}
${i18n("Without persistent storage, your browser may delete saved conversations when it needs disk space. Granting this permission ensures your chat history is preserved.")}
${i18n("What this means:")}