sendMemberStateEvent method

Future<void> sendMemberStateEvent()

Implementation

Future<void> sendMemberStateEvent() async {
  await room.updateFamedlyCallMemberStateEvent(
    CallMembership(
      userId: client.userID!,
      roomId: room.id,
      callId: groupCallId,
      application: application,
      scope: scope,
      backend: backend,
      deviceId: client.deviceID!,
      expiresTs: DateTime.now()
          .add(CallTimeouts.expireTsBumpDuration)
          .millisecondsSinceEpoch,
      membershipId: voip.currentSessionId,
      feeds: backend.getCurrentFeeds(),
    ),
  );

  if (_resendMemberStateEventTimer != null) {
    _resendMemberStateEventTimer!.cancel();
  }
  _resendMemberStateEventTimer = Timer.periodic(
      CallTimeouts.updateExpireTsTimerDuration, ((timer) async {
    Logs().d('sendMemberStateEvent updating member event with timer');
    if (state != GroupCallState.ended ||
        state != GroupCallState.localCallFeedUninitialized) {
      await sendMemberStateEvent();
    } else {
      Logs().d(
          '[VOIP] deteceted groupCall in state $state, removing state event');
      await removeMemberStateEvent();
    }
  }));
}