linagora/openpaas-esn

View on GitHub
frontend/js/modules/user-notification/services/user-notification-counter.service.js

Summary

Maintainability
A
1 hr
Test Coverage
(function() {
  'use strict';

  angular.module('esn.user-notification')
    .factory('esnUserNotificationCounter', esnUserNotificationCounter);

  function esnUserNotificationCounter(
    _,
    $q,
    esnUserNotificationProviders,
    CounterFactory,
    ESN_USER_NOTIFICATION_UNREAD_REFRESH_TIMER
  ) {
    return new CounterFactory.newCounter(
      0,
      ESN_USER_NOTIFICATION_UNREAD_REFRESH_TIMER,
      _getUnreadCount
    );

    function _getUnreadCount() {
      var notificationProviders = _.values(esnUserNotificationProviders.getAll());
      var getUnreadCountPromises = notificationProviders.map(function(provider) {
        return provider.getUnreadCount();
      });

      return $q.all(getUnreadCountPromises).then(function(counts) {
        return counts.reduce(function(totalCount, count) {
          totalCount += count;

          return totalCount;
        }, 0);
      });
    }
  }
})();