build method

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

Implementation

@override
FutureOr<AttachmentsManager> build(AttachmentsManagerProvider arg) async {
  final manager = await arg.getManager();
  _listener = manager.subscribeStream(); // keep it resident in memory
  _poller = _listener.listen(
    (e) async {
      state = await AsyncValue.guard(() async {
        _log.info('attempting to reload');
        final newManager = await manager.reload();
        final count = newManager.attachmentsCount();
        _log.info('manager updated. attachments: $count');
        return newManager;
      });
    },
    onError: (e, s) {
      _log.severe('stream errored', e, s);
    },
    onDone: () {
      _log.info('stream ended');
    },
  );
  ref.onDispose(() => _poller.cancel());
  return manager;
}