UNPKG

@benshi.ai/js-sdk

Version:

Benshi SDK

48 lines (38 loc) 1.11 kB
import DeferredRunner from '../deferredRunner' import { v4 as uuidv4 } from 'uuid' import { SearchProperties } from "../../modules/Navigation/typings" const moduleName = 'Navigation' let deferredRunner: DeferredRunner let searchId const wrappedMethodNames = [ 'logMediaEvent', 'logPageEvent', 'logRateEvent', 'logTrackEvent', 'setCurrentBlock', 'setTitle' ] // expose each method as a wrapper that just calls the deferredRunner const wrappedMethods = wrappedMethodNames.reduce( (obj, current) => { obj[current] = (...args) => deferredRunner.execute(moduleName, current, args) return obj }, {}) function logSearchEvent(properties: SearchProperties, isNewSearch: boolean, sendNow = false) { if (isNewSearch) { searchId = `${uuidv4()}${Date.now()}` } deferredRunner.execute(moduleName, 'logSearchEvent', [properties, searchId, sendNow]); return searchId || '' } const init = (injectedDeferredRunner) => { deferredRunner = injectedDeferredRunner } export default { init, logSearchEvent, ...wrappedMethods }