Skip to content

Commit 40fc63e

Browse files
committed
use new api for finder
1 parent 519ea1a commit 40fc63e

7 files changed

Lines changed: 72 additions & 48 deletions

File tree

browser/finder/NoteDetail.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ class NoteDetail extends React.Component {
115115
</button>
116116
</div>
117117
})
118+
118119
let viewList = note.snippets.map((snippet, index) => {
119120
let isActive = this.state.snippetIndex === index
120121
let mode = snippet.mode === 'text'
@@ -133,7 +134,7 @@ class NoteDetail extends React.Component {
133134
/>
134135
<button styleName='tabView-top-mode'
135136
>
136-
{mode == null ? null : mode}
137+
{mode == null ? null : mode.mode}
137138
</button>
138139
</div>
139140
{snippet.mode === 'markdown'

browser/finder/NoteList.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ class NoteList extends React.Component {
5454
}
5555

5656
render () {
57-
let { storages, notes, index } = this.props
57+
let { storageMap, notes, index } = this.props
5858

5959
let notesList = notes
6060
.slice(0, 10 + 10 * this.state.range)
6161
.map((note, _index) => {
62-
let storage = _.find(storages, {key: note.storage})
62+
let storage = storageMap[note.storage]
6363
let folder = _.find(storage.folders, {key: note.folder})
6464
return (
6565
<NoteItem

browser/finder/index.js

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -217,31 +217,49 @@ class FinderMain extends React.Component {
217217
}
218218

219219
render () {
220-
let { storages, notes, config } = this.props
220+
let { data, config } = this.props
221221
let { filter, search } = this.state
222-
let storageList = storages
223-
.map((storage) => <StorageSection
224-
filter={filter}
225-
storage={storage}
226-
key={storage.key}
227-
handleStorageButtonClick={(e, storage) => this.handleStorageButtonClick(e, storage)}
228-
handleFolderButtonClick={(e, storage, folder) => this.handleFolderButtonClick(e, storage, folder)}
229-
/>)
230-
if (!filter.includeSnippet && filter.includeMarkdown) {
231-
notes = notes.filter((note) => note.type === 'MARKDOWN_NOTE')
232-
} else if (filter.includeSnippet && !filter.includeMarkdown) {
233-
notes = notes.filter((note) => note.type === 'SNIPPET_NOTE')
222+
let storageList = []
223+
for (let key in data.storageMap) {
224+
let storage = data.storageMap[key]
225+
let item = (
226+
<StorageSection
227+
filter={filter}
228+
storage={storage}
229+
key={storage.key}
230+
handleStorageButtonClick={(e, storage) => this.handleStorageButtonClick(e, storage)}
231+
handleFolderButtonClick={(e, storage, folder) => this.handleFolderButtonClick(e, storage, folder)}
232+
/>
233+
)
234+
storageList.push(item)
234235
}
236+
let notes = []
237+
let noteIds
235238

236239
switch (filter.type) {
237240
case 'STORAGE':
238-
notes = notes.filter((note) => note.storage === filter.storage)
241+
noteIds = data.storageNoteMap[filter.storage]
239242
break
240243
case 'FOLDER':
241-
notes = notes.filter((note) => note.storage === filter.storage && note.folder === filter.folder)
244+
noteIds = data.folderNoteMap[filter.storage + '-' + filter.folder]
242245
break
243246
case 'STARRED':
244-
notes = notes.filter((note) => note.isStarred)
247+
noteIds = data.starredSet
248+
}
249+
if (noteIds != null) {
250+
noteIds.forEach((id) => {
251+
notes.push(data.noteMap[id])
252+
})
253+
} else {
254+
for (let key in data.noteMap) {
255+
notes.push(data.noteMap[key])
256+
}
257+
}
258+
259+
if (!filter.includeSnippet && filter.includeMarkdown) {
260+
notes = notes.filter((note) => note.type === 'MARKDOWN_NOTE')
261+
} else if (filter.includeSnippet && !filter.includeMarkdown) {
262+
notes = notes.filter((note) => note.type === 'SNIPPET_NOTE')
245263
}
246264

247265
if (search.trim().length > 0) {
@@ -302,7 +320,7 @@ class FinderMain extends React.Component {
302320
</div>
303321
</div>
304322
<NoteList styleName='result-list'
305-
storages={storages}
323+
storageMap={data.storageMap}
306324
notes={notes}
307325
ref='list'
308326
search={search}
@@ -323,14 +341,6 @@ class FinderMain extends React.Component {
323341
}
324342

325343
FinderMain.propTypes = {
326-
articles: PropTypes.array,
327-
activeArticle: PropTypes.shape({
328-
key: PropTypes.string,
329-
tags: PropTypes.array,
330-
title: PropTypes.string,
331-
content: PropTypes.string
332-
}),
333-
status: PropTypes.shape(),
334344
dispatch: PropTypes.func
335345
}
336346

browser/finder/ipcClient.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ nodeIpc.connectTo(
7575
console.log('Received data from Main renderer')
7676
store.default.dispatch({
7777
type: 'THROTTLE_DATA',
78-
storages: payload.storages,
79-
notes: payload.notes
78+
data: payload
8079
})
8180
})
8281

browser/finder/store.js

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,20 @@ const defaultConfig = {
3030
}
3131
}
3232

33-
function storages (state = [], action) {
34-
switch (action.type) {
35-
case 'THROTTLE_DATA':
36-
state = action.storages
37-
}
38-
return state
33+
let defaultData = {
34+
storageMap: {},
35+
noteMap: {},
36+
starredSet: [],
37+
storageNoteMap: {},
38+
folderNoteMap: {},
39+
tagNoteMap: {}
3940
}
40-
function notes (state = [], action) {
41+
42+
function data (state = defaultData, action) {
4143
switch (action.type) {
4244
case 'THROTTLE_DATA':
43-
state = action.notes
45+
console.log(action)
46+
state = action.data
4447
}
4548
return state
4649
}
@@ -66,8 +69,7 @@ function config (state = defaultConfig, action) {
6669
}
6770

6871
let reducer = combineReducers({
69-
storages,
70-
notes,
72+
data,
7173
config,
7274
routing: routerReducer
7375
})

browser/lib/Mutable.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,22 @@ class MutableMap {
3838
}
3939
return result
4040
}
41+
42+
toJS () {
43+
let result = {}
44+
for (let [key, value] of this._map) {
45+
if (value instanceof MutableSet || value instanceof MutableMap) {
46+
value = value.toJS()
47+
}
48+
result[key] = value
49+
}
50+
return result
51+
}
4152
}
4253

4354
class MutableSet {
4455
constructor (iterable) {
45-
if (iterable instanceof MutableSet) {
46-
this._set = new Set(iterable._set)
47-
} else {
48-
this._set = new Set(iterable)
49-
}
56+
this._set = new Set(iterable)
5057
}
5158

5259
add (...args) {

browser/main/lib/ipcClient.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,15 @@ nodeIpc.connectTo(
2727

2828
nodeIpc.of.node.on('request-data-from-finder', function () {
2929
console.log('throttle')
30-
var data = store.getState()
30+
var { data } = store.getState()
31+
console.log(data.starredSet.toJS())
3132
nodeIpc.of.node.emit('throttle-data', {
32-
storages: data.storages,
33-
notes: data.notes
33+
storageMap: data.storageMap.toJS(),
34+
noteMap: data.noteMap.toJS(),
35+
starredSet: data.starredSet.toJS(),
36+
storageNoteMap: data.storageNoteMap.toJS(),
37+
folderNoteMap: data.folderNoteMap.toJS(),
38+
tagNoteMap: data.tagNoteMap.toJS()
3439
})
3540
})
3641
}

0 commit comments

Comments
 (0)