diff --git a/lib/matrix_api/model/one_time_keys_claim_response.dart b/lib/matrix_api/model/one_time_keys_claim_response.dart index 501fd48..7834211 100644 --- a/lib/matrix_api/model/one_time_keys_claim_response.dart +++ b/lib/matrix_api/model/one_time_keys_claim_response.dart @@ -21,7 +21,7 @@ class OneTimeKeysClaimResponse { Map> oneTimeKeys; OneTimeKeysClaimResponse.fromJson(Map json) { - failures = Map.from(json['failures']); + failures = Map.from(json['failures'] ?? {}); oneTimeKeys = Map>.from(json['one_time_keys']); } diff --git a/lib/src/client.dart b/lib/src/client.dart index 3a24d31..9d88ddd 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -533,10 +533,6 @@ class Client extends MatrixApi { final StreamController onLoginStateChanged = StreamController.broadcast(); - /// Synchronization erros are coming here. - final StreamController onError = - StreamController.broadcast(); - /// Synchronization erros are coming here. final StreamController onSyncError = StreamController.broadcast(); @@ -780,18 +776,17 @@ class Client extends MatrixApi { encryption.onSync(); } _retryDelay = Future.value(); - } on MatrixException catch (e) { - onError.add(e); + } on MatrixException catch (e, s) { + onSyncError.add(SdkError(exception: e, stackTrace: s)); + if (e.error == MatrixError.M_UNKNOWN_TOKEN) { + Logs.warning('The user has been logged out!'); + clear(); + } } catch (e, s) { if (!isLogged() || _disposed) return; Logs.error('Error during processing events: ' + e.toString(), s); onSyncError.add(SdkError( exception: e is Exception ? e : Exception(e), stackTrace: s)); - if (e is MatrixException && - e.errcode == MatrixError.M_UNKNOWN_TOKEN.toString().split('.').last) { - Logs.warning('The user has been logged out!'); - clear(); - } } }