@@ -161,6 +161,8 @@ class PerAccountStore extends ChangeNotifier {
161
161
.map ((user) => MapEntry (user.userId, user))),
162
162
streams = Map .fromEntries (initialSnapshot.streams.map (
163
163
(stream) => MapEntry (stream.streamId, stream))),
164
+ streamsByName = Map .fromEntries (initialSnapshot.streams.map (
165
+ (stream) => MapEntry (stream.name, stream))),
164
166
subscriptions = Map .fromEntries (initialSnapshot.subscriptions.map (
165
167
(subscription) => MapEntry (subscription.streamId, subscription))),
166
168
recentDmConversationsView = RecentDmConversationsView (
@@ -185,6 +187,7 @@ class PerAccountStore extends ChangeNotifier {
185
187
186
188
// Streams, topics, and stuff about them.
187
189
final Map <int , ZulipStream > streams;
190
+ final Map <String , ZulipStream > streamsByName;
188
191
final Map <int , Subscription > subscriptions;
189
192
190
193
// TODO lots more data. When adding, be sure to update handleEvent too.
@@ -285,13 +288,15 @@ class PerAccountStore extends ChangeNotifier {
285
288
} else if (event is StreamCreateEvent ) {
286
289
assert (debugLog ("server event: stream/create" ));
287
290
streams.addEntries (event.streams.map ((stream) => MapEntry (stream.streamId, stream)));
291
+ streamsByName.addEntries (event.streams.map ((stream) => MapEntry (stream.name, stream)));
288
292
// (Don't touch `subscriptions`. If the user is subscribed to the stream,
289
293
// details will come in a later `subscription` event.)
290
294
notifyListeners ();
291
295
} else if (event is StreamDeleteEvent ) {
292
296
assert (debugLog ("server event: stream/delete" ));
293
297
for (final stream in event.streams) {
294
298
streams.remove (stream.streamId);
299
+ streamsByName.remove (stream.name);
295
300
subscriptions.remove (stream.streamId);
296
301
}
297
302
notifyListeners ();
0 commit comments