feat: File Lock beim Oeffnen + Entsperren per Rechtsklick
Beim Oeffnen einer .cloud-Datei: - Download + Datei bleibt lokal (wie bisher) - Lock wird auf dem Server gesetzt (andere sehen "gesperrt von X") - Kein Auto-Unlock - Datei bleibt gesperrt bis manuell entsperrt Rechtsklick im Datei-Browser auf Offline-Dateien: - "Entsperren (Freigeben fuer andere)" - hebt den Lock auf - "Nicht mehr offline" - .cloud zurueck + automatisch unlock So bleiben Dateien gesperrt solange man daran arbeitet. Wenn fertig: Rechtsklick -> Entsperren. Einfach und explizit. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -84,6 +84,33 @@ async function doMarkOffline(file) {
|
||||
}
|
||||
}
|
||||
|
||||
async function doUnlockFile(file) {
|
||||
hideContextMenu();
|
||||
// Find file ID from server tree
|
||||
const serverFile = findFileInTree(fileTree.value, file.name);
|
||||
if (!serverFile) {
|
||||
syncLog.value = [`[${ts()}] Fehler: Datei nicht auf Server gefunden`, ...syncLog.value];
|
||||
return;
|
||||
}
|
||||
try {
|
||||
await invoke("unlock_file_cmd", { fileId: serverFile.id });
|
||||
syncLog.value = [`[${ts()}] Entsperrt: ${file.name}`, ...syncLog.value].slice(0, 200);
|
||||
} catch (err) {
|
||||
syncLog.value = [`[${ts()}] Fehler: ${err}`, ...syncLog.value].slice(0, 200);
|
||||
}
|
||||
}
|
||||
|
||||
function findFileInTree(entries, name) {
|
||||
for (const e of entries) {
|
||||
if (e.name === name) return e;
|
||||
if (e.children) {
|
||||
const found = findFileInTree(e.children, name);
|
||||
if (found) return found;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
async function doUnmarkOffline(file) {
|
||||
hideContextMenu();
|
||||
try {
|
||||
@@ -429,6 +456,9 @@ onUnmounted(() => { unlistenStatus?.(); unlistenLog?.(); unlistenError?.(); unli
|
||||
<div v-if="contextMenu.file?.is_offline" class="cm-item" @click="doUnmarkOffline(contextMenu.file)">
|
||||
☁ Nicht mehr offline (Platzhalter)
|
||||
</div>
|
||||
<div v-if="contextMenu.file?.is_offline" class="cm-item" @click="doUnlockFile(contextMenu.file)">
|
||||
🔓 Entsperren (Freigeben fuer andere)
|
||||
</div>
|
||||
<div class="cm-item" @click="hideContextMenu">Abbrechen</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user