| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| cr.define('app_management.ApiListener', function() { |
| let initialized = false; |
| |
| async function init() { |
| assert(!initialized); |
| |
| const {apps: initialApps} = |
| await app_management.BrowserProxy.getInstance().handler.getApps(); |
| const initialState = app_management.util.createInitialState(initialApps); |
| app_management.Store.getInstance().init(initialState); |
| |
| const callbackRouter = |
| app_management.BrowserProxy.getInstance().callbackRouter; |
| |
| callbackRouter.onAppAdded.addListener(onAppAdded); |
| callbackRouter.onAppChanged.addListener(onAppChanged); |
| callbackRouter.onAppRemoved.addListener(onAppRemoved); |
| |
| initialized = true; |
| } |
| |
| /** |
| * @param {cr.ui.Action} action |
| */ |
| function dispatch(action) { |
| app_management.Store.getInstance().dispatch(action); |
| } |
| |
| /** |
| * @param {App} app |
| */ |
| function onAppAdded(app) { |
| dispatch(app_management.actions.addApp(app)); |
| } |
| |
| /** |
| * @param {App} app |
| */ |
| function onAppChanged(app) { |
| dispatch(app_management.actions.changeApp(app)); |
| } |
| |
| /** |
| * @param {string} appId |
| */ |
| function onAppRemoved(appId) { |
| dispatch(app_management.actions.removeApp(appId)); |
| } |
| |
| init(); |
| }); |