thunderbird2docuware/background/background.js
sylyx 2befbb042b DocuWare Ablage – Thunderbird-Extension v0.8.0
Thunderbird-MailExtension zum Ablegen von E-Mails in DocuWare
  (.eml + PDF + Anhänge), dynamische Indexfelder aus dem Store-Dialog,
  Auswahllisten, Identity-Service-Login. Self-distribution-Updates
  über updates.json auf eigenem Gitea.
2026-06-03 13:15:59 +02:00

63 lines
2.0 KiB
JavaScript

// Hintergrund-Skript: Button + Kontextmenü, öffnet den Ablage-Dialog.
const DIALOG_URL = "dialog/dialog.html";
function openDialog(messageIds) {
const ids = Array.isArray(messageIds) ? messageIds : [messageIds];
// Pro Nachricht ein eigenes Ablagefenster (leicht versetzt gestapelt).
ids.forEach((id, i) => {
const url = browser.runtime.getURL(`${DIALOG_URL}?messageId=${id}`);
browser.windows.create({
url,
type: "popup",
width: 720,
height: 820,
left: 100 + i * 28,
top: 80 + i * 28,
});
});
}
// Button in der geöffneten Nachricht
browser.messageDisplayAction.onClicked.addListener(async (tab) => {
const msg = await browser.messageDisplay.getDisplayedMessage(tab.id);
if (msg) openDialog([msg.id]);
});
// Kontextmenü-Eintrag in der Nachrichtenliste
browser.menus.create({
id: "docuware-archive",
title: "In DocuWare ablegen",
contexts: ["message_list"],
});
browser.menus.onClicked.addListener((info) => {
if (info.menuItemId !== "docuware-archive") return;
const msgs = info.selectedMessages && info.selectedMessages.messages;
if (msgs && msgs.length > 0) openDialog(msgs.map((m) => m.id));
});
// Tastenkürzel (Strg+Alt+I): angezeigte bzw. alle markierten Nachrichten ablegen.
browser.commands.onCommand.addListener(async (command) => {
if (command !== "open-archive-dialog") return;
const ids = await currentMessageIds();
if (ids.length) openDialog(ids);
});
// Ermittelt die "aktiven" Nachrichten: erst die im Reader angezeigte, sonst
// alle im Nachrichtenlisten-Tab markierten.
async function currentMessageIds() {
try {
const [tab] = await browser.tabs.query({ active: true, currentWindow: true });
if (tab) {
const shown = await browser.messageDisplay
.getDisplayedMessage(tab.id)
.catch(() => null);
if (shown) return [shown.id];
}
const sel = await browser.mailTabs.getSelectedMessages().catch(() => null);
if (sel && sel.messages && sel.messages.length) return sel.messages.map((m) => m.id);
} catch (_) {}
return [];
}