gameStream method

  1. @override
Stream<GameOrError<Game<Event>>> gameStream(
  1. PlayerID playerID,
  2. GameCode code
)
override

Implementation

@override
Stream<GameOrError> gameStream(PlayerID playerID, GameCode code) async* {
  logger.info('Watching backend');
  final ss = StreamController<GameOrError>();
  final backendReader = NoServerClient.games[code]?.container;
  backendReader?.listen<GameStateNotifier>(
    BackendProviders.state.notifier,
    (prev, curr) async {
      ss.add(curr.gameState.gameValue());
      // ignore: prefer_foreach
      await for (final e in curr.stream) {
        ss.add(e);
      }
    },
    fireImmediately: true,
  );

  yield* ss.stream;
  await ss.close();
}