mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 17:56:25 +00:00
CREATE_MODE(1/2)
This commit is contained in:
@@ -1,15 +1,14 @@
|
||||
import React, { PropTypes} from 'react'
|
||||
import { connect } from 'react-redux'
|
||||
import { switchUser } from './actions'
|
||||
import { CREATE_MODE, IDLE_MODE, switchUser } from './actions'
|
||||
import UserNavigator from './HomePage/UserNavigator'
|
||||
import ArticleNavigator from './HomePage/ArticleNavigator'
|
||||
import ArticleTopBar from './HomePage/ArticleTopBar'
|
||||
import ArticleList from './HomePage/ArticleList'
|
||||
import ArticleDetail from './HomePage/ArticleDetail'
|
||||
import { findWhere } from 'lodash'
|
||||
|
||||
// var AuthFilter = require('../Mixins/AuthFilter')
|
||||
// var KeyCaster = require('../Mixins/KeyCaster')
|
||||
import { findWhere, pick } from 'lodash'
|
||||
import keygen from 'boost/keygen'
|
||||
import { NEW } from './actions'
|
||||
|
||||
class HomeContainer extends React.Component {
|
||||
componentDidMount () {
|
||||
@@ -27,15 +26,15 @@ class HomeContainer extends React.Component {
|
||||
}
|
||||
|
||||
render () {
|
||||
const { users, user, status, articles, article } = this.props
|
||||
const { dispatch, status, users, activeUser, articles, activeArticle } = this.props
|
||||
|
||||
return (
|
||||
<div className='HomeContainer'>
|
||||
<UserNavigator users={users} />
|
||||
<ArticleNavigator user={user} status={status}/>
|
||||
<ArticleNavigator dispatch={dispatch} activeUser={activeUser} status={status}/>
|
||||
<ArticleTopBar/>
|
||||
<ArticleList articles={articles} status={status}/>
|
||||
<ArticleDetail user={user} article={article} status={status}/>
|
||||
<ArticleList dispatch={dispatch} articles={articles} status={status} activeArticle={activeArticle}/>
|
||||
<ArticleDetail dispatch={dispatch} activeUser={activeUser} activeArticle={activeArticle} status={status}/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -48,24 +47,48 @@ function remap (state) {
|
||||
let teams = Array.isArray(currentUser.Teams) ? currentUser.Teams : []
|
||||
|
||||
let users = [currentUser, ...teams]
|
||||
let user = findWhere(users, {id: parseInt(status.userId, 10)})
|
||||
if (user == null) user = users[0]
|
||||
let articles = state.articles['team-' + user.id]
|
||||
let article = findWhere(users, {id: status.articleId})
|
||||
if (article == null) article = articles[0]
|
||||
let activeUser = findWhere(users, {id: parseInt(status.userId, 10)})
|
||||
if (activeUser == null) activeUser = users[0]
|
||||
let articles = state.articles['team-' + activeUser.id]
|
||||
let activeArticle = findWhere(users, {id: status.articleId})
|
||||
if (activeArticle == null) activeArticle = articles[0]
|
||||
|
||||
if (status.mode === CREATE_MODE && activeUser.Folders.length > 0) {
|
||||
var newArticle = findWhere(articles, {status: 'NEW'})
|
||||
if (newArticle == null) {
|
||||
newArticle = {
|
||||
id: keygen(),
|
||||
title: '',
|
||||
content: '',
|
||||
mode: 'markdown',
|
||||
Tags: [],
|
||||
User: pick(currentUser, ['email', 'name', 'profileName']),
|
||||
FolderId: activeUser.Folders[0].id,
|
||||
status: NEW
|
||||
}
|
||||
articles.unshift(newArticle)
|
||||
}
|
||||
activeArticle = newArticle
|
||||
} else if (status.mode === CREATE_MODE) {
|
||||
status.mode = IDLE_MODE
|
||||
}
|
||||
if (status.mode !== CREATE_MODE && activeArticle != null && activeArticle.status === NEW) {
|
||||
articles.splice(articles.indexOf(activeArticle), 1)
|
||||
activeArticle = articles[0]
|
||||
}
|
||||
|
||||
return {
|
||||
users,
|
||||
user,
|
||||
activeUser,
|
||||
status,
|
||||
articles,
|
||||
article
|
||||
activeArticle
|
||||
}
|
||||
}
|
||||
|
||||
HomeContainer.propTypes = {
|
||||
users: PropTypes.array,
|
||||
user: PropTypes.object,
|
||||
activeUser: PropTypes.object,
|
||||
params: PropTypes.shape({
|
||||
userId: PropTypes.string
|
||||
}),
|
||||
@@ -74,6 +97,7 @@ HomeContainer.propTypes = {
|
||||
folderId: PropTypes.number
|
||||
}),
|
||||
articles: PropTypes.array,
|
||||
activeArticle: PropTypes.shape(),
|
||||
dispatch: PropTypes.func
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user