import { invoke } from "@tauri-apps/api/core"; /** * Service for managing default PDF handler settings * Note: Uses localStorage for machine-specific preferences (not synced to server) */ export const defaultAppService = { /** * Check if Stirling PDF is the default PDF handler */ async isDefaultPdfHandler(): Promise { try { const result = await invoke("is_default_pdf_handler"); return result; } catch (error) { console.error("[DefaultApp] Failed to check default handler:", error); return false; } }, /** * Set or prompt to set Stirling PDF as default PDF handler * Returns a status string indicating what happened */ async setAsDefaultPdfHandler(): Promise< "set_successfully" | "opened_dialog" | "error" > { try { const result = await invoke("set_as_default_pdf_handler"); return result as "set_successfully" | "opened_dialog"; } catch (error) { console.error("[DefaultApp] Failed to set default handler:", error); return "error"; } }, /** * Check if user has dismissed the default app prompt (machine-specific) */ hasUserDismissedPrompt(): boolean { try { const dismissed = localStorage.getItem( "stirlingpdf_default_app_prompt_dismissed", ); return dismissed === "true"; } catch { return false; } }, /** * Mark that user has dismissed the default app prompt (machine-specific) */ setPromptDismissed(dismissed: boolean): void { try { localStorage.setItem( "stirlingpdf_default_app_prompt_dismissed", dismissed ? "true" : "false", ); } catch (error) { console.error("[DefaultApp] Failed to save prompt preference:", error); } }, /** * Check if we should show the default app prompt * Returns true if: user hasn't dismissed it AND app is not default handler */ async shouldShowPrompt(): Promise { if (this.hasUserDismissedPrompt()) { return false; } const isDefault = await this.isDefaultPdfHandler(); return !isDefault; }, };