Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(265)

Side by Side Diff: chrome/browser/resources/md_bookmarks/reducers.js

Issue 2946883002: MD Bookmarks: Deselect items when they are moved to a new folder (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 items: new Set(), 48 items: new Set(),
49 anchor: null, 49 anchor: null,
50 }; 50 };
51 }; 51 };
52 52
53 /** 53 /**
54 * @param {SelectionState} selectionState 54 * @param {SelectionState} selectionState
55 * @param {!Set<string>} deleted 55 * @param {!Set<string>} deleted
56 * @return SelectionState 56 * @return SelectionState
57 */ 57 */
58 SelectionState.deselectDeletedItems = function(selectionState, deleted) { 58 SelectionState.deselectItems = function(selectionState, deleted) {
59 return /** @type {SelectionState} */ Object.assign({}, selectionState, { 59 return /** @type {SelectionState} */ Object.assign({}, selectionState, {
60 items: bookmarks.util.removeIdsFromSet(selectionState.items, deleted), 60 items: bookmarks.util.removeIdsFromSet(selectionState.items, deleted),
61 anchor: !selectionState.anchor || deleted.has(selectionState.anchor) ? 61 anchor: !selectionState.anchor || deleted.has(selectionState.anchor) ?
62 null : 62 null :
63 selectionState.anchor, 63 selectionState.anchor,
64 }); 64 });
65 }; 65 };
66 66
67 /** 67 /**
68 * @param {SelectionState} selectionState 68 * @param {SelectionState} selectionState
(...skipping 14 matching lines...) Expand all
83 SelectionState.updateSelection = function(selection, action) { 83 SelectionState.updateSelection = function(selection, action) {
84 switch (action.name) { 84 switch (action.name) {
85 case 'clear-search': 85 case 'clear-search':
86 case 'finish-search': 86 case 'finish-search':
87 case 'select-folder': 87 case 'select-folder':
88 case 'deselect-items': 88 case 'deselect-items':
89 return SelectionState.deselectAll(selection); 89 return SelectionState.deselectAll(selection);
90 case 'select-items': 90 case 'select-items':
91 return SelectionState.selectItems(selection, action); 91 return SelectionState.selectItems(selection, action);
92 case 'remove-bookmark': 92 case 'remove-bookmark':
93 return SelectionState.deselectDeletedItems( 93 return SelectionState.deselectItems(selection, action.descendants);
94 selection, action.descendants); 94 case 'move-bookmark':
95 // Deselect items when they are moved to another folder, since they will
96 // no longer be visible on screen (for simplicity, ignores items visible
97 // in search results).
98 if (action.parentId != action.oldParentId &&
99 selection.items.has(action.id)) {
100 return SelectionState.deselectItems(selection, new Set([action.id]));
101 }
102 return selection;
95 case 'update-anchor': 103 case 'update-anchor':
96 return SelectionState.updateAnchor(selection, action); 104 return SelectionState.updateAnchor(selection, action);
97 default: 105 default:
98 return selection; 106 return selection;
99 } 107 }
100 }; 108 };
101 109
102 var SearchState = {}; 110 var SearchState = {};
103 111
104 /** 112 /**
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 return { 476 return {
469 reduceAction: reduceAction, 477 reduceAction: reduceAction,
470 ClosedFolderState: ClosedFolderState, 478 ClosedFolderState: ClosedFolderState,
471 NodeState: NodeState, 479 NodeState: NodeState,
472 PreferencesState: PreferencesState, 480 PreferencesState: PreferencesState,
473 SearchState: SearchState, 481 SearchState: SearchState,
474 SelectedFolderState: SelectedFolderState, 482 SelectedFolderState: SelectedFolderState,
475 SelectionState: SelectionState, 483 SelectionState: SelectionState,
476 }; 484 };
477 }); 485 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698