From 51b7d8e4c9501b618fe1f23cf18bacbd7f07bf4a Mon Sep 17 00:00:00 2001 From: Simon Hartcher Date: Tue, 28 Jun 2022 10:53:13 +1000 Subject: [PATCH 1/6] docs(intercom): update config jsdoc --- .../analytics-plugin-intercom/src/browser.js | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/packages/analytics-plugin-intercom/src/browser.js b/packages/analytics-plugin-intercom/src/browser.js index 0ef32df2..66c01217 100644 --- a/packages/analytics-plugin-intercom/src/browser.js +++ b/packages/analytics-plugin-intercom/src/browser.js @@ -1,31 +1,33 @@ /* global analytics */ +/** + * @typedef {Object} IntercomPluginConfig + * @property {string} appId Your intercom app id + * @property {boolean=} disableAnonymousTraffic Disable loading intercom for anonymous visitors + * @property {string=} alignment Customize left or right position of messenger + * @property {string=} horizontalPadding Customize horizontal padding + * @property {string=} verticalPadding Customize vertical padding + * @property {string=} customLauncherSelector Css selector of the custom launcher see https://www.intercom.com/help/en/articles/2894-customize-the-intercom-messenger-technical for additional info + * @property {string=} userHash User hash used for identity verification + */ + +/** @type IntercomPluginConfig */ const config = { - /* Your intercom app id */ appId: null, disableAnonymousTraffic: false, - /* Customize left or right position of messenger */ alignment: undefined, - /* Customize horizontal padding */ horizontalPadding: undefined, - /* Customize vertical padding */ verticalPadding: undefined, - /* Css selector of the custom launcher */ customLauncherSelector: undefined, + userHash: undefined, } /** * intercom analytics plugin * @link https://getanalytics.io/plugins/intercom/ * @link https://developers.intercom.com/installing-intercom/docs/intercom-javascript - * @param {object} pluginConfig - Plugin settings - * @param {string} pluginConfig.appId - Your intercom app id - * @param {boolean} [pluginConfig.disableAnonymousTraffic] - Disable loading intercom for anonymous visitors - * @param {string} [pluginConfig.alignment] - Customize left or right position of messenger - * @param {number} [pluginConfig.horizontalPadding] - Customize horizontal padding - * @param {number} [pluginConfig.verticalPadding] - Customize vertical padding - * @param {string} [pluginConfig.customLauncherSelector] - Css selector of the custom launcher see https://www.intercom.com/help/en/articles/2894-customize-the-intercom-messenger-technical for additional info - * @return {object} Analytics plugin + * @param {IntercomPluginConfig} pluginConfig - Plugin settings + * @return {Object} Analytics plugin * @example * * intercomPlugin({ From c00a3a14343a561676a17e14b797fe0479a1d6bc Mon Sep 17 00:00:00 2001 From: Simon Hartcher Date: Tue, 28 Jun 2022 10:53:31 +1000 Subject: [PATCH 2/6] feat(intercom): add userHash support --- packages/analytics-plugin-intercom/src/browser.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/analytics-plugin-intercom/src/browser.js b/packages/analytics-plugin-intercom/src/browser.js index 66c01217..583c5a61 100644 --- a/packages/analytics-plugin-intercom/src/browser.js +++ b/packages/analytics-plugin-intercom/src/browser.js @@ -106,6 +106,7 @@ function intercomPlugin(pluginConfig = {}) { horizontalPadding, verticalPadding, customLauncherSelector, + userHash, } = config; if (!appId) { throw new Error("No intercom appId"); @@ -156,6 +157,7 @@ function intercomPlugin(pluginConfig = {}) { horizontal_padding: horizontalPadding, vertical_padding: verticalPadding, custom_launcher_selector: customLauncherSelector, + user_hash: userHash, }; }, /* Trigger intercom page view */ From 6d7a552f996eeadb2044d74625e920e9966fd439 Mon Sep 17 00:00:00 2001 From: Simon Hartcher Date: Tue, 28 Jun 2022 12:02:46 +1000 Subject: [PATCH 3/6] fix(types-util): fix types script --- packages/analytics-util-types/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/analytics-util-types/package.json b/packages/analytics-util-types/package.json index b4229f53..254af02e 100644 --- a/packages/analytics-util-types/package.json +++ b/packages/analytics-util-types/package.json @@ -16,12 +16,13 @@ "amdName": "utilTypes", "source": "src/index.js", "main": "dist/analytics-util-types.js", + "types": "dist/index.d.ts", "module": "dist/analytics-util-types.module.js", "unpkg": "dist/analytics-util-types.umd.js", "sideEffects": false, "scripts": { "test": "uvu tests -r esm -i setup", - "types": "tsc --noEmit false --emitDeclarationOnly true", + "types": "tsc --emitDeclarationOnly -d --allowJs --declarationDir dist/ src/index.js", "start": "npm run sync && concurrently 'npm:watch:*' 'npm:copy' 'npm:serve'", "serve": "servor dist index.html 8081 --reload --browse", "copy": "watchlist examples -- npm run sync", From 27b621fad2ddc8da543b94b54c1e0a436350bf9e Mon Sep 17 00:00:00 2001 From: Simon Hartcher Date: Tue, 28 Jun 2022 12:11:34 +1000 Subject: [PATCH 4/6] docs(intercom): refactored types generation Have set the default types to the browser types There is currently no way to do isomorphic types See https://github.com/Microsoft/TypeScript/issues/29128 --- packages/analytics-plugin-intercom/package.json | 5 ++++- packages/analytics-plugin-intercom/tsconfig.json | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 packages/analytics-plugin-intercom/tsconfig.json diff --git a/packages/analytics-plugin-intercom/package.json b/packages/analytics-plugin-intercom/package.json index b9b0735d..b0b0d8bf 100644 --- a/packages/analytics-plugin-intercom/package.json +++ b/packages/analytics-plugin-intercom/package.json @@ -27,9 +27,11 @@ "release:patch": "npm version patch && npm publish", "release:minor": "npm version minor && npm publish", "release:major": "npm version major && npm publish", - "es": "../../node_modules/.bin/babel-node ./testBabel.js" + "es": "../../node_modules/.bin/babel-node ./testBabel.js", + "types": "tsc" }, "main": "lib/analytics-plugin-intercom.cjs.js", + "types": "types/browser.d.ts", "globalName": "analyticsIntercom", "jsnext:main": "lib/analytics-plugin-intercom.es.js", "module": "lib/analytics-plugin-intercom.es.js", @@ -40,6 +42,7 @@ "files": [ "dist", "lib", + "types", "README.md" ], "homepage": "https://github.com/DavidWells/analytics#readme", diff --git a/packages/analytics-plugin-intercom/tsconfig.json b/packages/analytics-plugin-intercom/tsconfig.json new file mode 100644 index 00000000..5bb74db1 --- /dev/null +++ b/packages/analytics-plugin-intercom/tsconfig.json @@ -0,0 +1,12 @@ +{ + "$schema": "http://json.schemastore.org/tsconfig", + "compilerOptions": { + "emitDeclarationOnly": true, + "declaration": true, + "allowJs": true, + "declarationDir": "types/" + }, + "include": [ + "src/**/*.js" + ] +} From be9098de79454d1e2f5499461a82909992584b0e Mon Sep 17 00:00:00 2001 From: Simon Hartcher Date: Thu, 30 Jun 2022 10:16:38 +1000 Subject: [PATCH 5/6] fix(intercom): loaded now correctly indicates when the plugin is ready --- packages/analytics-plugin-intercom/src/browser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/analytics-plugin-intercom/src/browser.js b/packages/analytics-plugin-intercom/src/browser.js index 583c5a61..0e83e688 100644 --- a/packages/analytics-plugin-intercom/src/browser.js +++ b/packages/analytics-plugin-intercom/src/browser.js @@ -210,7 +210,7 @@ function intercomPlugin(pluginConfig = {}) { }, /* Check if intercom loaded */ loaded: () => { - return window.Intercom; + return window.Intercom && window.Intercom.booted; }, }; } From 1d96aa436507bc42fd75034dde5aa56c56fb4a7e Mon Sep 17 00:00:00 2001 From: Simon Hartcher Date: Thu, 30 Jun 2022 10:45:31 +1000 Subject: [PATCH 6/6] feat(intercom): add update method --- packages/analytics-plugin-intercom/src/browser.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/analytics-plugin-intercom/src/browser.js b/packages/analytics-plugin-intercom/src/browser.js index 0e83e688..4c8ffc24 100644 --- a/packages/analytics-plugin-intercom/src/browser.js +++ b/packages/analytics-plugin-intercom/src/browser.js @@ -83,6 +83,11 @@ function intercomPlugin(pluginConfig = {}) { if (typeof intercom === "undefined") return; intercom("onUnreadCountChange", callback); }, + update(config) { + const intercom = window.Intercom; + if (typeof intercom === "undefined") return; + intercom("update", config); + }, }, bootstrap: ({ config, instance }) => { /* Load intercom script after userId exists */