@benshi.ai/js-sdk
Version:
Benshi SDK
48 lines (38 loc) • 1.11 kB
text/typescript
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
}