import 'dart:convert'; import '../client.dart'; class DeviceKeysList { String userId; bool outdated = true; Map deviceKeys = {}; DeviceKeysList.fromJson(Map json) { userId = json['user_id']; outdated = json['outdated']; deviceKeys = {}; for (final rawDeviceKeyEntry in json['device_keys'].entries) { deviceKeys[rawDeviceKeyEntry.key] = DeviceKeys.fromJson(rawDeviceKeyEntry.value); } } Map toJson() { final Map data = Map(); data['user_id'] = this.userId; data['outdated'] = this.outdated; Map rawDeviceKeys = {}; for (final deviceKeyEntry in this.deviceKeys.entries) { rawDeviceKeys[deviceKeyEntry.key] = deviceKeyEntry.value.toJson(); } data['device_keys'] = rawDeviceKeys; return data; } String toString() => json.encode(toJson()); DeviceKeysList(this.userId); } class DeviceKeys { String userId; String deviceId; List algorithms; Map keys; Map signatures; Map unsigned; bool verified; bool blocked; String get curve25519Key => keys["curve25519:$deviceId"]; String get ed25519Key => keys["ed25519:$deviceId"]; Future setVerified(bool newVerified, Client client) { verified = newVerified; return client.storeAPI.storeUserDeviceKeys(client.userDeviceKeys); } Future setBlocked(bool newBlocked, Client client) { blocked = newBlocked; return client.storeAPI.storeUserDeviceKeys(client.userDeviceKeys); } DeviceKeys({ this.userId, this.deviceId, this.algorithms, this.keys, this.signatures, this.unsigned, this.verified, this.blocked, }); DeviceKeys.fromJson(Map json) { userId = json['user_id']; deviceId = json['device_id']; algorithms = json['algorithms'].cast(); keys = json['keys'] != null ? Map.from(json['keys']) : null; signatures = json['signatures'] != null ? Map.from(json['signatures']) : null; unsigned = json['unsigned'] != null ? Map.from(json['unsigned']) : null; verified = json['verified'] ?? false; blocked = json['blocked'] ?? false; } Map toJson() { final Map data = Map(); data['user_id'] = this.userId; data['device_id'] = this.deviceId; data['algorithms'] = this.algorithms; if (this.keys != null) { data['keys'] = this.keys; } if (this.signatures != null) { data['signatures'] = this.signatures; } if (this.unsigned != null) { data['unsigned'] = this.unsigned; } data['verified'] = this.verified; data['blocked'] = this.blocked; return data; } }