Files
nearby_service/lib/src/platforms/ios/model/nearby_device.dart
T
Kseniia Nikitina e4a8c2243f Fix: Android native connection errors are not displayed (#5)
* fix(android, lib): add error logging, handle running jobs exception

* doc(app_service): add comment

* fix(exampl_full, utils): move getCurrentDevice info and fix logs

* doc: add comments, update changelog

* doc: update changelog

* version: 0.0.7

* doc: update readme

* doc: update readme
2024-04-21 16:38:45 +02:00

94 lines
2.5 KiB
Dart

import 'package:nearby_service/nearby_service.dart';
import 'package:nearby_service/src/utils/json_decoder.dart';
///
/// A device on a P2P network obtained from the IOS platform.
///
final class NearbyIOSDevice extends NearbyDevice {
///
/// A class representing an IOS device on a P2P network.
///
/// [NearbyDeviceInfo] for IOS consists of the [MCPeerID](https://developer.apple.com/documentation/multipeerconnectivity/mcpeerid) passed from the platform
/// and a displayName passed from the platform.
///
/// [MCPeerID](https://developer.apple.com/documentation/multipeerconnectivity/mcpeerid) is an identifier on the local network for IOS.
///
NearbyIOSDevice({
required super.info,
required super.status,
this.os,
this.osVersion,
this.deviceType,
});
///
/// Gets [NearbyIOSDevice] from [Map].
///
factory NearbyIOSDevice.fromJson(Map<String, dynamic>? json) {
return NearbyIOSDevice(
info: NearbyDeviceInfo.fromJson(json),
deviceType: json?["deviceType"],
os: json?["os"],
osVersion: json?["osVersion"],
status: NearbyDeviceStatus.fromIosCode(json?['state']),
);
}
///
/// `UIDevice.current.systemName` from IOS Platform.
///
final String? os;
///
/// `UIDevice.current.systemVersion` from IOS Platform.
///
final String? osVersion;
///
/// `UIDevice.current.model` from IOS Platform.
///
final String? deviceType;
@override
bool operator ==(Object other) =>
identical(this, other) ||
super == other &&
other is NearbyIOSDevice &&
runtimeType == other.runtimeType &&
os == other.os &&
osVersion == other.osVersion &&
deviceType == other.deviceType;
@override
int get hashCode =>
super.hashCode ^ os.hashCode ^ osVersion.hashCode ^ deviceType.hashCode;
@override
String toString() {
return 'NearbyIOSDevice{os: $os, osVersion: $osVersion, deviceType: $deviceType}';
}
}
///
/// Implementation of [NearbyDeviceMapper] for IOS.
///
class NearbyIOSMapper implements NearbyDeviceMapper {
@override
List<NearbyDevice> mapToDeviceList(dynamic value) {
final decoded = JSONDecoder.decodeList(value);
return [
...?decoded?.map(
(e) => NearbyIOSDevice.fromJson(JSONDecoder.decodeMap(e)),
),
];
}
@override
NearbyDevice? mapToDevice(dynamic value) {
final decoded = JSONDecoder.decodeMap(value);
if (decoded == null) return null;
return NearbyIOSDevice.fromJson(decoded);
}
}