fix: .cloud Platzhalter werden bei Server-Aenderung aktualisiert
Vorher: Platzhalter wurde nur erstellt wenn er nicht existierte. Wenn sich die Datei auf dem Server aenderte (neue Groesse, neuer Checksum), blieb der Platzhalter mit den alten Metadaten. Jetzt: Bei jedem Sync wird der Checksum im Platzhalter mit dem Server-Checksum verglichen. Bei Unterschied -> Platzhalter neu schreiben mit aktueller Groesse, Checksum und Datum. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
b6afc05148
commit
0714d96668
|
|
@ -154,9 +154,18 @@ impl SyncEngine {
|
|||
continue;
|
||||
}
|
||||
|
||||
// Create .cloud placeholder
|
||||
// Create or update .cloud placeholder
|
||||
let cloud_path = local_dir.join(format!("{}.cloud", entry.name));
|
||||
if !cloud_path.exists() {
|
||||
let needs_update = if cloud_path.exists() {
|
||||
// Check if server version changed
|
||||
if let Ok(content) = std::fs::read_to_string(&cloud_path) {
|
||||
if let Ok(old) = serde_json::from_str::<CloudPlaceholder>(&content) {
|
||||
old.checksum != entry.checksum.as_deref().unwrap_or("")
|
||||
} else { true }
|
||||
} else { true }
|
||||
} else { true };
|
||||
|
||||
if needs_update {
|
||||
let placeholder = CloudPlaceholder {
|
||||
id: entry.id,
|
||||
name: entry.name.clone(),
|
||||
|
|
@ -167,7 +176,9 @@ impl SyncEngine {
|
|||
};
|
||||
if let Ok(json) = serde_json::to_string_pretty(&placeholder) {
|
||||
std::fs::write(&cloud_path, json).ok();
|
||||
log.push(format!("Platzhalter: {}.cloud", entry.name));
|
||||
if !cloud_path.exists() {
|
||||
log.push(format!("Platzhalter: {}.cloud", entry.name));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue