diff --git a/lib/services/profile_device_key_resolver.dart b/lib/services/profile_device_key_resolver.dart index 472fe8b..b058ac5 100644 --- a/lib/services/profile_device_key_resolver.dart +++ b/lib/services/profile_device_key_resolver.dart @@ -5,25 +5,17 @@ class ProfileDeviceKeyResolver { required DeviceInfo deviceInfo, required ConnectionMode connectionMode, }) { + // Always prefer the public key — it's the only truly stable identifier. + // Don't fall back to deviceId to avoid creating duplicate profiles when + // publicKey arrives late (after initial connection but before DeviceInfo). final publicKey = deviceInfo.publicKey; - if (publicKey != null && publicKey.isNotEmpty) { - final hex = publicKey - .map((byte) => byte.toRadixString(16).padLeft(2, '0')) - .join(); - if (hex.isNotEmpty) { - return 'pk:$hex'; - } + if (publicKey == null || publicKey.isEmpty) { + return null; // Wait until publicKey is available } - final deviceId = deviceInfo.deviceId?.trim(); - if (deviceId == null || deviceId.isEmpty) { - return null; - } - - if (connectionMode == ConnectionMode.usb && deviceId == 'usb') { - return null; - } - - return 'id:$deviceId'; + final hex = publicKey + .map((byte) => byte.toRadixString(16).padLeft(2, '0')) + .join(); + return hex.isNotEmpty ? 'pk:$hex' : null; } }