diff --git a/CHANGELOG.md b/CHANGELOG.md index 4072080e..a1904367 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 1.0.0-BETA22 +* Fix `updateHasSynced` internal null pointer exception + ## 1.0.0-BETA21 * Improve error handling for Swift by adding @Throws annotation so errors can be handled in Swift diff --git a/core/src/commonMain/kotlin/com/powersync/db/PowerSyncDatabaseImpl.kt b/core/src/commonMain/kotlin/com/powersync/db/PowerSyncDatabaseImpl.kt index b1905def..f99340e1 100644 --- a/core/src/commonMain/kotlin/com/powersync/db/PowerSyncDatabaseImpl.kt +++ b/core/src/commonMain/kotlin/com/powersync/db/PowerSyncDatabaseImpl.kt @@ -279,17 +279,24 @@ internal class PowerSyncDatabaseImpl( } private suspend fun updateHasSynced() { - // Query the database to see if any data has been synced. + data class SyncedAt( + val syncedAt: String?, + ) + // Query the database to see if any data has been synced val timestamp = - internalDb.getOptional("SELECT powersync_last_synced_at() as synced_at", null) { cursor -> - cursor.getString(0) ?: "" + internalDb + .getOptional("SELECT powersync_last_synced_at() as synced_at", null) { cursor -> + SyncedAt(syncedAt = cursor.getStringOptional("synced_at")) + }?.syncedAt + if (timestamp != null) { + val hasSynced = true + if (currentStatus.hasSynced != null && hasSynced != currentStatus.hasSynced) { + val formattedDateTime = "${timestamp.replace(" ", "T").toLocalDateTime()}Z" + val lastSyncedAt = Instant.parse(formattedDateTime) + currentStatus.update(hasSynced = hasSynced, lastSyncedAt = lastSyncedAt) } - - val hasSynced = timestamp != "" - if (hasSynced != currentStatus.hasSynced) { - val formattedDateTime = "${timestamp!!.replace(" ", "T").toLocalDateTime()}Z" - val lastSyncedAt = Instant.parse(formattedDateTime) - currentStatus.update(hasSynced = hasSynced, lastSyncedAt = lastSyncedAt) + } else { + currentStatus.update(hasSynced = false) } } diff --git a/gradle.properties b/gradle.properties index 3edba3b4..7bb8e53a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,7 +17,7 @@ development=true RELEASE_SIGNING_ENABLED=true # Library config GROUP=com.powersync -LIBRARY_VERSION=1.0.0-BETA21 +LIBRARY_VERSION=1.0.0-BETA22 GITHUB_REPO=https://github.com/powersync-ja/powersync-kotlin.git # POM POM_URL=https://github.com/powersync-ja/powersync-kotlin/