diff --git a/core/src/commonMain/kotlin/com/powersync/db/PowerSyncDatabaseImpl.kt b/core/src/commonMain/kotlin/com/powersync/db/PowerSyncDatabaseImpl.kt index 6cee8ffc..97788328 100644 --- a/core/src/commonMain/kotlin/com/powersync/db/PowerSyncDatabaseImpl.kt +++ b/core/src/commonMain/kotlin/com/powersync/db/PowerSyncDatabaseImpl.kt @@ -301,15 +301,23 @@ internal class PowerSyncDatabaseImpl( private suspend fun updateHasSynced() { // 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)!! - } + try { + val timestamp = internalDb.getOptional("SELECT powersync_last_synced_at() as synced_at", null) { cursor -> + cursor.getString(0)!! + } - val hasSynced = timestamp != null - if (hasSynced != currentStatus.hasSynced) { - val formattedDateTime = "${timestamp!!.replace(" ","T").toLocalDateTime()}Z" - val lastSyncedAt = Instant.parse(formattedDateTime) - currentStatus.update(hasSynced = hasSynced, lastSyncedAt = lastSyncedAt) + val hasSynced = timestamp != null + if (hasSynced != currentStatus.hasSynced) { + val formattedDateTime = "${timestamp!!.replace(" ","T").toLocalDateTime()}Z" + val lastSyncedAt = Instant.parse(formattedDateTime) + currentStatus.update(hasSynced = hasSynced, lastSyncedAt = lastSyncedAt) + } + } catch (e: Exception) { + if(e is NullPointerException) { + // No data has been synced which results in a null pointer exception + // and can be safely ignored. + return + } } }