refactor: FilterMap extension
This commit is contained in:
parent
c10a98ff35
commit
bad334d441
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
import 'package:matrix_api_lite/src/utils/logs.dart';
|
import 'package:matrix_api_lite/src/utils/logs.dart';
|
||||||
|
|
||||||
|
import '../../utils/filter_map_extension.dart';
|
||||||
import '../../utils/try_get_map_extension.dart';
|
import '../../utils/try_get_map_extension.dart';
|
||||||
import '../basic_event.dart';
|
import '../basic_event.dart';
|
||||||
|
|
||||||
|
|
@ -31,11 +32,6 @@ extension RoomEncryptedContentBasicEventExtension on BasicEvent {
|
||||||
RoomEncryptedContent.fromJson(content);
|
RoomEncryptedContent.fromJson(content);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Convert Nullable iterable of MapEntries to Map
|
|
||||||
extension ToMap<T1, T2> on Iterable<MapEntry<T1, T2>> {
|
|
||||||
Map<T1, T2> toMap() => Map.fromEntries(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
class RoomEncryptedContent {
|
class RoomEncryptedContent {
|
||||||
String algorithm;
|
String algorithm;
|
||||||
String senderKey;
|
String senderKey;
|
||||||
|
|
@ -53,16 +49,7 @@ class RoomEncryptedContent {
|
||||||
// filter out invalid/incomplete CiphertextInfos
|
// filter out invalid/incomplete CiphertextInfos
|
||||||
ciphertextOlm = json
|
ciphertextOlm = json
|
||||||
.tryGet<Map<String, dynamic>>('ciphertext', TryGet.silent)
|
.tryGet<Map<String, dynamic>>('ciphertext', TryGet.silent)
|
||||||
?.entries
|
?.catchMap((k, v) => MapEntry(k, CiphertextInfo.fromJson(v)));
|
||||||
.map((e) {
|
|
||||||
try {
|
|
||||||
return MapEntry(e.key, CiphertextInfo.fromJson(e.value));
|
|
||||||
} catch (_) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.whereType<MapEntry<String, CiphertextInfo>>()
|
|
||||||
.toMap();
|
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
final data = <String, dynamic>{};
|
final data = <String, dynamic>{};
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
extension FilterMap<K, V> on Map<K, V> {
|
||||||
|
Map<K2, V2> filterMap<K2, V2>(MapEntry<K2, V2>? Function(K, V) f) =>
|
||||||
|
Map.fromEntries(
|
||||||
|
entries.map((e) => f(e.key, e.value)).whereType<MapEntry<K2, V2>>());
|
||||||
|
|
||||||
|
Map<K2, V2> catchMap<K2, V2>(MapEntry<K2, V2> Function(K, V) f) =>
|
||||||
|
filterMap((k, v) {
|
||||||
|
try {
|
||||||
|
return f(k, v);
|
||||||
|
} catch (_) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue