Skip to content

Commit e263d1d

Browse files
notif: Query account by realm URL origin, not full URL
This fixes a potential bug, in case the server returned `realm_url` contains a trailing `/`.
1 parent 0da3f07 commit e263d1d

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

lib/notifications/display.dart

+3-2
Original file line numberDiff line numberDiff line change
@@ -468,8 +468,9 @@ class NotificationDisplayManager {
468468
assert(url.scheme == 'zulip' && url.host == 'notification');
469469
final payload = NotificationOpenPayload.parseUrl(url);
470470

471-
final account = globalStore.accounts.firstWhereOrNull((account) =>
472-
account.realmUrl == payload.realmUrl && account.userId == payload.userId);
471+
final account = globalStore.accounts.firstWhereOrNull(
472+
(account) => account.realmUrl.origin == payload.realmUrl.origin
473+
&& account.userId == payload.userId);
473474
if (account == null) return null;
474475

475476
final route = MessageListPage.buildRoute(

test/notifications/display_test.dart

+15
Original file line numberDiff line numberDiff line change
@@ -1036,6 +1036,21 @@ void main() {
10361036
eg.dmMessage(from: eg.otherUser, to: [eg.selfUser]));
10371037
});
10381038

1039+
testWidgets('account queried by realmUrl origin component', (tester) async {
1040+
addTearDown(testBinding.reset);
1041+
await testBinding.globalStore.add(
1042+
eg.selfAccount.copyWith(realmUrl: Uri.parse('http://chat.example')),
1043+
eg.initialSnapshot());
1044+
await prepare(tester);
1045+
1046+
await checkOpenNotification(tester,
1047+
eg.selfAccount.copyWith(realmUrl: Uri.parse('http://chat.example/')),
1048+
eg.streamMessage());
1049+
await checkOpenNotification(tester,
1050+
eg.selfAccount.copyWith(realmUrl: Uri.parse('http://chat.example')),
1051+
eg.streamMessage());
1052+
});
1053+
10391054
testWidgets('no accounts', (tester) async {
10401055
await prepare(tester, withAccount: false);
10411056
await openNotification(tester, eg.selfAccount, eg.streamMessage());

0 commit comments

Comments
 (0)