From 4159ac8513e071312d72935a421c927e2f58745e Mon Sep 17 00:00:00 2001 From: Forcosigan Date: Thu, 15 Oct 2026 14:59:22 +0300 Subject: [PATCH 1/2] Fix: ensure rclone stats JSON objects are parsed on all log levels --- .../main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt b/app/src/main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt index 7056e7bae..8878d6682 100644 --- a/app/src/main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt +++ b/app/src/main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt @@ -189,7 +189,7 @@ class SyncWorker (private var mContext: Context, workerParams: WorkerParameters) log2File?.log(line) } statusObject.parseLoglineToStatusObject(logline) - } else if (logline.getString("level") == "warning") { + } else if (logline.getString("level") == "warning" || logline.has("stats")) { statusObject.parseLoglineToStatusObject(logline) } From 50c6179315aee9fab5b4cb0f8bcd9b8bf08f9bb6 Mon Sep 17 00:00:00 2001 From: Forcosigan Date: Fri, 16 Oct 2026 09:15:31 +0300 Subject: [PATCH 2/2] fix: prevent phantom follow-up sync runs caused by 0L task id --- .../java/ca/pkay/rcloneexplorer/Database/DatabaseHandler.kt | 6 +++--- .../java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/Database/DatabaseHandler.kt b/app/src/main/java/ca/pkay/rcloneexplorer/Database/DatabaseHandler.kt index 90b747264..121ba063e 100644 --- a/app/src/main/java/ca/pkay/rcloneexplorer/Database/DatabaseHandler.kt +++ b/app/src/main/java/ca/pkay/rcloneexplorer/Database/DatabaseHandler.kt @@ -156,10 +156,10 @@ class DatabaseHandler(context: Context?) : task.direction = cursor.getInt(6) task.md5sum = getBoolean(cursor, 7) task.wifionly = getBoolean(cursor, 8) - task.filterId = cursor.getLong(9) + task.filterId = if (cursor.isNull(9)) null else cursor.getLong(9) task.deleteExcluded = getBoolean(cursor, 10) - task.onFailFollowup = cursor.getLong(11) - task.onSuccessFollowup = cursor.getLong(12) + task.onFailFollowup = if (cursor.isNull(11) || cursor.getLong(11) <= 0L) null else cursor.getLong(11) + task.onSuccessFollowup = if (cursor.isNull(12) || cursor.getLong(12) <= 0L) null else cursor.getLong(12) return task } diff --git a/app/src/main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt b/app/src/main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt index 8878d6682..b18306aa7 100644 --- a/app/src/main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt +++ b/app/src/main/java/ca/pkay/rcloneexplorer/workmanager/SyncWorker.kt @@ -125,7 +125,8 @@ class SyncWorker (private var mContext: Context, workerParams: WorkerParameters) handleTask() postSync() } else { - postSync() + log("No valid task found for ID. Aborting.") + mNotificationManager.cancelSyncNotification(ongoingNotificationID) return Result.failure() } @@ -435,7 +436,7 @@ class SyncWorker (private var mContext: Context, workerParams: WorkerParameters) } private fun followupTask(followUpTaskID: Long?) { - if (followUpTaskID == null || followUpTaskID == -1L) { + if (followUpTaskID == null || followUpTaskID <= 0L) { return } Thread.sleep(1000)