cache-reducer.js 1.99 KB
/*
 * ADOBE CONFIDENTIAL
 *
 * Copyright 2016 Adobe Systems Incorporated
 * All Rights Reserved.
 *
 * NOTICE:  All information contained herein is, and remains
 * the property of Adobe Systems Incorporated and its suppliers,
 * if any.  The intellectual and technical concepts contained
 * herein are proprietary to Adobe Systems Incorporated and its
 * suppliers and may be covered by U.S. and Foreign Patents,
 * patents in process, and are protected by trade secret or copyright law.
 * Dissemination of this information or reproduction of this material
 * is strictly forbidden unless prior written permission is obtained
 * from Adobe Systems Incorporated.
 */

define('screens/player/firmware/cache/impl/cache-reducer', [
    'underscore',
    'screens/player/firmware/cache/cache'
], function(_, Cache) {
    'use strict';

    function cacheReducer(cache, action) {
        switch (action.type) {
            case Cache.ACTIONS.RESET_FIRMWARE:
                return _.assign({}, cache, {clearing: 'firmware'});
            case Cache.ACTIONS.CLEAR_CHANNELS_DATA:
                return _.assign({}, cache, {clearing: 'channels'});
            case Cache.ACTIONS.CLEAR_APP_CACHE:
                return _.assign({}, cache, {clearing: 'app'});
            case Cache.ACTIONS.CLEAR_ALL:
                return _.assign({}, cache, {clearing: 'all'});
            case Cache.ACTIONS.CLEAR_DONE:
                var state = _.assign({}, cache);
                delete state.clearing;
                return state;
            default: return cache || {};
        }
    }

    return cacheReducer;
});

/* istanbul ignore next */
require([
    'screens/player/firmware/cache/impl/cache-reducer',
    'screens/player/shared/serviceadmin',
    'screens/player/store/store',
    'screens/player/firmware/cache/cache'
], function(reducer, ServiceAdmin, Store, Cache) {
    'use strict';

    ServiceAdmin.onServiceHighestRankedStart(Store.serviceName, function(store) {
        store.addReducer(reducer, Cache.NAMESPACE);
    });
});