mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 01:36:22 +00:00
UPDATE_FOLDER & DELETE_FOLDER
fix store bug when creating note
This commit is contained in:
@@ -58,7 +58,7 @@ class MutableSet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
forEach (...args) {
|
forEach (...args) {
|
||||||
return this._map.forEach(...args)
|
return this._set.forEach(...args)
|
||||||
}
|
}
|
||||||
|
|
||||||
[Symbol.iterator] () {
|
[Symbol.iterator] () {
|
||||||
|
|||||||
@@ -178,8 +178,11 @@ class NoteList extends React.Component {
|
|||||||
|
|
||||||
let folderNoteKeyList = data.folderNoteMap
|
let folderNoteKeyList = data.folderNoteMap
|
||||||
.get(storage.key + '-' + folder.key)
|
.get(storage.key + '-' + folder.key)
|
||||||
return folderNoteKeyList
|
|
||||||
.map((uniqueKey) => data.noteMap.get(uniqueKey))
|
return folderNoteKeyList != null
|
||||||
|
? folderNoteKeyList
|
||||||
|
.map((uniqueKey) => data.noteMap.get(uniqueKey))
|
||||||
|
: []
|
||||||
}
|
}
|
||||||
|
|
||||||
handleNoteClick (uniqueKey) {
|
handleNoteClick (uniqueKey) {
|
||||||
|
|||||||
@@ -7,8 +7,7 @@ import dataApi from 'browser/main/lib/dataApi'
|
|||||||
import store from 'browser/main/store'
|
import store from 'browser/main/store'
|
||||||
|
|
||||||
const electron = require('electron')
|
const electron = require('electron')
|
||||||
const { shell, remote } = electron
|
const { shell } = electron
|
||||||
const { Menu, MenuItem } = remote
|
|
||||||
import { SketchPicker } from 'react-color'
|
import { SketchPicker } from 'react-color'
|
||||||
|
|
||||||
class UnstyledFolderItem extends React.Component {
|
class UnstyledFolderItem extends React.Component {
|
||||||
@@ -42,10 +41,10 @@ class UnstyledFolderItem extends React.Component {
|
|||||||
color: this.state.folder.color,
|
color: this.state.folder.color,
|
||||||
name: this.state.folder.name
|
name: this.state.folder.name
|
||||||
})
|
})
|
||||||
.then((storage) => {
|
.then((data) => {
|
||||||
store.dispatch({
|
store.dispatch({
|
||||||
type: 'UPDATE_STORAGE',
|
type: 'UPDATE_FOLDER',
|
||||||
storage: storage
|
storage: data.storage
|
||||||
})
|
})
|
||||||
this.setState({
|
this.setState({
|
||||||
status: 'IDLE'
|
status: 'IDLE'
|
||||||
@@ -146,12 +145,12 @@ class UnstyledFolderItem extends React.Component {
|
|||||||
handleDeleteConfirmButtonClick (e) {
|
handleDeleteConfirmButtonClick (e) {
|
||||||
let { storage, folder } = this.props
|
let { storage, folder } = this.props
|
||||||
dataApi
|
dataApi
|
||||||
.removeFolder(storage.key, folder.key)
|
.deleteFolder(storage.key, folder.key)
|
||||||
.then((storage) => {
|
.then((data) => {
|
||||||
store.dispatch({
|
store.dispatch({
|
||||||
type: 'REMOVE_FOLDER',
|
type: 'DELETE_FOLDER',
|
||||||
key: folder.key,
|
storage: data.storage,
|
||||||
storage: storage
|
folderKey: data.folderKey
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -257,10 +256,10 @@ class StorageItem extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dataApi.createFolder(storage.key, input)
|
dataApi.createFolder(storage.key, input)
|
||||||
.then((storage) => {
|
.then((data) => {
|
||||||
store.dispatch({
|
store.dispatch({
|
||||||
type: 'ADD_FOLDER',
|
type: 'UPDATE_FOLDER',
|
||||||
storage: storage
|
storage: data.storage
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
|||||||
@@ -51,10 +51,10 @@ class StoragesTab extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderList () {
|
renderList () {
|
||||||
let { storages, boundingBox } = this.props
|
let { data, boundingBox } = this.props
|
||||||
|
|
||||||
if (!boundingBox) { return null }
|
if (!boundingBox) { return null }
|
||||||
let storageList = storages.map((storage) => {
|
let storageList = data.storageMap.map((storage) => {
|
||||||
return <StorageItem
|
return <StorageItem
|
||||||
key={storage.key}
|
key={storage.key}
|
||||||
storage={storage}
|
storage={storage}
|
||||||
|
|||||||
@@ -40,12 +40,12 @@ function data (state = defaultDataMap(), action) {
|
|||||||
}
|
}
|
||||||
storageNoteList.add(uniqueKey)
|
storageNoteList.add(uniqueKey)
|
||||||
|
|
||||||
let folderNoteList = state.folderNoteMap.get(folderKey)
|
let folderNoteSet = state.folderNoteMap.get(folderKey)
|
||||||
if (folderNoteList == null) {
|
if (folderNoteSet == null) {
|
||||||
folderNoteList = new Set(folderNoteList)
|
folderNoteSet = new Set(folderNoteSet)
|
||||||
state.folderNoteMap.set(folderKey, folderNoteList)
|
state.folderNoteMap.set(folderKey, folderNoteSet)
|
||||||
}
|
}
|
||||||
folderNoteList.add(uniqueKey)
|
folderNoteSet.add(uniqueKey)
|
||||||
|
|
||||||
note.tags.forEach((tag) => {
|
note.tags.forEach((tag) => {
|
||||||
let tagNoteList = state.tagNoteMap.get(tag)
|
let tagNoteList = state.tagNoteMap.get(tag)
|
||||||
@@ -80,19 +80,19 @@ function data (state = defaultDataMap(), action) {
|
|||||||
// Update storageNoteMap if oldNote doesn't exist
|
// Update storageNoteMap if oldNote doesn't exist
|
||||||
if (oldNote == null) {
|
if (oldNote == null) {
|
||||||
state.storeageNoteMap = new Map(state.storeageNoteMap)
|
state.storeageNoteMap = new Map(state.storeageNoteMap)
|
||||||
let noteSet = state.storeageNoteMap.get(note.storage)
|
let storageNoteSet = state.storeageNoteMap.get(note.storage)
|
||||||
noteSet = new Set(noteSet)
|
storageNoteSet = new Set(storageNoteSet)
|
||||||
noteSet.add(uniqueKey)
|
storageNoteSet.add(uniqueKey)
|
||||||
state.folderNoteMap.set(folderKey, noteSet)
|
state.storeageNoteMap.set(note.storage, storageNoteSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update foldermap if folder changed or post created
|
// Update foldermap if folder changed or post created
|
||||||
if (oldNote == null || oldNote.folder !== note.folder) {
|
if (oldNote == null || oldNote.folder !== note.folder) {
|
||||||
state.folderNoteMap = new Map(state.folderNoteMap)
|
state.folderNoteMap = new Map(state.folderNoteMap)
|
||||||
let folderNoteList = state.folderNoteMap.get(folderKey)
|
let folderNoteSet = state.folderNoteMap.get(folderKey)
|
||||||
folderNoteList = new Set(folderNoteList)
|
folderNoteSet = new Set(folderNoteSet)
|
||||||
folderNoteList.add(uniqueKey)
|
folderNoteSet.add(uniqueKey)
|
||||||
state.folderNoteMap.set(folderKey, folderNoteList)
|
state.folderNoteMap.set(folderKey, folderNoteSet)
|
||||||
|
|
||||||
if (oldNote != null) {
|
if (oldNote != null) {
|
||||||
let oldFolderKey = oldNote.storage + '-' + oldNote.folder
|
let oldFolderKey = oldNote.storage + '-' + oldNote.folder
|
||||||
@@ -305,6 +305,61 @@ function data (state = defaultDataMap(), action) {
|
|||||||
state.noteMap.delete(uniqueKey)
|
state.noteMap.delete(uniqueKey)
|
||||||
return state
|
return state
|
||||||
}
|
}
|
||||||
|
case 'UPDATE_FOLDER':
|
||||||
|
{
|
||||||
|
state = Object.assign({}, state)
|
||||||
|
state.storageMap = new Map(state.storageMap)
|
||||||
|
state.storageMap.set(action.storage.key, action.storage)
|
||||||
|
}
|
||||||
|
return state
|
||||||
|
case 'DELETE_FOLDER':
|
||||||
|
{
|
||||||
|
state = Object.assign({}, state)
|
||||||
|
state.storageMap = new Map(state.storageMap)
|
||||||
|
state.storageMap.set(action.storage.key, action.storage)
|
||||||
|
|
||||||
|
// Get note list from folder-note map
|
||||||
|
// and delete note set from folder-note map
|
||||||
|
let folderKey = action.storage.key + '-' + action.folderKey
|
||||||
|
let noteSet = state.folderNoteMap.get(folderKey)
|
||||||
|
state.folderNoteMap = new Map(state.folderNoteMap)
|
||||||
|
state.folderNoteMap.delete(folderKey)
|
||||||
|
|
||||||
|
state.noteMap = new Map(state.noteMap)
|
||||||
|
state.storageNoteMap = new Map(state.storageNoteMap)
|
||||||
|
let storageNoteSet = state.storageNoteMap.get(action.storage.key)
|
||||||
|
storageNoteSet = new Set(storageNoteSet)
|
||||||
|
storageNoteSet.delete()
|
||||||
|
noteSet.forEach(function handleNoteKey (noteKey) {
|
||||||
|
// Get note from noteMap
|
||||||
|
let note = state.noteMap.get(noteKey)
|
||||||
|
if (note != null) {
|
||||||
|
state.noteMap.delete(noteKey)
|
||||||
|
|
||||||
|
// From storageSet
|
||||||
|
let storageNoteSet = state.storageNoteMap.get(note.storage)
|
||||||
|
storageNoteSet = new Set(storageNoteSet)
|
||||||
|
state.storageNoteMap.set(note.storage, storageNoteSet)
|
||||||
|
storageNoteSet.delete(noteKey)
|
||||||
|
|
||||||
|
// From starredSet
|
||||||
|
if (note.isStarred) {
|
||||||
|
state.starredSet = new Set(state.starredSet)
|
||||||
|
state.starredSet.delete(noteKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete key from tag map
|
||||||
|
state.tagNoteMap = new Map(state.tagNoteMap)
|
||||||
|
note.tags.forEach((tag) => {
|
||||||
|
let tagNoteSet = state.tagNoteMap.get(tag)
|
||||||
|
tagNoteSet = new Set(tagNoteSet)
|
||||||
|
state.tagNoteMap.set(tag, tagNoteSet)
|
||||||
|
tagNoteSet.delete(noteKey)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return state
|
||||||
}
|
}
|
||||||
return state
|
return state
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user