1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-11-29 22:48:10 +02:00

Fixed folder selection and deletion issue

This commit is contained in:
Laurent Cozic
2017-10-29 16:22:53 +00:00
parent c9becb95aa
commit 57995b1818
4 changed files with 56 additions and 80 deletions

View File

@@ -39,6 +39,38 @@ function historyCanGoBackTo(route) {
return true;
}
function folderOrNoteDelete(state, action) {
let newState = Object.assign({}, state);
const idKey = action.type === 'FOLDER_DELETE' ? 'folderId' : 'noteId';
const listKey = action.type === 'FOLDER_DELETE' ? 'folders' : 'notes';
const selectedItemKey = action.type === 'FOLDER_DELETE' ? 'selectedFolderId' : 'selectedNoteId';
let previousIndex = 0;
let newItems = [];
const items = state[listKey];
for (let i = 0; i < items.length; i++) {
let f = items[i];
if (f.id == action[idKey]) {
previousIndex = i;
continue;
}
newItems.push(f);
}
newState = Object.assign({}, state);
newState[listKey] = newItems;
if (previousIndex >= newItems.length) {
previousIndex = newItems.length - 1;
}
const newIndex = previousIndex >= 0 ? newItems[previousIndex].id : null;
newState[selectedItemKey] = newIndex;
return newState;
}
function updateOneTagOrFolder(state, action) {
let newItems = action.type === 'TAGS_UPDATE_ONE' ? state.tags.splice(0) : state.folders.splice(0);
let item = action.type === 'TAGS_UPDATE_ONE' ? action.tag : action.folder;
@@ -87,7 +119,6 @@ const reducer = (state = defaultState, action) => {
try {
switch (action.type) {
case 'NAV_BACK':
if (!navHistory.length) break;
@@ -246,25 +277,7 @@ const reducer = (state = defaultState, action) => {
case 'NOTES_DELETE':
var previousIndex = 0;
var newNotes = [];
for (let i = 0; i < state.notes.length; i++) {
let f = state.notes[i];
if (f.id == action.noteId) {
previousIndex = i;
continue;
}
newNotes.push(f);
}
newState = Object.assign({}, state);
newState.notes = newNotes;
if (previousIndex >= newNotes.length) {
previousIndex = newNotes.length - 1;
}
newState.selectedNoteId = previousIndex >= 0 ? newNotes[previousIndex].id : null;
newState = folderOrNoteDelete(state, action);
break;
case 'FOLDERS_UPDATE_ALL':
@@ -293,55 +306,16 @@ const reducer = (state = defaultState, action) => {
case 'TAGS_UPDATE_ONE':
newState = updateOneTagOrFolder(state, action);
// var newTags = state.tags.splice(0);
// var found = false;
// for (let i = 0; i < newTags.length; i++) {
// let n = newTags[i];
// if (n.id == action.tag.id) {
// newTags[i] = Object.assign(newTags[i], action.tag);
// found = true;
// break;
// }
// }
// if (!found) newTags.push(action.tag);
// newState = Object.assign({}, state);
// newState.tags = newTags;
break;
case 'FOLDERS_UPDATE_ONE':
newState = updateOneTagOrFolder(state, action);
// var newFolders = state.folders.splice(0);
// var found = false;
// for (let i = 0; i < newFolders.length; i++) {
// let n = newFolders[i];
// if (n.id == action.folder.id) {
// newFolders[i] = Object.assign(newFolders[i], action.folder);
// found = true;
// break;
// }
// }
// if (!found) newFolders.push(action.folder);
// newState = Object.assign({}, state);
// newState.folders = newFolders;
break;
case 'FOLDER_DELETE':
var newFolders = [];
for (let i = 0; i < state.folders.length; i++) {
let f = state.folders[i];
if (f.id == action.folderId) continue;
newFolders.push(f);
}
newState = Object.assign({}, state);
newState.folders = newFolders;
newState = folderOrNoteDelete(state, action);
break;
case 'SIDE_MENU_TOGGLE':