diff --git a/atom-lib/finder-window.js b/atom-lib/finder-window.js
index 01bc6eac..466c40b5 100644
--- a/atom-lib/finder-window.js
+++ b/atom-lib/finder-window.js
@@ -25,4 +25,6 @@ finderWindow.on('blur', function () {
finderWindow.hide()
})
+finderWindow.setVisibleOnAllWorkspaces(true)
+
module.exports = finderWindow
diff --git a/browser/finder/index.js b/browser/finder/index.js
index f845bbcf..c72987f2 100644
--- a/browser/finder/index.js
+++ b/browser/finder/index.js
@@ -11,7 +11,7 @@ import _ from 'lodash'
import dataStore from 'boost/dataStore'
const electron = require('electron')
-const { remote, clipboard } = electron
+const { remote, clipboard, ipcRenderer } = electron
var hideFinder = remote.getGlobal('hideFinder')
@@ -64,6 +64,7 @@ class FinderMain extends React.Component {
let { activeArticle } = this.props
clipboard.writeText(activeArticle.content)
+ ipcRenderer.send('copy-finder')
notify('Saved to Clipboard!', {
body: 'Paste it wherever you want!'
})
@@ -152,6 +153,14 @@ function buildFilter (key) {
return {type: TEXT_FILTER, value: key}
}
+function isContaining (target, needle) {
+ return target.match(new RegExp(_.escapeRegExp(needle)))
+}
+
+function startsWith (target, needle) {
+ return target.match(new RegExp('^' + _.escapeRegExp(needle)))
+}
+
function remap (state) {
let { articles, folders, status } = state
@@ -168,10 +177,10 @@ function remap (state) {
let targetFolders
if (folders != null) {
let exactTargetFolders = folders.filter(folder => {
- return _.find(folderExactFilters, filter => folder.name.match(new RegExp(`^${filter.value}$`)))
+ return _.find(folderExactFilters, filter => isContaining(folder.name, filter.value))
})
let fuzzyTargetFolders = folders.filter(folder => {
- return _.find(folderFilters, filter => folder.name.match(new RegExp(`^${filter.value}`)))
+ return _.find(folderFilters, filter => startsWith(folder.name, filter.value))
})
targetFolders = status.targetFolders = exactTargetFolders.concat(fuzzyTargetFolders)
@@ -184,7 +193,7 @@ function remap (state) {
if (textFilters.length > 0) {
articles = textFilters.reduce((articles, textFilter) => {
return articles.filter(article => {
- return article.title.match(new RegExp(textFilter.value, 'i')) || article.content.match(new RegExp(textFilter.value, 'i'))
+ return isContaining(article.title, textFilter.value) || isContaining(article.content, textFilter.value)
})
}, articles)
}
@@ -192,7 +201,7 @@ function remap (state) {
if (tagFilters.length > 0) {
articles = tagFilters.reduce((articles, tagFilter) => {
return articles.filter(article => {
- return _.find(article.tags, tag => tag.match(new RegExp(tagFilter.value, 'i')))
+ return _.find(article.tags, tag => isContaining(tag, tagFilter.value))
})
}, articles)
}
@@ -201,7 +210,6 @@ 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/main/HomePage.js b/browser/main/HomePage.js
index 69c65948..cc0c127a 100644
--- a/browser/main/HomePage.js
+++ b/browser/main/HomePage.js
@@ -1,13 +1,13 @@
import React, { PropTypes} from 'react'
import { connect } from 'react-redux'
-import { EDIT_MODE, IDLE_MODE, NEW, toggleTutorial } from 'boost/actions'
-// import UserNavigator from './HomePage/UserNavigator'
+import { EDIT_MODE, IDLE_MODE, toggleTutorial } from 'boost/actions'
import ArticleNavigator from './HomePage/ArticleNavigator'
import ArticleTopBar from './HomePage/ArticleTopBar'
import ArticleList from './HomePage/ArticleList'
import ArticleDetail from './HomePage/ArticleDetail'
import _ from 'lodash'
import { isModalOpen, closeModal } from 'boost/modal'
+
const electron = require('electron')
const BrowserWindow = electron.remote.BrowserWindow
@@ -114,13 +114,14 @@ class HomePage extends React.Component {
}
render () {
- let { dispatch, status, articles, allArticles, activeArticle, folders, tags, filters } = this.props
+ let { dispatch, status, user, articles, allArticles, activeArticle, folders, tags, filters } = this.props
return (
{
@@ -199,10 +208,10 @@ function remap (state) {
let targetFolders
if (folders != null) {
let exactTargetFolders = folders.filter(folder => {
- return _.find(folderExactFilters, filter => folder.name.match(new RegExp(`^${filter.value}$`)))
+ return _.findWhere(folderExactFilters, {value: folder.name})
})
let fuzzyTargetFolders = folders.filter(folder => {
- return _.find(folderFilters, filter => folder.name.match(new RegExp(`^${filter.value}`)))
+ return _.find(folderFilters, filter => startsWith(folder.name, filter.value))
})
targetFolders = status.targetFolders = exactTargetFolders.concat(fuzzyTargetFolders)
@@ -215,7 +224,7 @@ function remap (state) {
if (textFilters.length > 0) {
articles = textFilters.reduce((articles, textFilter) => {
return articles.filter(article => {
- return article.title.match(new RegExp(textFilter.value, 'i')) || article.content.match(new RegExp(textFilter.value, 'i'))
+ return isContaining(article.title, textFilter.value) || isContaining(article.content, textFilter.value)
})
}, articles)
}
@@ -223,7 +232,7 @@ function remap (state) {
if (tagFilters.length > 0) {
articles = tagFilters.reduce((articles, tagFilter) => {
return articles.filter(article => {
- return _.find(article.tags, tag => tag.match(new RegExp(tagFilter.value, 'i')))
+ return _.find(article.tags, tag => isContaining(tag, tagFilter.value))
})
}, articles)
}
@@ -234,6 +243,7 @@ function remap (state) {
if (activeArticle == null) activeArticle = articles[0]
return {
+ user,
folders,
status,
allArticles,
@@ -249,11 +259,9 @@ function remap (state) {
}
HomePage.propTypes = {
- params: PropTypes.shape({
- userId: PropTypes.string
- }),
- status: PropTypes.shape({
- userId: PropTypes.string
+ status: PropTypes.shape(),
+ user: PropTypes.shape({
+ name: PropTypes.string
}),
articles: PropTypes.array,
allArticles: PropTypes.array,
diff --git a/browser/main/HomePage/ArticleNavigator.js b/browser/main/HomePage/ArticleNavigator.js
index 269d528f..a2f6755f 100644
--- a/browser/main/HomePage/ArticleNavigator.js
+++ b/browser/main/HomePage/ArticleNavigator.js
@@ -7,10 +7,6 @@ import Preferences from 'boost/components/modal/Preferences'
import CreateNewFolder from 'boost/components/modal/CreateNewFolder'
import keygen from 'boost/keygen'
-const electron = require('electron')
-const remote = electron.remote
-let userName = remote.getGlobal('process').env.USER
-
const BRAND_COLOR = '#18AF90'
const preferenceTutorialElement = (
@@ -109,7 +105,7 @@ export default class ArticleNavigator extends React.Component {
}
render () {
- let { status, folders, allArticles } = this.props
+ let { status, user, folders, allArticles } = this.props
let { targetFolders } = status
if (targetFolders == null) targetFolders = []
@@ -127,7 +123,7 @@ export default class ArticleNavigator extends React.Component {
return (
-
{userName}
+
{user.name}
localStorage