diff --git a/.gitignore b/.gitignore index ca1bab2e..ee5430eb 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules/* !node_modules/boost Boost-darwin-x64/ backup/ +compiled diff --git a/browser/main/HomePage.js b/browser/main/HomePage.js index f9abf00d..fc88883f 100644 --- a/browser/main/HomePage.js +++ b/browser/main/HomePage.js @@ -10,7 +10,7 @@ import { findWhere, findIndex, pick } from 'lodash' import keygen from 'boost/keygen' import api from 'boost/api' import auth from 'boost/auth' -import 'boost/socket' +import io from 'boost/socket' class HomePage extends React.Component { componentDidMount () { @@ -19,7 +19,8 @@ class HomePage extends React.Component { dispatch(switchUser(this.props.params.userId)) let currentUser = auth.user() - let users = [currentUser].concat(currentUser.Teams) + + let users = currentUser.Teams != null ? [currentUser].concat(currentUser.Teams) : [currentUser] users.forEach(user => { api.fetchArticles(user.id) .then(res => { @@ -30,6 +31,11 @@ class HomePage extends React.Component { console.error(err) }) }) + + let token = auth.token() + if (token != null) { + io.emit('JOIN', {token}) + } } componentWillReceiveProps (nextProps) { diff --git a/browser/main/HomePage/ArticleDetail.js b/browser/main/HomePage/ArticleDetail.js index 2a8e509f..310b78ac 100644 --- a/browser/main/HomePage/ArticleDetail.js +++ b/browser/main/HomePage/ArticleDetail.js @@ -167,6 +167,7 @@ export default class ArticleDetail extends React.Component { api.createArticle(article) .then(res => { + console.log('saved as new') console.log(res.body) }) .catch(err => { @@ -196,6 +197,7 @@ export default class ArticleDetail extends React.Component { api.saveArticle(article) .then(res => { + console.log('saved') console.log(res.body) }) .catch(err => { diff --git a/browser/main/HomePage/ArticleList.js b/browser/main/HomePage/ArticleList.js index a9657a03..84e6753b 100644 --- a/browser/main/HomePage/ArticleList.js +++ b/browser/main/HomePage/ArticleList.js @@ -15,6 +15,7 @@ export default class ArticleList extends React.Component { render () { let { articles, activeArticle } = this.props + console.log(articles) let articlesEl = articles.map(article => { let tags = Array.isArray(article.Tags) && article.Tags.length > 0 diff --git a/browser/main/HomePage/ArticleNavigator.js b/browser/main/HomePage/ArticleNavigator.js index ee8ffc14..963222fa 100644 --- a/browser/main/HomePage/ArticleNavigator.js +++ b/browser/main/HomePage/ArticleNavigator.js @@ -8,9 +8,9 @@ import Preferences from 'boost/components/modal/Preferences' import CreateNewFolder from 'boost/components/modal/CreateNewFolder' export default class ArticleNavigator extends React.Component { - componentDidMount () { - this.handlePreferencesButtonClick() - } + // componentDidMount () { + // this.handlePreferencesButtonClick() + // } handlePreferencesButtonClick (e) { openModal(Preferences) diff --git a/browser/main/HomePage/UserNavigator.js b/browser/main/HomePage/UserNavigator.js index ab9cbd7b..adf784b4 100644 --- a/browser/main/HomePage/UserNavigator.js +++ b/browser/main/HomePage/UserNavigator.js @@ -15,6 +15,8 @@ export default class UserNavigator extends Component { } renderUserList () { + if (this.props.users == null) return null + var users = this.props.users.map((user, index) => (
  • diff --git a/browser/main/SignupPage.js b/browser/main/SignupPage.js index 0f3a31e5..5665b3ad 100644 --- a/browser/main/SignupPage.js +++ b/browser/main/SignupPage.js @@ -3,6 +3,7 @@ import { Link } from 'react-router' import linkState from 'boost/linkState' import openExternal from 'boost/openExternal' import { signup } from 'boost/api' +import auth from 'boost/auth' export default class SignupContainer extends React.Component { constructor (props) { @@ -27,8 +28,8 @@ export default class SignupContainer extends React.Component { }, function () { signup(this.state.user) .then(res => { - localStorage.setItem('token', res.body.token) - localStorage.setItem('currentUser', JSON.stringify(res.body.user)) + let { user, token } = res.body + auth.user(user, token) this.props.history.pushState('home') }) @@ -42,8 +43,7 @@ export default class SignupContainer extends React.Component { }, isSending: false }) - } - else if (err.status != null) { + } else if (err.status != null) { return this.setState({ error: { name: err.response.body.name, diff --git a/browser/main/index.html b/browser/main/index.html index 81f0282b..f30efb87 100644 --- a/browser/main/index.html +++ b/browser/main/index.html @@ -56,14 +56,15 @@ + + diff --git a/config.js b/config.js index 4dc15e99..002fe929 100644 --- a/config.js +++ b/config.js @@ -1,2 +1,3 @@ -export const API_URL = 'http://localhost:8000/' +// export const API_URL = 'http://localhost:8000/' +export const API_URL = 'http://boost-api4.elasticbeanstalk.com/' // export API_URL 'https://api2.b00st.io/' diff --git a/lib/ace-modes.js b/lib/ace-modes.js index 8a596214..98cc119d 100644 --- a/lib/ace-modes.js +++ b/lib/ace-modes.js @@ -1,6 +1,10 @@ var fs = require('fs') var path = require('path') -var url = path.resolve(process.cwd(), './submodules/ace/src-min') + +var rootUrl = process.cwd() +if (rootUrl === '/') rootUrl = require('remote').require('app').getAppPath() +var url = path.resolve(rootUrl, './submodules/ace/src-min') +console.log(url) module.exports = fs.readdirSync(url) .filter(function (file) { diff --git a/lib/reducer.js b/lib/reducer.js index 5cee48a6..9ce652cd 100644 --- a/lib/reducer.js +++ b/lib/reducer.js @@ -81,8 +81,12 @@ function articles (state, action) { let articles = JSON.parse(localStorage.getItem(teamKey)) let targetIndex = findIndex(articles, _article => article.key === _article.key) + console.log('before') + console.log(articles) if (targetIndex < 0) articles.unshift(article) else articles.splice(targetIndex, 1, article) + console.log('after') + console.log(articles) localStorage.setItem(teamKey, JSON.stringify(articles)) state[teamKey] = articles diff --git a/lib/store.js b/lib/store.js index f5ac1d3a..8824d3b9 100644 --- a/lib/store.js +++ b/lib/store.js @@ -1,20 +1,26 @@ -import React from 'react' import reducer from './reducer' import { createStore } from 'redux' -// Devtools -import { compose } from 'redux' -import { devTools, persistState } from 'redux-devtools' -import { DevTools, DebugPanel, LogMonitor } from 'redux-devtools/lib/react' +// import React from 'react' +// import { compose } from 'redux' +// import { devTools, persistState } from 'redux-devtools' +// import { DevTools, DebugPanel, LogMonitor } from 'redux-devtools/lib/react' -let finalCreateStore = compose(devTools(), persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/)))(createStore) -let store = finalCreateStore(reducer) +console.log(process.env) -export let devToolElement = ( - - - -) +var store, devToolEl +// if (process.env.NODE_ENV !== 'production') { +// let finalCreateStore = compose(devTools(), persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/)))(createStore) +// let store = finalCreateStore(reducer) -// let store = createStore(reducer) +// devToolEl = ( +// +// +// +// ) +// } else { +// } +devToolEl = null +store = createStore(reducer) +export let devToolElement = devToolEl export default store diff --git a/package.json b/package.json index 7640f630..af2588d0 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,9 @@ "scripts": { "start": "electron ./main.js", "webpack": "webpack-dev-server --inline", - "build": "electron-packager ./ Boost $npm_package_config_platform $npm_package_config_version $npm_package_config_ignore --overwrite" + "compile": "NODE_ENV=production webpack --config webpack.config.production.js", + "build": "electron-packager ./ Boost $npm_package_config_platform $npm_package_config_version $npm_package_config_ignore --overwrite", + "codesign": "codesign --verbose --deep --force --sign \"MAISIN solutions Inc.\" Boost-darwin-x64/Boost.app" }, "config": { "version": "--version=0.33.0 --app-version=$npm_package_version --app-bundle-id=com.maisin.boost", diff --git a/webpack.config.js b/webpack.config.js index e711ec55..42f22ef1 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -25,8 +25,8 @@ module.exports = { ] }, plugins: [ - new webpack.HotModuleReplacementPlugin() - // new webpack.NoErrorsPlugin() + new webpack.HotModuleReplacementPlugin(), + new webpack.NoErrorsPlugin() ], externals: [ 'socket.io-client', diff --git a/webpack.config.production.js b/webpack.config.production.js new file mode 100644 index 00000000..54c9217f --- /dev/null +++ b/webpack.config.production.js @@ -0,0 +1,67 @@ +var webpack = require('webpack') +module.exports = { + devtool: 'source-map', + entry: { + main: './browser/main/index.js' + }, + output: { + path: 'compiled', + filename: '[name].js', + sourceMapFilename: '[name].map', + publicPath: 'http://localhost:8090/assets', + libraryTarget: 'commonjs2' + }, + module: { + loaders: [ + { + test: /(\.js|\.jsx)?$/, + exclude: /(node_modules|bower_components)/, + loader: 'babel' + }, + { + test: /\.styl?$/, + exclude: /(node_modules|bower_components)/, + loader: 'style-loader!css-loader!stylus-loader' + } + ] + }, + plugins: [ + new webpack.optimize.OccurenceOrderPlugin(), + new webpack.DefinePlugin({ + 'process.env': { + 'NODE_ENV': JSON.stringify('production'), + 'BABEL_ENV': JSON.stringify('production') + } + }) + // new webpack.optimize.UglifyJsPlugin({ + // compressor: { + // warnings: false + // } + // }) + ], + externals: [ + 'socket.io-client', + 'md5', + 'superagent', + 'superagent-promise', + // 'react', + // 'redux', + // 'react-redux', + // 'react-router', + 'lodash', + // 'redbox-react', + // 'react-transform-hmr', + // 'react-transform-catch-errors', + // 'redux-devtools', + // 'redux-devtools/lib/react', + // 'react-select', + 'markdown-it', + 'moment', + 'fs', + 'path' + ], + resolve: { + extensions: ['', '.js', '.jsx', 'styl'] + }, + target: 'atom' +}