From 2f98e0df3faca63cdbc0156e999a3ea2fc39fe46 Mon Sep 17 00:00:00 2001 From: Osei Fortune Date: Sat, 6 Aug 2022 12:32:39 -0400 Subject: [PATCH 1/3] fix(analytics): AnalyticsWithoutAdIdSupport --- .../hooks/before-checkForChanges.ts | 23 +++++++++++++++++++ packages/firebase-analytics/package.json | 9 +++++++- packages/firebase-analytics/postinstall.ts | 1 + packages/firebase-analytics/preuninstall.ts | 1 + 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 packages/firebase-analytics/hooks/before-checkForChanges.ts create mode 100644 packages/firebase-analytics/postinstall.ts create mode 100644 packages/firebase-analytics/preuninstall.ts diff --git a/packages/firebase-analytics/hooks/before-checkForChanges.ts b/packages/firebase-analytics/hooks/before-checkForChanges.ts new file mode 100644 index 00000000..a454de30 --- /dev/null +++ b/packages/firebase-analytics/hooks/before-checkForChanges.ts @@ -0,0 +1,23 @@ +const fs = require('fs'); +const path = require('path'); + +module.exports = function ($logger, $projectData, hookArgs) { + const platformName = ((hookArgs.prepareData && hookArgs.prepareData.platform) || (hookArgs.platformData && hookArgs.platformData.normalizedPlatformName) || '').toLowerCase(); + + if (platformName === 'ios') { + const rootPath = $projectData.projectDir; + + const Podfile = path.join(rootPath, 'platforms', 'ios', 'Podfile'); + const ResourcePodfile = $projectData.podfilePath; + + if (fs.existsSync(Podfile) && fs.existsSync(ResourcePodfile)) { + const podData = fs.readFileSync(Podfile, 'utf8') || ''; + const resourcePodData = fs.readFileSync(ResourcePodfile, 'utf8'); + + // set variable early in the Podfile + if (podData && resourcePodData && resourcePodData.indexOf('$NSFirebaseAnalyticsWithoutAdIdSupport=true') > -1) { + fs.writeFileSync(Podfile, '$NSFirebaseAnalyticsWithoutAdIdSupport=true \n' + podData); + } + } + } +}; diff --git a/packages/firebase-analytics/package.json b/packages/firebase-analytics/package.json index 7c8ed3b2..5f1feed5 100644 --- a/packages/firebase-analytics/package.json +++ b/packages/firebase-analytics/package.json @@ -8,7 +8,14 @@ "platforms": { "ios": "6.0.0", "android": "6.0.0" - } + }, + "hooks": [ + { + "type": "before-checkForChanges", + "script": "hooks/before-checkForChanges.js", + "inject": true + } + ] }, "repository": { "type": "git", diff --git a/packages/firebase-analytics/postinstall.ts b/packages/firebase-analytics/postinstall.ts new file mode 100644 index 00000000..7aafb4e4 --- /dev/null +++ b/packages/firebase-analytics/postinstall.ts @@ -0,0 +1 @@ +require('@nativescript/hook')(__dirname).postinstall(); diff --git a/packages/firebase-analytics/preuninstall.ts b/packages/firebase-analytics/preuninstall.ts new file mode 100644 index 00000000..3c292e1e --- /dev/null +++ b/packages/firebase-analytics/preuninstall.ts @@ -0,0 +1 @@ +require('@nativescript/hook')(__dirname).preuninstall(); From 37d5ae66ac26c650495257f171d01c6e280cfbfb Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Mon, 8 Aug 2022 11:02:31 -0700 Subject: [PATCH 2/3] feat(analytics): hook to handle AdId support --- .../hooks/before-checkForChanges.ts | 2 +- packages/firebase-analytics/hooks/index.ts | 2 ++ .../firebase-analytics/hooks/tsconfig.json | 18 ++++++++++++++++++ packages/firebase-analytics/package.json | 6 +++++- packages/firebase-analytics/project.json | 2 +- packages/firebase-analytics/tsconfig.json | 14 +++++++------- tsconfig.base.json | 4 ++-- 7 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 packages/firebase-analytics/hooks/index.ts create mode 100644 packages/firebase-analytics/hooks/tsconfig.json diff --git a/packages/firebase-analytics/hooks/before-checkForChanges.ts b/packages/firebase-analytics/hooks/before-checkForChanges.ts index a454de30..f3792fff 100644 --- a/packages/firebase-analytics/hooks/before-checkForChanges.ts +++ b/packages/firebase-analytics/hooks/before-checkForChanges.ts @@ -1,7 +1,7 @@ const fs = require('fs'); const path = require('path'); -module.exports = function ($logger, $projectData, hookArgs) { +export = function ($logger, $projectData, hookArgs) { const platformName = ((hookArgs.prepareData && hookArgs.prepareData.platform) || (hookArgs.platformData && hookArgs.platformData.normalizedPlatformName) || '').toLowerCase(); if (platformName === 'ios') { diff --git a/packages/firebase-analytics/hooks/index.ts b/packages/firebase-analytics/hooks/index.ts new file mode 100644 index 00000000..058bef2d --- /dev/null +++ b/packages/firebase-analytics/hooks/index.ts @@ -0,0 +1,2 @@ +import checkForChanges = require('./before-checkForChanges'); +export { checkForChanges }; diff --git a/packages/firebase-analytics/hooks/tsconfig.json b/packages/firebase-analytics/hooks/tsconfig.json new file mode 100644 index 00000000..3307f90c --- /dev/null +++ b/packages/firebase-analytics/hooks/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "outDir": "../../../dist/packages/firebase-analytics/hooks", + "rootDirs": [".", ".."], + "module": "commonjs", + "target": "es2015", + "moduleResolution": "node", + "declaration": false, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "noEmitHelpers": false, + "noEmitOnError": true, + "removeComments": true, + "skipLibCheck": true + }, + "include": ["../typings/**/*.d.ts"], + "files": ["index.ts"] +} diff --git a/packages/firebase-analytics/package.json b/packages/firebase-analytics/package.json index 5f1feed5..83bc4607 100644 --- a/packages/firebase-analytics/package.json +++ b/packages/firebase-analytics/package.json @@ -38,5 +38,9 @@ "license": "Apache-2.0", "homepage": "https://github.com/NativeScript/firebase", "readmeFilename": "README.md", - "bootstrapper": "@nativescript/plugin-seed" + "bootstrapper": "@nativescript/plugin-seed", + "scripts": { + "preuninstall": "node preuninstall", + "postinstall": "node postinstall" + } } diff --git a/packages/firebase-analytics/project.json b/packages/firebase-analytics/project.json index 1b330717..87d69eae 100644 --- a/packages/firebase-analytics/project.json +++ b/packages/firebase-analytics/project.json @@ -32,7 +32,7 @@ "build.all": { "executor": "@nrwl/workspace:run-commands", "options": { - "commands": ["node tools/scripts/build-finish.ts firebase-analytics"], + "commands": ["./node_modules/.bin/tsc -p packages/firebase-analytics/hooks/tsconfig.json", "node tools/scripts/build-finish.ts firebase-analytics"], "parallel": false }, "outputs": ["dist/packages/firebase-analytics"], diff --git a/packages/firebase-analytics/tsconfig.json b/packages/firebase-analytics/tsconfig.json index 4f0f989a..c13bbf74 100644 --- a/packages/firebase-analytics/tsconfig.json +++ b/packages/firebase-analytics/tsconfig.json @@ -1,9 +1,9 @@ { - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "rootDir": "." - }, - "exclude": ["**/*.spec.ts", "angular", "src-native"], - "include": ["**/*.ts", "references.d.ts"] + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "rootDir": "." + }, + "exclude": ["**/*.spec.ts", "angular", "src-native", "hooks"], + "include": ["**/*.ts", "references.d.ts"] } diff --git a/tsconfig.base.json b/tsconfig.base.json index db348b50..b98967bb 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -7,10 +7,10 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "noEmitHelpers": false, - "target": "es2015", + "target": "es2017", "module": "esnext", + "lib": ["es2019", "WebWorker", "dom"], "allowSyntheticDefaultImports": true, - "lib": ["es2017", "dom"], "skipLibCheck": true, "skipDefaultLibCheck": true, "baseUrl": ".", From 6e1b71d09089afd04efc89e2f2526e49b8957df5 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Mon, 8 Aug 2022 11:26:23 -0700 Subject: [PATCH 3/3] chore: adjust package to ensure hooks are included for analytics --- apps/demo-vue/package.json | 2 +- apps/demo/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/demo-vue/package.json b/apps/demo-vue/package.json index aad92a30..fce39dc6 100644 --- a/apps/demo-vue/package.json +++ b/apps/demo-vue/package.json @@ -4,7 +4,7 @@ "dependencies": { "@nativescript/core": "file:../../node_modules/@nativescript/core", "@nativescript/firebase-admob": "file:../../packages/firebase-admob", - "@nativescript/firebase-analytics": "file:../../packages/firebase-analytics", + "@nativescript/firebase-analytics": "file:../../dist/packages/firebase-analytics", "@nativescript/firebase-app-check": "file:../../packages/firebase-app-check", "@nativescript/firebase-auth": "file:../../packages/firebase-auth", "@nativescript/firebase-core": "file:../../packages/firebase-core", diff --git a/apps/demo/package.json b/apps/demo/package.json index 495f9dad..0cc50819 100644 --- a/apps/demo/package.json +++ b/apps/demo/package.json @@ -6,7 +6,7 @@ "dependencies": { "@nativescript/core": "file:../../node_modules/@nativescript/core", "@nativescript/firebase-admob": "file:../../packages/firebase-admob", - "@nativescript/firebase-analytics": "file:../../packages/firebase-analytics", + "@nativescript/firebase-analytics": "file:../../dist/packages/firebase-analytics", "@nativescript/firebase-app-check": "file:../../packages/firebase-app-check", "@nativescript/firebase-auth": "file:../../packages/firebase-auth", "@nativescript/firebase-core": "file:../../packages/firebase-core",