clear method
Resets all settings and stops the synchronisation.
Implementation
Future<void> clear({
SessionClearReason reason = SessionClearReason.unspecified,
}) async {
Logs().i('Clearing the session because of $reason');
Logs().outputEvents.clear();
DatabaseApi? legacyDatabase;
if (legacyDatabaseBuilder != null) {
// If there was data in the legacy db, it will never let the SDK
// completely log out as we migrate data from it, everytime we `init`
legacyDatabase = await legacyDatabaseBuilder?.call(this);
}
try {
await abortSync();
await database.clear();
await legacyDatabase?.clear();
_backgroundSync = true;
} catch (e, s) {
Logs().e('Unable to clear database', e, s);
await database.delete();
await legacyDatabase?.delete();
legacyDatabase = null;
await dispose();
}
_id = accessToken = _syncFilterId = homeserver = _userID = _deviceID =
_deviceName = _prevBatch = _trackedUserIds = null;
_rooms = [];
_eventsPendingDecryption.clear();
await encryption?.dispose();
_encryption = null;
onSessionCleared.add(reason);
onLoginStateChanged.add(LoginState.loggedOut);
}