maestrano/mno-enterprise

View on GitHub
frontend-admin/src/app/services/mnoe-observables/mnoe-observables.coffee

Summary

Maintainability
Test Coverage
@App.service 'MnoeObservables', () ->
  _self = @

  observersCallbacks = {}

  # Subscribe callback functions to be called if observable has been changed
  @registerCb = (name, cb) ->
    observersCallbacks[name] = [] if _.isEmpty(observersCallbacks[name])
    observersCallbacks[name].push(cb)

  # Call this when the observable has been changed
  @notifyObservers = (name, object) ->
    _.forEach observersCallbacks[name], (callback) ->
      callback(object)

  @unsubscribe = (name, cb) ->
    _.pull(observersCallbacks[name], cb)
    delete observersCallbacks[name] if _.isEmpty(observersCallbacks[name])

  return