build method

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

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);
}