dispose client

This commit is contained in:
Christian Pauly 2020-05-18 14:01:14 +00:00
parent a27c93e7a8
commit 5166dd8d51
1 changed files with 14 additions and 1 deletions

View File

@ -971,7 +971,7 @@ class Client {
Future<dynamic> _syncRequest;
Future<void> _sync() async {
if (isLogged() == false) return;
if (isLogged() == false || _disposed) return;
var action = '/client/r0/sync?filter=$syncFilters';
@ -981,11 +981,13 @@ class Client {
}
try {
_syncRequest = jsonRequest(type: HTTPType.GET, action: action);
if (_disposed) return;
final hash = _syncRequest.hashCode;
final syncResp = await _syncRequest;
if (hash != _syncRequest.hashCode) return;
_timeoutFactor = 1;
final futures = handleSync(syncResp);
if (_disposed) return;
await database?.transaction(() async {
for (final f in futures) {
await f();
@ -2174,4 +2176,15 @@ class Client {
rethrow;
}
}
bool _disposed = false;
/// Stops the synchronization and closes the database. After this
/// you can safely make this Client instance null.
Future<void> dispose() async {
_disposed = true;
await database?.close();
database = null;
return;
}
}