build method
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();
}