mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-16 03:06:27 +00:00
on making usernavigator
This commit is contained in:
@@ -1,12 +1,61 @@
|
|||||||
import React, { PropTypes } from 'react'
|
import React, { PropTypes } from 'react'
|
||||||
|
|
||||||
class ArticleNavigator extends React.Component {
|
export default class ArticleNavigator extends React.Component {
|
||||||
render () {
|
render () {
|
||||||
|
let { user } = this.props
|
||||||
|
if (user == null) return (<div className='ArticleNavigator'/>)
|
||||||
|
console.log(user)
|
||||||
|
let folders = user.Folders.map(folder => {
|
||||||
|
return (
|
||||||
|
<button key={'folder-' + folder.id}><i className='fa fa-fw fa-square'/> {folder.name}</button>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
let members = Array.isArray(user.Members) ? user.Members.map(member => {
|
||||||
|
return (
|
||||||
|
<div>{member.profileName}</div>
|
||||||
|
)
|
||||||
|
}) : null
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='ArticleNavigator'>
|
<div className='ArticleNavigator'>
|
||||||
|
<div className='userInfo'>
|
||||||
|
<div className='userProfileName'>{user.profileName}</div>
|
||||||
|
<div className='userName'>{user.name}</div>
|
||||||
|
<i className='fa fa-fw fa-chevron-down'/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='controlSection'>
|
||||||
|
<button className='newPostBtn'>New Post</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='folders'>
|
||||||
|
<div className='foldersHeader'>
|
||||||
|
<div className='folderTitle'>Folders</div>
|
||||||
|
<button className='addFolderBtn'><i className='fa fa-fw fa-plus'/></button>
|
||||||
|
</div>
|
||||||
|
<div className='folderList'>
|
||||||
|
<button>All folders</button>
|
||||||
|
{folders}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{user.userType === 'team' ? (
|
||||||
|
<div className='members'>
|
||||||
|
<div className='header'>
|
||||||
|
<div className='title'></div>
|
||||||
|
</div>
|
||||||
|
<div className='memberList'>
|
||||||
|
{members}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
) : null}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ArticleNavigator
|
ArticleNavigator.propTypes = {
|
||||||
|
user: PropTypes.object
|
||||||
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ export default class UserNavigator extends Component {
|
|||||||
|
|
||||||
// for dev
|
// for dev
|
||||||
componentDidMount () {
|
componentDidMount () {
|
||||||
openModal(CreateNewTeam)
|
// openModal(CreateNewTeam)
|
||||||
}
|
}
|
||||||
|
|
||||||
renderUserList () {
|
renderUserList () {
|
||||||
|
|||||||
@@ -1,8 +1,16 @@
|
|||||||
|
export const PARAMS_CHANGE = 'PARAMS_CHANGE'
|
||||||
export const USER_UPDATE = 'USER_UPDATE'
|
export const USER_UPDATE = 'USER_UPDATE'
|
||||||
|
|
||||||
export function updateUser (user) {
|
export function updateUser (user) {
|
||||||
return {
|
return {
|
||||||
type: 'USER_UPDATE',
|
type: USER_UPDATE,
|
||||||
data: user
|
data: user
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function switchParams (params) {
|
||||||
|
return {
|
||||||
|
type: PARAMS_CHANGE,
|
||||||
|
data: params
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,22 +1,38 @@
|
|||||||
import React, { PropTypes} from 'react'
|
import React, { PropTypes} from 'react'
|
||||||
import { connect } from 'react-redux'
|
import { connect } from 'react-redux'
|
||||||
// import actionss....
|
import { switchParams } 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'
|
||||||
import ArticleList from './Components/ArticleList'
|
import ArticleList from './Components/ArticleList'
|
||||||
import ArticleDetail from './Components/ArticleDetail'
|
import ArticleDetail from './Components/ArticleDetail'
|
||||||
|
import { findWhere } from 'lodash'
|
||||||
|
|
||||||
// var AuthFilter = require('../Mixins/AuthFilter')
|
// var AuthFilter = require('../Mixins/AuthFilter')
|
||||||
// var KeyCaster = require('../Mixins/KeyCaster')
|
// var KeyCaster = require('../Mixins/KeyCaster')
|
||||||
|
|
||||||
class HomeContainer extends React.Component {
|
class HomeContainer extends React.Component {
|
||||||
|
componentDidMount () {
|
||||||
|
const { dispatch, params } = this.props
|
||||||
|
console.log(params)
|
||||||
|
dispatch(switchParams(params))
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillReceiveProps (nextProps) {
|
||||||
|
const { dispatch } = this.props
|
||||||
|
if (nextProps.params.userId !== this.props.params.userId) {
|
||||||
|
let params = nextProps.params
|
||||||
|
dispatch(switchParams(params))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { users } = this.props
|
const { users, user } = this.props
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='HomeContainer'>
|
<div className='HomeContainer'>
|
||||||
<UserNavigator users={users} />
|
<UserNavigator users={users} />
|
||||||
<ArticleNavigator/>
|
<ArticleNavigator user={user}/>
|
||||||
<ArticleTopBar/>
|
<ArticleTopBar/>
|
||||||
<ArticleList/>
|
<ArticleList/>
|
||||||
<ArticleDetail/>
|
<ArticleDetail/>
|
||||||
@@ -30,14 +46,21 @@ function remap (state) {
|
|||||||
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)})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
users
|
users,
|
||||||
|
user
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HomeContainer.propTypes = {
|
HomeContainer.propTypes = {
|
||||||
users: PropTypes.array
|
users: PropTypes.array,
|
||||||
|
user: PropTypes.object,
|
||||||
|
params: PropTypes.shape({
|
||||||
|
userId: PropTypes.string
|
||||||
|
}),
|
||||||
|
dispatch: PropTypes.func
|
||||||
}
|
}
|
||||||
|
|
||||||
export default connect(remap, {})(HomeContainer)
|
export default connect(remap)(HomeContainer)
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import { combineReducers } from 'redux'
|
import { combineReducers } from 'redux'
|
||||||
import { USER_UPDATE } from './actions'
|
import { PARAMS_CHANGE, USER_UPDATE } from './actions'
|
||||||
|
|
||||||
const initialCurrentUser = JSON.parse(localStorage.getItem('currentUser'))
|
const initialCurrentUser = JSON.parse(localStorage.getItem('currentUser'))
|
||||||
|
const initialParams = {}
|
||||||
|
|
||||||
function currentUser (state, action) {
|
function currentUser (state, action) {
|
||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
@@ -10,10 +11,22 @@ function currentUser (state, action) {
|
|||||||
localStorage.setItem('currentUser', JSON.stringify(user))
|
localStorage.setItem('currentUser', JSON.stringify(user))
|
||||||
return user
|
return user
|
||||||
default:
|
default:
|
||||||
return initialCurrentUser
|
if (state == null) return initialCurrentUser
|
||||||
|
return state
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function params (state, action) {
|
||||||
|
switch (action.type) {
|
||||||
|
case PARAMS_CHANGE:
|
||||||
|
return action.data
|
||||||
|
default:
|
||||||
|
if (state == null) return initialParams
|
||||||
|
return state
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default combineReducers({
|
export default combineReducers({
|
||||||
currentUser
|
currentUser,
|
||||||
|
params
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -27,22 +27,22 @@ let routes = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// with Dev
|
// with Dev
|
||||||
// import { compose } from 'redux'
|
import { compose } from 'redux'
|
||||||
// // Redux DevTools store enhancers
|
// Redux DevTools store enhancers
|
||||||
// import { devTools, persistState } from 'redux-devtools'
|
import { devTools, persistState } from 'redux-devtools'
|
||||||
// // React components for Redux DevTools
|
// React components for Redux DevTools
|
||||||
// import { DevTools, DebugPanel, LogMonitor } from 'redux-devtools/lib/react'
|
import { DevTools, DebugPanel, LogMonitor } from 'redux-devtools/lib/react'
|
||||||
|
|
||||||
// let finalCreateStore = compose(devTools(), persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/)))(createStore)
|
let finalCreateStore = compose(devTools(), persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/)))(createStore)
|
||||||
// let store = finalCreateStore(reducer)
|
let store = finalCreateStore(reducer)
|
||||||
// let devEl = (
|
let devEl = (
|
||||||
// <DebugPanel top right bottom>
|
<DebugPanel left right bottom>
|
||||||
// <DevTools store={store} monitor={LogMonitor} />
|
<DevTools store={store} monitor={LogMonitor} />
|
||||||
// </DebugPanel>
|
</DebugPanel>
|
||||||
// )
|
)
|
||||||
|
|
||||||
// On production
|
// On production
|
||||||
let store = createStore(reducer)
|
// let store = createStore(reducer)
|
||||||
|
|
||||||
let el = document.getElementById('content')
|
let el = document.getElementById('content')
|
||||||
|
|
||||||
@@ -51,6 +51,7 @@ React.render((
|
|||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
{() => <Router>{routes}</Router>}
|
{() => <Router>{routes}</Router>}
|
||||||
</Provider>
|
</Provider>
|
||||||
|
{devEl}
|
||||||
</div>
|
</div>
|
||||||
), el, function () {
|
), el, function () {
|
||||||
let loadingCover = document.getElementById('loadingCover')
|
let loadingCover = document.getElementById('loadingCover')
|
||||||
|
|||||||
@@ -35,7 +35,6 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/Rokt33r/codexen-app#readme",
|
"homepage": "https://github.com/Rokt33r/codexen-app#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"babel-core": "^5.8.25",
|
|
||||||
"devicon": "^2.0.0",
|
"devicon": "^2.0.0",
|
||||||
"font-awesome": "^4.3.0",
|
"font-awesome": "^4.3.0",
|
||||||
"fs-jetpack": "^0.7.0",
|
"fs-jetpack": "^0.7.0",
|
||||||
@@ -52,8 +51,7 @@
|
|||||||
"reflux": "^0.2.8",
|
"reflux": "^0.2.8",
|
||||||
"socket.io-client": "^1.3.6",
|
"socket.io-client": "^1.3.6",
|
||||||
"superagent": "^1.2.0",
|
"superagent": "^1.2.0",
|
||||||
"superagent-promise": "^1.0.3",
|
"superagent-promise": "^1.0.3"
|
||||||
"titlebar": "^1.3.0"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"babel-loader": "^5.3.2",
|
"babel-loader": "^5.3.2",
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ module.exports = {
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
new webpack.HotModuleReplacementPlugin(),
|
new webpack.HotModuleReplacementPlugin()
|
||||||
new webpack.NoErrorsPlugin()
|
// new webpack.NoErrorsPlugin()
|
||||||
],
|
],
|
||||||
externals: [
|
externals: [
|
||||||
'socket.io-client',
|
'socket.io-client',
|
||||||
|
|||||||
Reference in New Issue
Block a user