mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 09:46:22 +00:00
use new api for finder
This commit is contained in:
@@ -115,6 +115,7 @@ class NoteDetail extends React.Component {
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
})
|
})
|
||||||
|
|
||||||
let viewList = note.snippets.map((snippet, index) => {
|
let viewList = note.snippets.map((snippet, index) => {
|
||||||
let isActive = this.state.snippetIndex === index
|
let isActive = this.state.snippetIndex === index
|
||||||
let mode = snippet.mode === 'text'
|
let mode = snippet.mode === 'text'
|
||||||
@@ -133,7 +134,7 @@ class NoteDetail extends React.Component {
|
|||||||
/>
|
/>
|
||||||
<button styleName='tabView-top-mode'
|
<button styleName='tabView-top-mode'
|
||||||
>
|
>
|
||||||
{mode == null ? null : mode}
|
{mode == null ? null : mode.mode}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{snippet.mode === 'markdown'
|
{snippet.mode === 'markdown'
|
||||||
|
|||||||
@@ -54,12 +54,12 @@ class NoteList extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
let { storages, notes, index } = this.props
|
let { storageMap, notes, index } = this.props
|
||||||
|
|
||||||
let notesList = notes
|
let notesList = notes
|
||||||
.slice(0, 10 + 10 * this.state.range)
|
.slice(0, 10 + 10 * this.state.range)
|
||||||
.map((note, _index) => {
|
.map((note, _index) => {
|
||||||
let storage = _.find(storages, {key: note.storage})
|
let storage = storageMap[note.storage]
|
||||||
let folder = _.find(storage.folders, {key: note.folder})
|
let folder = _.find(storage.folders, {key: note.folder})
|
||||||
return (
|
return (
|
||||||
<NoteItem
|
<NoteItem
|
||||||
|
|||||||
@@ -217,33 +217,51 @@ class FinderMain extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
let { storages, notes, config } = this.props
|
let { data, config } = this.props
|
||||||
let { filter, search } = this.state
|
let { filter, search } = this.state
|
||||||
let storageList = storages
|
let storageList = []
|
||||||
.map((storage) => <StorageSection
|
for (let key in data.storageMap) {
|
||||||
filter={filter}
|
let storage = data.storageMap[key]
|
||||||
storage={storage}
|
let item = (
|
||||||
key={storage.key}
|
<StorageSection
|
||||||
handleStorageButtonClick={(e, storage) => this.handleStorageButtonClick(e, storage)}
|
filter={filter}
|
||||||
handleFolderButtonClick={(e, storage, folder) => this.handleFolderButtonClick(e, storage, folder)}
|
storage={storage}
|
||||||
/>)
|
key={storage.key}
|
||||||
|
handleStorageButtonClick={(e, storage) => this.handleStorageButtonClick(e, storage)}
|
||||||
|
handleFolderButtonClick={(e, storage, folder) => this.handleFolderButtonClick(e, storage, folder)}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
storageList.push(item)
|
||||||
|
}
|
||||||
|
let notes = []
|
||||||
|
let noteIds
|
||||||
|
|
||||||
|
switch (filter.type) {
|
||||||
|
case 'STORAGE':
|
||||||
|
noteIds = data.storageNoteMap[filter.storage]
|
||||||
|
break
|
||||||
|
case 'FOLDER':
|
||||||
|
noteIds = data.folderNoteMap[filter.storage + '-' + filter.folder]
|
||||||
|
break
|
||||||
|
case 'STARRED':
|
||||||
|
noteIds = data.starredSet
|
||||||
|
}
|
||||||
|
if (noteIds != null) {
|
||||||
|
noteIds.forEach((id) => {
|
||||||
|
notes.push(data.noteMap[id])
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
for (let key in data.noteMap) {
|
||||||
|
notes.push(data.noteMap[key])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!filter.includeSnippet && filter.includeMarkdown) {
|
if (!filter.includeSnippet && filter.includeMarkdown) {
|
||||||
notes = notes.filter((note) => note.type === 'MARKDOWN_NOTE')
|
notes = notes.filter((note) => note.type === 'MARKDOWN_NOTE')
|
||||||
} else if (filter.includeSnippet && !filter.includeMarkdown) {
|
} else if (filter.includeSnippet && !filter.includeMarkdown) {
|
||||||
notes = notes.filter((note) => note.type === 'SNIPPET_NOTE')
|
notes = notes.filter((note) => note.type === 'SNIPPET_NOTE')
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (filter.type) {
|
|
||||||
case 'STORAGE':
|
|
||||||
notes = notes.filter((note) => note.storage === filter.storage)
|
|
||||||
break
|
|
||||||
case 'FOLDER':
|
|
||||||
notes = notes.filter((note) => note.storage === filter.storage && note.folder === filter.folder)
|
|
||||||
break
|
|
||||||
case 'STARRED':
|
|
||||||
notes = notes.filter((note) => note.isStarred)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (search.trim().length > 0) {
|
if (search.trim().length > 0) {
|
||||||
let needle = new RegExp(_.escapeRegExp(search.trim()), 'i')
|
let needle = new RegExp(_.escapeRegExp(search.trim()), 'i')
|
||||||
notes = notes.filter((note) => note.title.match(needle))
|
notes = notes.filter((note) => note.title.match(needle))
|
||||||
@@ -302,7 +320,7 @@ class FinderMain extends React.Component {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<NoteList styleName='result-list'
|
<NoteList styleName='result-list'
|
||||||
storages={storages}
|
storageMap={data.storageMap}
|
||||||
notes={notes}
|
notes={notes}
|
||||||
ref='list'
|
ref='list'
|
||||||
search={search}
|
search={search}
|
||||||
@@ -323,14 +341,6 @@ class FinderMain extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
FinderMain.propTypes = {
|
FinderMain.propTypes = {
|
||||||
articles: PropTypes.array,
|
|
||||||
activeArticle: PropTypes.shape({
|
|
||||||
key: PropTypes.string,
|
|
||||||
tags: PropTypes.array,
|
|
||||||
title: PropTypes.string,
|
|
||||||
content: PropTypes.string
|
|
||||||
}),
|
|
||||||
status: PropTypes.shape(),
|
|
||||||
dispatch: PropTypes.func
|
dispatch: PropTypes.func
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -75,8 +75,7 @@ nodeIpc.connectTo(
|
|||||||
console.log('Received data from Main renderer')
|
console.log('Received data from Main renderer')
|
||||||
store.default.dispatch({
|
store.default.dispatch({
|
||||||
type: 'THROTTLE_DATA',
|
type: 'THROTTLE_DATA',
|
||||||
storages: payload.storages,
|
data: payload
|
||||||
notes: payload.notes
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -30,17 +30,20 @@ const defaultConfig = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function storages (state = [], action) {
|
let defaultData = {
|
||||||
switch (action.type) {
|
storageMap: {},
|
||||||
case 'THROTTLE_DATA':
|
noteMap: {},
|
||||||
state = action.storages
|
starredSet: [],
|
||||||
}
|
storageNoteMap: {},
|
||||||
return state
|
folderNoteMap: {},
|
||||||
|
tagNoteMap: {}
|
||||||
}
|
}
|
||||||
function notes (state = [], action) {
|
|
||||||
|
function data (state = defaultData, action) {
|
||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
case 'THROTTLE_DATA':
|
case 'THROTTLE_DATA':
|
||||||
state = action.notes
|
console.log(action)
|
||||||
|
state = action.data
|
||||||
}
|
}
|
||||||
return state
|
return state
|
||||||
}
|
}
|
||||||
@@ -66,8 +69,7 @@ function config (state = defaultConfig, action) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let reducer = combineReducers({
|
let reducer = combineReducers({
|
||||||
storages,
|
data,
|
||||||
notes,
|
|
||||||
config,
|
config,
|
||||||
routing: routerReducer
|
routing: routerReducer
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -38,15 +38,22 @@ class MutableMap {
|
|||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toJS () {
|
||||||
|
let result = {}
|
||||||
|
for (let [key, value] of this._map) {
|
||||||
|
if (value instanceof MutableSet || value instanceof MutableMap) {
|
||||||
|
value = value.toJS()
|
||||||
|
}
|
||||||
|
result[key] = value
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MutableSet {
|
class MutableSet {
|
||||||
constructor (iterable) {
|
constructor (iterable) {
|
||||||
if (iterable instanceof MutableSet) {
|
this._set = new Set(iterable)
|
||||||
this._set = new Set(iterable._set)
|
|
||||||
} else {
|
|
||||||
this._set = new Set(iterable)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
add (...args) {
|
add (...args) {
|
||||||
|
|||||||
@@ -27,10 +27,15 @@ nodeIpc.connectTo(
|
|||||||
|
|
||||||
nodeIpc.of.node.on('request-data-from-finder', function () {
|
nodeIpc.of.node.on('request-data-from-finder', function () {
|
||||||
console.log('throttle')
|
console.log('throttle')
|
||||||
var data = store.getState()
|
var { data } = store.getState()
|
||||||
|
console.log(data.starredSet.toJS())
|
||||||
nodeIpc.of.node.emit('throttle-data', {
|
nodeIpc.of.node.emit('throttle-data', {
|
||||||
storages: data.storages,
|
storageMap: data.storageMap.toJS(),
|
||||||
notes: data.notes
|
noteMap: data.noteMap.toJS(),
|
||||||
|
starredSet: data.starredSet.toJS(),
|
||||||
|
storageNoteMap: data.storageNoteMap.toJS(),
|
||||||
|
folderNoteMap: data.folderNoteMap.toJS(),
|
||||||
|
tagNoteMap: data.tagNoteMap.toJS()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user