Skip to content

Commit 4b8e1b5

Browse files
committed
api: Handle muted_users event
1 parent 0e1259d commit 4b8e1b5

File tree

5 files changed

+46
-1
lines changed

5 files changed

+46
-1
lines changed

lib/api/model/events.dart

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ sealed class Event {
6262
}
6363
// case 'muted_topics': … // TODO(#422) we ignore this feature on older servers
6464
case 'user_topic': return UserTopicEvent.fromJson(json);
65+
case 'muted_users': return MutedUsersEvent.fromJson(json);
6566
case 'message': return MessageEvent.fromJson(json);
6667
case 'update_message': return UpdateMessageEvent.fromJson(json);
6768
case 'delete_message': return DeleteMessageEvent.fromJson(json);
@@ -733,6 +734,24 @@ class UserTopicEvent extends Event {
733734
Map<String, dynamic> toJson() => _$UserTopicEventToJson(this);
734735
}
735736

737+
/// A Zulip event of type `muted_users`: https://zulip.com/api/get-events#muted_users
738+
@JsonSerializable(fieldRename: FieldRename.snake)
739+
class MutedUsersEvent extends Event {
740+
@override
741+
@JsonKey(includeToJson: true)
742+
String get type => 'muted_users';
743+
744+
final List<MutedUserItem> mutedUsers;
745+
746+
MutedUsersEvent({required super.id, required this.mutedUsers});
747+
748+
factory MutedUsersEvent.fromJson(Map<String, dynamic> json) =>
749+
_$MutedUsersEventFromJson(json);
750+
751+
@override
752+
Map<String, dynamic> toJson() => _$MutedUsersEventToJson(this);
753+
}
754+
736755
/// A Zulip event of type `message`: https://zulip.com/api/get-events#message
737756
@JsonSerializable(fieldRename: FieldRename.snake)
738757
class MessageEvent extends Event {

lib/api/model/events.g.dart

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/api/model/model.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ class CustomProfileFieldExternalAccountData {
111111
}
112112

113113

114-
/// An item in the [InitialSnapshot.mutedUsers].
114+
/// An item in the [InitialSnapshot.mutedUsers] or [MutedUsersEvent].
115115
///
116116
/// For docs, search for "muted_users:"
117117
/// in <https://zulip.com/api/register-queue>.

lib/model/store.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -950,6 +950,11 @@ class PerAccountStore extends PerAccountStoreBase with ChangeNotifier, EmojiStor
950950
assert(debugLog("server event: reaction/${event.op}"));
951951
_messages.handleReactionEvent(event);
952952

953+
case MutedUsersEvent():
954+
assert(debugLog("server event: muted_users"));
955+
_users.handleMutedUsersEvent(event);
956+
notifyListeners();
957+
953958
case UnexpectedEvent():
954959
assert(debugLog("server event: ${jsonEncode(event.toJson())}")); // TODO log better
955960
}

lib/model/user.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,4 +164,9 @@ class UserStoreImpl extends PerAccountStoreBase with UserStore {
164164
}
165165
}
166166
}
167+
168+
void handleMutedUsersEvent(MutedUsersEvent event) {
169+
mutedUsers.clear();
170+
mutedUsers.addAll(_sortMutedUsers(event.mutedUsers));
171+
}
167172
}

0 commit comments

Comments
 (0)