fix: Durchsuchen-Button, Tray-Icon, Minimize statt Close, .cloud Handler

1. Durchsuchen-Button: dialog:allow-open Permission in capabilities
2. Tray-Icon: Nutzt das App-Icon (32x32.png) statt leer
3. Close = Minimize: Fenster wird versteckt statt App beendet,
   Doppelklick auf Tray-Icon oeffnet wieder
4. .cloud Datei-Handler:
   - fileAssociations in tauri.conf.json registriert .cloud Extension
   - NSIS-Installer registriert den Handler automatisch
   - Doppelklick auf .cloud -> App startet, laedt Datei runter,
     oeffnet mit Standard-App (Word/Excel/etc.)
   - Wenn App laeuft: Event wird emitted, Frontend verarbeitet es

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Stefan Hacker
2026-04-12 00:57:18 +02:00
parent 505545f26c
commit adaa19a1ef
4 changed files with 67 additions and 4 deletions
+12 -2
View File
@@ -28,7 +28,7 @@ const newPathServerId = ref(null);
const newPathMode = ref("virtual");
const serverFolders = ref([]);
let unlistenStatus, unlistenLog, unlistenError, unlistenFileChange, unlistenTrigger;
let unlistenStatus, unlistenLog, unlistenError, unlistenFileChange, unlistenTrigger, unlistenCloudOpen;
async function handleLogin() {
loginError.value = "";
@@ -166,8 +166,18 @@ onMounted(async () => {
fileChanges.value = [`[${ts()}] ${e.payload}`, ...fileChanges.value].slice(0, 50);
});
unlistenTrigger = await listen("trigger-sync", () => syncNow());
unlistenCloudOpen = await listen("open-cloud-file", async (e) => {
const cloudPath = e.payload;
syncLog.value = [`[${ts()}] Oeffne: ${cloudPath}`, ...syncLog.value].slice(0, 200);
try {
const realPath = await invoke("open_cloud_file", { cloudPath });
syncLog.value = [`[${ts()}] Geoeffnet: ${realPath}`, ...syncLog.value].slice(0, 200);
} catch (err) {
syncLog.value = [`[${ts()}] Fehler: ${err}`, ...syncLog.value].slice(0, 200);
}
});
});
onUnmounted(() => { unlistenStatus?.(); unlistenLog?.(); unlistenError?.(); unlistenFileChange?.(); unlistenTrigger?.(); });
onUnmounted(() => { unlistenStatus?.(); unlistenLog?.(); unlistenError?.(); unlistenFileChange?.(); unlistenTrigger?.(); unlistenCloudOpen?.(); });
</script>
<template>