import DeferredRunner from '../deferredRunner'
const moduleName = 'Navigation'
let deferredRunner: DeferredRunner

const wrappedMethodNames = [
    'logIngestEvent',
    'logCatalogEvent',
    '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
    },
    {})

const init = (injectedDeferredRunner) => {
    deferredRunner = injectedDeferredRunner
}

export default {
    init,
    ...wrappedMethods
}
