diff --git a/integration_test/matrix_service_test.dart b/integration_test/matrix_service_test.dart index 323272b02..3998046be 100644 --- a/integration_test/matrix_service_test.dart +++ b/integration_test/matrix_service_test.dart @@ -314,12 +314,6 @@ void main() { final bobEntriesCount = await bobDb.getJournalCount(); expect(bobEntriesCount, n); debugPrint('Bob persisted $bobEntriesCount entries'); - - debugPrint('\n--- Logging out Alice and Bob'); - - await alice.logout(); - await waitSeconds(defaultDelay * delayFactor); - await bob.logout(); }, timeout: const Timeout(Duration(minutes: 15)), ); diff --git a/lib/sync/matrix/matrix_service.dart b/lib/sync/matrix/matrix_service.dart index e09a4d369..7dc9980e2 100644 --- a/lib/sync/matrix/matrix_service.dart +++ b/lib/sync/matrix/matrix_service.dart @@ -195,6 +195,7 @@ class MatrixService { Future logout() async { if (_client.isLogged()) { + timeline?.cancelSubscriptions(); await _client.logout(); } } diff --git a/lib/sync/matrix/timeline.dart b/lib/sync/matrix/timeline.dart index 2e36e4236..fe49c8641 100644 --- a/lib/sync/matrix/timeline.dart +++ b/lib/sync/matrix/timeline.dart @@ -68,6 +68,7 @@ Future processNewTimelineEvents({ try { final lastReadEventContextId = service.lastReadEventContextId; + await service.client.sync(); final hasMessage = await service.syncRoom ?.getEventById(lastReadEventContextId.toString()) != @@ -116,21 +117,26 @@ Future processNewTimelineEvents({ service.lastReadEventContextId = eventId; await setLastReadMatrixEventId(eventId); } - - await timeline.setReadMarker(eventId: eventId); - } catch (e) { - debugPrint('$e'); + final loginState = service.client.onLoginStateChanged.value; + if (loginState == LoginState.loggedIn) { + await timeline.setReadMarker(eventId: eventId); + } + } catch (e, stackTrace) { + loggingDb.captureException( + e, + domain: 'MATRIX_SERVICE', + subDomain: 'setReadMarker ${service.client.deviceName}', + stackTrace: stackTrace, + ); } } } catch (e, stackTrace) { - debugPrint('$e'); loggingDb.captureException( e, domain: 'MATRIX_SERVICE', subDomain: 'listenToTimelineEvents ${service.client.deviceName}', stackTrace: stackTrace, ); - rethrow; } }