-
Notifications
You must be signed in to change notification settings - Fork 528
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat(core): introduce `getWidgetUiState` lifecycle hook (1/n) (#4454) This deprecates `getWidgetState` to `getWidgetUiState` to make the upcoming `getWidgetRenderState` less confusing. * feat(core): introduce `getWidgetRenderState` (2/n) (#4457) This introduces the widget lifecycle hook `getWidgetRenderState` and implements it for `connectSearchBox`. * feat(autocomplete): implement `getWidgetRenderState` (#4466) * feat(breadcrumb): implement `getWidgetRenderState` (#4467) * feat(clearRefinements): implement `getWidgetRenderState` (#4468) * feat(configure): implement `getWidgetRenderState` (#4469) * feat(currentRefinements): implement `getWidgetRenderState` (#4470) * fix(breadcrumb): add attribute to render state (#4472) * feat(hierarchicalMenu): implement `getWidgetRenderState` (#4471) * fix: provide both `getWidgetRenderState` and `getRenderState` in connectors (#4518) * WIP * remove temporary implementation * rename getWidgetRenderState to getRenderState * fix wrong parameter name * update panel * update comment * chore: remove panel-related code * fixing types WIP * fix type * do not cast the return of getWidgetRenderState * Revert "do not cast the return of getWidgetRenderState" This reverts commit 614bc53. * Revert "fix type" This reverts commit 54e31fc. * add TWidgetRenderState to connector * add generics to Widget for getWidgetRenderState * fix to allow nullish getWidgetRenderState when unknown * remove exclamation marks * remove the type for widgetParams (was experimental) * make getRenderState optional for widgets with default generics * update other connectors to follow new connector type * update types in tests * add comment * do not declare individual widget render state types * feat(hits): implement `getWidgetRenderState` (#4525) * feat(range): implement `getRenderState` and `getWidgetRenderState` (#4536) * fix(types): fix type errors (#4537) * fix type errors * fix type errors * simplify test util * update type of widgetParams * add lifecycle methods * fixing breadcrumb widget * revert the change (let's do this in later iteration) * add lifecycle methods for places widget * replace WidgetFactory with Factory * remove unnecessary part * rename options to params * Revert "remove unnecessary part" This reverts commit 5b2ed14. * Revert "replace WidgetFactory with Factory" This reverts commit ee125bd. * fix getRenderState of places and analytics * feat(poweredBy): getWidgetRenderState (#4551) * feat(poweredBy): getWidgetRenderState DX-206 * fix jsdoc * feat(menu): implement `getRenderState` and `getWidgetRenderState` (#4540) * feat(menu): implement `getRenderState` and `getWidgetRenderState` * Removed duplicated declaration of `jsHelper`, moved `cachedToggleShowMore` binding to `init` to avoid it happens more than once * feat(renderState): add connectNumericMenu (#4550) * feat(renderState): add connectNumericMenu DX-204 * Apply suggestions from code review Co-authored-by: Yannick Croissant <[email protected]> * Apply suggestions from code review Co-authored-by: Yannick Croissant <[email protected]> * POC: Add telemetry * Update src/widgets/configure-related-items/configure-related-items.ts Co-authored-by: Haroen Viaene <[email protected]> * Use full Schema * POC: Add telemetry 2 * Use middleware * move code a little * chore: fix type of middleware TODO: make sure this stays on rebase Co-authored-by: François Chalifour <[email protected]> Co-authored-by: Eunjae Lee <[email protected]> Co-authored-by: Yannick Croissant <[email protected]> Co-authored-by: Clément Vannicatte <[email protected]> Co-authored-by: Yannick Croissant <[email protected]>
- Loading branch information
1 parent
f57e9c5
commit 3c06678
Showing
34 changed files
with
421 additions
and
238 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
import { Widget, Middleware } from '../types'; | ||
import { resolveScopedResultsFromIndex } from '../widgets/index/index'; | ||
|
||
type TelemetryWidget = { | ||
type: string; | ||
params: string[]; | ||
officialWidget: boolean; | ||
}; | ||
|
||
const ALGOLIA_CRAWLER_USER_AGENT = /Algolia Crawler\/[0-9]+.[0-9]+.[0-9]+/; | ||
|
||
export const createTelemetryMiddleware = (): Middleware => { | ||
const isTelemetryEnabled = | ||
typeof window !== undefined && | ||
ALGOLIA_CRAWLER_USER_AGENT.test(window.navigator.userAgent); | ||
|
||
if (!isTelemetryEnabled) { | ||
return () => ({ | ||
onStateChange() {}, | ||
subscribe() {}, | ||
unsubscribe() {}, | ||
}); | ||
} | ||
|
||
const payload: { widgets: TelemetryWidget[] } = { | ||
widgets: [], | ||
}; | ||
|
||
const payloadContainer = document.createElement('meta'); | ||
const refNode = document.querySelector('head'); | ||
payloadContainer.name = 'instantsearch:widgets'; | ||
refNode!.appendChild(payloadContainer); | ||
|
||
return ({ instantSearchInstance }) => { | ||
return { | ||
onStateChange() {}, | ||
subscribe() { | ||
setTimeout(() => { | ||
const widgets: Array<Widget<{ | ||
renderState: any; | ||
}>> = instantSearchInstance.mainIndex.getWidgets(); | ||
|
||
const parent = instantSearchInstance.mainIndex; | ||
|
||
const initOptions = { | ||
instantSearchInstance, | ||
parent, | ||
results: parent.getResults()!, | ||
scopedResults: resolveScopedResultsFromIndex(parent), | ||
state: parent.getResults()!._state, | ||
helper: parent.getHelper()!, | ||
// @TODO: https://github.com/algolia/instantsearch.js/pull/4603 | ||
// createURL: parent.createURL, | ||
uiState: instantSearchInstance._initialUiState, | ||
renderState: instantSearchInstance.renderState, | ||
templatesConfig: instantSearchInstance.templatesConfig, | ||
searchMetadata: { | ||
isSearchStalled: instantSearchInstance._isSearchStalled, | ||
}, | ||
}; | ||
|
||
widgets.forEach(widget => { | ||
payload.widgets.push({ | ||
type: widget.$$type || 'custom.widget', | ||
params: widget.getWidgetRenderState | ||
? Object.keys( | ||
widget.getWidgetRenderState(initOptions).widgetParams | ||
) | ||
: [], | ||
officialWidget: Boolean(widget.$$officialWidget), | ||
}); | ||
}); | ||
|
||
payloadContainer.content = JSON.stringify(payload); | ||
}, 0); | ||
}, | ||
|
||
unsubscribe() { | ||
payloadContainer.parentNode!.removeChild(payloadContainer); | ||
}, | ||
}; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
export * from './createInsightsMiddleware'; | ||
export * from './createRouterMiddleware'; | ||
export * from './createTelemetryMiddleware'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.