updateFamedlyCallMemberStateEvent method
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,
);
}