diff --git a/browser/finder/index.js b/browser/finder/index.js index 7fef8c7d..36521d1c 100644 --- a/browser/finder/index.js +++ b/browser/finder/index.js @@ -119,9 +119,9 @@ FinderMain.propTypes = { function remap (state) { let { articles, folders, status } = state - let filters = status.search.split(' ').map(key => key.trim()).filter(key => key.length > 0 && !key.match(/^#$/)).map(key => { - if (key.match(/^in:.+$/)) { - return {type: FOLDER_FILTER, value: key.match(/^in:(.+)$/)[1]} + let filters = status.search.split(' ').map(key => key.trim()).filter(key => key.length > 0 && !key.match(/^\/$/) && !key.match(/^#$/)).map(key => { + if (key.match(/^\/.+$/)) { + return {type: FOLDER_FILTER, value: key.match(/^\/(.+)$/)[1]} } if (key.match(/^#(.+)/)) { return {type: TAG_FILTER, value: key.match(/^#(.+)$/)[1]} @@ -134,7 +134,7 @@ function remap (state) { if (folders != null) { let targetFolders = folders.filter(folder => { - return _.findWhere(folderFilters, {value: folder.name}) + return _.find(folderFilters, filter => folder.name.match(new RegExp(`^${filter.value}`))) }) status.targetFolders = targetFolders @@ -164,6 +164,7 @@ function remap (state) { let activeArticle = _.findWhere(articles, {key: status.articleKey}) if (activeArticle == null) activeArticle = articles[0] + console.log(status.search) return { articles, activeArticle, diff --git a/browser/finder/reducer.js b/browser/finder/reducer.js index 72b087c3..76ddde7f 100644 --- a/browser/finder/reducer.js +++ b/browser/finder/reducer.js @@ -14,10 +14,10 @@ function status (state = initialStatus, action) { switch (action.type) { case SELECT_ARTICLE: state.articleKey = action.data.key - return state + return Object.assign({}, state) case SEARCH_ARTICLE: state.search = action.data.input - return state + return Object.assign({}, state) default: return state } diff --git a/browser/main/HomePage.js b/browser/main/HomePage.js index 57094068..e3fe68be 100644 --- a/browser/main/HomePage.js +++ b/browser/main/HomePage.js @@ -143,9 +143,9 @@ function remap (state) { }) // Filter articles - let filters = status.search.split(' ').map(key => key.trim()).filter(key => key.length > 0 && !key.match(/^#$/)).map(key => { - if (key.match(/^in:.+$/)) { - return {type: FOLDER_FILTER, value: key.match(/^in:(.+)$/)[1]} + let filters = status.search.split(' ').map(key => key.trim()).filter(key => key.length > 0 && !key.match(/^\/$/) && !key.match(/^#$/)).map(key => { + if (key.match(/^\/.+/)) { + return {type: FOLDER_FILTER, value: key.match(/^\/(.+)$/)[1]} } if (key.match(/^#(.+)/)) { return {type: TAG_FILTER, value: key.match(/^#(.+)$/)[1]} @@ -158,7 +158,7 @@ function remap (state) { if (folders != null) { let targetFolders = folders.filter(folder => { - return _.findWhere(folderFilters, {value: folder.name}) + return _.find(folderFilters, filter => folder.name.match(new RegExp(`^${filter.value}`))) }) status.targetFolders = targetFolders @@ -204,7 +204,7 @@ function remap (state) { let newArticle = _.findWhere(articles, {status: 'NEW'}) let FolderKey = folders[0].key if (folderFilters.length > 0) { - let targetFolder = _.findWhere(folders, {name: folderFilters[0].value}) + let targetFolder = _.find(folders, folder => folder.name.match(new RegExp(`^${folderFilters[0].value}`))) if (targetFolder != null) FolderKey = targetFolder.key } diff --git a/browser/main/HomePage/ArticleTopBar.js b/browser/main/HomePage/ArticleTopBar.js index bfa38cae..285b95de 100644 --- a/browser/main/HomePage/ArticleTopBar.js +++ b/browser/main/HomePage/ArticleTopBar.js @@ -10,7 +10,7 @@ const searchTutorialElement = ( Search some posts!! {'- Search by tag : #{string}'} - {'- Search by folder : in:{folder_name}\n'} + {'- Search by folder : /{folder_name}\n'} - Search by tag : #{'{string}'}
- - Search by folder : in:{'{folder_name}'} + - Search by folder : /{'{folder_name}'} diff --git a/lib/reducer.js b/lib/reducer.js index 52cd5916..0d28efb1 100644 --- a/lib/reducer.js +++ b/lib/reducer.js @@ -131,7 +131,7 @@ function status (state = initialStatus, action) { return state case SWITCH_FOLDER: state.mode = IDLE_MODE - state.search = `in:${action.data} ` + state.search = `/${action.data} ` return state case SWITCH_MODE: