@@ -13,9 +13,10 @@ mixin UserStore {
1313  /// For the corresponding [User]  object, see [selfUser] . 
1414int  get  selfUserId;
1515
16-   /// All known users in  the realm, by  [User.userId] . 
16+   /// The user with  the given ID, if that user is known . 
1717  /// 
18-   /// There may be other users not found in this map, for multiple reasons: 
18+   /// There may be other users that are perfectly real but are 
19+   /// not known to the app, for multiple reasons: 
1920  /// 
2021  ///  * The self-user may not have permission to see all the users in the 
2122  ///    realm, for example because the self-user is a guest.  
@@ -27,33 +28,26 @@ mixin UserStore {
2728  ///    Those may therefore refer to users for which we have yet to see the  
2829  ///    [RealmUserAddEvent], or have already handled a [RealmUserRemoveEvent].  
2930  /// 
30-   /// Code that looks up a user in this map  should therefore always handle 
31+   /// Code that looks up a user here  should therefore always handle 
3132  /// the possibility that the user is not found (except 
3233  /// where there is a specific reason to know the user should be found). 
3334  /// Consider using [userDisplayName] . 
34- Map <int , User > get  users;
35- 
36-   /// The [User]  object for the "self-user", 
37-   /// i.e. the account the person using this app is logged into. 
38-   /// 
39-   /// When only the user ID is needed, see [selfUserId] . 
40- User  get  selfUser =>  getUser (selfUserId)! ;
41- 
42-   /// The user with the given ID, if that user is known. 
43-   /// 
44-   /// There may be perfectly real users that are not known, 
45-   /// so callers must handle that possibility. 
46-   /// For details, see [users] . 
47- User ?  getUser (int  userId) =>  users[userId];
35+ User ?  getUser (int  userId);
4836
4937  /// All known users in the realm. 
5038  /// 
5139  /// This may have a large number of elements, like tens of thousands. 
5240  /// Consider [getUser]  or other alternatives to iterating through this. 
5341  /// 
5442  /// There may be perfectly real users which are not known 
55-   /// and so are not found here.  For details, see [users] . 
56- Iterable <User > get  allUsers =>  users.values;
43+   /// and so are not found here.  For details, see [getUser] . 
44+ Iterable <User > get  allUsers;
45+ 
46+   /// The [User]  object for the "self-user", 
47+   /// i.e. the account the person using this app is logged into. 
48+   /// 
49+   /// When only the user ID is needed, see [selfUserId] . 
50+ User  get  selfUser =>  getUser (selfUserId)! ;
5751
5852  /// The name to show the given user as in the UI, even for unknown users. 
5953  /// 
@@ -69,7 +63,7 @@ mixin UserStore {
6963
7064  /// The name to show for the given message's sender in the UI. 
7165  /// 
72-   /// If the user is known (see [users ] ), this is their current [User.fullName] . 
66+   /// If the user is known (see [getUser ] ), this is their current [User.fullName] . 
7367  /// If unknown, this uses the fallback value conveniently provided on the 
7468  /// [Message]  object itself, namely [Message.senderFullName] . 
7569  /// 
@@ -90,7 +84,7 @@ class UserStoreImpl with UserStore {
9084  UserStoreImpl ({
9185    required  this .selfUserId,
9286    required  InitialSnapshot  initialSnapshot,
93-   }) :  users  =  Map .fromEntries (
87+   }) :  _users  =  Map .fromEntries (
9488         initialSnapshot.realmUsers
9589         .followedBy (initialSnapshot.realmNonActiveUsers)
9690         .followedBy (initialSnapshot.crossRealmBots)
@@ -99,19 +93,24 @@ class UserStoreImpl with UserStore {
9993  @override 
10094  final  int  selfUserId;
10195
96+   final  Map <int , User > _users;
97+ 
98+   @override 
99+   User ?  getUser (int  userId) =>  _users[userId];
100+ 
102101  @override 
103-   final   Map < int ,  User > users ;
102+   Iterable < User > get  allUsers  =>  _users.values ;
104103
105104  void  handleRealmUserEvent (RealmUserEvent  event) {
106105    switch  (event) {
107106      case  RealmUserAddEvent (): 
108-         users [event.person.userId] =  event.person;
107+         _users [event.person.userId] =  event.person;
109108
110109      case  RealmUserRemoveEvent (): 
111-         users .remove (event.userId);
110+         _users .remove (event.userId);
112111
113112      case  RealmUserUpdateEvent (): 
114-         final  user =  users [event.userId];
113+         final  user =  _users [event.userId];
115114        if  (user ==  null ) {
116115          return ; // TODO log 
117116        }
0 commit comments