Anpassung Tagsuche, Fix Fehler bei längeren Ladezeiten
This commit is contained in:
@@ -102,7 +102,22 @@ let naechsteAuftragsnummer = 1;
|
||||
|
||||
// ---------------------------------------------------------------- Menüs
|
||||
|
||||
browser.runtime.onInstalled.addListener(() => {
|
||||
/**
|
||||
* Menüeinträge anlegen.
|
||||
*
|
||||
* NICHT in onInstalled: Eine Ereignisseite wird beendet und bei Bedarf
|
||||
* neu geladen, das Skript läuft dabei erneut durch. Die Menüs überleben
|
||||
* das aber - ein zweiter menus.create mit derselben Kennung scheitert
|
||||
* dann mit "already exists".
|
||||
*
|
||||
* Deshalb erst removeAll, dann neu anlegen. Das ist bei jedem Aufwachen
|
||||
* richtig und kostet nichts.
|
||||
*/
|
||||
async function menueAufbauen() {
|
||||
try {
|
||||
await browser.menus.removeAll();
|
||||
} catch { /* beim ersten Lauf gibt es nichts zu entfernen */ }
|
||||
|
||||
browser.menus.create({
|
||||
id: "paperless-anhang",
|
||||
title: t("menuStoreAttachment"),
|
||||
@@ -113,7 +128,9 @@ browser.runtime.onInstalled.addListener(() => {
|
||||
title: t("menuStoreMessage"),
|
||||
contexts: ["message_list"]
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
menueAufbauen();
|
||||
|
||||
browser.menus.onClicked.addListener(async (info, tab) => {
|
||||
try {
|
||||
@@ -249,6 +266,29 @@ async function dialogOeffnen(art, daten) {
|
||||
|
||||
// -------------------------------------------- Vermittlung für die Dialoge
|
||||
|
||||
/**
|
||||
* Offene Verbindungen der Dialoge.
|
||||
*
|
||||
* SEHR WICHTIG: Eine Ereignisseite wird beendet, sobald keine Ereignisse
|
||||
* mehr anstehen. Eine laufende Wartezeit in waitForTask zählt NICHT als
|
||||
* Ereignis - mitten im Ablegen verschwindet sonst der Empfänger, und der
|
||||
* Dialog bekommt "Could not establish connection. Receiving end does not
|
||||
* exist."
|
||||
*
|
||||
* Eine offene Verbindung hält die Seite dagegen am Leben. Die Dialoge
|
||||
* öffnen deshalb beim Laden eine und halten sie bis zum Schliessen.
|
||||
*/
|
||||
const verbindungen = new Set();
|
||||
|
||||
browser.runtime.onConnect.addListener((port) => {
|
||||
verbindungen.add(port);
|
||||
console.debug("[paperless] Dialog verbunden, offen:", verbindungen.size);
|
||||
port.onDisconnect.addListener(() => {
|
||||
verbindungen.delete(port);
|
||||
console.debug("[paperless] Dialog getrennt, offen:", verbindungen.size);
|
||||
});
|
||||
});
|
||||
|
||||
browser.runtime.onMessage.addListener(async (nachricht, absender) => {
|
||||
// Nur Nachrichten aus dieser Erweiterung annehmen. Thunderbird lässt
|
||||
// fremde Absender hier zwar ohnehin nicht durch, solange kein
|
||||
@@ -390,14 +430,22 @@ async function ablegen(nachricht) {
|
||||
const antwort = await c.updateVersion(
|
||||
nachricht.zielId, datei.blob, datei.name,
|
||||
versionslabel(s.versionLabel));
|
||||
const id = await c.waitForTask(antwort);
|
||||
const id = await c.waitForTask(antwort, (sek) => {
|
||||
if (sek % 15 === 0) {
|
||||
console.debug("[paperless] warte auf Aufgabe:", sek, "s");
|
||||
}
|
||||
});
|
||||
ergebnisse.push({ id, name: datei.name, art: "version",
|
||||
zielId: nachricht.zielId });
|
||||
} else {
|
||||
const felder = { title: nachricht.titel || datei.name };
|
||||
if (nachricht.erstellt) felder.created = nachricht.erstellt;
|
||||
const antwort = await c.postDocument(datei.blob, datei.name, felder);
|
||||
const id = await c.waitForTask(antwort);
|
||||
const id = await c.waitForTask(antwort, (sek) => {
|
||||
if (sek % 15 === 0) {
|
||||
console.debug("[paperless] warte auf Aufgabe:", sek, "s");
|
||||
}
|
||||
});
|
||||
ergebnisse.push({ id, name: datei.name, art: "neu" });
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user