Skip to content

Commit 5945711

Browse files
committed
api: Add presences to InitialSnapshot
1 parent 616e77e commit 5945711

File tree

5 files changed

+47
-0
lines changed

5 files changed

+47
-0
lines changed

lib/api/model/initial_snapshot.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ class InitialSnapshot {
4949

5050
final List<MutedUserItem> mutedUsers;
5151

52+
// In the modern format because we pass `slim_presence`.
53+
// TODO(#1611) stop passing and mentioning the deprecated slim_presence;
54+
// presence_last_update_id will be why we get the modern format.
55+
final Map<int, PerUserPresence> presences;
56+
5257
final Map<String, RealmEmojiItem> realmEmoji;
5358

5459
final List<RecentDmConversation> recentPrivateConversations;
@@ -142,6 +147,7 @@ class InitialSnapshot {
142147
required this.serverTypingStoppedWaitPeriodMilliseconds,
143148
required this.serverTypingStartedWaitPeriodMilliseconds,
144149
required this.mutedUsers,
150+
required this.presences,
145151
required this.realmEmoji,
146152
required this.recentPrivateConversations,
147153
required this.savedSnippets,

lib/api/model/initial_snapshot.g.dart

Lines changed: 7 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: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,26 @@ enum UserRole{
330330
}
331331
}
332332

333+
/// A value in [InitialSnapshot.presences].
334+
///
335+
/// For docs, search for "presences:"
336+
/// in <https://zulip.com/api/register-queue>.
337+
@JsonSerializable(fieldRename: FieldRename.snake)
338+
class PerUserPresence {
339+
final int activeTimestamp;
340+
final int idleTimestamp;
341+
342+
PerUserPresence({
343+
required this.activeTimestamp,
344+
required this.idleTimestamp,
345+
});
346+
347+
factory PerUserPresence.fromJson(Map<String, dynamic> json) =>
348+
_$PerUserPresenceFromJson(json);
349+
350+
Map<String, dynamic> toJson() => _$PerUserPresenceToJson(this);
351+
}
352+
333353
/// An item in `saved_snippets` from the initial snapshot.
334354
///
335355
/// For docs, search for "saved_snippets:"

lib/api/model/model.g.dart

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

test/example_data.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,6 +1106,7 @@ InitialSnapshot initialSnapshot({
11061106
int? serverTypingStoppedWaitPeriodMilliseconds,
11071107
int? serverTypingStartedWaitPeriodMilliseconds,
11081108
List<MutedUserItem>? mutedUsers,
1109+
Map<int, PerUserPresence>? presences,
11091110
Map<String, RealmEmojiItem>? realmEmoji,
11101111
List<RecentDmConversation>? recentPrivateConversations,
11111112
List<SavedSnippet>? savedSnippets,
@@ -1146,6 +1147,7 @@ InitialSnapshot initialSnapshot({
11461147
serverTypingStartedWaitPeriodMilliseconds:
11471148
serverTypingStartedWaitPeriodMilliseconds ?? 10000,
11481149
mutedUsers: mutedUsers ?? [],
1150+
presences: presences ?? {},
11491151
realmEmoji: realmEmoji ?? {},
11501152
recentPrivateConversations: recentPrivateConversations ?? [],
11511153
savedSnippets: savedSnippets ?? [],

0 commit comments

Comments
 (0)