updateFamedlyCallMemberStateEvent method

Future<String?> updateFamedlyCallMemberStateEvent(
  1. CallMembership callMembership
)

passing no CallMembership removes it from the state event. Returns the event ID of the new membership state event.

Implementation

Future<String?> updateFamedlyCallMemberStateEvent(
  CallMembership callMembership,
) async {
  final ownMemberships = getCallMembershipsForUser(
    client.userID!,
    client.deviceID!,
    callMembership.voip,
  );

  // do not bother removing other deviceId expired events because we have no
  // ownership over them
  ownMemberships.removeWhere(
    (element) => client.deviceID! == element.deviceId,
  );

  ownMemberships.removeWhere((e) => e == callMembership);

  ownMemberships.add(callMembership);

  final newContent = {
    'memberships': List.from(ownMemberships.map((e) => e.toJson())),
  };

  return await setFamedlyCallMemberEvent(
    newContent,
    callMembership.voip,
    callMembership.callId,
    application: callMembership.application,
    scope: callMembership.scope,
  );
}