From 9325913d4a70b3eae23262ef01d7bcc0ccbb03f8 Mon Sep 17 00:00:00 2001 From: Aymeric Giraudet Date: Thu, 11 Jan 2024 10:57:34 +0100 Subject: [PATCH 1/3] feat(insights): allow to pass init params --- .../createAlgoliaInsightsPlugin.test.ts | 22 +++++++++++++++++++ .../src/createAlgoliaInsightsPlugin.ts | 10 +++++++++ .../src/types/InsightsClient.ts | 3 ++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts b/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts index 079f49420..acd36848a 100644 --- a/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts +++ b/packages/autocomplete-plugin-algolia-insights/src/__tests__/createAlgoliaInsightsPlugin.test.ts @@ -228,6 +228,28 @@ describe('createAlgoliaInsightsPlugin', () => { ]); }); + test('does not call `init` if `insightsInitParams` not passed', () => { + const insightsClient = jest.fn(); + createAlgoliaInsightsPlugin({ + insightsClient, + }); + + expect(insightsClient).not.toHaveBeenCalled(); + }); + + test('initializes insights with `insightsInitParams` if passed', () => { + const insightsClient = jest.fn(); + createAlgoliaInsightsPlugin({ + insightsClient, + insightsInitParams: { userToken: 'user' }, + }); + + expect(insightsClient).toHaveBeenCalledWith('init', { + partial: true, + userToken: 'user', + }); + }); + describe('automatic pulling', () => { const consoleError = jest .spyOn(console, 'error') diff --git a/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts b/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts index 865f9b71b..fc0582aac 100644 --- a/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts +++ b/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts @@ -20,6 +20,7 @@ import { AlgoliaInsightsHit, AutocompleteInsightsApi, InsightsClient, + InsightsMethodMap, OnActiveParams, OnItemsChangeParams, OnSelectParams, @@ -57,6 +58,10 @@ export type CreateAlgoliaInsightsPluginParams = { * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-insightsclient */ insightsClient?: InsightsClient; + /** + * Insights parameters to forward to the Insights client’s init method. + */ + insightsInitParams?: Partial; /** * Hook to send an Insights event when the items change. * @@ -94,6 +99,7 @@ export function createAlgoliaInsightsPlugin( ): AutocompletePlugin { const { insightsClient: providedInsightsClient, + insightsInitParams, onItemsChange, onSelect: onSelectEvent, onActive: onActiveEvent, @@ -137,6 +143,10 @@ export function createAlgoliaInsightsPlugin( return {}; } + if (insightsInitParams) { + insightsClient('init', { partial: true, ...insightsInitParams }); + } + const insights = createSearchInsightsApi(insightsClient); const previousItems = createRef([]); diff --git a/packages/autocomplete-plugin-algolia-insights/src/types/InsightsClient.ts b/packages/autocomplete-plugin-algolia-insights/src/types/InsightsClient.ts index 70e56d315..58b6dcea8 100644 --- a/packages/autocomplete-plugin-algolia-insights/src/types/InsightsClient.ts +++ b/packages/autocomplete-plugin-algolia-insights/src/types/InsightsClient.ts @@ -1,5 +1,5 @@ import type { - InsightsMethodMap, + InsightsMethodMap as _InsightsMethodMap, InsightsClient as _InsightsClient, } from 'search-insights'; @@ -11,6 +11,7 @@ export type { OnUserTokenChange as InsightsOnUserTokenChange, } from 'search-insights'; +export type InsightsMethodMap = _InsightsMethodMap; export type InsightsClientMethod = keyof InsightsMethodMap; export type InsightsClientPayload = { From cac5cc19194381de953bbe9d8e7f0891ffa95098 Mon Sep 17 00:00:00 2001 From: Aymeric Giraudet Date: Thu, 11 Jan 2024 11:11:06 +0100 Subject: [PATCH 2/3] bundlesize --- bundlesize.config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bundlesize.config.json b/bundlesize.config.json index 645101608..5cc157758 100644 --- a/bundlesize.config.json +++ b/bundlesize.config.json @@ -6,7 +6,7 @@ }, { "path": "packages/autocomplete-js/dist/umd/index.production.js", - "maxSize": "21 kB" + "maxSize": "21.25 kB" }, { "path": "packages/autocomplete-preset-algolia/dist/umd/index.production.js", @@ -14,7 +14,7 @@ }, { "path": "packages/autocomplete-plugin-algolia-insights/dist/umd/index.production.js", - "maxSize": "3.25 kB" + "maxSize": "3.5 kB" }, { "path": "packages/autocomplete-plugin-redirect-url/dist/umd/index.production.js", From 84de95f3a2113bffe6aa0c750774202dc8232aeb Mon Sep 17 00:00:00 2001 From: Aymeric Giraudet Date: Thu, 11 Jan 2024 12:03:20 +0100 Subject: [PATCH 3/3] add link to param --- .../src/createAlgoliaInsightsPlugin.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts b/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts index fc0582aac..084b645e4 100644 --- a/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts +++ b/packages/autocomplete-plugin-algolia-insights/src/createAlgoliaInsightsPlugin.ts @@ -60,6 +60,8 @@ export type CreateAlgoliaInsightsPluginParams = { insightsClient?: InsightsClient; /** * Insights parameters to forward to the Insights client’s init method. + * + * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/createAlgoliaInsightsPlugin/#param-insightsinitparams */ insightsInitParams?: Partial; /**