@@ -22,13 +22,14 @@ import com.powersync.sync.SyncStatusData
22
22
import com.powersync.sync.SyncStream
23
23
import com.powersync.utils.JsonParam
24
24
import com.powersync.utils.JsonUtil
25
+ import com.powersync.utils.throttle
25
26
import com.powersync.utils.toJsonObject
26
27
import kotlinx.coroutines.CoroutineScope
27
28
import kotlinx.coroutines.FlowPreview
28
29
import kotlinx.coroutines.Job
29
30
import kotlinx.coroutines.cancelAndJoin
30
31
import kotlinx.coroutines.flow.Flow
31
- import kotlinx.coroutines.flow.debounce
32
+ import kotlinx.coroutines.flow.filter
32
33
import kotlinx.coroutines.flow.first
33
34
import kotlinx.coroutines.launch
34
35
import kotlinx.coroutines.runBlocking
@@ -141,9 +142,13 @@ internal class PowerSyncDatabaseImpl(
141
142
142
143
uploadJob =
143
144
scope.launch {
144
- internalDb.updatesOnTable(InternalTable .CRUD .toString()).debounce(crudThrottleMs).collect {
145
- syncStream!! .triggerCrudUpload()
146
- }
145
+ internalDb
146
+ .updatesOnTables()
147
+ .filter { it.contains(InternalTable .CRUD .toString()) }
148
+ .throttle(crudThrottleMs)
149
+ .collect {
150
+ syncStream!! .triggerCrudUpload()
151
+ }
147
152
}
148
153
}
149
154
@@ -233,8 +238,9 @@ internal class PowerSyncDatabaseImpl(
233
238
override fun <RowType : Any > watch (
234
239
sql : String ,
235
240
parameters : List <Any ?>? ,
241
+ throttleMs : Long? ,
236
242
mapper : (SqlCursor ) -> RowType ,
237
- ): Flow <List <RowType >> = internalDb.watch(sql, parameters, mapper)
243
+ ): Flow <List <RowType >> = internalDb.watch(sql, parameters, throttleMs, mapper)
238
244
239
245
override suspend fun <R > readTransaction (callback : ThrowableTransactionCallback <R >): R = internalDb.writeTransaction(callback)
240
246
@@ -280,7 +286,11 @@ internal class PowerSyncDatabaseImpl(
280
286
syncStream = null
281
287
}
282
288
283
- currentStatus.update(connected = false , connecting = false , lastSyncedAt = currentStatus.lastSyncedAt)
289
+ currentStatus.update(
290
+ connected = false ,
291
+ connecting = false ,
292
+ lastSyncedAt = currentStatus.lastSyncedAt,
293
+ )
284
294
}
285
295
286
296
override suspend fun disconnectAndClear (clearLocal : Boolean ) {
0 commit comments