Skip to content

Commit f8f88fe

Browse files
committed
store [nfc]: Make fromInitialSnapshot a factory constructor
This will let us first construct the StreamStore, as a local of the constructor, and then pass that to the Unreads constructor.
1 parent 5c778bd commit f8f88fe

File tree

1 file changed

+38
-17
lines changed

1 file changed

+38
-17
lines changed

lib/model/store.dart

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -148,25 +148,46 @@ class PerAccountStore extends ChangeNotifier with StreamStore {
148148
///
149149
/// For a [PerAccountStore] that polls an event queue to keep itself up to
150150
/// date, use [LivePerAccountStore.fromInitialSnapshot].
151-
PerAccountStore.fromInitialSnapshot({
151+
factory PerAccountStore.fromInitialSnapshot({
152+
required Account account,
153+
required ApiConnection connection,
154+
required InitialSnapshot initialSnapshot,
155+
}) {
156+
return PerAccountStore._(
157+
account: account,
158+
connection: connection,
159+
zulipVersion: initialSnapshot.zulipVersion,
160+
maxFileUploadSizeMib: initialSnapshot.maxFileUploadSizeMib,
161+
realmDefaultExternalAccounts: initialSnapshot.realmDefaultExternalAccounts,
162+
realmEmoji: initialSnapshot.realmEmoji,
163+
customProfileFields: _sortCustomProfileFields(initialSnapshot.customProfileFields),
164+
userSettings: initialSnapshot.userSettings,
165+
unreads: Unreads(initial: initialSnapshot.unreadMsgs, selfUserId: account.userId),
166+
users: Map.fromEntries(
167+
initialSnapshot.realmUsers
168+
.followedBy(initialSnapshot.realmNonActiveUsers)
169+
.followedBy(initialSnapshot.crossRealmBots)
170+
.map((user) => MapEntry(user.userId, user))),
171+
streams: StreamStoreImpl(initialSnapshot: initialSnapshot),
172+
recentDmConversationsView: RecentDmConversationsView(
173+
initial: initialSnapshot.recentPrivateConversations, selfUserId: account.userId),
174+
);
175+
}
176+
177+
PerAccountStore._({
152178
required this.account,
153179
required this.connection,
154-
required InitialSnapshot initialSnapshot,
155-
}) : zulipVersion = initialSnapshot.zulipVersion,
156-
maxFileUploadSizeMib = initialSnapshot.maxFileUploadSizeMib,
157-
realmDefaultExternalAccounts = initialSnapshot.realmDefaultExternalAccounts,
158-
realmEmoji = initialSnapshot.realmEmoji,
159-
customProfileFields = _sortCustomProfileFields(initialSnapshot.customProfileFields),
160-
userSettings = initialSnapshot.userSettings,
161-
unreads = Unreads(initial: initialSnapshot.unreadMsgs, selfUserId: account.userId),
162-
users = Map.fromEntries(
163-
initialSnapshot.realmUsers
164-
.followedBy(initialSnapshot.realmNonActiveUsers)
165-
.followedBy(initialSnapshot.crossRealmBots)
166-
.map((user) => MapEntry(user.userId, user))),
167-
_streams = StreamStoreImpl(initialSnapshot: initialSnapshot),
168-
recentDmConversationsView = RecentDmConversationsView(
169-
initial: initialSnapshot.recentPrivateConversations, selfUserId: account.userId);
180+
required this.zulipVersion,
181+
required this.maxFileUploadSizeMib,
182+
required this.realmDefaultExternalAccounts,
183+
required this.realmEmoji,
184+
required this.customProfileFields,
185+
required this.userSettings,
186+
required this.unreads,
187+
required this.users,
188+
required streams,
189+
required this.recentDmConversationsView,
190+
}) : _streams = streams;
170191

171192
final Account account;
172193
final ApiConnection connection; // TODO(#135): update zulipFeatureLevel with events

0 commit comments

Comments
 (0)