deviceinfo-service.js 2.54 KB
/*
 * ADOBE CONFIDENTIAL
 *
 * Copyright 2017 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.
 */

/* globals Promise */
define('screens/player/firmware/deviceinfo/impl/deviceinfo-service', [
    'screens/player/shared/serviceadmin',
    'screens/player/firmware/deviceinfo/deviceinfo',
    'screens/player/firmware/deviceinfo/spi/deviceinfo',
    'screens/player/store/store',
    'module'
], function(ServiceAdmin, DeviceInfo, DeviceInfoSpi, Store, mod) {
    'use strict';

    /**
     * Defines the DeviceInfo Implementation
     *
     * @class DeviceInfoService
     * @implements {DeviceInfo}
     */
    return Object.create(DeviceInfo, {

        serviceId: {
            value: mod.id
        },

        activate: {
            value: function() {
                return new Promise(function(resolve) {
                    ServiceAdmin.onServiceHighestRankedStart(Store.serviceName, function() {
                       resolve();
                    });
                }).then(function() {
                    return new Promise(function(resolve) {
                        ServiceAdmin.onServiceHighestRankedStart(DeviceInfoSpi.serviceName, function() {
                            resolve();
                        });
                    });
                }).then(function() {
                    return ServiceAdmin.getService(DeviceInfoSpi.serviceName).get();
                })
                .then(function(deviceInfo) {
                    ServiceAdmin.getService(Store.serviceName).dispatch({
                        type: DeviceInfo.ACTIONS.UPDATE,
                        payload: deviceInfo
                    });
                });
            }
        },

        deactivate: {
            value: function() {
                return Promise.resolve();
            }
        }

    });

});

require([
    'screens/player/firmware/deviceinfo/impl/deviceinfo-service',
    'screens/player/shared/serviceadmin'
], function(Service, ServiceAdmin) {
    'use strict';
    ServiceAdmin.register(Service);
});