mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 17:56:25 +00:00
search filter is now insensitive case, fix minor bugs
This commit is contained in:
@@ -80,7 +80,7 @@ export default class CodeEditor extends React.Component {
|
|||||||
|
|
||||||
session.setUseSoftTabs(this.state.indentType === 'space')
|
session.setUseSoftTabs(this.state.indentType === 'space')
|
||||||
session.setTabSize(!isNaN(this.state.indentSize) ? parseInt(this.state.indentSize, 10) : 4)
|
session.setTabSize(!isNaN(this.state.indentSize) ? parseInt(this.state.indentSize, 10) : 4)
|
||||||
session.setOption('useWorker', true)
|
session.setOption('useWorker', false)
|
||||||
session.setUseWrapMode(true)
|
session.setUseWrapMode(true)
|
||||||
session.setValue(this.props.article.content)
|
session.setValue(this.props.article.content)
|
||||||
|
|
||||||
|
|||||||
@@ -176,11 +176,11 @@ function buildFilter (key) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function isContaining (target, needle) {
|
function isContaining (target, needle) {
|
||||||
return target.match(new RegExp(_.escapeRegExp(needle)))
|
return target.match(new RegExp(_.escapeRegExp(needle), 'i'))
|
||||||
}
|
}
|
||||||
|
|
||||||
function startsWith (target, needle) {
|
function startsWith (target, needle) {
|
||||||
return target.match(new RegExp('^' + _.escapeRegExp(needle)))
|
return target.match(new RegExp('^' + _.escapeRegExp(needle), 'i'))
|
||||||
}
|
}
|
||||||
|
|
||||||
function remap (state) {
|
function remap (state) {
|
||||||
@@ -199,10 +199,10 @@ function remap (state) {
|
|||||||
let targetFolders
|
let targetFolders
|
||||||
if (folders != null) {
|
if (folders != null) {
|
||||||
let exactTargetFolders = folders.filter(folder => {
|
let exactTargetFolders = folders.filter(folder => {
|
||||||
return _.find(folderExactFilters, filter => isContaining(folder.name, filter.value))
|
return _.find(folderExactFilters, filter => filter.value.toLowerCase() === folder.name.toLowerCase())
|
||||||
})
|
})
|
||||||
let fuzzyTargetFolders = folders.filter(folder => {
|
let fuzzyTargetFolders = folders.filter(folder => {
|
||||||
return _.find(folderFilters, filter => startsWith(folder.name, filter.value))
|
return _.find(folderFilters, filter => startsWith(folder.name.replace(/_/g, ''), filter.value.replace(/_/g, '')))
|
||||||
})
|
})
|
||||||
targetFolders = status.targetFolders = exactTargetFolders.concat(fuzzyTargetFolders)
|
targetFolders = status.targetFolders = exactTargetFolders.concat(fuzzyTargetFolders)
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import DeleteArticleModal from '../../modal/DeleteArticleModal'
|
|||||||
import ArticleEditor from './ArticleEditor'
|
import ArticleEditor from './ArticleEditor'
|
||||||
const electron = require('electron')
|
const electron = require('electron')
|
||||||
const ipc = electron.ipcRenderer
|
const ipc = electron.ipcRenderer
|
||||||
let count = 0
|
|
||||||
// const remote = electron.remote
|
// const remote = electron.remote
|
||||||
// const { Menu, MenuItem } = remote
|
// const { Menu, MenuItem } = remote
|
||||||
// const othersMenu = new Menu()
|
// const othersMenu = new Menu()
|
||||||
@@ -154,7 +154,7 @@ export default class ArticleDetail extends React.Component {
|
|||||||
|
|
||||||
componentDidUpdate (prevProps, prevState) {
|
componentDidUpdate (prevProps, prevState) {
|
||||||
if (this.props.activeArticle == null || prevProps.activeArticle == null || this.props.activeArticle.key !== prevProps.activeArticle.key) {
|
if (this.props.activeArticle == null || prevProps.activeArticle == null || this.props.activeArticle.key !== prevProps.activeArticle.key) {
|
||||||
this.refs.editor.resetCursorPosition()
|
if (this.refs.editor) this.refs.editor.resetCursorPosition()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -128,11 +128,11 @@ function buildFilter (key) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function isContaining (target, needle) {
|
function isContaining (target, needle) {
|
||||||
return target.match(new RegExp(_.escapeRegExp(needle)))
|
return target.match(new RegExp(_.escapeRegExp(needle), 'i'))
|
||||||
}
|
}
|
||||||
|
|
||||||
function startsWith (target, needle) {
|
function startsWith (target, needle) {
|
||||||
return target.match(new RegExp('^' + _.escapeRegExp(needle)))
|
return target.match(new RegExp('^' + _.escapeRegExp(needle), 'i'))
|
||||||
}
|
}
|
||||||
|
|
||||||
function remap (state) {
|
function remap (state) {
|
||||||
@@ -170,10 +170,10 @@ function remap (state) {
|
|||||||
let targetFolders
|
let targetFolders
|
||||||
if (folders != null) {
|
if (folders != null) {
|
||||||
let exactTargetFolders = folders.filter(folder => {
|
let exactTargetFolders = folders.filter(folder => {
|
||||||
return _.findWhere(folderExactFilters, {value: folder.name})
|
return _.find(folderExactFilters, filter => filter.value.toLowerCase() === folder.name.toLowerCase())
|
||||||
})
|
})
|
||||||
let fuzzyTargetFolders = folders.filter(folder => {
|
let fuzzyTargetFolders = folders.filter(folder => {
|
||||||
return _.find(folderFilters, filter => startsWith(folder.name, filter.value))
|
return _.find(folderFilters, filter => startsWith(folder.name.replace(/_/g, ''), filter.value.replace(/_/g, '')))
|
||||||
})
|
})
|
||||||
targetFolders = status.targetFolders = exactTargetFolders.concat(fuzzyTargetFolders)
|
targetFolders = status.targetFolders = exactTargetFolders.concat(fuzzyTargetFolders)
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ export default class CreateNewFolder extends React.Component {
|
|||||||
name,
|
name,
|
||||||
color
|
color
|
||||||
}
|
}
|
||||||
console.log(input)
|
|
||||||
try {
|
try {
|
||||||
store.dispatch(createFolder(input))
|
store.dispatch(createFolder(input))
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
@@ -20,8 +20,6 @@ export default class FolderSettingTab extends React.Component {
|
|||||||
|
|
||||||
handleSaveButtonClick (e) {
|
handleSaveButtonClick (e) {
|
||||||
this.setState({alert: null}, () => {
|
this.setState({alert: null}, () => {
|
||||||
if (this.state.name.trim().length === 0) return false
|
|
||||||
|
|
||||||
let { dispatch } = this.props
|
let { dispatch } = this.props
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -70,11 +70,11 @@ function folders (state = initialFolders, action) {
|
|||||||
updatedAt: new Date()
|
updatedAt: new Date()
|
||||||
})
|
})
|
||||||
|
|
||||||
if (newFolder.name == null && newFolder.name.length === 0) throw new Error('Folder name is required')
|
if (newFolder.name == null || newFolder.name.length === 0) throw new Error('Folder name is required')
|
||||||
if (newFolder.name.match(/\//)) throw new Error('`/` is not available for folder name')
|
if (newFolder.name.match(/\//)) throw new Error('`/` is not available for folder name')
|
||||||
|
|
||||||
let conflictFolder = _.findWhere(state, {name: newFolder.name})
|
let conflictFolder = _.find(state, folder => folder.name.toLowerCase() === newFolder.name.toLowerCase())
|
||||||
if (conflictFolder != null) throw new Error(`${newFolder.name} already exists!`)
|
if (conflictFolder != null) throw new Error(`${conflictFolder.name} already exists!`)
|
||||||
state.push(newFolder)
|
state.push(newFolder)
|
||||||
|
|
||||||
dataStore.setFolders(state)
|
dataStore.setFolders(state)
|
||||||
@@ -96,7 +96,7 @@ function folders (state = initialFolders, action) {
|
|||||||
// Name conflict check
|
// Name conflict check
|
||||||
if (targetFolder.name !== folder.name) {
|
if (targetFolder.name !== folder.name) {
|
||||||
let conflictFolder = _.find(state, _folder => {
|
let conflictFolder = _.find(state, _folder => {
|
||||||
return folder.name === _folder.name && folder.key !== _folder.key
|
return folder.name.toLowerCase() === _folder.name.toLowerCase() && folder.key !== _folder.key
|
||||||
})
|
})
|
||||||
if (conflictFolder != null) throw new Error('Name conflicted')
|
if (conflictFolder != null) throw new Error('Name conflicted')
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user