From 6597a74b5a2dfec97da32fc012c4c2da61936275 Mon Sep 17 00:00:00 2001 From: Kainoa Kanter Date: Fri, 29 May 2026 19:54:02 -0700 Subject: [PATCH] fix: accidental clearing of play hist --- androidApp/build.gradle.kts | 4 ++-- .../src/commonMain/kotlin/com/derakkuma/App.kt | 8 +++++--- .../kotlin/com/derakkuma/data/PlayStore.kt | 12 +++++++++++- .../sqldelight/com/derakkuma/db/PlayHistory.sq | 3 +++ 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts index e790144..36612bc 100644 --- a/androidApp/build.gradle.kts +++ b/androidApp/build.gradle.kts @@ -74,8 +74,8 @@ android { applicationId = "com.derakkuma" minSdk = 26 targetSdk = 36 - versionCode = 3 - versionName = "0.2.0" + versionCode = 4 + versionName = "0.2.1" } compileOptions { diff --git a/composeApp/src/commonMain/kotlin/com/derakkuma/App.kt b/composeApp/src/commonMain/kotlin/com/derakkuma/App.kt index bc9877f..c187d85 100644 --- a/composeApp/src/commonMain/kotlin/com/derakkuma/App.kt +++ b/composeApp/src/commonMain/kotlin/com/derakkuma/App.kt @@ -251,13 +251,15 @@ fun App(authStore: AuthStore, cacheStore: CacheStore, playStore: PlayStore) { scope.launch { sessionExpired = false val oldFriendCode = cacheStore.getFriendCode()?.code - cacheStore.clearUserData() - playStore.clear() authStore.save(newAuth) client.updateAuth(newAuth) val newFriendCode = client.fetchFriendCode(newAuth.cookie) - if (oldFriendCode.isNullOrBlank() || newFriendCode?.code == oldFriendCode) { + if (oldFriendCode.isNullOrBlank() || newFriendCode == null || newFriendCode.code == oldFriendCode) { newFriendCode?.let { cacheStore.putFriendCode(it) } + } else { + cacheStore.clearUserData() + playStore.clear() + cacheStore.putFriendCode(newFriendCode) } auth = newAuth } diff --git a/composeApp/src/commonMain/kotlin/com/derakkuma/data/PlayStore.kt b/composeApp/src/commonMain/kotlin/com/derakkuma/data/PlayStore.kt index f19abb0..2775d9e 100644 --- a/composeApp/src/commonMain/kotlin/com/derakkuma/data/PlayStore.kt +++ b/composeApp/src/commonMain/kotlin/com/derakkuma/data/PlayStore.kt @@ -188,7 +188,17 @@ class PlayStore(driverFactory: DriverFactory) { * Clear all plays. */ suspend fun clear() = withContext(Dispatchers.IO) { - queries.clear() + db.transaction { + queries.clear() + queries.clearBackfillState() + } + } + + /** + * Clear only transient/resumable sync state while keeping historical plays. + */ + suspend fun clearSyncState() = withContext(Dispatchers.IO) { + queries.clearBackfillState() } suspend fun upsertPlayDetail(idx: String, detail: PlayLogDetail) = withContext(Dispatchers.IO) { diff --git a/composeApp/src/commonMain/sqldelight/com/derakkuma/db/PlayHistory.sq b/composeApp/src/commonMain/sqldelight/com/derakkuma/db/PlayHistory.sq index ee5c22e..91cef31 100644 --- a/composeApp/src/commonMain/sqldelight/com/derakkuma/db/PlayHistory.sq +++ b/composeApp/src/commonMain/sqldelight/com/derakkuma/db/PlayHistory.sq @@ -70,6 +70,9 @@ DELETE FROM play_history WHERE source = 'historical' AND synced_at < ?; clear: DELETE FROM play_history; +clearBackfillState: +DELETE FROM play_history_backfill_state; + count: SELECT COUNT(*) FROM play_history; -- 2.51.2