mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-14 10:16:26 +00:00
refactor Actions & add logout action
This commit is contained in:
7
browser/main/Actions/AuthActions.js
Normal file
7
browser/main/Actions/AuthActions.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
var Reflux = require('reflux')
|
||||||
|
|
||||||
|
module.exports = Reflux.createActions([
|
||||||
|
'login',
|
||||||
|
'register',
|
||||||
|
'logout'
|
||||||
|
])
|
||||||
11
browser/main/Actions/PlanetActions.js
Normal file
11
browser/main/Actions/PlanetActions.js
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
var Reflux = require('reflux')
|
||||||
|
|
||||||
|
module.exports = Reflux.createActions([
|
||||||
|
'fetchPlanet',
|
||||||
|
'createSnippet',
|
||||||
|
'createBlueprint',
|
||||||
|
'updateSnippet',
|
||||||
|
'updateBlueprint',
|
||||||
|
'destroySnippet',
|
||||||
|
'destroyBlueprint'
|
||||||
|
])
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
var Reflux = require('reflux')
|
|
||||||
|
|
||||||
var fetchPlanet = Reflux.createAction()
|
|
||||||
|
|
||||||
module.exports = fetchPlanet
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
var Reflux = require('reflux')
|
|
||||||
|
|
||||||
var login = Reflux.createAction()
|
|
||||||
|
|
||||||
module.exports = login
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
var Reflux = require('reflux')
|
|
||||||
|
|
||||||
var register = Reflux.createAction()
|
|
||||||
|
|
||||||
module.exports = register
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
var Reflux = require('reflux')
|
|
||||||
|
|
||||||
// Creating an Action
|
|
||||||
var updateSnippet = Reflux.createAction()
|
|
||||||
|
|
||||||
module.exports = updateSnippet
|
|
||||||
@@ -19,6 +19,7 @@ var CodeEditor = React.createClass({
|
|||||||
session.setMode('ace/mode/' + this.props.mode)
|
session.setMode('ace/mode/' + this.props.mode)
|
||||||
session.setUseSoftTabs(true)
|
session.setUseSoftTabs(true)
|
||||||
session.setOption('useWorker', false)
|
session.setOption('useWorker', false)
|
||||||
|
session.setUseWrapMode(true)
|
||||||
|
|
||||||
session.on('change', function (e) {
|
session.on('change', function (e) {
|
||||||
if (this.props.onChange != null) {
|
if (this.props.onChange != null) {
|
||||||
|
|||||||
@@ -15,11 +15,13 @@ var CodeViewer = React.createClass({
|
|||||||
editor.setReadOnly(true)
|
editor.setReadOnly(true)
|
||||||
editor.setTheme('ace/theme/xcode')
|
editor.setTheme('ace/theme/xcode')
|
||||||
editor.setHighlightActiveLine(false)
|
editor.setHighlightActiveLine(false)
|
||||||
|
editor.clearSelection()
|
||||||
|
|
||||||
var session = editor.getSession()
|
var session = editor.getSession()
|
||||||
session.setMode('ace/mode/' + this.props.mode)
|
session.setMode('ace/mode/' + this.props.mode)
|
||||||
session.setUseSoftTabs(true)
|
session.setUseSoftTabs(true)
|
||||||
session.setOption('useWorker', false)
|
session.setOption('useWorker', false)
|
||||||
|
session.setUseWrapMode(true)
|
||||||
|
|
||||||
this.setState({editor: editor})
|
this.setState({editor: editor})
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
var React = require('react/addons')
|
|
||||||
|
|
||||||
module.exports = React.createClass({
|
|
||||||
render: function () {
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
Blueprint Container
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
@@ -3,7 +3,7 @@ var ReactRouter = require('react-router')
|
|||||||
var Link = ReactRouter.Link
|
var Link = ReactRouter.Link
|
||||||
|
|
||||||
var AuthStore = require('../Stores/AuthStore')
|
var AuthStore = require('../Stores/AuthStore')
|
||||||
var login = require('../Actions/login')
|
var AuthActions = require('../Actions/AuthActions')
|
||||||
|
|
||||||
var OnlyGuest = require('../Mixins/OnlyGuest')
|
var OnlyGuest = require('../Mixins/OnlyGuest')
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ module.exports = React.createClass({
|
|||||||
this.unsubscribe()
|
this.unsubscribe()
|
||||||
},
|
},
|
||||||
handleSubmit: function (e) {
|
handleSubmit: function (e) {
|
||||||
login({
|
AuthActions.login({
|
||||||
email: this.state.email,
|
email: this.state.email,
|
||||||
password: this.state.password
|
password: this.state.password
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
var React = require('react/addons')
|
var React = require('react/addons')
|
||||||
var RouteHandler = require('react-router').RouteHandler
|
|
||||||
var ReactRouter = require('react-router')
|
var ReactRouter = require('react-router')
|
||||||
var ModalBase = require('../Components/ModalBase')
|
var ModalBase = require('../Components/ModalBase')
|
||||||
var LaunchModal = require('../Components/LaunchModal')
|
var LaunchModal = require('../Components/LaunchModal')
|
||||||
@@ -8,7 +7,7 @@ var CodeViewer = require('../Components/CodeViewer')
|
|||||||
var AuthStore = require('../Stores/AuthStore')
|
var AuthStore = require('../Stores/AuthStore')
|
||||||
var PlanetStore = require('../Stores/PlanetStore')
|
var PlanetStore = require('../Stores/PlanetStore')
|
||||||
|
|
||||||
var fetchPlanet = require('../Actions/fetchPlanet')
|
var PlanetActions = require('../Actions/PlanetActions')
|
||||||
|
|
||||||
var PlanetHeader = React.createClass({
|
var PlanetHeader = React.createClass({
|
||||||
propTypes: {
|
propTypes: {
|
||||||
@@ -204,7 +203,7 @@ module.exports = React.createClass({
|
|||||||
componentDidMount: function () {
|
componentDidMount: function () {
|
||||||
this.unsubscribe = PlanetStore.listen(this.onFetched)
|
this.unsubscribe = PlanetStore.listen(this.onFetched)
|
||||||
|
|
||||||
fetchPlanet(this.props.params.userName + '/' + this.props.params.planetName)
|
PlanetActions.fetchPlanet(this.props.params.userName + '/' + this.props.params.planetName)
|
||||||
},
|
},
|
||||||
componentWillUnmount: function () {
|
componentWillUnmount: function () {
|
||||||
this.unsubscribe()
|
this.unsubscribe()
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ var ReactRouter = require('react-router')
|
|||||||
var Link = ReactRouter.Link
|
var Link = ReactRouter.Link
|
||||||
|
|
||||||
var AuthStore = require('../Stores/AuthStore')
|
var AuthStore = require('../Stores/AuthStore')
|
||||||
var register = require('../Actions/register')
|
var AuthActions = require('../Actions/AuthActions')
|
||||||
|
|
||||||
var OnlyGuest = require('../Mixins/OnlyGuest')
|
var OnlyGuest = require('../Mixins/OnlyGuest')
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@ module.exports = React.createClass({
|
|||||||
this.unsubscribe()
|
this.unsubscribe()
|
||||||
},
|
},
|
||||||
handleSubmit: function (e) {
|
handleSubmit: function (e) {
|
||||||
register({
|
AuthActions.register({
|
||||||
email: this.state.email,
|
email: this.state.email,
|
||||||
password: this.state.password,
|
password: this.state.password,
|
||||||
name: this.state.name,
|
name: this.state.name,
|
||||||
|
|||||||
@@ -6,10 +6,20 @@ var RouteHandler = ReactRouter.RouteHandler
|
|||||||
var AuthStore = require('../Stores/AuthStore')
|
var AuthStore = require('../Stores/AuthStore')
|
||||||
|
|
||||||
var UserNavigator = React.createClass({
|
var UserNavigator = React.createClass({
|
||||||
|
mixins: [ReactRouter.Navigation],
|
||||||
propTypes: {
|
propTypes: {
|
||||||
currentPlanet: React.PropTypes.object,
|
currentPlanet: React.PropTypes.object,
|
||||||
currentUser: React.PropTypes.object
|
currentUser: React.PropTypes.object
|
||||||
},
|
},
|
||||||
|
componentDidMount: function () {
|
||||||
|
this.unsubscribe = AuthStore.listen(this.onLogout)
|
||||||
|
},
|
||||||
|
componentWillUnmount: function () {
|
||||||
|
this.unsubscribe()
|
||||||
|
},
|
||||||
|
onLogout: function () {
|
||||||
|
this.transitionTo('login')
|
||||||
|
},
|
||||||
render: function () {
|
render: function () {
|
||||||
var planets = this.props.currentUser.Planets.map(function (planet, index) {
|
var planets = this.props.currentUser.Planets.map(function (planet, index) {
|
||||||
return (
|
return (
|
||||||
@@ -50,6 +60,10 @@ module.exports = React.createClass({
|
|||||||
render: function () {
|
render: function () {
|
||||||
var currentPlanetName = this.props.params.planetName
|
var currentPlanetName = this.props.params.planetName
|
||||||
var currentUser = AuthStore.getUser()
|
var currentUser = AuthStore.getUser()
|
||||||
|
|
||||||
|
// user must be logged in
|
||||||
|
if (currentUser == null) return (<div></div>)
|
||||||
|
|
||||||
var currentPlanet = null
|
var currentPlanet = null
|
||||||
currentUser.Planets.some(function (planet) {
|
currentUser.Planets.some(function (planet) {
|
||||||
if (planet.name === currentPlanetName) {
|
if (planet.name === currentPlanetName) {
|
||||||
@@ -58,6 +72,7 @@ module.exports = React.createClass({
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='UserContainer'>
|
<div className='UserContainer'>
|
||||||
<UserNavigator currentPlanet={currentPlanet} currentUser={currentUser}/>
|
<UserNavigator currentPlanet={currentPlanet} currentUser={currentUser}/>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ var React = require('react/addons')
|
|||||||
var ReactRouter = require('react-router')
|
var ReactRouter = require('react-router')
|
||||||
var Link = ReactRouter.Link
|
var Link = ReactRouter.Link
|
||||||
|
|
||||||
|
var AuthActions = require('../Actions/AuthActions')
|
||||||
|
|
||||||
var currentUser = {
|
var currentUser = {
|
||||||
name: 'testcat',
|
name: 'testcat',
|
||||||
email: 'testcat@example.com',
|
email: 'testcat@example.com',
|
||||||
@@ -12,13 +14,18 @@ var UserSettingNavigation = React.createClass({
|
|||||||
propTypes: {
|
propTypes: {
|
||||||
currentUser: React.PropTypes.shape({
|
currentUser: React.PropTypes.shape({
|
||||||
name: React.PropTypes.string
|
name: React.PropTypes.string
|
||||||
})
|
}),
|
||||||
|
current: React.PropTypes.string,
|
||||||
|
changeCurrent: React.PropTypes.func
|
||||||
},
|
},
|
||||||
changeFactory: function (current) {
|
changeFactory: function (current) {
|
||||||
return function () {
|
return function () {
|
||||||
this.props.changeCurrent(current)
|
this.props.changeCurrent(current)
|
||||||
}.bind(this)
|
}.bind(this)
|
||||||
},
|
},
|
||||||
|
logOut: function () {
|
||||||
|
AuthActions.logout()
|
||||||
|
},
|
||||||
render: function () {
|
render: function () {
|
||||||
return (
|
return (
|
||||||
<div className='UserSettingNavigation'>
|
<div className='UserSettingNavigation'>
|
||||||
@@ -39,7 +46,8 @@ var UserSettingMain = React.createClass({
|
|||||||
propTypes: {
|
propTypes: {
|
||||||
currentUser: React.PropTypes.shape({
|
currentUser: React.PropTypes.shape({
|
||||||
name: React.PropTypes.string
|
name: React.PropTypes.string
|
||||||
})
|
}),
|
||||||
|
current: React.PropTypes.string
|
||||||
},
|
},
|
||||||
render: function () {
|
render: function () {
|
||||||
var view
|
var view
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
var Snippet = {}
|
|
||||||
|
|
||||||
var snippets = {
|
|
||||||
myplanet: [
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
callSign: 'alert',
|
|
||||||
description: 'yolo',
|
|
||||||
content: '<div></div>',
|
|
||||||
mode: 'html',
|
|
||||||
createdAt: '2015-06-26T15:10:59.000Z',
|
|
||||||
updatedAt: '2015-06-26T15:10:59.000Z',
|
|
||||||
UserId: 1,
|
|
||||||
Tags: [{'id': 18, 'name': 'bootstrap', 'color': null}, {'id': 19, 'name': 'alert', 'color': null}]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
callSign: 'log',
|
|
||||||
description: 'javascript log',
|
|
||||||
content: 'console.log(\'yolo\')',
|
|
||||||
mode: 'javascript',
|
|
||||||
createdAt: '2015-06-26T15:10:59.000Z',
|
|
||||||
updatedAt: '2015-06-26T15:10:59.000Z',
|
|
||||||
UserId: 1,
|
|
||||||
Tags: [{'id': 20, 'name': 'log', 'color': null}, {'id': 1, 'name': 'js', 'color': null}]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
group1: [],
|
|
||||||
group2: []
|
|
||||||
}
|
|
||||||
|
|
||||||
Snippet.getByPlanet = function (planetName) {
|
|
||||||
return new Promise(function (resolve, reject) {
|
|
||||||
resolve(snippets[planetName])
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = Snippet
|
|
||||||
@@ -2,13 +2,13 @@
|
|||||||
var Reflux = require('reflux')
|
var Reflux = require('reflux')
|
||||||
var request = require('superagent')
|
var request = require('superagent')
|
||||||
|
|
||||||
var login = require('../Actions/login')
|
var AuthActions = require('../Actions/AuthActions')
|
||||||
var register = require('../Actions/register')
|
|
||||||
|
|
||||||
var AuthStore = Reflux.createStore({
|
var AuthStore = Reflux.createStore({
|
||||||
init: function () {
|
init: function () {
|
||||||
this.listenTo(login, this.login)
|
this.listenTo(AuthActions.login, this.login)
|
||||||
this.listenTo(register, this.register)
|
this.listenTo(AuthActions.register, this.register)
|
||||||
|
this.listenTo(AuthActions.logout, this.logout)
|
||||||
},
|
},
|
||||||
// Reflux Store
|
// Reflux Store
|
||||||
login: function (input) {
|
login: function (input) {
|
||||||
@@ -49,6 +49,12 @@ var AuthStore = Reflux.createStore({
|
|||||||
this.trigger(user)
|
this.trigger(user)
|
||||||
}.bind(this))
|
}.bind(this))
|
||||||
},
|
},
|
||||||
|
logout: function () {
|
||||||
|
localStorage.removeItem('token')
|
||||||
|
localStorage.removeItem('user')
|
||||||
|
|
||||||
|
this.trigger()
|
||||||
|
},
|
||||||
// Methods
|
// Methods
|
||||||
check: function () {
|
check: function () {
|
||||||
if (localStorage.getItem('token')) return true
|
if (localStorage.getItem('token')) return true
|
||||||
|
|||||||
@@ -1,18 +1,12 @@
|
|||||||
var Reflux = require('reflux')
|
var Reflux = require('reflux')
|
||||||
var request = require('superagent')
|
var request = require('superagent')
|
||||||
|
|
||||||
var fetchPlanet = require('../Actions/fetchPlanet')
|
var PlanetActions = require('../Actions/PlanetActions')
|
||||||
|
|
||||||
var updateSnippet = require('../Actions/updateSnippet')
|
|
||||||
var fetchSnippets = require('../Actions/fetchSnippets')
|
|
||||||
|
|
||||||
var PlanetStore = Reflux.createStore({
|
var PlanetStore = Reflux.createStore({
|
||||||
init: function () {
|
init: function () {
|
||||||
// this.listenTo(updateSnippet, this.updateSnippet)
|
this.listenTo(PlanetActions.fetchPlanet, this.fetchPlanet)
|
||||||
// this.listenTo(fetchSnippets, this.fetchSnippets)
|
|
||||||
this.listenTo(fetchPlanet, this.fetchPlanet)
|
|
||||||
},
|
},
|
||||||
// planetName = user.name/planet.name
|
|
||||||
fetchPlanet: function (planetName) {
|
fetchPlanet: function (planetName) {
|
||||||
request
|
request
|
||||||
.get('http://localhost:8000/' + planetName)
|
.get('http://localhost:8000/' + planetName)
|
||||||
|
|||||||
@@ -29,15 +29,17 @@
|
|||||||
.btn-primary, .btn-default
|
.btn-primary, .btn-default
|
||||||
margin 0
|
margin 0
|
||||||
border-radius 0
|
border-radius 0
|
||||||
|
border-width 1px
|
||||||
&:nth-child(1)
|
&:nth-child(1)
|
||||||
border-top-left-radius 10px
|
border-top-left-radius 10px
|
||||||
border-bottom-left-radius 10px
|
border-bottom-left-radius 10px
|
||||||
|
border-right solid 1px borderColor
|
||||||
&:nth-child(2)
|
&:nth-child(2)
|
||||||
border-left 0
|
border-left none
|
||||||
border-top-right-radius 10px
|
border-top-right-radius 10px
|
||||||
border-bottom-right-radius 10px
|
border-bottom-right-radius 10px
|
||||||
|
|
||||||
.ace_editor
|
.ace_editor
|
||||||
height 300px
|
height 250px
|
||||||
border-radius 10px
|
border-radius 5px
|
||||||
border solid 1px borderColor
|
border solid 1px borderColor
|
||||||
|
|||||||
Reference in New Issue
Block a user