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(28 text: string,29 _label: string,30 alreadyWritten = false,31): Promise<void> {32 if (clipboardClearTimer) {33 clearTimeout(clipboardClearTimer);34 clipboardClearTimer = null;35 }36 37 38 39 40 if (!alreadyWritten) {41 await writeToClipboard(text);42 }4344 const settingsSeconds = getSettings().clipboardClearSeconds;45 const clearAfterMs =46 (typeof settingsSeconds === "number" && settingsSeconds > 047 ? settingsSeconds48 : DEFAULT_CLEAR_SECONDS) * 1000;4950 clipboardClearTimer = setTimeout(async () => {51 try {52 await writeToClipboard("");53 } catch {}54 clipboardClearTimer = null;55 }, clearAfterMs);56}