feat: Offline-Dateien werden beim erneuten Oeffnen wieder ausgecheckt
Bisher hat der Client nur beim ersten Oeffnen (.cloud-Platzhalter -> Download) gesperrt. Nach dem Einchecken und erneutem Doppelklick blieb die Datei ungesperrt, weil der Open-Pfad fehlte. Neuer Tauri-Command open_offline_file loest die Server-Datei-ID ueber das Sync-Journal auf, sperrt auf dem Server und oeffnet lokal mit der Standard-App. Im lokalen Dateibrowser: - Doppelklick auf eine bereits offline vorhandene Datei checkt sie nun aus und oeffnet sie (vorher: keine Reaktion) - Rechtsklick-Menue hat "Oeffnen (auschecken)" fuer Offline-Dateien Das Lock triggert wie gehabt notify_file_change -> SSE -> Web-UI aktualisiert den Lock-Status sofort. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -132,6 +132,16 @@ async function doOpenCloudFile(file) {
|
||||
}
|
||||
}
|
||||
|
||||
async function doOpenOfflineFile(file) {
|
||||
hideContextMenu();
|
||||
try {
|
||||
await invoke("open_offline_file", { realPath: file.path });
|
||||
syncLog.value = [`[${ts()}] Ausgecheckt + geoeffnet: ${file.name}`, ...syncLog.value].slice(0, 200);
|
||||
} catch (err) {
|
||||
syncLog.value = [`[${ts()}] Fehler: ${err}`, ...syncLog.value].slice(0, 200);
|
||||
}
|
||||
}
|
||||
|
||||
let unlistenStatus, unlistenLog, unlistenError, unlistenFileChange, unlistenTrigger, unlistenCloudOpen;
|
||||
|
||||
async function handleLogin() {
|
||||
@@ -441,7 +451,7 @@ onUnmounted(() => { unlistenStatus?.(); unlistenLog?.(); unlistenError?.(); unli
|
||||
<div class="local-file-list">
|
||||
<div v-for="f in localFiles" :key="f.path"
|
||||
class="local-file-item"
|
||||
@dblclick="f.is_folder ? openLocalFolder(f) : (f.is_cloud ? doOpenCloudFile(f) : null)"
|
||||
@dblclick="f.is_folder ? openLocalFolder(f) : (f.is_cloud ? doOpenCloudFile(f) : doOpenOfflineFile(f))"
|
||||
@contextmenu="showContextMenu($event, f)">
|
||||
<span class="lf-icon">{{ f.is_folder ? '📁' : (f.is_cloud ? '☁' : '📄') }}</span>
|
||||
<span class="lf-name">{{ f.name }}</span>
|
||||
@@ -462,6 +472,9 @@ onUnmounted(() => { unlistenStatus?.(); unlistenLog?.(); unlistenError?.(); unli
|
||||
<div v-if="contextMenu.file?.is_cloud" class="cm-item" @click="doMarkOffline(contextMenu.file)">
|
||||
💾 Offline verfuegbar machen
|
||||
</div>
|
||||
<div v-if="contextMenu.file?.is_offline" class="cm-item" @click="doOpenOfflineFile(contextMenu.file)">
|
||||
📂 Oeffnen (auschecken)
|
||||
</div>
|
||||
<div v-if="contextMenu.file?.is_offline" class="cm-item" @click="doUnmarkOffline(contextMenu.file)">
|
||||
☁ Nicht mehr offline (Platzhalter)
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user