bind static method

RealtimeQueryBridge bind({
  1. required BloomRealtimeClient client,
  2. required String channel,
  3. required List key,
  4. bool filter(
    1. Map<String, dynamic> payload
    )?,
})

Listens to a realtime channel on client and calls BloomData.invalidateQueries with key on every received message, or when filter matches.

  • client: Active BloomRealtimeClient connection.
  • channel: Channel name to subscribe to.
  • key: BloomData query key list to invalidate.
  • filter: Optional callback predicate to filter which broadcast payloads trigger invalidation.

Returns a RealtimeQueryBridge whose cancel method tears down the subscription.

Example:

final bridge = RealtimeQueryBridge.bind(
  client: realtimeClient,
  channel: 'todos:42',
  key: ['todos', 42],
);

Implementation

static RealtimeQueryBridge bind({
  required BloomRealtimeClient client,
  required String channel,
  required List<dynamic> key,
  bool Function(Map<String, dynamic> payload)? filter,
}) {
  final stream = client.subscribe(channel);
  final sub = stream.listen((payload) {
    if (filter == null || filter(payload)) {
      BloomData.invalidateQueries(key);
    }
  });
  return RealtimeQueryBridge._(sub);
}