1import { getSettings } from "./vault";23const DEFAULT_CLEAR_SECONDS = 30;45let clipboardClearTimer: ReturnType<typeof setTimeout> | null = null;67async function writeToClipboard(text: string): Promise<void> {8 9 10 try {11 const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });12 if (tab?.id) {13 await chrome.scripting.executeScript({14 target: { tabId: tab.id },15 func: (value: string) => navigator.clipboard.writeText(value),16 args: [text],17 });18 return;19 }20 } catch {21 22 }23 24 await navigator.clipboard.writeText(text);25}2627export async function copyToClipboard(text: string, _label: string): Promise<void> {28 if (clipboardClearTimer) {29 clearTimeout(clipboardClearTimer);30 clipboardClearTimer = null;31 }32 await writeToClipboard(text);3334 const settingsSeconds = getSettings().clipboardClearSeconds;35 const clearAfterMs =36 (typeof settingsSeconds === "number" && settingsSeconds > 037 ? settingsSeconds38 : DEFAULT_CLEAR_SECONDS) * 1000;3940 clipboardClearTimer = setTimeout(async () => {41 try {42 await writeToClipboard("");43 } catch {}44 clipboardClearTimer = null;45 }, clearAfterMs);46}