Skip to content

Commit b7074e9

Browse files
committed
api: Add handler for realm_user events via RealmUserEvent.
Initially only log the event. Event check added.
1 parent 4c502f3 commit b7074e9

File tree

4 files changed

+39
-0
lines changed

4 files changed

+39
-0
lines changed

lib/api/model/events.dart

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ abstract class Event {
1919
final type = json['type'] as String;
2020
switch (type) {
2121
case 'alert_words': return AlertWordsEvent.fromJson(json);
22+
case 'realm_user': return RealmUserEvent.fromJson(json);
2223
case 'message': return MessageEvent.fromJson(json);
2324
case 'heartbeat': return HeartbeatEvent.fromJson(json);
2425
// TODO add many more event types
@@ -63,6 +64,24 @@ class AlertWordsEvent extends Event {
6364
Map<String, dynamic> toJson() => _$AlertWordsEventToJson(this);
6465
}
6566

67+
/// A Zulip event of type `realm_user`.
68+
@JsonSerializable()
69+
class RealmUserEvent extends Event {
70+
@override
71+
@JsonKey(includeToJson: true)
72+
String get type => 'realm_user';
73+
74+
final RealmUserEventPerson person;
75+
76+
RealmUserEvent({required super.id, required this.person});
77+
78+
factory RealmUserEvent.fromJson(Map<String, dynamic> json) =>
79+
_$RealmUserEventFromJson(json);
80+
81+
@override
82+
Map<String, dynamic> toJson() => _$RealmUserEventToJson(this);
83+
}
84+
6685
/// A Zulip event of type `message`.
6786
// TODO use [JsonSerializable] here too, using its customization features,
6887
// in order to skip the boilerplate in [fromJson] and [toJson].

lib/api/model/events.g.dart

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

lib/model/store.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ class PerAccountStore extends ChangeNotifier {
150150
for (final view in _messageListViews) {
151151
view.maybeAddMessage(event.message);
152152
}
153+
} else if (event is RealmUserEvent) {
154+
debugPrint("server event: realm_user"); // TODO Update our data, and others
153155
} else if (event is UnexpectedEvent) {
154156
debugPrint("server event: ${jsonEncode(event.toJson())}"); // TODO log better
155157
} else {

test/api/model/events_checks.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ extension AlertWordsEventChecks on Subject<AlertWordsEvent> {
1717
Subject<List<String>> get alert_words => has((e) => e.alert_words, 'alert_words');
1818
}
1919

20+
extension RealmUserEventChecks on Subject<RealmUserEvent> {
21+
Subject<RealmUserEventPerson> get person => has((e) => e.person, 'realm_user');
22+
}
23+
2024
extension MessageEventChecks on Subject<MessageEvent> {
2125
Subject<Message> get message => has((e) => e.message, 'message');
2226
}

0 commit comments

Comments
 (0)