From 8f3675bfd0ad0a26d17657baa41115f150db5d84 Mon Sep 17 00:00:00 2001 From: Krushna Kanta Rout <129386740+krushnarout@users.noreply.github.com> Date: Mon, 19 Jan 2026 09:08:15 +0530 Subject: [PATCH 1/2] track firmware version on disconnect --- app/lib/providers/device_provider.dart | 7 ++++++- app/lib/utils/analytics/mixpanel.dart | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/lib/providers/device_provider.dart b/app/lib/providers/device_provider.dart index da17afcc12..1db19d664d 100644 --- a/app/lib/providers/device_provider.dart +++ b/app/lib/providers/device_provider.dart @@ -280,6 +280,11 @@ class DeviceProvider extends ChangeNotifier implements IDeviceServiceSubsciption void onDeviceDisconnected() async { Logger.debug('onDisconnected inside: $connectedDevice'); + + final String trackFirmware = connectedDevice?.firmwareRevision ?? + pairedDevice?.firmwareRevision ?? + SharedPreferencesUtil().btDevice.firmwareRevision; + _havingNewFirmware = false; setConnectedDevice(null); setisDeviceStorageSupport(); @@ -300,7 +305,7 @@ class DeviceProvider extends ChangeNotifier implements IDeviceServiceSubsciption body: 'Please reconnect to continue using your Omi.', ); }); - MixpanelManager().deviceDisconnected(); + MixpanelManager().deviceDisconnected(firmwareRevision: trackFirmware); // Retired 1s to prevent the race condition made by standby power of ble device Future.delayed(const Duration(seconds: 1), () { diff --git a/app/lib/utils/analytics/mixpanel.dart b/app/lib/utils/analytics/mixpanel.dart index a9b54add36..bb0fc575c0 100644 --- a/app/lib/utils/analytics/mixpanel.dart +++ b/app/lib/utils/analytics/mixpanel.dart @@ -252,7 +252,9 @@ class MixpanelManager { ..._preferences.btDevice.toJson(), }); - void deviceDisconnected() => track('Device Disconnected'); + void deviceDisconnected({String? firmwareRevision}) => track('Device Disconnected', properties: { + if (firmwareRevision != null) 'firmware_revision': firmwareRevision, + }); void memoriesPageCategoryOpened(MemoryCategory category) => track('Fact Page Category Opened', properties: {'category': category.toString().split('.').last}); From 63b1abbd88f75636fad33835ad7054a115f63b12 Mon Sep 17 00:00:00 2001 From: Krushna Kanta Rout <129386740+krushnarout@users.noreply.github.com> Date: Mon, 19 Jan 2026 09:20:13 +0530 Subject: [PATCH 2/2] Update app/lib/providers/device_provider.dart Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- app/lib/providers/device_provider.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/lib/providers/device_provider.dart b/app/lib/providers/device_provider.dart index 1db19d664d..946200cd3f 100644 --- a/app/lib/providers/device_provider.dart +++ b/app/lib/providers/device_provider.dart @@ -281,9 +281,7 @@ class DeviceProvider extends ChangeNotifier implements IDeviceServiceSubsciption void onDeviceDisconnected() async { Logger.debug('onDisconnected inside: $connectedDevice'); - final String trackFirmware = connectedDevice?.firmwareRevision ?? - pairedDevice?.firmwareRevision ?? - SharedPreferencesUtil().btDevice.firmwareRevision; + final String trackFirmware = [connectedDevice?.firmwareRevision, pairedDevice?.firmwareRevision, SharedPreferencesUtil().btDevice.firmwareRevision].firstWhere((v) => v != null && v.isNotEmpty && v != 'Unknown', orElse: () => 'Unknown'); _havingNewFirmware = false; setConnectedDevice(null);