diff --git a/browser/lib/RepositoryManager.js b/browser/lib/RepositoryManager.js
index 3aa39dde..1c1f3a1a 100644
--- a/browser/lib/RepositoryManager.js
+++ b/browser/lib/RepositoryManager.js
@@ -152,7 +152,7 @@ function _resolveRepoJSON (targetPath) {
function getAllRepoStats () {
let data
try {
- data = JSON.parse(localStorage.getItem('repositories'))
+ data = JSON.parse(localStorage.getItem('repoStats'))
if (!_.isArray(data)) {
throw new Error('Data is corrupted. it must be an array.')
}
@@ -208,7 +208,7 @@ function addRepo (newRepo) {
let resolveBoostrepoJSON = _resolveRepoJSON(path.resolve(targetPath, 'boostrepo.json'))
return Promise.all([resolveDataDirectory, resolveBoostrepoJSON])
})
- .then(function setLoalStorage (data) {
+ .then(function saveToLocalStorage (data) {
let dataPath = data[0]
repoJSON = data[1]
@@ -260,6 +260,22 @@ function addRepo (newRepo) {
})
}
+function removeRepo (repository) {
+ return new Promise(function (resolve, reject) {
+ try {
+ let repoStats = getAllRepoStats()
+ let targetIndex = _.findIndex(repoStats, {key: repository.key})
+ if (targetIndex > -1) {
+ repoStats.splice(targetIndex, 1)
+ }
+ _saveAllRepoStats(repoStats)
+ resolve(true)
+ } catch (err) {
+ reject(err)
+ }
+ })
+}
+
function getRepos () {
let repoStats
try {
@@ -291,5 +307,6 @@ function getRepos () {
export default {
getAllRepoStats,
addRepo,
+ removeRepo,
getRepos
}
diff --git a/browser/main/HomePage/SideNav/Repository.js b/browser/main/HomePage/SideNav/Repository.js
index 2a849283..4631af6b 100644
--- a/browser/main/HomePage/SideNav/Repository.js
+++ b/browser/main/HomePage/SideNav/Repository.js
@@ -1,10 +1,22 @@
import React, { PropTypes } from 'react'
import CSSModules from 'browser/lib/CSSModules'
import styles from './Repository.styl'
+import actions from 'browser/main/actions'
+import RepositoryManager from 'browser/lib/RepositoryManager'
class Repository extends React.Component {
+ handleUnlinkButtonClick (e) {
+ let { dispatch, repository } = this.props
+
+ RepositoryManager.removeRepo(repository)
+ .then(() => {
+ dispatch(actions.removeRepo(repository))
+ })
+ }
+
render () {
let { repository } = this.props
+
let folderElements = repository.folders.map((folder) => {
return (
@@ -69,7 +82,8 @@ Repository.propTypes = {
folders: PropTypes.arrayOf(PropTypes.shape({
name: PropTypes.string
}))
- })
+ }),
+ dispatch: PropTypes.func
}
export default CSSModules(Repository, styles)
diff --git a/browser/main/HomePage/SideNav/index.js b/browser/main/HomePage/SideNav/index.js
index e671ba20..be606bdd 100644
--- a/browser/main/HomePage/SideNav/index.js
+++ b/browser/main/HomePage/SideNav/index.js
@@ -10,42 +10,10 @@ import NewRepositoryModal from '../../modal/NewRepositoryModal'
const ipc = require('electron').ipcRenderer
-const BRAND_COLOR = '#18AF90'
-const OSX = global.process.platform === 'darwin'
-
-const preferenceTutorialElement = (
-
-)
-
-const newFolderTutorialElement = (
-
- Create a new folder!!
- {'press ' + (OSX ? '`⌘ + Shift + n`' : '`^ + Shift + n`')}
-
-
-
-
-
-)
-
class SideNav extends React.Component {
constructor (props) {
super(props)
- this.newFolderHandler = e => {
+ this.newFolderHandler = (e) => {
if (isModalOpen()) return true
this.handleNewFolderButton(e)
}
@@ -69,7 +37,7 @@ class SideNav extends React.Component {
}
handleFolderButtonClick (name) {
- return e => {
+ return (e) => {
let { dispatch } = this.props
dispatch(actions.switchFolder(name))
}
@@ -85,11 +53,12 @@ class SideNav extends React.Component {
}
render () {
- let { repositories } = this.props
+ let { repositories, dispatch } = this.props
let repositorieElements = repositories.map((repo) => {
return
})
diff --git a/browser/main/actions.js b/browser/main/actions.js
index a4e2aee3..da3e4b42 100644
--- a/browser/main/actions.js
+++ b/browser/main/actions.js
@@ -164,6 +164,13 @@ export function addRepo (data) {
}
}
+export function removeRepo (data) {
+ return {
+ type: 'REMOVE_REPOSITORY',
+ data
+ }
+}
+
export default {
updateUser,
@@ -188,5 +195,6 @@ export default {
toggleTutorial,
// v0.6.*
- addRepo
+ addRepo,
+ removeRepo
}
diff --git a/browser/main/reducer.js b/browser/main/reducer.js
index a41a0749..8efff887 100644
--- a/browser/main/reducer.js
+++ b/browser/main/reducer.js
@@ -332,12 +332,22 @@ import RepositoryManager from 'browser/lib/RepositoryManager'
const initialRepositories = RepositoryManager.getRepos()
function repositories (state = initialRepositories, action) {
- console.log(state)
switch (action.type) {
case 'ADD_REPOSITORY':
- let repos = state.slice()
- repos.push(action.data)
- return repos
+ {
+ let repos = state.slice()
+ repos.push(action.data)
+ return repos
+ }
+ case 'REMOVE_REPOSITORY':
+ {
+ let repos = state.slice()
+ let targetIndex = _.findIndex(repos, {key: action.data.key})
+ if (targetIndex > -1) {
+ repos.splice(targetIndex, 1)
+ }
+ return repos
+ }
}
return state
}