Skip to content

Commit 6c0e125

Browse files
chrisbobbegnprice
authored andcommitted
msglist [nfc]: Add anchor param to renarrowAndFetch
1 parent 5097fce commit 6c0e125

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

lib/model/message_list.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -622,9 +622,10 @@ class MessageListView with ChangeNotifier, _MessageSequence {
622622
Narrow get narrow => _narrow;
623623
Narrow _narrow;
624624

625-
/// Set [narrow] to [newNarrow], reset, [notifyListeners], and [fetchInitial].
626-
void renarrowAndFetch(Narrow newNarrow) {
625+
/// Set [narrow] and [anchor], reset, [notifyListeners], and [fetchInitial].
626+
void renarrowAndFetch(Narrow newNarrow, Anchor anchor) {
627627
_narrow = newNarrow;
628+
_anchor = anchor;
628629
_reset();
629630
notifyListeners();
630631
fetchInitial();
@@ -1173,7 +1174,8 @@ class MessageListView with ChangeNotifier, _MessageSequence {
11731174
switch (propagateMode) {
11741175
case PropagateMode.changeAll:
11751176
case PropagateMode.changeLater:
1176-
renarrowAndFetch(newNarrow);
1177+
// TODO(#1009) anchor to some visible message, if any
1178+
renarrowAndFetch(newNarrow, anchor);
11771179
case PropagateMode.changeOne:
11781180
}
11791181
}

lib/widgets/message_list.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,8 @@ class MessageListAppBarTitle extends StatelessWidget {
639639
case KeywordSearchNarrow():
640640
assert(!willCenterTitle);
641641
return _SearchBar(onSubmitted: (narrow) {
642-
MessageListPage.ancestorOf(context).model!.renarrowAndFetch(narrow);
642+
MessageListPage.ancestorOf(context).model!
643+
.renarrowAndFetch(narrow, AnchorCode.newest);
643644
});
644645
}
645646
}

test/model/message_list_test.dart

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -453,14 +453,19 @@ void main() {
453453

454454
// Start the renarrowAndFetch.
455455
final newNarrow = ChannelNarrow(channel.streamId);
456+
final newAnchor = NumericAnchor(messages[3].id);
457+
456458
final result = eg.getMessagesResult(
457-
anchor: model.anchor, foundOldest: false, messages: messages);
459+
anchor: newAnchor,
460+
foundOldest: false, foundNewest: false,
461+
messages: messages.sublist(3, 5));
458462
connection.prepare(json: result.toJson(), delay: Duration(seconds: 1));
459-
model.renarrowAndFetch(newNarrow);
463+
model.renarrowAndFetch(newNarrow, newAnchor);
460464
checkNotifiedOnce();
461465
check(model)
462466
..fetched.isFalse()
463467
..narrow.equals(newNarrow)
468+
..anchor.equals(newAnchor)
464469
..messages.isEmpty();
465470

466471
// Elapse until the fetchOlder is done but renarrowAndFetch is still
@@ -476,7 +481,8 @@ void main() {
476481
check(model)
477482
..fetched.isTrue()
478483
..narrow.equals(newNarrow)
479-
..messages.length.equals(100);
484+
..anchor.equals(newAnchor)
485+
..messages.length.equals(2);
480486
}));
481487
});
482488

@@ -3380,6 +3386,7 @@ extension MessageListMessageItemChecks on Subject<MessageListMessageItem> {
33803386
extension MessageListViewChecks on Subject<MessageListView> {
33813387
Subject<PerAccountStore> get store => has((x) => x.store, 'store');
33823388
Subject<Narrow> get narrow => has((x) => x.narrow, 'narrow');
3389+
Subject<Anchor> get anchor => has((x) => x.anchor, 'anchor');
33833390
Subject<List<Message>> get messages => has((x) => x.messages, 'messages');
33843391
Subject<List<OutboxMessage>> get outboxMessages => has((x) => x.outboxMessages, 'outboxMessages');
33853392
Subject<int> get middleMessage => has((x) => x.middleMessage, 'middleMessage');

0 commit comments

Comments
 (0)