OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * @fileoverview Module of functions which produce a new page state in response | 6 * @fileoverview Module of functions which produce a new page state in response |
7 * to an action. Reducers (in the same sense as Array.prototype.reduce) must be | 7 * to an action. Reducers (in the same sense as Array.prototype.reduce) must be |
8 * pure functions: they must not modify existing state objects, or make any API | 8 * pure functions: they must not modify existing state objects, or make any API |
9 * calls. | 9 * calls. |
10 */ | 10 */ |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 | 111 |
112 /** | 112 /** |
113 * @param {SearchState} search | 113 * @param {SearchState} search |
114 * @param {Action} action | 114 * @param {Action} action |
115 * @return {SearchState} | 115 * @return {SearchState} |
116 */ | 116 */ |
117 SearchState.startSearch = function(search, action) { | 117 SearchState.startSearch = function(search, action) { |
118 return { | 118 return { |
119 term: action.term, | 119 term: action.term, |
120 inProgress: true, | 120 inProgress: true, |
121 results: [], | 121 results: search.results, |
122 }; | 122 }; |
123 }; | 123 }; |
124 | 124 |
125 /** | 125 /** |
126 * @param {SearchState} search | 126 * @param {SearchState} search |
127 * @param {Action} action | 127 * @param {Action} action |
128 * @return {SearchState} | 128 * @return {SearchState} |
129 */ | 129 */ |
130 SearchState.finishSearch = function(search, action) { | 130 SearchState.finishSearch = function(search, action) { |
131 return /** @type {SearchState} */ (Object.assign({}, search, { | 131 return /** @type {SearchState} */ (Object.assign({}, search, { |
132 inProgress: false, | 132 inProgress: false, |
133 results: action.results, | 133 results: action.results, |
134 })); | 134 })); |
135 }; | 135 }; |
136 | 136 |
137 /** @return {SearchState} */ | 137 /** @return {SearchState} */ |
138 SearchState.clearSearch = function() { | 138 SearchState.clearSearch = function() { |
139 return { | 139 return { |
140 term: '', | 140 term: '', |
141 inProgress: false, | 141 inProgress: false, |
142 results: [], | 142 results: null, |
143 }; | 143 }; |
144 }; | 144 }; |
145 | 145 |
146 /** | 146 /** |
147 * @param {SearchState} search | 147 * @param {SearchState} search |
148 * @param {!Set<string>} deletedIds | 148 * @param {!Set<string>} deletedIds |
149 * @return {SearchState} | 149 * @return {SearchState} |
150 */ | 150 */ |
151 SearchState.removeDeletedResults = function(search, deletedIds) { | 151 SearchState.removeDeletedResults = function(search, deletedIds) { |
| 152 if (!search.results) |
| 153 return search; |
| 154 |
152 var newResults = []; | 155 var newResults = []; |
153 search.results.forEach(function(id) { | 156 search.results.forEach(function(id) { |
154 if (!deletedIds.has(id)) | 157 if (!deletedIds.has(id)) |
155 newResults.push(id); | 158 newResults.push(id); |
156 }); | 159 }); |
157 return /** @type {SearchState} */ (Object.assign({}, search, { | 160 return /** @type {SearchState} */ (Object.assign({}, search, { |
158 results: newResults, | 161 results: newResults, |
159 })); | 162 })); |
160 }; | 163 }; |
161 | 164 |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 return { | 479 return { |
477 reduceAction: reduceAction, | 480 reduceAction: reduceAction, |
478 ClosedFolderState: ClosedFolderState, | 481 ClosedFolderState: ClosedFolderState, |
479 NodeState: NodeState, | 482 NodeState: NodeState, |
480 PreferencesState: PreferencesState, | 483 PreferencesState: PreferencesState, |
481 SearchState: SearchState, | 484 SearchState: SearchState, |
482 SelectedFolderState: SelectedFolderState, | 485 SelectedFolderState: SelectedFolderState, |
483 SelectionState: SelectionState, | 486 SelectionState: SelectionState, |
484 }; | 487 }; |
485 }); | 488 }); |
OLD | NEW |