build method
Implementation
@override
FutureOr<Convo?> build(String arg) async {
final convoId = arg;
final client = ref.watch(alwaysClientProvider);
_listener = client.subscribeStream(convoId); // keep it resident in memory
_poller = _listener.listen(
(data) async {
final newConvo = await client.convo(convoId);
state = AsyncValue.data(newConvo);
},
onError: (e, s) {
_log.severe('convo stream errored', e, s);
state = AsyncValue.error(e, s);
},
onDone: () {
_log.info('convo stream ended');
},
);
ref.onDispose(() => _poller.cancel());
return await client.convoWithRetry(convoId, 120);
}