Skip to content

Commit beac99b

Browse files
committed
store: Show error message when replacing event queue
Fixes: #555 Signed-off-by: Zixuan James Li <[email protected]>
1 parent a6cb0bc commit beac99b

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

assets/l10n/app_en.arb

+5
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,11 @@
172172
"error": {"type": "String", "example": "Invalid format"}
173173
}
174174
},
175+
"errorReconnectingToServer": "Reconnecting to {serverUrl}…",
176+
"@errorReconnectingToServer": {
177+
"serverUrl": {"type": "String", "example": "http://example.com/"},
178+
"description": "Message when reconnecting to the server."
179+
},
175180
"errorSharingFailed": "Sharing failed",
176181
"@errorSharingFailed": {
177182
"description": "Error message when sharing a message failed."

lib/model/store.dart

+1
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,7 @@ class UpdateMachine {
794794
switch (e) {
795795
case ZulipApiException(code: 'BAD_EVENT_QUEUE_ID'):
796796
assert(debugLog('Lost event queue for $store. Replacing…'));
797+
reportErrorToUserBriefly(localizations.errorReconnectingToServer(serverUrl));
797798
await store._globalStore._reloadPerAccount(store.accountId);
798799
dispose();
799800
debugLog('… Event queue replaced.');

test/model/store_test.dart

+6
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,9 @@ void main() {
407407
}
408408

409409
test('handles expired queue', () => awaitFakeAsync((async) async {
410+
reportErrorToUserBriefly = logAndReportErrorToUserBriefly;
411+
addTearDown(() => reportErrorToUserBriefly = defaultReportErrorToUserBriefly);
412+
410413
await prepareStore();
411414
updateMachine.debugPauseLoop();
412415
updateMachine.poll();
@@ -420,7 +423,10 @@ void main() {
420423
});
421424
updateMachine.debugAdvanceLoop();
422425
async.flushMicrotasks();
426+
check(lastReportedError).isNull();
423427
await Future<void>.delayed(Duration.zero);
428+
check(takeLastReportedError()).isNotNull()
429+
.contains('Reconnecting to ${eg.realmUrl.origin}…');
424430
check(store).isLoading.isTrue();
425431

426432
// The global store has a new store.

0 commit comments

Comments
 (0)