1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-17 19:51:42 +00:00

set app status

This commit is contained in:
Rokt33r
2015-10-13 02:49:59 +09:00
parent cd94c625a7
commit 5356e68b51
4 changed files with 50 additions and 25 deletions

View File

@@ -1,14 +1,18 @@
import React, { PropTypes } from 'react' import React, { PropTypes } from 'react'
import ProfileImage from '../../components/ProfileImage' import ProfileImage from '../../components/ProfileImage'
import { findWhere } from 'lodash'
export default class ArticleNavigator extends React.Component { export default class ArticleNavigator extends React.Component {
render () { render () {
let { user } = this.props let { user, status } = this.props
if (user == null) return (<div className='ArticleNavigator'/>) if (user == null) return (<div className='ArticleNavigator'/>)
console.log(user) console.log(user.Folders)
let activeFolder = findWhere(user.Folders, {id: status.folderId})
let folders = user.Folders.map(folder => { let folders = user.Folders.map(folder => {
return ( return (
<button key={'folder-' + folder.id}><i className='fa fa-fw fa-square'/> {folder.name}</button> <button key={'folder-' + folder.id} className={activeFolder != null && activeFolder.id === folder.id ? 'active' : ''}><i className='fa fa-fw fa-square'/> {folder.name}</button>
) )
}) })
@@ -41,7 +45,7 @@ export default class ArticleNavigator extends React.Component {
<button className='addBtn'><i className='fa fa-fw fa-plus'/></button> <button className='addBtn'><i className='fa fa-fw fa-plus'/></button>
</div> </div>
<div className='folderList'> <div className='folderList'>
<button>All folders</button> <button className={activeFolder == null ? 'active' : ''}>All folders</button>
{folders} {folders}
</div> </div>
</div> </div>

View File

@@ -1,5 +1,6 @@
export const PARAMS_CHANGE = 'PARAMS_CHANGE'
export const USER_UPDATE = 'USER_UPDATE' export const USER_UPDATE = 'USER_UPDATE'
export const SWITCH_USER = 'SWITCH_USER'
export const SWITCH_FOLDER = 'SWITCH_FOLDER'
export function updateUser (user) { export function updateUser (user) {
return { return {
@@ -8,9 +9,16 @@ export function updateUser (user) {
} }
} }
export function switchParams (params) { export function switchUser (userId) {
return { return {
type: PARAMS_CHANGE, type: SWITCH_USER,
data: params data: userId
}
}
export function switchFolder (folderId) {
return {
type: SWITCH_FOLDER,
data: folderId
} }
} }

View File

@@ -1,6 +1,6 @@
import React, { PropTypes} from 'react' import React, { PropTypes} from 'react'
import { connect } from 'react-redux' import { connect } from 'react-redux'
import { switchParams } from './actions' import { switchUser } from './actions'
import UserNavigator from './Components/UserNavigator' import UserNavigator from './Components/UserNavigator'
import ArticleNavigator from './Components/ArticleNavigator' import ArticleNavigator from './Components/ArticleNavigator'
import ArticleTopBar from './Components/ArticleTopBar' import ArticleTopBar from './Components/ArticleTopBar'
@@ -13,26 +13,26 @@ import { findWhere } from 'lodash'
class HomeContainer extends React.Component { class HomeContainer extends React.Component {
componentDidMount () { componentDidMount () {
const { dispatch, params } = this.props const { dispatch } = this.props
console.log(params)
dispatch(switchParams(params)) dispatch(switchUser(this.props.params.userId))
} }
componentWillReceiveProps (nextProps) { componentWillReceiveProps (nextProps) {
const { dispatch } = this.props const { dispatch, status } = this.props
if (nextProps.params.userId !== this.props.params.userId) {
let params = nextProps.params if (nextProps.params.userId !== status.userId) {
dispatch(switchParams(params)) dispatch(switchUser(nextProps.params.userId))
} }
} }
render () { render () {
const { users, user } = this.props const { users, user, status } = this.props
return ( return (
<div className='HomeContainer'> <div className='HomeContainer'>
<UserNavigator users={users} /> <UserNavigator users={users} />
<ArticleNavigator user={user}/> <ArticleNavigator user={user} status={status}/>
<ArticleTopBar/> <ArticleTopBar/>
<ArticleList/> <ArticleList/>
<ArticleDetail/> <ArticleDetail/>
@@ -42,15 +42,18 @@ class HomeContainer extends React.Component {
} }
function remap (state) { function remap (state) {
let status = state.status
let currentUser = state.currentUser let currentUser = state.currentUser
let teams = Array.isArray(currentUser.Teams) ? currentUser.Teams : [] let teams = Array.isArray(currentUser.Teams) ? currentUser.Teams : []
let users = [currentUser, ...teams] let users = [currentUser, ...teams]
let user = findWhere(users, {id: parseInt(state.params.userId, 10)}) let user = findWhere(users, {id: parseInt(status.userId, 10)})
return { return {
users, users,
user user,
status
} }
} }
@@ -60,6 +63,10 @@ HomeContainer.propTypes = {
params: PropTypes.shape({ params: PropTypes.shape({
userId: PropTypes.string userId: PropTypes.string
}), }),
status: PropTypes.shape({
userId: PropTypes.string,
folderId: PropTypes.number
}),
dispatch: PropTypes.func dispatch: PropTypes.func
} }

View File

@@ -1,5 +1,5 @@
import { combineReducers } from 'redux' import { combineReducers } from 'redux'
import { PARAMS_CHANGE, USER_UPDATE } from './actions' import { SWITCH_USER, SWITCH_FOLDER, USER_UPDATE } from './actions'
const initialCurrentUser = JSON.parse(localStorage.getItem('currentUser')) const initialCurrentUser = JSON.parse(localStorage.getItem('currentUser'))
const initialParams = {} const initialParams = {}
@@ -16,10 +16,16 @@ function currentUser (state, action) {
} }
} }
function params (state, action) { function status (state, action) {
switch (action.type) { switch (action.type) {
case PARAMS_CHANGE: case SWITCH_USER:
return action.data state.userId = action.data
console.log(action)
state.folderId = null
return state
case SWITCH_FOLDER:
state.folderId = action.data
return state
default: default:
if (state == null) return initialParams if (state == null) return initialParams
return state return state
@@ -28,5 +34,5 @@ function params (state, action) {
export default combineReducers({ export default combineReducers({
currentUser, currentUser,
params status
}) })