// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

/*
 * Actions are a similar concept to routes and simply provide an indirection
 * through string names to register and call functions.
 *
 * Using actions to group and call larger, self-contained functionality like
 * page transitions allows the framework to provide undo/back support by using
 * the history API or localStorage.
 *
 * Action handlers that are registered for an action, normally are controllers
 * that glue application services and state with views and handle events.
 * @overview
 */

var registeredHandlers = {};

/*
 * Registers an action and makes it available to be called using only a name.
 * @param {string} name Action's identifier
 * @param {function} handler Callback handler to register for the action.
 * handler will be called with the arguments pass from the caller when action
 * is triggered.
 */
export function register(name, handler) {
  registeredHandlers[name] = handler;
}

/*
 * Calls an action's registered handler.
 * @param {string} name Action's identifier
 * @param {*} [...] args Arguments to be passed to the registered handler.
 * @return {*} Any result returned from the registered handler
 */
export function trigger(name, ...args) {
  var handler = registeredHandlers[name];
  if(!handler) {
    throw new Error('No handler registered for action: ' + name);
  }
  return handler(...args);
}
