@@ -982,6 +982,109 @@ void main() {
982982 );
983983 }
984984
985+ group ('confirmation dialog' , () {
986+ testWidgets ('CombinedFeedNarrow: show dialog' , (tester) async {
987+ final message = eg.streamMessage (flags: []);
988+ final unreadMsgs = eg.unreadMsgs (channels: [
989+ UnreadChannelSnapshot (topic: message.topic,
990+ streamId: message.streamId, unreadMessageIds: [message.id])
991+ ]);
992+ final narrow = CombinedFeedNarrow ();
993+
994+ await setupMessageListPage (tester,
995+ narrow: narrow, messages: [message], unreadMsgs: unreadMsgs);
996+ check (isMarkAsReadButtonVisible (tester)).isTrue ();
997+
998+ await tester.tap (find.byType (MarkAsReadWidget ));
999+ await tester.pump ();
1000+
1001+ final unreadCount = store.unreads.countInNarrow (narrow);
1002+ checkConfirmDialog (tester, unreadCount);
1003+ });
1004+
1005+ testWidgets ('MentionsNarrow: show dialog' , (tester) async {
1006+ final message = eg.streamMessage (flags: []);
1007+ final unreadMsgs = eg.unreadMsgs (mentions: [message.id]);
1008+ final narrow = MentionsNarrow ();
1009+
1010+ await setupMessageListPage (tester,
1011+ narrow: narrow, messages: [message], unreadMsgs: unreadMsgs);
1012+ check (isMarkAsReadButtonVisible (tester)).isTrue ();
1013+
1014+ await tester.tap (find.byType (MarkAsReadWidget ));
1015+ await tester.pump ();
1016+
1017+ final unreadCount = store.unreads.countInNarrow (narrow);
1018+ checkConfirmDialog (tester, unreadCount);
1019+ });
1020+
1021+ testWidgets ('ChannelNarrow: show dialog' , (tester) async {
1022+ final message = eg.streamMessage (flags: []);
1023+ final unreadMsgs = eg.unreadMsgs (channels: [
1024+ UnreadChannelSnapshot (topic: message.topic,
1025+ streamId: message.streamId, unreadMessageIds: [message.id])
1026+ ]);
1027+ final narrow = ChannelNarrow (message.streamId);
1028+
1029+ await setupMessageListPage (tester,
1030+ narrow: narrow, messages: [message], unreadMsgs: unreadMsgs);
1031+ check (isMarkAsReadButtonVisible (tester)).isTrue ();
1032+
1033+ await tester.tap (find.byType (MarkAsReadWidget ));
1034+ await tester.pump ();
1035+
1036+ final unreadCount = store.unreads.countInNarrow (narrow);
1037+ checkConfirmDialog (tester, unreadCount);
1038+ });
1039+
1040+ testWidgets ('DmNarrow: do not show dialog' , (tester) async {
1041+ final selfUser = eg.selfUser;
1042+ final otherUser = eg.otherUser;
1043+ final message = eg.dmMessage (flags: [], from: selfUser, to: [otherUser]);
1044+ final unreadMsgs = eg.unreadMsgs (dms: [
1045+ UnreadDmSnapshot (otherUserId: otherUser.userId, unreadMessageIds: [message.id])
1046+ ]);
1047+ final narrow = DmNarrow .ofMessage (message, selfUserId: eg.selfUser.userId);
1048+
1049+ await setupMessageListPage (tester,
1050+ narrow: narrow, messages: [message], unreadMsgs: unreadMsgs);
1051+ check (isMarkAsReadButtonVisible (tester)).isTrue ();
1052+
1053+ connection.prepare (json: UpdateMessageFlagsForNarrowResult (
1054+ processedCount: 1 , updatedCount: 1 ,
1055+ firstProcessedId: message.id, lastProcessedId: message.id,
1056+ foundOldest: true , foundNewest: true ).toJson ());
1057+ await tester.tap (find.byType (MarkAsReadWidget ));
1058+ await tester.pump ();
1059+
1060+ checkNoDialog (tester);
1061+ await tester.pump (Duration .zero);
1062+ });
1063+
1064+ testWidgets ('TopicNarrow: do not show dialog' , (tester) async {
1065+ final message = eg.streamMessage (flags: []);
1066+ final unreadMsgs = eg.unreadMsgs (channels: [
1067+ UnreadChannelSnapshot (topic: message.topic,
1068+ streamId: message.streamId, unreadMessageIds: [message.id])
1069+ ]);
1070+ final narrow = TopicNarrow .ofMessage (message);
1071+
1072+ await setupMessageListPage (tester,
1073+ narrow: narrow, messages: [message], unreadMsgs: unreadMsgs);
1074+ check (isMarkAsReadButtonVisible (tester)).isTrue ();
1075+
1076+ connection.prepare (json: UpdateMessageFlagsForNarrowResult (
1077+ processedCount: 1 , updatedCount: 1 ,
1078+ firstProcessedId: message.id, lastProcessedId: message.id,
1079+ foundOldest: true , foundNewest: true ).toJson ());
1080+ await tester.tap (find.byType (MarkAsReadWidget ));
1081+ await tester.pump ();
1082+
1083+ checkNoDialog (tester);
1084+ await tester.pump (Duration .zero);
1085+ });
1086+ });
1087+
9851088 testWidgets ('from read to unread' , (tester) async {
9861089 final message = eg.streamMessage (flags: [MessageFlag .read]);
9871090 await setupMessageListPage (tester, messages: [message]);
0 commit comments