Skip to content

Commit cf4cefe

Browse files
authored
fix update permission event handling (#974)
1 parent 1b71810 commit cf4cefe

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

packages/stream_video/lib/src/call/call.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,12 @@ class Call {
494494
case StreamCallMemberRemovedEvent _:
495495
return _stateManager.coordinatorCallMemberRemoved(event);
496496
case StreamCallMemberUpdatedEvent _:
497-
return _stateManager.coordinatorCallMemberUpdated(event);
497+
return _stateManager.coordinatorCallMemberUpdated(event.members);
498+
case StreamCallMemberUpdatedPermissionEvent _:
499+
return _stateManager.coordinatorCallMemberUpdated(
500+
event.updatedMembers,
501+
capabilitiesByRole: event.capabilitiesByRole,
502+
);
498503
case StreamCallUserBlockedEvent _:
499504
return _stateManager.coordinatorCallUserBlocked(event);
500505
case StreamCallUserUnblockedEvent _:

packages/stream_video/lib/src/call/state/mixins/state_coordinator_mixin.dart

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,13 @@ mixin StateCoordinatorMixin on StateNotifier<CallState> {
163163
void coordinatorCallPermissionsUpdated(
164164
StreamCallPermissionsUpdatedEvent event,
165165
) {
166+
if (event.user.id != state.currentUserId) {
167+
_logger.i(
168+
() => '[coordinatorCallPermissionsUpdated] rejected (not current user)',
169+
);
170+
return;
171+
}
172+
166173
final status = state.status;
167174
if (status is! CallStatusActive) {
168175
_logger.w(
@@ -483,12 +490,13 @@ mixin StateCoordinatorMixin on StateNotifier<CallState> {
483490
}
484491

485492
void coordinatorCallMemberUpdated(
486-
StreamCallMemberUpdatedEvent event,
487-
) {
493+
List<CallMember> members, {
494+
Map<String, List<String>>? capabilitiesByRole,
495+
}) {
488496
state = state.copyWith(
489497
callMembers: state.callMembers.map((member) {
490498
final updatedMember =
491-
event.members.firstWhereOrNull((m) => m.userId == member.userId);
499+
members.firstWhereOrNull((m) => m.userId == member.userId);
492500
if (updatedMember != null) {
493501
return member.copyWith(
494502
roles: updatedMember.roles,
@@ -498,6 +506,7 @@ mixin StateCoordinatorMixin on StateNotifier<CallState> {
498506
return member;
499507
}
500508
}).toList(),
509+
capabilitiesByRole: capabilitiesByRole,
501510
);
502511
}
503512

0 commit comments

Comments
 (0)