From 744907ac382241d92bfee00281806d0d5632f0f7 Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Mon, 2 May 2016 04:36:34 +0900 Subject: [PATCH] remove repo --- browser/lib/RepositoryManager.js | 21 +++++++++-- browser/main/HomePage/SideNav/Repository.js | 16 ++++++++- browser/main/HomePage/SideNav/index.js | 39 +++------------------ browser/main/actions.js | 10 +++++- browser/main/reducer.js | 18 +++++++--- 5 files changed, 61 insertions(+), 43 deletions(-) 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 = ( - - Preference - - - - -) - -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 }