@@ -111,9 +111,7 @@ class ThrottledCommonDatabase extends CommonDatabase {
111111Stream <SqliteUpdate > throttledUpdates (
112112 CommonDatabase source, Stream transactionStream) {
113113 StreamController <SqliteUpdate >? controller;
114- Set <String > insertedTables = {};
115- Set <String > updatedTables = {};
116- Set <String > deletedTables = {};
114+ Set <SqliteUpdate > pendingUpdates = {};
117115 var paused = false ;
118116
119117 Timer ? updateDebouncer;
@@ -132,39 +130,19 @@ Stream<SqliteUpdate> throttledUpdates(
132130 return ;
133131 }
134132
135- if (updatedTables .isNotEmpty) {
136- for (var tableName in updatedTables ) {
137- controller! .add (SqliteUpdate ( SqliteUpdateKind . update, tableName, 0 ) );
133+ if (pendingUpdates .isNotEmpty) {
134+ for (var update in pendingUpdates ) {
135+ controller! .add (update);
138136 }
139137
140- updatedTables.clear ();
141- }
142-
143- if (insertedTables.isNotEmpty) {
144- for (var tableName in insertedTables) {
145- controller! .add (SqliteUpdate (SqliteUpdateKind .insert, tableName, 0 ));
146- }
147-
148- insertedTables.clear ();
149- }
150-
151- if (deletedTables.isNotEmpty) {
152- for (var tableName in deletedTables) {
153- controller! .add (SqliteUpdate (SqliteUpdateKind .delete, tableName, 0 ));
154- }
155-
156- deletedTables.clear ();
138+ pendingUpdates.clear ();
157139 }
158140 }
159141
160142 void collectUpdate (SqliteUpdate event) {
161- if (event.kind == SqliteUpdateKind .insert) {
162- insertedTables.add (event.tableName);
163- } else if (event.kind == SqliteUpdateKind .update) {
164- updatedTables.add (event.tableName);
165- } else if (event.kind == SqliteUpdateKind .delete) {
166- deletedTables.add (event.tableName);
167- }
143+ // We merge updates with the same kind and tableName.
144+ // rowId is never used in sqlite_async.
145+ pendingUpdates.add (SqliteUpdate (event.kind, event.tableName, 0 ));
168146
169147 updateDebouncer ?? =
170148 Timer (const Duration (milliseconds: 1 ), maybeFireUpdates);
0 commit comments