build method

  1. @override
FutureOr build(
  1. String arg
)

Implementation

@override
FutureOr<RoomMessage?> build(String arg) async {
  final roomId = arg;
  final client = ref.watch(alwaysClientProvider);
  _listener = client.subscribeStream('$roomId::latest_message');
  _poller = _listener.listen(
    (data) {
      _log.info('received new latest message call for $roomId');
      state = ref
          .watch(chatProvider(roomId))
          .whenData((cb) => cb?.latestMessage());
    },
    onError: (e, s) {
      _log.severe('latest msg stream errored', e, s);
      state = AsyncValue.error(e, s);
    },
    onDone: () {
      _log.info('latest msg stream ended');
    },
  );
  ref.onDispose(() => _poller.cancel());
  return ref.watch(chatProvider(roomId)).valueOrNull?.latestMessage();
}