From 50f681d9816403bbbf35cff3a01c64202aff2701 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto <5731772+marandaneto@users.noreply.github.com> Date: Mon, 22 Jan 2024 17:17:14 +0100 Subject: [PATCH] fix: if react-native-device-info is available for the Web target, do not set unknown for all properties (#157) --- posthog-react-native/CHANGELOG.md | 4 ++++ posthog-react-native/src/native-deps.tsx | 24 ++++++++++++------- .../src/optional/OptionalExpoFileSystem.ts | 2 +- .../optional/OptionalReactNativeDeviceInfo.ts | 2 +- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/posthog-react-native/CHANGELOG.md b/posthog-react-native/CHANGELOG.md index b7d9e679..b613d9df 100644 --- a/posthog-react-native/CHANGELOG.md +++ b/posthog-react-native/CHANGELOG.md @@ -1,3 +1,7 @@ +## Next + +1. if `react-native-device-info` is available for the Web target, do not set `unknown` for all properties. + # 2.10.1 - 2024-01-15 1. The `tag_name` property of auto-captured events now uses the nearest `ph-label` from parent elements, if present. diff --git a/posthog-react-native/src/native-deps.tsx b/posthog-react-native/src/native-deps.tsx index 4707d944..fb6a707d 100644 --- a/posthog-react-native/src/native-deps.tsx +++ b/posthog-react-native/src/native-deps.tsx @@ -40,19 +40,27 @@ export const getAppProperties = (): PostHogCustomAppProperties => { } if (OptionalReactNativeDeviceInfo) { - properties.$app_build = OptionalReactNativeDeviceInfo.getBuildIdSync() - properties.$app_name = OptionalReactNativeDeviceInfo.getApplicationName() - properties.$app_namespace = OptionalReactNativeDeviceInfo.getBundleId() - properties.$app_version = OptionalReactNativeDeviceInfo.getVersion() - properties.$device_manufacturer = OptionalReactNativeDeviceInfo.getManufacturerSync() - properties.$device_name = OptionalReactNativeDeviceInfo.getDeviceNameSync() - properties.$os_name = OptionalReactNativeDeviceInfo.getSystemName() - properties.$os_version = OptionalReactNativeDeviceInfo.getSystemVersion() + properties.$app_build = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getBuildIdSync()) + properties.$app_name = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getApplicationName()) + properties.$app_namespace = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getBundleId()) + properties.$app_version = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getVersion()) + properties.$device_manufacturer = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getManufacturerSync()) + properties.$device_name = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getDeviceNameSync()) + properties.$os_name = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getSystemName()) + properties.$os_version = returnPropertyIfNotUnknown(OptionalReactNativeDeviceInfo.getSystemVersion()) } return properties } +// react-native-device-info returns 'unknown' if the property is not available (Web target) +const returnPropertyIfNotUnknown = (value: string | null): string | null => { + if (value !== 'unknown') { + return value + } + return null +} + export const buildOptimisiticAsyncStorage = (): PostHogCustomAsyncStorage => { if (OptionalExpoFileSystem) { const filesystem = OptionalExpoFileSystem diff --git a/posthog-react-native/src/optional/OptionalExpoFileSystem.ts b/posthog-react-native/src/optional/OptionalExpoFileSystem.ts index 760ce1f9..0139e235 100644 --- a/posthog-react-native/src/optional/OptionalExpoFileSystem.ts +++ b/posthog-react-native/src/optional/OptionalExpoFileSystem.ts @@ -3,5 +3,5 @@ import type ExpoFileSystem from 'expo-file-system' export let OptionalExpoFileSystem: typeof ExpoFileSystem | undefined = undefined try { - OptionalExpoFileSystem = require('expo-file-system') + OptionalExpoFileSystem = require('expo-file-system') // No Web support } catch (e) {} diff --git a/posthog-react-native/src/optional/OptionalReactNativeDeviceInfo.ts b/posthog-react-native/src/optional/OptionalReactNativeDeviceInfo.ts index e4d0f1d5..49f74e09 100644 --- a/posthog-react-native/src/optional/OptionalReactNativeDeviceInfo.ts +++ b/posthog-react-native/src/optional/OptionalReactNativeDeviceInfo.ts @@ -3,5 +3,5 @@ import type ReactNativeDeviceInfo from 'react-native-device-info' export let OptionalReactNativeDeviceInfo: typeof ReactNativeDeviceInfo | undefined = undefined try { - OptionalReactNativeDeviceInfo = require('react-native-device-info') + OptionalReactNativeDeviceInfo = require('react-native-device-info') // No Web support } catch (e) {}