From c4a8ef779033feb07f1821bd7527c4ffa10baff6 Mon Sep 17 00:00:00 2001 From: Hein Rutjes Date: Fri, 10 Apr 2020 16:34:06 +0200 Subject: [PATCH] [firebase-analytics] Fix `setAnalyticsCollectionEnabled` --- packages/expo-firebase-analytics/CHANGELOG.md | 1 + packages/expo-firebase-analytics/build/ExpoFirebaseAnalytics.js | 2 +- .../expo-firebase-analytics/build/ExpoFirebaseAnalytics.js.map | 2 +- packages/expo-firebase-analytics/src/ExpoFirebaseAnalytics.ts | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/expo-firebase-analytics/CHANGELOG.md b/packages/expo-firebase-analytics/CHANGELOG.md index 6cfd778faca6d..d49100183e3dc 100644 --- a/packages/expo-firebase-analytics/CHANGELOG.md +++ b/packages/expo-firebase-analytics/CHANGELOG.md @@ -9,3 +9,4 @@ ### 🐛 Bug fixes - Fix `expo-firebase-analytics` not recording events on the Expo client running on certain Android devices. ([#7192](https://github.com/expo/expo/pull/7679) by [@IjzerenHein](https://github.com/IjzerenHein)) +- Fix `setAnalyticsCollectionEnabled` throwing an error. diff --git a/packages/expo-firebase-analytics/build/ExpoFirebaseAnalytics.js b/packages/expo-firebase-analytics/build/ExpoFirebaseAnalytics.js index 5459c6e560143..7c6d9ffe9e502 100644 --- a/packages/expo-firebase-analytics/build/ExpoFirebaseAnalytics.js +++ b/packages/expo-firebase-analytics/build/ExpoFirebaseAnalytics.js @@ -61,7 +61,7 @@ export default { return callAnalyticsModule('logEvent', name, properties); }, async setAnalyticsCollectionEnabled(isEnabled) { - return callAnalyticsModule('setAnalyticsEnabled', isEnabled); + return callAnalyticsModule('setAnalyticsCollectionEnabled', isEnabled); }, async setCurrentScreen(screenName, screenClassOverride) { return callAnalyticsModule('setCurrentScreen', screenName, screenClassOverride); diff --git a/packages/expo-firebase-analytics/build/ExpoFirebaseAnalytics.js.map b/packages/expo-firebase-analytics/build/ExpoFirebaseAnalytics.js.map index 36cdb56e78984..2bae76cb7b7f9 100644 --- a/packages/expo-firebase-analytics/build/ExpoFirebaseAnalytics.js.map +++ b/packages/expo-firebase-analytics/build/ExpoFirebaseAnalytics.js.map @@ -1 +1 @@ -{"version":3,"file":"ExpoFirebaseAnalytics.js","sourceRoot":"","sources":["../src/ExpoFirebaseAnalytics.ts"],"names":[],"mappings":"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","sourcesContent":["import { NativeModulesProxy, UnavailabilityError, CodedError } from '@unimodules/core';\nimport Constants from 'expo-constants';\nimport { DEFAULT_APP_NAME, DEFAULT_APP_OPTIONS, DEFAULT_WEB_APP_OPTIONS } from 'expo-firebase-core';\nimport { Platform } from 'react-native';\n\nimport FirebaseAnalyticsJS from './FirebaseAnalyticsJS';\nconst { ExpoFirebaseAnalytics } = NativeModulesProxy;\n\nif (!ExpoFirebaseAnalytics) {\n console.warn(\n \"No native ExpoFirebaseAnalytics module found, are you sure the expo-firebase-analytics's module is linked properly?\"\n );\n}\n\nlet pureJSAnalyticsTracker: FirebaseAnalyticsJS | void;\nlet isUnavailabilityLoggingEnabled = true;\nlet isUnavailabilityWarningLogged = false;\n\nfunction callAnalyticsModule(funcName: string, ...args) {\n if (!ExpoFirebaseAnalytics[funcName]) {\n throw new UnavailabilityError('expo-firebase-analytics', funcName);\n }\n if (!DEFAULT_APP_OPTIONS) {\n throw new CodedError(\n 'ERR_FIREBASE_NOTCONFIGURED',\n `Firebase is not configured. Ensure that you have configured '${Platform.select({\n ios: 'GoogleService-Info.plist',\n android: 'google-services.json',\n })}' correctly.`\n );\n }\n\n // Analytics is only available for the [DEFAULT] app. On the Expo client\n // a sandboxed app is returned which does not support analytics.\n // In that case we show a warning and log the analytics events to the console.\n // The user can disable these by calling `setUnavailabilityLogging(false)`.\n if (DEFAULT_APP_NAME !== '[DEFAULT]') {\n if (DEFAULT_WEB_APP_OPTIONS && !pureJSAnalyticsTracker) {\n pureJSAnalyticsTracker = new FirebaseAnalyticsJS(DEFAULT_WEB_APP_OPTIONS, {\n clientId: Constants.sessionId,\n strictNativeEmulation: true,\n appName: Constants.manifest?.name || 'Unnamed Expo project',\n appVersion: Constants.nativeAppVersion || undefined,\n headers: {\n // Google Analaytics seems to ignore certain user-agents. (e.g. \"okhttp/3.12.1\")\n // Set a user-agent that clearly identifies the Expo client.\n 'user-agent': `Expo/${Constants.nativeAppVersion}`,\n },\n });\n }\n if (pureJSAnalyticsTracker) {\n return pureJSAnalyticsTracker[funcName].call(pureJSAnalyticsTracker, ...args);\n }\n if (isUnavailabilityLoggingEnabled) {\n if (!isUnavailabilityWarningLogged) {\n console.warn(\n `Firebase Analytics is not available in the Expo client. See \"https://docs.expo.io/versions/latest/sdk/firebase-analytics\" on more information on setting up Firebase Analytics with the standard Expo client.`\n );\n isUnavailabilityWarningLogged = true;\n }\n console.info(`ExpoFirebaseAnalytics.${funcName}: ${JSON.stringify(args)}`);\n }\n return;\n }\n\n // Make the call\n return ExpoFirebaseAnalytics[funcName].call(ExpoFirebaseAnalytics, ...args);\n}\n\nexport default {\n get name(): string {\n return 'ExpoFirebaseAnalytics';\n },\n async logEvent(name: string, properties?: { [key: string]: any }): Promise {\n return callAnalyticsModule('logEvent', name, properties);\n },\n async setAnalyticsCollectionEnabled(isEnabled: boolean): Promise {\n return callAnalyticsModule('setAnalyticsEnabled', isEnabled);\n },\n async setCurrentScreen(screenName?: string, screenClassOverride?: string): Promise {\n return callAnalyticsModule('setCurrentScreen', screenName, screenClassOverride);\n },\n async setSessionTimeoutDuration(sessionTimeoutInterval: number): Promise {\n return callAnalyticsModule('setSessionTimeoutDuration', sessionTimeoutInterval);\n },\n async setUserId(userId: string | null): Promise {\n return callAnalyticsModule('setUserId', userId);\n },\n async setUserProperties(properties: { [key: string]: any }): Promise {\n return callAnalyticsModule('setUserProperties', properties);\n },\n async resetAnalyticsData(): Promise {\n return callAnalyticsModule('resetAnalyticsData');\n },\n setUnavailabilityLogging(isEnabled: boolean): void {\n isUnavailabilityLoggingEnabled = isEnabled;\n },\n};\n"]} \ No newline at end of file +{"version":3,"file":"ExpoFirebaseAnalytics.js","sourceRoot":"","sources":["../src/ExpoFirebaseAnalytics.ts"],"names":[],"mappings":"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","sourcesContent":["import { NativeModulesProxy, UnavailabilityError, CodedError } from '@unimodules/core';\nimport Constants from 'expo-constants';\nimport { DEFAULT_APP_NAME, DEFAULT_APP_OPTIONS, DEFAULT_WEB_APP_OPTIONS } from 'expo-firebase-core';\nimport { Platform } from 'react-native';\n\nimport FirebaseAnalyticsJS from './FirebaseAnalyticsJS';\nconst { ExpoFirebaseAnalytics } = NativeModulesProxy;\n\nif (!ExpoFirebaseAnalytics) {\n console.warn(\n \"No native ExpoFirebaseAnalytics module found, are you sure the expo-firebase-analytics's module is linked properly?\"\n );\n}\n\nlet pureJSAnalyticsTracker: FirebaseAnalyticsJS | void;\nlet isUnavailabilityLoggingEnabled = true;\nlet isUnavailabilityWarningLogged = false;\n\nfunction callAnalyticsModule(funcName: string, ...args) {\n if (!ExpoFirebaseAnalytics[funcName]) {\n throw new UnavailabilityError('expo-firebase-analytics', funcName);\n }\n if (!DEFAULT_APP_OPTIONS) {\n throw new CodedError(\n 'ERR_FIREBASE_NOTCONFIGURED',\n `Firebase is not configured. Ensure that you have configured '${Platform.select({\n ios: 'GoogleService-Info.plist',\n android: 'google-services.json',\n })}' correctly.`\n );\n }\n\n // Analytics is only available for the [DEFAULT] app. On the Expo client\n // a sandboxed app is returned which does not support analytics.\n // In that case we show a warning and log the analytics events to the console.\n // The user can disable these by calling `setUnavailabilityLogging(false)`.\n if (DEFAULT_APP_NAME !== '[DEFAULT]') {\n if (DEFAULT_WEB_APP_OPTIONS && !pureJSAnalyticsTracker) {\n pureJSAnalyticsTracker = new FirebaseAnalyticsJS(DEFAULT_WEB_APP_OPTIONS, {\n clientId: Constants.sessionId,\n strictNativeEmulation: true,\n appName: Constants.manifest?.name || 'Unnamed Expo project',\n appVersion: Constants.nativeAppVersion || undefined,\n headers: {\n // Google Analaytics seems to ignore certain user-agents. (e.g. \"okhttp/3.12.1\")\n // Set a user-agent that clearly identifies the Expo client.\n 'user-agent': `Expo/${Constants.nativeAppVersion}`,\n },\n });\n }\n if (pureJSAnalyticsTracker) {\n return pureJSAnalyticsTracker[funcName].call(pureJSAnalyticsTracker, ...args);\n }\n if (isUnavailabilityLoggingEnabled) {\n if (!isUnavailabilityWarningLogged) {\n console.warn(\n `Firebase Analytics is not available in the Expo client. See \"https://docs.expo.io/versions/latest/sdk/firebase-analytics\" on more information on setting up Firebase Analytics with the standard Expo client.`\n );\n isUnavailabilityWarningLogged = true;\n }\n console.info(`ExpoFirebaseAnalytics.${funcName}: ${JSON.stringify(args)}`);\n }\n return;\n }\n\n // Make the call\n return ExpoFirebaseAnalytics[funcName].call(ExpoFirebaseAnalytics, ...args);\n}\n\nexport default {\n get name(): string {\n return 'ExpoFirebaseAnalytics';\n },\n async logEvent(name: string, properties?: { [key: string]: any }): Promise {\n return callAnalyticsModule('logEvent', name, properties);\n },\n async setAnalyticsCollectionEnabled(isEnabled: boolean): Promise {\n return callAnalyticsModule('setAnalyticsCollectionEnabled', isEnabled);\n },\n async setCurrentScreen(screenName?: string, screenClassOverride?: string): Promise {\n return callAnalyticsModule('setCurrentScreen', screenName, screenClassOverride);\n },\n async setSessionTimeoutDuration(sessionTimeoutInterval: number): Promise {\n return callAnalyticsModule('setSessionTimeoutDuration', sessionTimeoutInterval);\n },\n async setUserId(userId: string | null): Promise {\n return callAnalyticsModule('setUserId', userId);\n },\n async setUserProperties(properties: { [key: string]: any }): Promise {\n return callAnalyticsModule('setUserProperties', properties);\n },\n async resetAnalyticsData(): Promise {\n return callAnalyticsModule('resetAnalyticsData');\n },\n setUnavailabilityLogging(isEnabled: boolean): void {\n isUnavailabilityLoggingEnabled = isEnabled;\n },\n};\n"]} \ No newline at end of file diff --git a/packages/expo-firebase-analytics/src/ExpoFirebaseAnalytics.ts b/packages/expo-firebase-analytics/src/ExpoFirebaseAnalytics.ts index e229e68f231c2..dd279e3a862ba 100644 --- a/packages/expo-firebase-analytics/src/ExpoFirebaseAnalytics.ts +++ b/packages/expo-firebase-analytics/src/ExpoFirebaseAnalytics.ts @@ -75,7 +75,7 @@ export default { return callAnalyticsModule('logEvent', name, properties); }, async setAnalyticsCollectionEnabled(isEnabled: boolean): Promise { - return callAnalyticsModule('setAnalyticsEnabled', isEnabled); + return callAnalyticsModule('setAnalyticsCollectionEnabled', isEnabled); }, async setCurrentScreen(screenName?: string, screenClassOverride?: string): Promise { return callAnalyticsModule('setCurrentScreen', screenName, screenClassOverride);