start method
Implementation
Future<ViewerSessionSnapshot> start() async {
if (!{
ViewerSessionPhase.idle,
ViewerSessionPhase.left,
ViewerSessionPhase.error,
}.contains(_snapshot.phase)) {
return _snapshot;
}
_stopped = false;
_emit(_snapshot.copyWith(phase: ViewerSessionPhase.joining, error: ''));
try {
final session = await provider.join(roomName, displayName);
if (_stopped) return _snapshot;
if (session.viewerId.isEmpty) {
throw StateError('The viewer session provider returned no viewerId.');
}
_emit(_snapshot.copyWith(
phase: ViewerSessionPhase.watching,
session: session,
error: '',
));
_startTimers();
} catch (error) {
_emit(_snapshot.copyWith(
phase: ViewerSessionPhase.error,
error: error.toString(),
));
}
return _snapshot;
}