advanceAudioSession method

void advanceAudioSession(
  1. String sessionId, {
  2. double? position,
  3. String? status,
})

Test hook: an audio session moves to position seconds (patch, as the server's ≤ 1 Hz position feed) and / or changes status (full state).

Implementation

void advanceAudioSession(
  String sessionId, {
  double? position,
  String? status,
}) {
  final s =
      _audioSessions[sessionId] ??
      (throw StateError('no audio session $sessionId'));
  final topic = DomeTopics.audioSession(s['venueId']! as String, sessionId);
  if (position != null) {
    s['position'] = position;
    if (status == null) {
      bus.publish(
        topic,
        EventKinds.audioSessionState,
        patch: {'position': position},
      );
    }
  }
  if (status != null) {
    s['status'] = status;
    if (const {'finished', 'stopped', 'failed'}.contains(status)) {
      s['endedAt'] = _now();
    }
    bus.publish(topic, EventKinds.audioSessionState, resource: s);
  }
}