diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 00000000..e9a81977
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,3 @@
+node_modules/
+compiled/
+dist/
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 00000000..f4f88ad0
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,6 @@
+{
+ "extends": ["standard", "standard-jsx"],
+ "rules": {
+ "no-useless-escape": 0
+ }
+}
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..37322896
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,6 @@
+language: node_js
+node_js:
+ - 'stable'
+ - 'lts/*'
+
+script: npm run lint && npm run test
diff --git a/browser/components/NoteItem.js b/browser/components/NoteItem.js
index a165bd16..0a7318dc 100644
--- a/browser/components/NoteItem.js
+++ b/browser/components/NoteItem.js
@@ -75,8 +75,8 @@ const NoteItem = ({ isActive, note, dateDisplay, handleNoteClick, handleNoteCont
:
}
- {note.isStarred ?
- : ''
+ {note.isStarred
+ ? : ''
}
@@ -91,10 +91,10 @@ NoteItem.propTypes = {
type: PropTypes.string.isRequired,
title: PropTypes.string.isrequired,
tags: PropTypes.array,
- isStarred: PropTypes.bool.isRequired,
+ isStarred: PropTypes.bool.isRequired
}),
handleNoteClick: PropTypes.func.isRequired,
- handleNoteContextMenu: PropTypes.func.isRequired,
+ handleNoteContextMenu: PropTypes.func.isRequired
}
export default CSSModules(NoteItem, styles)
diff --git a/browser/components/NoteItemSimple.js b/browser/components/NoteItemSimple.js
index 503e4171..27c71813 100644
--- a/browser/components/NoteItemSimple.js
+++ b/browser/components/NoteItemSimple.js
@@ -40,10 +40,10 @@ NoteItemSimple.propTypes = {
storage: PropTypes.string.isRequired,
key: PropTypes.string.isRequired,
type: PropTypes.string.isRequired,
- title: PropTypes.string.isrequired,
+ title: PropTypes.string.isrequired
}),
handleNoteClick: PropTypes.func.isRequired,
- handleNoteContextMenu: PropTypes.func.isRequired,
+ handleNoteContextMenu: PropTypes.func.isRequired
}
export default CSSModules(NoteItemSimple, styles)
diff --git a/browser/components/ProfileImage.js b/browser/components/ProfileImage.js
index 005863bc..5c2bb78d 100644
--- a/browser/components/ProfileImage.js
+++ b/browser/components/ProfileImage.js
@@ -12,7 +12,7 @@ export default class ProfileImage extends React.Component {
className={className}
width={this.props.size}
height={this.props.size}
- src={src}/>
+ src={src} />
)
}
}
diff --git a/browser/components/SideNavFilter.js b/browser/components/SideNavFilter.js
index 6d8db96a..a10d2d98 100644
--- a/browser/components/SideNavFilter.js
+++ b/browser/components/SideNavFilter.js
@@ -17,17 +17,17 @@ const SideNavFilter = ({
isFolded, isHomeActive, handleAllNotesButtonClick,
isStarredActive, handleStarredButtonClick
}) => (
-
+
-
+
All Notes
-
+
Starred
@@ -38,7 +38,7 @@ SideNavFilter.propTypes = {
isHomeActive: PropTypes.bool.isRequired,
handleAllNotesButtonClick: PropTypes.func.isRequired,
isStarredActive: PropTypes.bool.isRequired,
- handleStarredButtonClick: PropTypes.func.isRequired,
+ handleStarredButtonClick: PropTypes.func.isRequired
}
export default CSSModules(SideNavFilter, styles)
diff --git a/browser/components/SnippetTab.js b/browser/components/SnippetTab.js
index 49213254..2b4f3ad6 100644
--- a/browser/components/SnippetTab.js
+++ b/browser/components/SnippetTab.js
@@ -1,4 +1,4 @@
-import React, { PropTypes } from 'react'
+import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './SnippetTab.styl'
import context from 'browser/lib/context'
@@ -117,7 +117,7 @@ class SnippetTab extends React.Component {
this.handleDeleteButtonClick(e)}
>
-
+
}
diff --git a/browser/components/StorageItem.js b/browser/components/StorageItem.js
index 603523b0..9b5864db 100644
--- a/browser/components/StorageItem.js
+++ b/browser/components/StorageItem.js
@@ -27,8 +27,8 @@ const StorageItem = ({
onClick={handleButtonClick}
onContextMenu={handleContextMenu}
>
-
@@ -52,7 +52,7 @@ StorageItem.propTypes = {
folderName: PropTypes.string.isRequired,
folderColor: PropTypes.string,
isFolded: PropTypes.bool.isRequired,
- noteCount: PropTypes.number,
+ noteCount: PropTypes.number
}
export default CSSModules(StorageItem, styles)
diff --git a/browser/finder/NoteDetail.js b/browser/finder/NoteDetail.js
index 2abaaa96..2e334c6b 100644
--- a/browser/finder/NoteDetail.js
+++ b/browser/finder/NoteDetail.js
@@ -1,4 +1,4 @@
-import React, { PropTypes } from 'react'
+import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './NoteDetail.styl'
import MarkdownPreview from 'browser/components/MarkdownPreview'
@@ -97,9 +97,7 @@ class NoteDetail extends React.Component {
let { note, config } = this.props
if (note == null) {
return (
-
-
-
+
)
}
diff --git a/browser/finder/NoteList.js b/browser/finder/NoteList.js
index 106ac54a..03ad786d 100644
--- a/browser/finder/NoteList.js
+++ b/browser/finder/NoteList.js
@@ -1,4 +1,4 @@
-import React, { PropTypes } from 'react'
+import React from 'react'
import NoteItem from 'browser/components/NoteItem'
import moment from 'moment'
@@ -54,12 +54,11 @@ class NoteList extends React.Component {
}
render () {
- let { storageMap, notes, index } = this.props
+ let { notes, index } = this.props
let notesList = notes
.slice(0, 10 + 10 * this.state.range)
.map((note, _index) => {
-
const isActive = (index === _index)
const key = `${note.storage}-${note.key}`
const dateDisplay = moment(note.updatedAt).fromNow()
diff --git a/browser/finder/StorageSection.js b/browser/finder/StorageSection.js
index a8ed2e5e..1c3cc95f 100644
--- a/browser/finder/StorageSection.js
+++ b/browser/finder/StorageSection.js
@@ -1,4 +1,4 @@
-import React, { PropTypes } from 'react'
+import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './StorageSection.styl'
import StorageItem from 'browser/components/StorageItem'
diff --git a/browser/finder/index.js b/browser/finder/index.js
index 0f6e3735..46e6a1c5 100644
--- a/browser/finder/index.js
+++ b/browser/finder/index.js
@@ -2,7 +2,6 @@ import React, { PropTypes } from 'react'
import ReactDOM from 'react-dom'
import { connect, Provider } from 'react-redux'
import _ from 'lodash'
-import ipc from './ipcClient'
import store from './store'
import CSSModules from 'browser/lib/CSSModules'
import styles from './FinderMain.styl'
@@ -351,7 +350,7 @@ function refreshData () {
ReactDOM.render((
-
+
), document.getElementById('content'), function () {
refreshData()
diff --git a/browser/lib/customMeta.js b/browser/lib/customMeta.js
index e4724fac..855e00af 100644
--- a/browser/lib/customMeta.js
+++ b/browser/lib/customMeta.js
@@ -1,4 +1,3 @@
import CodeMirror from 'codemirror'
-import _ from 'lodash'
CodeMirror.modeInfo.push({name: 'Stylus', mime: 'text/x-styl', mode: 'stylus', ext: ['styl'], alias: ['styl']})
diff --git a/browser/lib/date-formatter.js b/browser/lib/date-formatter.js
index c30f9826..4f6a4002 100644
--- a/browser/lib/date-formatter.js
+++ b/browser/lib/date-formatter.js
@@ -1,17 +1,17 @@
/**
* @fileoverview Formatting date string.
*/
-import moment from 'moment';
+import moment from 'moment'
/**
* @description Return date string. For example, 'Sep.9, 2016 12:00'.
* @param {mixed}
* @return {string}
*/
-export function getLastUpdated(date) {
+export function getLastUpdated (date) {
const m = moment(date)
if (!m.isValid()) {
- throw Error('Invalid argument.');
+ throw Error('Invalid argument.')
}
return m.format('MMM D, gggg H:mm')
diff --git a/browser/lib/markdown.js b/browser/lib/markdown.js
index b5e4c893..af68b0e3 100644
--- a/browser/lib/markdown.js
+++ b/browser/lib/markdown.js
@@ -58,7 +58,7 @@ md.use(math, {
})
md.use(require('markdown-it-footnote'))
// Override task item
-md.block.ruler.at('paragraph', function (state, startLine/*, endLine*/) {
+md.block.ruler.at('paragraph', function (state, startLine/*, endLine */) {
let content, terminate, i, l, token
let nextLine = startLine + 1
let terminatorRules = state.md.block.ruler.getRules('paragraph')
diff --git a/browser/main/Detail/FolderSelect.js b/browser/main/Detail/FolderSelect.js
index 47fa6bad..094db239 100644
--- a/browser/main/Detail/FolderSelect.js
+++ b/browser/main/Detail/FolderSelect.js
@@ -128,8 +128,8 @@ class FolderSelect extends React.Component {
}
nextOption () {
- let { storages } = this.props
let { optionIndex } = this.state
+ let { folders } = this.props
optionIndex++
if (optionIndex >= folders.length) optionIndex = 0
@@ -268,7 +268,7 @@ class FolderSelect extends React.Component {
in {currentOption.storage.name}
-
+
}
diff --git a/browser/main/Detail/LastUpdatedString.js b/browser/main/Detail/LastUpdatedString.js
index 764709ef..eb67fa80 100644
--- a/browser/main/Detail/LastUpdatedString.js
+++ b/browser/main/Detail/LastUpdatedString.js
@@ -21,7 +21,7 @@ const LastUpdatedString = ({ date }) => {
}
LastUpdatedString.propTypes = {
- date: PropTypes.string,
+ date: PropTypes.string
}
export default CSSModules(LastUpdatedString, styles)
diff --git a/browser/main/Detail/MarkdownNoteDetail.js b/browser/main/Detail/MarkdownNoteDetail.js
index 7b0a2411..17eef19c 100644
--- a/browser/main/Detail/MarkdownNoteDetail.js
+++ b/browser/main/Detail/MarkdownNoteDetail.js
@@ -205,7 +205,7 @@ class MarkdownNoteDetail extends React.Component {
}
render () {
- let { data, config } = this.props
+ let { config } = this.props
let { note } = this.state
return (
diff --git a/browser/main/Detail/SnippetNoteDetail.js b/browser/main/Detail/SnippetNoteDetail.js
index fdc76262..40d3eb96 100644
--- a/browser/main/Detail/SnippetNoteDetail.js
+++ b/browser/main/Detail/SnippetNoteDetail.js
@@ -14,6 +14,7 @@ import SnippetTab from 'browser/components/SnippetTab'
import StatusBar from '../StatusBar'
import context from 'browser/lib/context'
import ConfigManager from 'browser/main/lib/ConfigManager'
+import _ from 'lodash'
function pass (name) {
switch (name) {
@@ -459,7 +460,7 @@ class SnippetNoteDetail extends React.Component {
}
render () {
- let { data, config } = this.props
+ let { config } = this.props
let { note } = this.state
let editorFontSize = parseInt(config.editor.fontSize, 10)
@@ -538,7 +539,7 @@ class SnippetNoteDetail extends React.Component {
this.handleContextButtonClick(e)}
>
-
+
@@ -563,7 +564,7 @@ class SnippetNoteDetail extends React.Component {
this.handleTabPlusButtonClick(e)}
>
-
+
{viewList}
@@ -577,19 +578,19 @@ class SnippetNoteDetail extends React.Component {
? 'Select Syntax...'
: this.state.note.snippets[this.state.snippetIndex].mode
}
-
+
this.handleIndentTypeButtonClick(e)}
>
Indent: {config.editor.indentType}
-
+
this.handleIndentSizeButtonClick(e)}
>
size: {config.editor.indentSize}
-
+
diff --git a/browser/main/Detail/TagSelect.js b/browser/main/Detail/TagSelect.js
index ff264763..4fce3c68 100644
--- a/browser/main/Detail/TagSelect.js
+++ b/browser/main/Detail/TagSelect.js
@@ -8,7 +8,7 @@ class TagSelect extends React.Component {
super(props)
this.state = {
- newTag: '',
+ newTag: ''
}
}
@@ -111,7 +111,7 @@ class TagSelect extends React.Component {
this.handleTagRemoveButtonClick(tag)(e)}
>
-
+
)
diff --git a/browser/main/Main.js b/browser/main/Main.js
index 0033fa89..d2d1508d 100644
--- a/browser/main/Main.js
+++ b/browser/main/Main.js
@@ -112,7 +112,7 @@ class Main extends React.Component {
ConfigManager.set({ navWidth })
dispatch({
type: 'SET_NAV_WIDTH',
- navWidth,
+ navWidth
})
})
}
@@ -169,7 +169,7 @@ class Main extends React.Component {
onMouseDown={(e) => this.handleLeftSlideMouseDown(e)}
draggable='false'
>
-
+
}
this.handleListStyleButtonClick(e, 'DEFAULT')}
>
-
+
this.handleListStyleButtonClick(e, 'SMALL')}
>
-
+
this.handleAddFolderButtonClick(e)}
>
-
+
}
diff --git a/browser/main/SideNav/index.js b/browser/main/SideNav/index.js
index c0fe0fd2..144c5e02 100644
--- a/browser/main/SideNav/index.js
+++ b/browser/main/SideNav/index.js
@@ -7,9 +7,6 @@ import ConfigManager from 'browser/main/lib/ConfigManager'
import StorageItem from './StorageItem'
import SideNavFilter from 'browser/components/SideNavFilter'
-const electron = require('electron')
-const { remote } = electron
-
class SideNav extends React.Component {
// TODO: should not use electron stuff v0.7
handleMenuButtonClick (e) {
@@ -65,7 +62,7 @@ class SideNav extends React.Component {
this.handleMenuButtonClick(e)}
>
-
+
Menu
@@ -87,8 +84,8 @@ class SideNav extends React.Component {
onClick={(e) => this.handleToggleButtonClick(e)}
>
{isFolded
- ?
- :
+ ?
+ :
}
diff --git a/browser/main/StatusBar/index.js b/browser/main/StatusBar/index.js
index 12c54355..82b4cf76 100644
--- a/browser/main/StatusBar/index.js
+++ b/browser/main/StatusBar/index.js
@@ -59,9 +59,9 @@ class StatusBar extends React.Component {
: null
}
- {/*
+ {/*
- */}
+ */}
this.handleZoomButtonClick(e)}
>
diff --git a/browser/main/TopBar/index.js b/browser/main/TopBar/index.js
index c1094198..added48f 100644
--- a/browser/main/TopBar/index.js
+++ b/browser/main/TopBar/index.js
@@ -10,8 +10,6 @@ import ConfigManager from 'browser/main/lib/ConfigManager'
import dataApi from 'browser/main/lib/dataApi'
const OSX = window.process.platform === 'darwin'
-const { remote } = require('electron')
-const { Menu, MenuItem } = remote
class TopBar extends React.Component {
constructor (props) {
@@ -71,10 +69,10 @@ class TopBar extends React.Component {
break
}
}
- if (storage == null) alert('No storage to create a note')
+ if (storage == null) window.alert('No storage to create a note')
let folder = _.find(storage.folders, {key: params.folderKey})
if (folder == null) folder = storage.folders[0]
- if (folder == null) alert('No folder to create a note')
+ if (folder == null) window.alert('No folder to create a note')
return {
storage,
@@ -262,8 +260,8 @@ class TopBar extends React.Component {
in {storage.name}
{note.type === 'SNIPPET_NOTE'
- ?
- :
+ ?
+ :
}
{note.title}
@@ -276,7 +274,7 @@ class TopBar extends React.Component {
>
-
+
this.handleSearchFocus(e)}
onBlur={(e) => this.handleSearchBlur(e)}
@@ -303,14 +301,14 @@ class TopBar extends React.Component {
this.handleSearchClearButton(e)}
>
-
+
}
this.handleNewPostButtonClick(e)}>
-
+
Make a Note {OSX ? '⌘' : '^'} + n
diff --git a/browser/main/lib/modal.js b/browser/main/lib/modal.js
index 92b1bc8c..d5bbaeb1 100644
--- a/browser/main/lib/modal.js
+++ b/browser/main/lib/modal.js
@@ -20,10 +20,10 @@ class ModalBase extends React.Component {
render () {
return (
-
this.close(e)} className='modalBack'/>
+
this.close(e)} className='modalBack' />
{this.state.component == null ? null : (
-
+
)}
@@ -33,7 +33,7 @@ class ModalBase extends React.Component {
let el = document.createElement('div')
document.body.appendChild(el)
-let modalBase = ReactDOM.render(
, el)
+let modalBase = ReactDOM.render(
, el)
export function openModal (component, props) {
if (modalBase == null) { return }
diff --git a/browser/main/modals/DeleteArticleModal.js b/browser/main/modals/DeleteArticleModal.js
index 78db1bfa..91546dd1 100644
--- a/browser/main/modals/DeleteArticleModal.js
+++ b/browser/main/modals/DeleteArticleModal.js
@@ -33,13 +33,13 @@ export default class DeleteArticleModal extends React.Component {
render () {
return (
-
Delete an article.
+
Delete an article.
Do you really want to delete?
- this.handleNoButtonClick(e)}> No
- this.handleYesButtonClick(e)} className='danger'> Yes
+ this.handleNoButtonClick(e)}> No
+ this.handleYesButtonClick(e)} className='danger'> Yes
)
diff --git a/browser/main/modals/InitModal.js b/browser/main/modals/InitModal.js
index d405f880..c6f29e5e 100644
--- a/browser/main/modals/InitModal.js
+++ b/browser/main/modals/InitModal.js
@@ -1,11 +1,10 @@
-import React, { PropTypes } from 'react'
+import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './InitModal.styl'
import dataApi from 'browser/main/lib/dataApi'
import store from 'browser/main/store'
import { hashHistory } from 'react-router'
import _ from 'lodash'
-import keygen from 'browser/lib/keygen'
const CSON = require('@rokt33r/season')
const path = require('path')
@@ -197,7 +196,7 @@ class InitModal extends React.Component {
render () {
if (this.state.isLoading) {
return
-
+
Preparing initialization...
}
@@ -235,7 +234,7 @@ class InitModal extends React.Component {
{this.state.legacyStorageExists &&
- this.handleMigrationRequestedChange(e)}/> Migrate old data from the legacy app v0.5
+ this.handleMigrationRequestedChange(e)} /> Migrate old data from the legacy app v0.5
}
@@ -247,7 +246,7 @@ class InitModal extends React.Component {
>
{this.state.isSending
?
- Loading...
+ Loading...
: 'Let\'s Go!'
}
diff --git a/browser/main/modals/NewNoteModal.js b/browser/main/modals/NewNoteModal.js
index 554652a3..2c3f30cf 100644
--- a/browser/main/modals/NewNoteModal.js
+++ b/browser/main/modals/NewNoteModal.js
@@ -1,4 +1,4 @@
-import React, { PropTypes } from 'react'
+import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './NewNoteModal.styl'
import dataApi from 'browser/main/lib/dataApi'
@@ -114,8 +114,8 @@ class NewNoteModal extends React.Component {
>
-
Markdown Note
+ />
+
Markdown Note
It is good for any type of documents. Check List, Code block and Latex block are available.
@@ -126,14 +126,14 @@ class NewNoteModal extends React.Component {
>
-
Snippet Note
+ />
+
Snippet Note
This format is specialized on managing snippets like Gist. Multiple snippets can be grouped as a note.
-
Tab to switch format
+
Tab to switch format
)
diff --git a/browser/main/modals/PreferencesModal/HotkeyTab.js b/browser/main/modals/PreferencesModal/HotkeyTab.js
index dbaa0b35..b0005bfd 100644
--- a/browser/main/modals/PreferencesModal/HotkeyTab.js
+++ b/browser/main/modals/PreferencesModal/HotkeyTab.js
@@ -7,8 +7,6 @@ import store from 'browser/main/store'
const electron = require('electron')
const ipc = electron.ipcRenderer
-const OSX = global.process.platform === 'darwin'
-
class HotkeyTab extends React.Component {
constructor (props) {
super(props)
@@ -150,7 +148,7 @@ class HotkeyTab extends React.Component {
}
HotkeyTab.propTypes = {
- dispatch: PropTypes.func,
+ dispatch: PropTypes.func
}
export default CSSModules(HotkeyTab, styles)
diff --git a/browser/main/modals/PreferencesModal/InfoTab.js b/browser/main/modals/PreferencesModal/InfoTab.js
index 6db55648..d0441df2 100644
--- a/browser/main/modals/PreferencesModal/InfoTab.js
+++ b/browser/main/modals/PreferencesModal/InfoTab.js
@@ -1,4 +1,4 @@
-import React, { PropTypes } from 'react'
+import React from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './InfoTab.styl'
@@ -26,7 +26,7 @@ class InfoTab extends React.Component {
-
+
Boostnote {appVersion}
@@ -34,7 +34,7 @@ class InfoTab extends React.Component {
-
+
Made by
this.handleLinkClick(e)}
diff --git a/browser/main/modals/PreferencesModal/StorageItem.js b/browser/main/modals/PreferencesModal/StorageItem.js
index 28279597..d8d18d6c 100644
--- a/browser/main/modals/PreferencesModal/StorageItem.js
+++ b/browser/main/modals/PreferencesModal/StorageItem.js
@@ -106,7 +106,10 @@ class UnstyledFolderItem extends React.Component {
const popover = { position: 'absolute', zIndex: 2 }
const cover = {
position: 'fixed',
- top: 0, right: 0, bottom: 0, left: 0
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0
}
const pickerStyle = Object.assign({}, {
position: 'absolute'
@@ -137,7 +140,7 @@ class UnstyledFolderItem extends React.Component {
: null
}
-
+
this.handleLabelClick(e)}
>
-
+
{storage.name}
({storage.path})
-
+
}
this.handleNewFolderButtonClick(e)}
>
-
+
Add Folder
@@ -386,7 +389,7 @@ class StorageItem extends React.Component {
this.handleExternalButtonClick(e)}
>
-
+
Open Storage folder
@@ -394,7 +397,7 @@ class StorageItem extends React.Component {
this.handleUnlinkButtonClick(e)}
>
-
+
Unlink
diff --git a/browser/main/modals/PreferencesModal/StoragesTab.js b/browser/main/modals/PreferencesModal/StoragesTab.js
index 33ee6c39..dc1f96f0 100644
--- a/browser/main/modals/PreferencesModal/StoragesTab.js
+++ b/browser/main/modals/PreferencesModal/StoragesTab.js
@@ -72,7 +72,7 @@ class StoragesTab extends React.Component {
this.handleAddStorageButton(e)}
>
- Add Storage
+ Add Storage
diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js
index a4031a90..84e3c25e 100644
--- a/browser/main/modals/PreferencesModal/UiTab.js
+++ b/browser/main/modals/PreferencesModal/UiTab.js
@@ -5,9 +5,6 @@ import ConfigManager from 'browser/main/lib/ConfigManager'
import store from 'browser/main/store'
import consts from 'browser/lib/consts'
-const electron = require('electron')
-const ipc = electron.ipcRenderer
-
const OSX = global.process.platform === 'darwin'
class UiTab extends React.Component {
diff --git a/browser/main/modals/PreferencesModal/index.js b/browser/main/modals/PreferencesModal/index.js
index 731951c5..0f5a0c2d 100644
--- a/browser/main/modals/PreferencesModal/index.js
+++ b/browser/main/modals/PreferencesModal/index.js
@@ -43,7 +43,7 @@ class Preferences extends React.Component {
switch (this.state.currentTab) {
case 'INFO':
- return
+ return
case 'HOTKEY':
return (
{
diff --git a/gruntfile.js b/gruntfile.js
index d2f1a2f7..1ccf60f2 100644
--- a/gruntfile.js
+++ b/gruntfile.js
@@ -5,16 +5,16 @@ const packager = require('electron-packager')
const WIN = process.platform === 'win32'
module.exports = function (grunt) {
- var auth_code
+ var authCode
try {
- auth_code = grunt.file.readJSON('secret/auth_code.json')
+ authCode = grunt.file.readJSON('secret/auth_code.json')
} catch (e) {
if (e.origError.code === 'ENOENT') {
console.warn('secret/auth_code.json is not found. CodeSigning is not available.')
}
}
- const OSX_COMMON_NAME = auth_code != null ? auth_code.OSX_COMMON_NAME : ''
- const WIN_CERT_PASSWORD = auth_code != null ? auth_code.WIN_CERT_PASSWORD : ''
+ const OSX_COMMON_NAME = authCode != null ? authCode.OSX_COMMON_NAME : ''
+ const WIN_CERT_PASSWORD = authCode != null ? authCode.WIN_CERT_PASSWORD : ''
var initConfig = {
pkg: grunt.file.readJSON('package.json'),
diff --git a/lib/finder-app.js b/lib/finder-app.js
index b158e308..7cba04bf 100755
--- a/lib/finder-app.js
+++ b/lib/finder-app.js
@@ -1,19 +1,10 @@
const electron = require('electron')
const app = electron.app
-const Menu = electron.Menu
-
-var finderWindow = null
app.on('ready', function () {
if (process.platform === 'darwin') {
app.dock.hide()
}
-
- // var template = require('./finder-menu')
- // var menu = Menu.buildFromTemplate(template)
- // Menu.setApplicationMenu(menu)
-
- finderWindow = require('./finder-window')
})
module.exports = app
diff --git a/lib/main-app.js b/lib/main-app.js
index 8e67feec..4cc1d2c6 100644
--- a/lib/main-app.js
+++ b/lib/main-app.js
@@ -2,7 +2,6 @@ const electron = require('electron')
const app = electron.app
const Menu = electron.Menu
const ipc = electron.ipcMain
-const autoUpdater = electron.autoUpdater
const path = require('path')
const ChildProcess = require('child_process')
const _ = require('lodash')
@@ -11,9 +10,8 @@ const GhReleases = require('electron-gh-releases')
var ipcServer = null
var mainWindow = null
-var finderWindow = null
-var shouldQuit = app.makeSingleInstance(function(commandLine, workingDirectory) {
+var shouldQuit = app.makeSingleInstance(function (commandLine, workingDirectory) {
if (mainWindow) {
if (process.platform === 'win32') {
mainWindow.minimize()
@@ -26,12 +24,8 @@ var shouldQuit = app.makeSingleInstance(function(commandLine, workingDirectory)
if (shouldQuit) {
app.quit()
- return
}
-var version = app.getVersion()
-var versionText = (version == null || version.length === 0) ? 'DEV version' : 'v' + version
-
var isUpdateReady = false
var ghReleasesOpts = {
@@ -108,14 +102,9 @@ app.on('ready', function () {
Menu.setApplicationMenu(menu)
break
case 'win32':
- finderWindow = require('./finder-window')
mainWindow.setMenu(menu)
break
case 'linux':
- // Finder is available on cinnamon only.
- if (process.env.DESKTOP_SESSION === 'cinnamon') {
- finderWindow = require('./finder-window')
- }
Menu.setApplicationMenu(menu)
mainWindow.setMenu(menu)
}
diff --git a/package.json b/package.json
index cba2f73d..0f5a972b 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,9 @@
"hot": "electron ./index.js --hot",
"webpack": "webpack-dev-server --hot --inline --config webpack.config.js",
"compile": "grunt compile",
- "test": "PWD=$(pwd) NODE_ENV=test ava"
+ "test": "PWD=$(pwd) NODE_ENV=test ava",
+ "fix": "npm run lint --fix",
+ "lint": "eslint ./**/*.js"
},
"config": {
"electron-version": "1.2.8"
@@ -87,6 +89,9 @@
"dom-storage": "^2.0.2",
"electron-packager": "^6.0.0",
"electron-prebuilt": "^1.2.8",
+ "eslint": "^3.13.1",
+ "eslint-config-standard": "^6.2.1",
+ "eslint-config-standard-jsx": "^3.2.0",
"faker": "^3.1.0",
"grunt": "^0.4.5",
"grunt-electron-installer": "^1.2.0",
@@ -119,7 +124,7 @@
},
"ava": {
"files": [
- "tests/**/*.js"
+ "tests/**/*-test.js"
],
"require": [
"babel-register"
diff --git a/readme.md b/readme.md
index 2e6db255..bb96534f 100644
--- a/readme.md
+++ b/readme.md
@@ -10,6 +10,8 @@
Built with Electron, React + Redux, Webpack and CSSModules
+[](https://travis-ci.org/BoostIO/Boostnote)
+
> We launched our [Boostnote store](https://boostnote.paintory.com/)!! :tada: Also, you can support us via [Patreon](https://www.patreon.com/boostnote) and [Open collective](https://opencollective.com/boostnote)!

diff --git a/tests/dataApi/createFolder.js b/tests/dataApi/createFolder-test.js
similarity index 100%
rename from tests/dataApi/createFolder.js
rename to tests/dataApi/createFolder-test.js
diff --git a/tests/dataApi/createNote.js b/tests/dataApi/createNote-test.js
similarity index 100%
rename from tests/dataApi/createNote.js
rename to tests/dataApi/createNote-test.js
diff --git a/tests/dataApi/deleteFolder.js b/tests/dataApi/deleteFolder-test.js
similarity index 100%
rename from tests/dataApi/deleteFolder.js
rename to tests/dataApi/deleteFolder-test.js
diff --git a/tests/dataApi/deleteNote.js b/tests/dataApi/deleteNote-test.js
similarity index 100%
rename from tests/dataApi/deleteNote.js
rename to tests/dataApi/deleteNote-test.js
diff --git a/tests/dataApi/init.js b/tests/dataApi/init.js
index 81ef38a4..cacc2b2a 100644
--- a/tests/dataApi/init.js
+++ b/tests/dataApi/init.js
@@ -36,7 +36,7 @@ test.beforeEach((t) => {
})
test.serial('Initialize All Storages', (t) => {
- const { v1StorageData, legacyStorageData, emptyStorageData } = t.context
+ const { v1StorageData, legacyStorageData } = t.context
return Promise.resolve()
.then(function test () {
return init()
diff --git a/tests/dataApi/migrateFromV6Storage.js b/tests/dataApi/migrateFromV6Storage-test.js
similarity index 100%
rename from tests/dataApi/migrateFromV6Storage.js
rename to tests/dataApi/migrateFromV6Storage-test.js
diff --git a/tests/dataApi/moveNote.js b/tests/dataApi/moveNote-test.js
similarity index 98%
rename from tests/dataApi/moveNote.js
rename to tests/dataApi/moveNote-test.js
index fe73653d..4c31ddca 100644
--- a/tests/dataApi/moveNote.js
+++ b/tests/dataApi/moveNote-test.js
@@ -12,7 +12,6 @@ const TestDummy = require('../fixtures/TestDummy')
const sander = require('sander')
const os = require('os')
const CSON = require('@rokt33r/season')
-const faker = require('faker')
const storagePath = path.join(os.tmpdir(), 'test/move-note')
const storagePath2 = path.join(os.tmpdir(), 'test/move-note2')
diff --git a/tests/dataApi/removeStorage.js b/tests/dataApi/removeStorage-test.js
similarity index 100%
rename from tests/dataApi/removeStorage.js
rename to tests/dataApi/removeStorage-test.js
diff --git a/tests/dataApi/renameStorage.js b/tests/dataApi/renameStorage-test.js
similarity index 100%
rename from tests/dataApi/renameStorage.js
rename to tests/dataApi/renameStorage-test.js
diff --git a/tests/dataApi/updateFolder.js b/tests/dataApi/updateFolder-test.js
similarity index 100%
rename from tests/dataApi/updateFolder.js
rename to tests/dataApi/updateFolder-test.js
diff --git a/tests/dataApi/updateNote.js b/tests/dataApi/updateNote-test.js
similarity index 100%
rename from tests/dataApi/updateNote.js
rename to tests/dataApi/updateNote-test.js