| Index: chrome/browser/resources/md_bookmarks/bookmarks_store.js
|
| diff --git a/chrome/browser/resources/md_bookmarks/bookmarks_store.js b/chrome/browser/resources/md_bookmarks/bookmarks_store.js
|
| index 78fa60ac49bdeadb8b8101349f04b71a8532a2c8..077c6db535a2412f8e49c40e9861f914579a0300 100644
|
| --- a/chrome/browser/resources/md_bookmarks/bookmarks_store.js
|
| +++ b/chrome/browser/resources/md_bookmarks/bookmarks_store.js
|
| @@ -15,6 +15,8 @@ cr.define('bookmarks', function() {
|
| this.data_ = bookmarks.util.createEmptyState();
|
| /** @type {boolean} */
|
| this.initialized_ = false;
|
| + /** @type {!Array<!Action>} */
|
| + this.queuedActions_ = [];
|
| /** @type {!Array<!StoreObserver>} */
|
| this.observers_ = [];
|
| }
|
| @@ -25,6 +27,11 @@ cr.define('bookmarks', function() {
|
| */
|
| init: function(initialState) {
|
| this.data_ = initialState;
|
| +
|
| + this.queuedActions_.forEach(function(action) {
|
| + this.reduce_(action);
|
| + }.bind(this));
|
| +
|
| this.initialized_ = true;
|
| this.notifyObservers_(this.data_);
|
| },
|
| @@ -52,18 +59,29 @@ cr.define('bookmarks', function() {
|
|
|
| /**
|
| * Transition to a new UI state based on the supplied |action|, and notify
|
| - * observers of the change.
|
| + * observers of the change. If the Store has not yet been initialized, the
|
| + * action will be queued and performed upon initialization.
|
| * @param {Action} action
|
| */
|
| handleAction: function(action) {
|
| - if (!this.initialized_)
|
| + if (!this.initialized_) {
|
| + this.queuedActions_.push(action);
|
| return;
|
| + }
|
|
|
| - this.data_ = bookmarks.reduceAction(this.data_, action);
|
| + this.reduce_(action);
|
| this.notifyObservers_(this.data_);
|
| },
|
|
|
| /**
|
| + * @param {Action} action
|
| + * @private
|
| + */
|
| + reduce_: function(action) {
|
| + this.data_ = bookmarks.reduceAction(this.data_, action);
|
| + },
|
| +
|
| + /**
|
| * @param {!BookmarksPageState} state
|
| * @private
|
| */
|
|
|