@@ -171,46 +171,44 @@ class SupabaseStreamBuilder extends Stream<SupabaseStreamEvent> {
171171
172172 _channel!
173173 .onPostgresChanges (
174- event: PostgresChangeEvent .insert ,
174+ event: PostgresChangeEvent .all ,
175175 schema: _schema,
176176 table: _table,
177177 filter: realtimeFilter,
178178 callback: (payload) {
179- final newRecord = payload.newRecord;
180- _streamData.add (newRecord);
181- _addStream ();
182- })
183- .onPostgresChanges (
184- event: PostgresChangeEvent .update,
185- schema: _schema,
186- table: _table,
187- filter: realtimeFilter,
188- callback: (payload) {
189- final updatedIndex = _streamData.indexWhere (
190- (element) => _isTargetRecord (record: element, payload: payload),
191- );
192-
193- final updatedRecord = payload.newRecord;
194- if (updatedIndex >= 0 ) {
195- _streamData[updatedIndex] = updatedRecord;
196- } else {
197- _streamData.add (updatedRecord);
198- }
199- _addStream ();
200- })
201- .onPostgresChanges (
202- event: PostgresChangeEvent .delete,
203- schema: _schema,
204- table: _table,
205- filter: realtimeFilter,
206- callback: (payload) {
207- final deletedIndex = _streamData.indexWhere (
208- (element) => _isTargetRecord (record: element, payload: payload),
209- );
210- if (deletedIndex >= 0 ) {
211- /// Delete the data from in memory cache if it was found
212- _streamData.removeAt (deletedIndex);
213- _addStream ();
179+ switch (payload.eventType) {
180+ case PostgresChangeEvent .insert:
181+ final newRecord = payload.newRecord;
182+ _streamData.add (newRecord);
183+ _addStream ();
184+ break ;
185+ case PostgresChangeEvent .update:
186+ final updatedIndex = _streamData.indexWhere (
187+ (element) =>
188+ _isTargetRecord (record: element, payload: payload),
189+ );
190+
191+ final updatedRecord = payload.newRecord;
192+ if (updatedIndex >= 0 ) {
193+ _streamData[updatedIndex] = updatedRecord;
194+ } else {
195+ _streamData.add (updatedRecord);
196+ }
197+ _addStream ();
198+ break ;
199+ case PostgresChangeEvent .delete:
200+ final deletedIndex = _streamData.indexWhere (
201+ (element) =>
202+ _isTargetRecord (record: element, payload: payload),
203+ );
204+ if (deletedIndex >= 0 ) {
205+ /// Delete the data from in memory cache if it was found
206+ _streamData.removeAt (deletedIndex);
207+ _addStream ();
208+ }
209+ break ;
210+ default :
211+ break ;
214212 }
215213 })
216214 .subscribe ((status, [error]) {
0 commit comments