diff --git a/.kotlin/sessions/kotlin-compiler-7270483765496797749.salive b/.kotlin/sessions/kotlin-compiler-10433629282235736384.salive similarity index 100% rename from .kotlin/sessions/kotlin-compiler-7270483765496797749.salive rename to .kotlin/sessions/kotlin-compiler-10433629282235736384.salive diff --git a/app/src/main/kotlin/com/syncflow/domain/sync/SyncEngine.kt b/app/src/main/kotlin/com/syncflow/domain/sync/SyncEngine.kt index 3fb69bf..45ead7f 100644 --- a/app/src/main/kotlin/com/syncflow/domain/sync/SyncEngine.kt +++ b/app/src/main/kotlin/com/syncflow/domain/sync/SyncEngine.kt @@ -107,11 +107,10 @@ class SyncEngine @Inject constructor( when (decision) { SyncDecision.UPLOAD -> { - var uploadedRemoteFile: RemoteFile? = null val bytes = runCatching { ensureRemoteDirs(provider, pair.remotePath, rel) accessor.openInputStream(rel)?.use { stream -> - uploadedRemoteFile = provider.uploadFile(stream, "${pair.remotePath}/$rel", local!!.sizeBytes) { }.getOrThrow() + provider.uploadFile(stream, "${pair.remotePath}/$rel", local!!.sizeBytes) { }.getOrThrow() } local!!.sizeBytes }.getOrElse { e -> @@ -120,8 +119,12 @@ class SyncEngine @Inject constructor( return@withPermit FileOutcome(failed = 1) } logEvent(pair.id, SyncEventType.FILE_UPLOADED, rel, null, bytes) + // Don't store remote metadata from upload response — the server (Nextcloud etc.) + // may change mtime/etag during post-upload processing. Leaving remoteModifiedAt + // null forces the SKIP reconciliation on the next sync to fill it in from the + // directory listing, which is the same source all future syncs will use. FileOutcome(uploaded = 1, bytesTransferred = bytes, - newState = buildState(pair.id, rel, local!!, remoteAfterTransfer = uploadedRemoteFile)) + newState = buildState(pair.id, rel, local!!, remoteAfterTransfer = null)) } SyncDecision.DOWNLOAD -> { val bytes = runCatching { diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index 32d1ce9..c6493f8 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -5,8 +5,41 @@ android:viewportWidth="108" android:viewportHeight="108"> - - + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml index 88e597b..19bae71 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -6,77 +6,110 @@ android:viewportHeight="108"> - + + + - + + + - + + + - + + + - + + - + - + - + - + diff --git a/version.properties b/version.properties index 6da62ed..e313c7e 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ -VERSION_NAME=1.0.37 -VERSION_CODE=38 +VERSION_NAME=1.0.38 +VERSION_CODE=39