MobilApp/lib/models/device_info_model.dart

69 lines
2.7 KiB
Dart

// Immutable adatosztály — az eszköz összes statikus adata.
// A DeviceIdentityService tölti be egyszer induláskor.
class DeviceInfoModel {
// ── Azonosítók ────────────────────────────────────────────────────
/// Android rendszerszintű egyedi azonosító.
/// Reinstall után megmarad, factory reset után változik.
final String deviceId;
/// App-példány UUID — FlutterSecureStorage-ban tárolva.
/// Reinstall után új értéket kap.
final String appInstanceId;
// ── Hardver ───────────────────────────────────────────────────────
final String manufacturer; // "Samsung"
final String model; // "Galaxy Tab S9 Ultra"
final String brand; // "samsung"
// ── Rendszer ──────────────────────────────────────────────────────
/// Felhasználó által adott eszköznév (pl. "Pista telefonja").
/// A Settings.Global.DEVICE_NAME értéke — ez az alapértelmezett label.
final String systemDeviceName;
final String osVersion; // "14"
final int sdkInt; // 34
final String securityPatch; // "2024-06-01"
// ── App ───────────────────────────────────────────────────────────
final String appVersion; // "1.0.0"
final String buildNumber; // "15"
const DeviceInfoModel({
required this.deviceId,
required this.appInstanceId,
required this.manufacturer,
required this.model,
required this.brand,
required this.systemDeviceName,
required this.osVersion,
required this.sdkInt,
required this.securityPatch,
required this.appVersion,
required this.buildNumber,
});
// ── Supabase regisztrációs map ────────────────────────────────────
Map<String, dynamic> toRegistrationMap({required String label}) => {
'device_id': deviceId,
'app_instance_id': appInstanceId,
'label': label,
'manufacturer': manufacturer,
'model': model,
'os_version': osVersion,
'sdk_int': sdkInt,
'security_patch': securityPatch,
'app_version': '$appVersion+$buildNumber',
'last_seen': DateTime.now().toIso8601String(),
};
@override
String toString() =>
'DeviceInfo($manufacturer $model, Android $osVersion, app $appVersion)';
}