From bec17611724519b49c549fecb17a616a708481ae Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Mon, 30 Nov 2020 15:00:10 +0100 Subject: [PATCH] refactor: content parsing --- lib/encryption/encryption.dart | 2 +- lib/encryption/key_manager.dart | 2 +- lib/encryption/olm_manager.dart | 2 +- lib/encryption/ssss.dart | 2 +- .../utils/json_signature_check_extension.dart | 2 +- lib/encryption/utils/key_verification.dart | 2 +- lib/encryption/utils/olm_session.dart | 2 +- .../utils/outbound_group_session.dart | 2 +- lib/encryption/utils/session_key.dart | 2 +- lib/matrix_api.dart | 1 + .../model/events/tombstone_content.dart | 23 +++++++++++++++++++ lib/{src => matrix_api}/utils/logs.dart | 0 .../utils/try_get_map_extension.dart | 18 +++++++++++++++ lib/src/client.dart | 2 +- lib/src/database/database.dart | 2 +- lib/src/room.dart | 5 ++-- lib/src/timeline.dart | 2 +- lib/src/utils/event_update.dart | 2 +- lib/src/utils/run_in_root.dart | 2 +- lib/src/utils/tombstone_content.dart | 15 ------------ test/client_test.dart | 2 +- test/device_keys_list_test.dart | 2 +- test/encryption/cross_signing_test.dart | 2 +- .../encrypt_decrypt_room_message_test.dart | 2 +- .../encrypt_decrypt_to_device_test.dart | 2 +- test/encryption/key_manager_test.dart | 2 +- test/encryption/key_request_test.dart | 2 +- test/encryption/key_verification_test.dart | 2 +- test/encryption/olm_manager_test.dart | 2 +- test/encryption/online_key_backup_test.dart | 2 +- test/encryption/ssss_test.dart | 2 +- test/event_test.dart | 2 +- test_driver/famedlysdk_test.dart | 2 +- 33 files changed, 71 insertions(+), 45 deletions(-) create mode 100644 lib/matrix_api/model/events/tombstone_content.dart rename lib/{src => matrix_api}/utils/logs.dart (100%) create mode 100644 lib/matrix_api/utils/try_get_map_extension.dart delete mode 100644 lib/src/utils/tombstone_content.dart diff --git a/lib/encryption/encryption.dart b/lib/encryption/encryption.dart index 754d36d5..e962379c 100644 --- a/lib/encryption/encryption.dart +++ b/lib/encryption/encryption.dart @@ -24,7 +24,7 @@ import 'package:pedantic/pedantic.dart'; import '../famedlysdk.dart'; import '../matrix_api.dart'; import '../src/utils/run_in_root.dart'; -import '../src/utils/logs.dart'; +import '../matrix_api/utils/logs.dart'; import 'cross_signing.dart'; import 'key_manager.dart'; import 'key_verification_manager.dart'; diff --git a/lib/encryption/key_manager.dart b/lib/encryption/key_manager.dart index c63892de..a7c9a9d9 100644 --- a/lib/encryption/key_manager.dart +++ b/lib/encryption/key_manager.dart @@ -26,7 +26,7 @@ import './utils/session_key.dart'; import '../famedlysdk.dart'; import '../matrix_api.dart'; import '../src/database/database.dart'; -import '../src/utils/logs.dart'; +import '../matrix_api/utils/logs.dart'; import '../src/utils/run_in_background.dart'; import '../src/utils/run_in_root.dart'; diff --git a/lib/encryption/olm_manager.dart b/lib/encryption/olm_manager.dart index e98032ad..2b9e8973 100644 --- a/lib/encryption/olm_manager.dart +++ b/lib/encryption/olm_manager.dart @@ -25,7 +25,7 @@ import 'package:olm/olm.dart' as olm; import 'package:pedantic/pedantic.dart'; import '../encryption/utils/json_signature_check_extension.dart'; -import '../src/utils/logs.dart'; +import '../matrix_api/utils/logs.dart'; import 'encryption.dart'; import 'utils/olm_session.dart'; import '../src/utils/run_in_root.dart'; diff --git a/lib/encryption/ssss.dart b/lib/encryption/ssss.dart index fa9d7f39..3d230ec9 100644 --- a/lib/encryption/ssss.dart +++ b/lib/encryption/ssss.dart @@ -29,7 +29,7 @@ import 'package:password_hash/password_hash.dart'; import '../famedlysdk.dart'; import '../matrix_api.dart'; import '../src/database/database.dart'; -import '../src/utils/logs.dart'; +import '../matrix_api/utils/logs.dart'; import 'encryption.dart'; const CACHE_TYPES = [ diff --git a/lib/encryption/utils/json_signature_check_extension.dart b/lib/encryption/utils/json_signature_check_extension.dart index 8a2401f3..e729537f 100644 --- a/lib/encryption/utils/json_signature_check_extension.dart +++ b/lib/encryption/utils/json_signature_check_extension.dart @@ -1,5 +1,5 @@ import 'package:canonical_json/canonical_json.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:olm/olm.dart' as olm; extension JsonSignatureCheckExtension on Map { diff --git a/lib/encryption/utils/key_verification.dart b/lib/encryption/utils/key_verification.dart index 74b416e2..a1d84a22 100644 --- a/lib/encryption/utils/key_verification.dart +++ b/lib/encryption/utils/key_verification.dart @@ -25,7 +25,7 @@ import 'package:pedantic/pedantic.dart'; import '../../famedlysdk.dart'; import '../../matrix_api.dart'; -import '../../src/utils/logs.dart'; +import '../../matrix_api/utils/logs.dart'; import '../encryption.dart'; /* diff --git a/lib/encryption/utils/olm_session.dart b/lib/encryption/utils/olm_session.dart index 41f66a6c..10fd21e4 100644 --- a/lib/encryption/utils/olm_session.dart +++ b/lib/encryption/utils/olm_session.dart @@ -19,7 +19,7 @@ import 'package:olm/olm.dart' as olm; import '../../src/database/database.dart' show DbOlmSessions; -import '../../src/utils/logs.dart'; +import '../../matrix_api/utils/logs.dart'; class OlmSession { String identityKey; diff --git a/lib/encryption/utils/outbound_group_session.dart b/lib/encryption/utils/outbound_group_session.dart index 5de11cdd..13910c27 100644 --- a/lib/encryption/utils/outbound_group_session.dart +++ b/lib/encryption/utils/outbound_group_session.dart @@ -21,7 +21,7 @@ import 'dart:convert'; import 'package:olm/olm.dart' as olm; import '../../src/database/database.dart' show DbOutboundGroupSession; -import '../../src/utils/logs.dart'; +import '../../matrix_api/utils/logs.dart'; class OutboundGroupSession { /// The devices is a map from user id to device id to if the device is blocked. diff --git a/lib/encryption/utils/session_key.dart b/lib/encryption/utils/session_key.dart index 471c1f4b..4ccd0a3f 100644 --- a/lib/encryption/utils/session_key.dart +++ b/lib/encryption/utils/session_key.dart @@ -22,7 +22,7 @@ import 'package:olm/olm.dart' as olm; import '../../famedlysdk.dart'; import '../../src/database/database.dart' show DbInboundGroupSession; -import '../../src/utils/logs.dart'; +import '../../matrix_api/utils/logs.dart'; class SessionKey { Map content; diff --git a/lib/matrix_api.dart b/lib/matrix_api.dart index d24abfee..cf24e429 100644 --- a/lib/matrix_api.dart +++ b/lib/matrix_api.dart @@ -66,3 +66,4 @@ export 'matrix_api/model/upload_key_signatures_response.dart'; export 'matrix_api/model/user_search_result.dart'; export 'matrix_api/model/well_known_informations.dart'; export 'matrix_api/model/who_is_info.dart'; +export 'matrix_api/model/events/tombstone_content.dart'; diff --git a/lib/matrix_api/model/events/tombstone_content.dart b/lib/matrix_api/model/events/tombstone_content.dart new file mode 100644 index 00000000..a53d9e9e --- /dev/null +++ b/lib/matrix_api/model/events/tombstone_content.dart @@ -0,0 +1,23 @@ +import 'package:famedlysdk/matrix_api/model/basic_event.dart'; +import '../../utils/try_get_map_extension.dart'; + +extension TombstoneContentBasicEventExtension on BasicEvent { + TombstoneContent get parsedTombstoneContent => + TombstoneContent.fromJson(content); +} + +class TombstoneContent { + String body; + String replacementRoom; + + TombstoneContent.fromJson(Map json) + : body = json.tryGet('body', ''), + replacementRoom = json.tryGet('replacement_room', ''); + + Map toJson() { + final data = {}; + data['body'] = body; + data['replacement_room'] = replacementRoom; + return data; + } +} diff --git a/lib/src/utils/logs.dart b/lib/matrix_api/utils/logs.dart similarity index 100% rename from lib/src/utils/logs.dart rename to lib/matrix_api/utils/logs.dart diff --git a/lib/matrix_api/utils/try_get_map_extension.dart b/lib/matrix_api/utils/try_get_map_extension.dart new file mode 100644 index 00000000..398aee71 --- /dev/null +++ b/lib/matrix_api/utils/try_get_map_extension.dart @@ -0,0 +1,18 @@ +import 'logs.dart'; + +extension TryGetMapExtension on Map { + T tryGet(String key, [T fallbackValue]) { + final value = this[key]; + if (value != null && !(value is T)) { + Logs.warning( + 'Expected "${T.runtimeType}" in event content for the Key "$key" but got "${value.runtimeType}".'); + return fallbackValue; + } + if (value == null && fallbackValue != null) { + Logs.warning( + 'Required field in event content for the Key "$key" is null. Set to "$fallbackValue".'); + return fallbackValue; + } + return value; + } +} diff --git a/lib/src/client.dart b/lib/src/client.dart index aba61d1f..abc8fa87 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -30,7 +30,7 @@ import 'room.dart'; import 'user.dart'; import 'utils/device_keys_list.dart'; import 'utils/event_update.dart'; -import 'utils/logs.dart'; +import '../matrix_api/utils/logs.dart'; import 'utils/matrix_file.dart'; import 'utils/room_update.dart'; import 'utils/to_device_event.dart'; diff --git a/lib/src/database/database.dart b/lib/src/database/database.dart index f92ad168..16532656 100644 --- a/lib/src/database/database.dart +++ b/lib/src/database/database.dart @@ -8,7 +8,7 @@ import '../../famedlysdk.dart' as sdk; import '../../matrix_api.dart' as api; import '../client.dart'; import '../room.dart'; -import '../utils/logs.dart'; +import '../../matrix_api/utils/logs.dart'; part 'database.g.dart'; diff --git a/lib/src/room.dart b/lib/src/room.dart index f6e6f361..4130d442 100644 --- a/lib/src/room.dart +++ b/lib/src/room.dart @@ -19,7 +19,6 @@ import 'dart:async'; import 'package:famedlysdk/matrix_api/model/marked_unread.dart'; -import 'package:famedlysdk/src/utils/tombstone_content.dart'; import 'package:html_unescape/html_unescape.dart'; import 'package:matrix_file_e2ee/matrix_file_e2ee.dart'; @@ -31,7 +30,7 @@ import 'event.dart'; import 'timeline.dart'; import 'user.dart'; import 'utils/event_update.dart'; -import 'utils/logs.dart'; +import '../matrix_api/utils/logs.dart'; import 'utils/markdown.dart'; import 'utils/matrix_file.dart'; import 'utils/matrix_localizations.dart'; @@ -1699,6 +1698,6 @@ class Room { /// Returns informations about how this room is TombstoneContent get extinctInformations => isExtinct - ? TombstoneContent.fromJson(getState(EventTypes.RoomTombstone).content) + ? getState(EventTypes.RoomTombstone).parsedTombstoneContent : null; } diff --git a/lib/src/timeline.dart b/lib/src/timeline.dart index 462c0144..aa39667e 100644 --- a/lib/src/timeline.dart +++ b/lib/src/timeline.dart @@ -22,7 +22,7 @@ import '../matrix_api.dart'; import 'event.dart'; import 'room.dart'; import 'utils/event_update.dart'; -import 'utils/logs.dart'; +import '../matrix_api/utils/logs.dart'; import 'utils/room_update.dart'; typedef onTimelineUpdateCallback = void Function(); diff --git a/lib/src/utils/event_update.dart b/lib/src/utils/event_update.dart index de538b28..eb2c5fd3 100644 --- a/lib/src/utils/event_update.dart +++ b/lib/src/utils/event_update.dart @@ -18,7 +18,7 @@ import '../../famedlysdk.dart'; import '../../matrix_api.dart'; -import 'logs.dart'; +import '../../matrix_api/utils/logs.dart'; enum EventUpdateType { timeline, diff --git a/lib/src/utils/run_in_root.dart b/lib/src/utils/run_in_root.dart index b898dde0..cc0014ae 100644 --- a/lib/src/utils/run_in_root.dart +++ b/lib/src/utils/run_in_root.dart @@ -18,7 +18,7 @@ import 'dart:async'; -import 'logs.dart'; +import '../../matrix_api/utils/logs.dart'; Future runInRoot(FutureOr Function() fn) async { return await Zone.root.run(() async { diff --git a/lib/src/utils/tombstone_content.dart b/lib/src/utils/tombstone_content.dart deleted file mode 100644 index b740e4d9..00000000 --- a/lib/src/utils/tombstone_content.dart +++ /dev/null @@ -1,15 +0,0 @@ -class TombstoneContent { - String body; - String replacementRoom; - - TombstoneContent.fromJson(Map json) - : body = json['body'], - replacementRoom = json['replacement_room']; - - Map toJson() { - final data = {}; - data['body'] = body; - data['replacement_room'] = replacementRoom; - return data; - } -} diff --git a/test/client_test.dart b/test/client_test.dart index dc6e1475..275ac2e4 100644 --- a/test/client_test.dart +++ b/test/client_test.dart @@ -23,7 +23,7 @@ import 'package:famedlysdk/famedlysdk.dart'; import 'package:famedlysdk/matrix_api.dart'; import 'package:famedlysdk/src/client.dart'; import 'package:famedlysdk/src/utils/event_update.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:famedlysdk/src/utils/room_update.dart'; import 'package:famedlysdk/src/utils/matrix_file.dart'; import 'package:olm/olm.dart' as olm; diff --git a/test/device_keys_list_test.dart b/test/device_keys_list_test.dart index 1621bee9..130a0ff6 100644 --- a/test/device_keys_list_test.dart +++ b/test/device_keys_list_test.dart @@ -19,7 +19,7 @@ import 'dart:convert'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:test/test.dart'; import 'package:olm/olm.dart' as olm; diff --git a/test/encryption/cross_signing_test.dart b/test/encryption/cross_signing_test.dart index fe229827..8cb0023b 100644 --- a/test/encryption/cross_signing_test.dart +++ b/test/encryption/cross_signing_test.dart @@ -19,7 +19,7 @@ import 'dart:convert'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:test/test.dart'; import 'package:olm/olm.dart' as olm; diff --git a/test/encryption/encrypt_decrypt_room_message_test.dart b/test/encryption/encrypt_decrypt_room_message_test.dart index 484d211f..6908ce18 100644 --- a/test/encryption/encrypt_decrypt_room_message_test.dart +++ b/test/encryption/encrypt_decrypt_room_message_test.dart @@ -17,7 +17,7 @@ */ import 'package:famedlysdk/famedlysdk.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:test/test.dart'; import 'package:olm/olm.dart' as olm; diff --git a/test/encryption/encrypt_decrypt_to_device_test.dart b/test/encryption/encrypt_decrypt_to_device_test.dart index afdbc7c1..b9503479 100644 --- a/test/encryption/encrypt_decrypt_to_device_test.dart +++ b/test/encryption/encrypt_decrypt_to_device_test.dart @@ -17,7 +17,7 @@ */ import 'package:famedlysdk/famedlysdk.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:test/test.dart'; import 'package:olm/olm.dart' as olm; diff --git a/test/encryption/key_manager_test.dart b/test/encryption/key_manager_test.dart index 19eaf10c..b38640be 100644 --- a/test/encryption/key_manager_test.dart +++ b/test/encryption/key_manager_test.dart @@ -19,7 +19,7 @@ import 'dart:convert'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:test/test.dart'; import 'package:olm/olm.dart' as olm; diff --git a/test/encryption/key_request_test.dart b/test/encryption/key_request_test.dart index 2bf1a60b..c4ce123a 100644 --- a/test/encryption/key_request_test.dart +++ b/test/encryption/key_request_test.dart @@ -18,7 +18,7 @@ import 'dart:convert'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:test/test.dart'; import 'package:olm/olm.dart' as olm; diff --git a/test/encryption/key_verification_test.dart b/test/encryption/key_verification_test.dart index 65646aac..fb11b052 100644 --- a/test/encryption/key_verification_test.dart +++ b/test/encryption/key_verification_test.dart @@ -20,7 +20,7 @@ import 'dart:convert'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:famedlysdk/encryption.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:test/test.dart'; import 'package:olm/olm.dart' as olm; diff --git a/test/encryption/olm_manager_test.dart b/test/encryption/olm_manager_test.dart index 883171ce..56973af4 100644 --- a/test/encryption/olm_manager_test.dart +++ b/test/encryption/olm_manager_test.dart @@ -18,7 +18,7 @@ import 'dart:convert'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:test/test.dart'; import 'package:olm/olm.dart' as olm; import 'package:famedlysdk/encryption/utils/json_signature_check_extension.dart'; diff --git a/test/encryption/online_key_backup_test.dart b/test/encryption/online_key_backup_test.dart index 1e81535f..ba9359a4 100644 --- a/test/encryption/online_key_backup_test.dart +++ b/test/encryption/online_key_backup_test.dart @@ -19,7 +19,7 @@ import 'dart:convert'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:famedlysdk/matrix_api.dart'; import 'package:test/test.dart'; import 'package:olm/olm.dart' as olm; diff --git a/test/encryption/ssss_test.dart b/test/encryption/ssss_test.dart index a9b25931..88945c08 100644 --- a/test/encryption/ssss_test.dart +++ b/test/encryption/ssss_test.dart @@ -22,7 +22,7 @@ import 'dart:convert'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:famedlysdk/matrix_api.dart'; import 'package:famedlysdk/encryption.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:test/test.dart'; import 'package:encrypt/encrypt.dart'; import 'package:olm/olm.dart' as olm; diff --git a/test/event_test.dart b/test/event_test.dart index 6d5bff85..a7ad061c 100644 --- a/test/event_test.dart +++ b/test/event_test.dart @@ -23,7 +23,7 @@ import 'package:famedlysdk/famedlysdk.dart'; import 'package:famedlysdk/matrix_api.dart'; import 'package:famedlysdk/encryption.dart'; import 'package:famedlysdk/src/event.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import 'package:test/test.dart'; import 'package:olm/olm.dart' as olm; diff --git a/test_driver/famedlysdk_test.dart b/test_driver/famedlysdk_test.dart index d70d46b2..2bfc9d89 100644 --- a/test_driver/famedlysdk_test.dart +++ b/test_driver/famedlysdk_test.dart @@ -1,6 +1,6 @@ import 'package:famedlysdk/famedlysdk.dart'; import 'package:famedlysdk/matrix_api.dart'; -import 'package:famedlysdk/src/utils/logs.dart'; +import 'package:famedlysdk/matrix_api/utils/logs.dart'; import '../test/fake_database.dart'; import 'test_config.dart'; import 'package:olm/olm.dart' as olm;