From 812170bc6def1f3e8fd1e0933b270f1076d1ca86 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Thu, 8 Jun 2017 14:51:42 +0200 Subject: [PATCH 01/30] add dummy login screen --- app.js | 1 + elements/header.js | 5 +++-- elements/login.js | 29 +++++++++++++++++++++++++++++ models/user.js | 14 ++++++++++++++ pages/main.js | 15 ++++++++++++++- 5 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 elements/login.js create mode 100644 models/user.js diff --git a/app.js b/app.js index 96fb1f1b..e40999ad 100644 --- a/app.js +++ b/app.js @@ -28,6 +28,7 @@ app.use(require('./models/intro')) app.use(require('./models/download')) app.use(require('./models/drag-drop')) app.use(require('./models/dats')) +app.use(require('./models/user')) app.use(require('./models/error')) app.route('/', require('./pages/main')) diff --git a/elements/header.js b/elements/header.js index 91c6888e..e0748f5e 100644 --- a/elements/header.js +++ b/elements/header.js @@ -42,7 +42,7 @@ function HeaderElement () { return component function render () { - var { isReady, onimport, oncreate, onreport } = this.props + var { isReady, onimport, oncreate, onreport, onlogin } = this.props var { showMenu, willShowMenu } = this.state if (typeof willShowMenu === 'boolean') { @@ -66,7 +66,8 @@ function HeaderElement () { }) var loginButton = button.header('Log In', { - class: 'ml3 v-mid color-neutral-30 hover-color-white f7 f6-l dn' + class: 'ml3 v-mid color-neutral-30 hover-color-white f7 f6-l', + onclick: onlogin }) var menuButton = button.icon('Open Menu', { diff --git a/elements/login.js b/elements/login.js new file mode 100644 index 00000000..6153db2f --- /dev/null +++ b/elements/login.js @@ -0,0 +1,29 @@ +var microcomponent = require('microcomponent') +var html = require('choo/html') + +module.exports = function () { + var component = microcomponent({ + name: 'login' + }) + component.on('render', render) + component.on('update', update) + return component + + function render () { + return html` +
+
+ + + + + +
+
+ ` + } + + function update () { + return false + } +} diff --git a/models/user.js b/models/user.js new file mode 100644 index 00000000..3af25a42 --- /dev/null +++ b/models/user.js @@ -0,0 +1,14 @@ +var xtend = Object.assign + +module.exports = userModel + +function userModel (state, bus) { + state.user = xtend(state.user || {}, { + showLogin: false + }) + + bus.on('user:login', function () { + state.user.showLogin = true + bus.emit('render') + }) +} diff --git a/pages/main.js b/pages/main.js index 140b93f6..057d1bee 100644 --- a/pages/main.js +++ b/pages/main.js @@ -9,6 +9,7 @@ const Table = require('../elements/table') const Intro = require('../elements/intro') const Empty = require('../elements/empty') const Download = require('../elements/download') +const Login = require('../elements/login') module.exports = mainView @@ -16,6 +17,7 @@ const header = Header() const sprite = Sprite() const download = Download() const intro = Intro() +const login = Login() // render the main view // (obj, obj, fn) -> html @@ -28,7 +30,8 @@ function mainView (state, emit) { isReady: isReady, oncreate: () => emit('dats:create'), onimport: (link) => emit('dats:download', link), - onreport: () => shell.openExternal('https://github.com/datproject/dat-desktop/issues') + onreport: () => shell.openExternal('https://github.com/datproject/dat-desktop/issues'), + onlogin: () => emit('user:login') } document.title = 'Dat Desktop' @@ -72,6 +75,16 @@ function mainView (state, emit) { ` } + if (state.user.showLogin) { + return html` +
+ ${sprite.render()} + ${header.render(headerProps)} + ${login.render()} +
+ ` + } + if (!dats.length) { return html`
From b44bac9f108d14905ab0365edcbc8588d277bca4 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Thu, 8 Jun 2017 15:05:37 +0200 Subject: [PATCH 02/30] submit login info to registry --- elements/login.js | 19 +++++++++++++++---- models/user.js | 9 +++++++++ package.json | 1 + pages/main.js | 6 +++++- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/elements/login.js b/elements/login.js index 6153db2f..68081948 100644 --- a/elements/login.js +++ b/elements/login.js @@ -10,12 +10,23 @@ module.exports = function () { return component function render () { + var { onlogin } = this.props + + function onsubmit (ev) { + ev.preventDefault() + var data = new FormData(ev.target) + onlogin({ + email: data.get('email'), + password: data.get('password') + }) + } + return html`
-
- - - + + + +
diff --git a/models/user.js b/models/user.js index 3af25a42..aabf4ca9 100644 --- a/models/user.js +++ b/models/user.js @@ -1,5 +1,8 @@ +var Registry = require('dat-registry') var xtend = Object.assign +var registry = Registry() + module.exports = userModel function userModel (state, bus) { @@ -11,4 +14,10 @@ function userModel (state, bus) { state.user.showLogin = true bus.emit('render') }) + + bus.on('user:login!', function (data) { + registry.login(data, function (err, user) { + console.log({ err, user }) + }) + }) } diff --git a/package.json b/package.json index 2897427e..0ceba161 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "dat-encoding": "^4.0.1", "dat-icons": "^2.2.0", "dat-node": "^3.2.3", + "dat-registry": "^3.0.2", "delegate-electron-events": "github:juliangruber/delegate-electron-events#fix/missing-events", "electron-auto-updater": "^0.9.2", "electron-default-menu": "^1.0.0", diff --git a/pages/main.js b/pages/main.js index 057d1bee..9de50bbd 100644 --- a/pages/main.js +++ b/pages/main.js @@ -80,7 +80,11 @@ function mainView (state, emit) {
${sprite.render()} ${header.render(headerProps)} - ${login.render()} + ${login.render({ + onlogin: data => { + emit('user:login!', data) + } + })}
` } From 2a78535d14b5da6a162725d37d68629af26656df Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Thu, 8 Jun 2017 15:12:16 +0200 Subject: [PATCH 03/30] display login errors --- elements/login.js | 32 +++++++++++++++++++++----------- models/user.js | 8 +++++++- pages/main.js | 3 ++- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/elements/login.js b/elements/login.js index 68081948..21fff98d 100644 --- a/elements/login.js +++ b/elements/login.js @@ -3,38 +3,48 @@ var html = require('choo/html') module.exports = function () { var component = microcomponent({ - name: 'login' + name: 'login', + state: { + email: '', + password: '' + } }) component.on('render', render) component.on('update', update) return component function render () { - var { onlogin } = this.props + var { onlogin, error } = this.props + var { email, password } = this.state function onsubmit (ev) { ev.preventDefault() var data = new FormData(ev.target) - onlogin({ - email: data.get('email'), - password: data.get('password') - }) + var email = data.get('email') + var password = data.get('password') + onlogin({ email, password }) + Object.assign(component.state, { email, password }) } return html`
- - - + + +
+ ${error + ? html` +
Error! ${error.message}
+ ` + : ''}
` } - function update () { - return false + function update (props) { + return props.error !== this.props.error } } diff --git a/models/user.js b/models/user.js index aabf4ca9..a12d5d20 100644 --- a/models/user.js +++ b/models/user.js @@ -7,7 +7,8 @@ module.exports = userModel function userModel (state, bus) { state.user = xtend(state.user || {}, { - showLogin: false + showLogin: false, + loginError: null }) bus.on('user:login', function () { @@ -17,6 +18,11 @@ function userModel (state, bus) { bus.on('user:login!', function (data) { registry.login(data, function (err, user) { + if (err) { + state.user.loginError = err + bus.emit('render') + return + } console.log({ err, user }) }) }) diff --git a/pages/main.js b/pages/main.js index 9de50bbd..6846a63d 100644 --- a/pages/main.js +++ b/pages/main.js @@ -83,7 +83,8 @@ function mainView (state, emit) { ${login.render({ onlogin: data => { emit('user:login!', data) - } + }, + error: state.user.loginError })}
` From de21b74d69ca5d4a937b79b30218647aef4647ec Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Thu, 8 Jun 2017 15:26:38 +0200 Subject: [PATCH 04/30] add basic register screen --- elements/login.js | 4 ++-- elements/register.js | 52 ++++++++++++++++++++++++++++++++++++++++++++ models/user.js | 22 ++++++++++++++++--- pages/main.js | 25 ++++++++++++++++++++- 4 files changed, 97 insertions(+), 6 deletions(-) create mode 100644 elements/register.js diff --git a/elements/login.js b/elements/login.js index 21fff98d..dc54bd8b 100644 --- a/elements/login.js +++ b/elements/login.js @@ -14,7 +14,7 @@ module.exports = function () { return component function render () { - var { onlogin, error } = this.props + var { onlogin, onregister, error } = this.props var { email, password } = this.state function onsubmit (ev) { @@ -33,7 +33,7 @@ module.exports = function () { - + ${error ? html` diff --git a/elements/register.js b/elements/register.js new file mode 100644 index 00000000..629b4af2 --- /dev/null +++ b/elements/register.js @@ -0,0 +1,52 @@ +var microcomponent = require('microcomponent') +var html = require('choo/html') + +module.exports = function () { + var component = microcomponent({ + name: 'register', + state: { + username: '', + email: '', + password: '' + } + }) + component.on('render', render) + component.on('update', update) + return component + + function render () { + var { onregister, onlogin, error } = this.props + var { username, email, password } = this.state + + function onsubmit (ev) { + ev.preventDefault() + var data = new FormData(ev.target) + var username = data.get('username') + var email = data.get('email') + var password = data.get('password') + onregister({ username, email, password }) + Object.assign(component.state, { username, email, password }) + } + + return html` +
+
+ + + + + +
+ ${error + ? html` +
Error! ${error.message}
+ ` + : ''} +
+ ` + } + + function update (props) { + return props.error !== this.props.error + } +} diff --git a/models/user.js b/models/user.js index a12d5d20..1b429861 100644 --- a/models/user.js +++ b/models/user.js @@ -7,12 +7,13 @@ module.exports = userModel function userModel (state, bus) { state.user = xtend(state.user || {}, { - showLogin: false, - loginError: null + show: null, + loginError: null, + registerError: null }) bus.on('user:login', function () { - state.user.showLogin = true + state.user.show = 'login' bus.emit('render') }) @@ -26,4 +27,19 @@ function userModel (state, bus) { console.log({ err, user }) }) }) + + bus.on('user:register', function () { + state.user.show = 'register' + bus.emit('render') + }) + + bus.on('user:register!', function (data) { + registry.register(data, function (err, user) { + if (err) { + state.user.registerError = err + bus.emit('render') + return + } + }) + }) } diff --git a/pages/main.js b/pages/main.js index 6846a63d..85631d46 100644 --- a/pages/main.js +++ b/pages/main.js @@ -10,6 +10,7 @@ const Intro = require('../elements/intro') const Empty = require('../elements/empty') const Download = require('../elements/download') const Login = require('../elements/login') +const Register = require('../elements/register') module.exports = mainView @@ -18,6 +19,7 @@ const sprite = Sprite() const download = Download() const intro = Intro() const login = Login() +const register = Register() // render the main view // (obj, obj, fn) -> html @@ -75,7 +77,7 @@ function mainView (state, emit) { ` } - if (state.user.showLogin) { + if (state.user.show === 'login') { return html`
${sprite.render()} @@ -84,12 +86,33 @@ function mainView (state, emit) { onlogin: data => { emit('user:login!', data) }, + onregister: () => { + emit('user:register') + }, error: state.user.loginError })}
` } + if (state.user.show === 'register') { + return html` +
+ ${sprite.render()} + ${header.render(headerProps)} + ${register.render({ + onregister: data => { + emit('user:register!', data) + }, + onlogin: () => { + emit('user:login') + }, + error: state.user.registerError + })} +
+ ` + } + if (!dats.length) { return html`
From f8d3ac24faee03303e7bacf277ce65dc7bb26c5d Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Thu, 8 Jun 2017 15:28:37 +0200 Subject: [PATCH 05/30] standard --- elements/login.js | 3 ++- elements/register.js | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/elements/login.js b/elements/login.js index dc54bd8b..5c9d9c47 100644 --- a/elements/login.js +++ b/elements/login.js @@ -1,5 +1,6 @@ var microcomponent = require('microcomponent') var html = require('choo/html') +var FormData = window.FormData module.exports = function () { var component = microcomponent({ @@ -41,7 +42,7 @@ module.exports = function () { ` : ''}
- ` + ` } function update (props) { diff --git a/elements/register.js b/elements/register.js index 629b4af2..e0dafc53 100644 --- a/elements/register.js +++ b/elements/register.js @@ -1,5 +1,6 @@ var microcomponent = require('microcomponent') var html = require('choo/html') +var FormData = window.FormData module.exports = function () { var component = microcomponent({ @@ -43,7 +44,7 @@ module.exports = function () { ` : ''}
- ` + ` } function update (props) { From b42711e82e2b2e46354f084bebdc8927a51bccd4 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Thu, 8 Jun 2017 15:33:35 +0200 Subject: [PATCH 06/30] login and register work --- models/user.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/models/user.js b/models/user.js index 1b429861..32d6c6b6 100644 --- a/models/user.js +++ b/models/user.js @@ -18,13 +18,15 @@ function userModel (state, bus) { }) bus.on('user:login!', function (data) { - registry.login(data, function (err, user) { + registry.login(data, function (err, res, body) { if (err) { state.user.loginError = err bus.emit('render') return } - console.log({ err, user }) + state.user.show = null + state.user.account = body + bus.emit('render') }) }) @@ -34,12 +36,15 @@ function userModel (state, bus) { }) bus.on('user:register!', function (data) { - registry.register(data, function (err, user) { + registry.register(data, function (err, res, body) { if (err) { state.user.registerError = err bus.emit('render') return } + state.user.show = null + state.user.account = body + bus.emit('render') }) }) } From 7bb31a091fae147b11f39c55e987ab12107b70d3 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Thu, 8 Jun 2017 15:37:12 +0200 Subject: [PATCH 07/30] persist the session --- models/user.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/models/user.js b/models/user.js index 32d6c6b6..a4a54462 100644 --- a/models/user.js +++ b/models/user.js @@ -6,10 +6,12 @@ var registry = Registry() module.exports = userModel function userModel (state, bus) { - state.user = xtend(state.user || {}, { + state.user = state.user || {} + state.user = xtend(state.user, { show: null, loginError: null, - registerError: null + registerError: null, + session: state.user.session }) bus.on('user:login', function () { @@ -18,14 +20,14 @@ function userModel (state, bus) { }) bus.on('user:login!', function (data) { - registry.login(data, function (err, res, body) { + registry.login(data, function (err, res, session) { if (err) { state.user.loginError = err bus.emit('render') return } state.user.show = null - state.user.account = body + state.user.session = session bus.emit('render') }) }) @@ -36,14 +38,14 @@ function userModel (state, bus) { }) bus.on('user:register!', function (data) { - registry.register(data, function (err, res, body) { + registry.register(data, function (err, res, session) { if (err) { state.user.registerError = err bus.emit('render') return } state.user.show = null - state.user.account = body + state.user.session = session bus.emit('render') }) }) From 1ea839c4dc8a8143ca98906faacdf58edb361b34 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Thu, 8 Jun 2017 15:37:24 +0200 Subject: [PATCH 08/30] hide login button when logged in --- elements/header.js | 9 ++++++--- pages/main.js | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/elements/header.js b/elements/header.js index e0748f5e..027560ba 100644 --- a/elements/header.js +++ b/elements/header.js @@ -42,7 +42,7 @@ function HeaderElement () { return component function render () { - var { isReady, onimport, oncreate, onreport, onlogin } = this.props + var { isReady, session, onimport, oncreate, onreport, onlogin } = this.props var { showMenu, willShowMenu } = this.state if (typeof willShowMenu === 'boolean') { @@ -104,7 +104,9 @@ function HeaderElement () { onsubmit: onimport })} ${createButton} - ${loginButton} + ${session + ? '' + : loginButton} ${menuButton} ${showMenu ? html` @@ -128,6 +130,7 @@ function HeaderElement () { function update (props) { return props.isReady !== this.props.isReady || - typeof this.state.willShowMenu === 'boolean' + typeof this.state.willShowMenu === 'boolean' || + props.session !== this.props.session } } diff --git a/pages/main.js b/pages/main.js index 85631d46..536b3c1f 100644 --- a/pages/main.js +++ b/pages/main.js @@ -30,6 +30,7 @@ function mainView (state, emit) { const isReady = state.dats.ready const headerProps = { isReady: isReady, + session: state.user.session, oncreate: () => emit('dats:create'), onimport: (link) => emit('dats:download', link), onreport: () => shell.openExternal('https://github.com/datproject/dat-desktop/issues'), From 9e5c2e7f27586f029ee11bed88398676bb15f276 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Thu, 8 Jun 2017 16:10:51 +0200 Subject: [PATCH 09/30] add logout --- elements/header.js | 14 +++++++++++++- models/user.js | 8 ++++++++ pages/main.js | 3 ++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/elements/header.js b/elements/header.js index 027560ba..95483448 100644 --- a/elements/header.js +++ b/elements/header.js @@ -42,7 +42,7 @@ function HeaderElement () { return component function render () { - var { isReady, session, onimport, oncreate, onreport, onlogin } = this.props + var { isReady, session, onimport, oncreate, onreport, onlogin, onlogout } = this.props var { showMenu, willShowMenu } = this.state if (typeof willShowMenu === 'boolean') { @@ -97,6 +97,11 @@ function HeaderElement () { if (!component._element.contains(e.target)) hide() } + function onclicklogout () { + component.state.willShowMenu = false + onlogout() + } + return html`
@@ -120,6 +125,13 @@ function HeaderElement () {

Report Bug

+ ${session + ? html` +

+ Log out +

+ ` + : ''}
` : ''} diff --git a/models/user.js b/models/user.js index a4a54462..9ca2c7d9 100644 --- a/models/user.js +++ b/models/user.js @@ -49,4 +49,12 @@ function userModel (state, bus) { bus.emit('render') }) }) + + bus.on('user:logout', function () { + registry.logout(function (err) { + if (err) console.error(err) + state.user.session = null + bus.emit('render') + }) + }) } diff --git a/pages/main.js b/pages/main.js index 536b3c1f..5486ff79 100644 --- a/pages/main.js +++ b/pages/main.js @@ -34,7 +34,8 @@ function mainView (state, emit) { oncreate: () => emit('dats:create'), onimport: (link) => emit('dats:download', link), onreport: () => shell.openExternal('https://github.com/datproject/dat-desktop/issues'), - onlogin: () => emit('user:login') + onlogin: () => emit('user:login'), + onlogout: () => emit('user:logout') } document.title = 'Dat Desktop' From 70eba9602b1454d18230fe2087881a11ceee7c9a Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Fri, 9 Jun 2017 13:27:12 +0200 Subject: [PATCH 10/30] add reset password screen --- elements/login.js | 16 ++++++++++--- elements/reset-password.js | 46 ++++++++++++++++++++++++++++++++++++++ models/user.js | 12 ++++++++++ pages/main.js | 26 ++++++++++++++++----- 4 files changed, 91 insertions(+), 9 deletions(-) create mode 100644 elements/reset-password.js diff --git a/elements/login.js b/elements/login.js index 5c9d9c47..e296b9dc 100644 --- a/elements/login.js +++ b/elements/login.js @@ -15,7 +15,7 @@ module.exports = function () { return component function render () { - var { onlogin, onregister, error } = this.props + var { onlogin, onregister, onresetpassword, error } = this.props var { email, password } = this.state function onsubmit (ev) { @@ -27,14 +27,24 @@ module.exports = function () { Object.assign(component.state, { email, password }) } + function onclickresetpassword (ev) { + ev.preventDefault() + onresetpassword() + } + + function onclickregister (ev) { + ev.preventDefault() + onregister() + } + return html`
- - + +
${error ? html` diff --git a/elements/reset-password.js b/elements/reset-password.js new file mode 100644 index 00000000..9fc40640 --- /dev/null +++ b/elements/reset-password.js @@ -0,0 +1,46 @@ +var microcomponent = require('microcomponent') +var html = require('choo/html') +var FormData = window.FormData + +module.exports = function () { + var component = microcomponent({ + name: 'reset-password', + state: { + email: '', + } + }) + component.on('render', render) + component.on('update', update) + return component + + function render () { + var { onreset, error } = this.props + var { email } = this.state + + function onsubmit (ev) { + ev.preventDefault() + var data = new FormData(ev.target) + var email = data.get('email') + onreset({ email }) + Object.assign(component.state, { email }) + } + + return html` +
+
+ + +
+ ${error + ? html` +
Error! ${error.message}
+ ` + : ''} +
+ ` + } + + function update (props) { + return props.error !== this.props.error + } +} diff --git a/models/user.js b/models/user.js index 9ca2c7d9..4e20f688 100644 --- a/models/user.js +++ b/models/user.js @@ -57,4 +57,16 @@ function userModel (state, bus) { bus.emit('render') }) }) + + bus.on('user:reset-password', function () { + state.user.show = 'reset password' + bus.emit('render') + }) + + bus.on('user:reset-password!', function (data) { + registry.users.resetPassword(data, function (err) { + if (err) console.error(err) + bus.emit('render') + }) + }) } diff --git a/pages/main.js b/pages/main.js index 5486ff79..fa1ec555 100644 --- a/pages/main.js +++ b/pages/main.js @@ -11,6 +11,7 @@ const Empty = require('../elements/empty') const Download = require('../elements/download') const Login = require('../elements/login') const Register = require('../elements/register') +const ResetPassword = require('../elements/reset-password') module.exports = mainView @@ -20,6 +21,7 @@ const download = Download() const intro = Intro() const login = Login() const register = Register() +const resetPassword = ResetPassword() // render the main view // (obj, obj, fn) -> html @@ -85,12 +87,9 @@ function mainView (state, emit) { ${sprite.render()} ${header.render(headerProps)} ${login.render({ - onlogin: data => { - emit('user:login!', data) - }, - onregister: () => { - emit('user:register') - }, + onlogin: data => emit('user:login!', data), + onregister: () => emit('user:register'), + onresetpassword: () => emit('user:reset-password'), error: state.user.loginError })}
@@ -115,6 +114,21 @@ function mainView (state, emit) { ` } + if (state.user.show === 'reset password') { + return html` +
+ ${sprite.render()} + ${header.render(headerProps)} + ${resetPassword.render({ + onreset: data => { + emit('user:reset-password!', data) + } + })} +
+ ` + } + + if (!dats.length) { return html`
From 68f02645ba8f8eb3aac132d52d25053dfd816629 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Fri, 9 Jun 2017 13:31:07 +0200 Subject: [PATCH 11/30] prevent some unexpected form behavior --- elements/register.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/elements/register.js b/elements/register.js index e0dafc53..41078dc9 100644 --- a/elements/register.js +++ b/elements/register.js @@ -29,6 +29,11 @@ module.exports = function () { Object.assign(component.state, { username, email, password }) } + function onclicklogin (ev) { + ev.preventDefault() + onlogin() + } + return html`
@@ -36,7 +41,7 @@ module.exports = function () { - +
${error ? html` From ec0143e6afe248a2377281b7d060adf1f2bddc2c Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Fri, 9 Jun 2017 13:31:37 +0200 Subject: [PATCH 12/30] fix standard --- elements/reset-password.js | 2 +- pages/main.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/elements/reset-password.js b/elements/reset-password.js index 9fc40640..80d7337e 100644 --- a/elements/reset-password.js +++ b/elements/reset-password.js @@ -6,7 +6,7 @@ module.exports = function () { var component = microcomponent({ name: 'reset-password', state: { - email: '', + email: '' } }) component.on('render', render) diff --git a/pages/main.js b/pages/main.js index fa1ec555..6842d57d 100644 --- a/pages/main.js +++ b/pages/main.js @@ -128,7 +128,6 @@ function mainView (state, emit) { ` } - if (!dats.length) { return html`
From 6e895298a705edf165ffb6f50750f59a83d7b3f7 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Fri, 9 Jun 2017 13:40:40 +0200 Subject: [PATCH 13/30] header: add avatar --- elements/header.js | 14 ++++++++++++-- package.json | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/elements/header.js b/elements/header.js index 95483448..ac061e1f 100644 --- a/elements/header.js +++ b/elements/header.js @@ -1,10 +1,11 @@ 'use strict' +const version = require('../package.json').version const microcomponent = require('microcomponent') +const gravatar = require('gravatar') const html = require('choo/html') const assert = require('assert') const css = require('sheetify') -const version = require('../package.json').version const button = require('./button') const DatImport = require('./dat-import') @@ -76,6 +77,13 @@ function HeaderElement () { onclick: toggle }) + var avatar = session && gravatar.url(session.email, { + s: 200, + r: 'pg', + d: '404', + protocol: 'https' + }) + function toggle () { if (component.state.showMenu) hide() else show() @@ -110,7 +118,9 @@ function HeaderElement () { })} ${createButton} ${session - ? '' + ? html` + + ` : loginButton} ${menuButton} ${showMenu diff --git a/package.json b/package.json index 0ceba161..23ae51e2 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "electron-window": "^0.8.1", "envobj": "^1.0.2", "explain-error": "^1.0.3", + "gravatar": "^1.6.0", "microcomponent": "^3.1.5", "minimist": "^1.2.0", "mirror-folder": "^2.1.0", From 7930e8b221c458a69c5e5624f5265cc64fac7f64 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Fri, 9 Jun 2017 13:43:52 +0200 Subject: [PATCH 14/30] header: fix avatar size --- elements/header.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/elements/header.js b/elements/header.js index ac061e1f..09d49498 100644 --- a/elements/header.js +++ b/elements/header.js @@ -77,8 +77,11 @@ function HeaderElement () { onclick: toggle }) - var avatar = session && gravatar.url(session.email, { - s: 200, + var avatar = { + size: 23 + } + if (session) avatar.url = gravatar.url(session.email, { + s: avatar.size * 2, r: 'pg', d: '404', protocol: 'https' @@ -119,7 +122,7 @@ function HeaderElement () { ${createButton} ${session ? html` - + ` : loginButton} ${menuButton} From 4ecee34526b758c2481a646f3c925ab6ec6ecfe8 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Fri, 9 Jun 2017 13:44:47 +0200 Subject: [PATCH 15/30] fix standard --- elements/header.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/elements/header.js b/elements/header.js index 09d49498..9f80f6c7 100644 --- a/elements/header.js +++ b/elements/header.js @@ -80,12 +80,14 @@ function HeaderElement () { var avatar = { size: 23 } - if (session) avatar.url = gravatar.url(session.email, { - s: avatar.size * 2, - r: 'pg', - d: '404', - protocol: 'https' - }) + if (session) { + avatar.url = gravatar.url(session.email, { + s: avatar.size * 2, + r: 'pg', + d: '404', + protocol: 'https' + }) + } function toggle () { if (component.state.showMenu) hide() From 2b5db60491da86c5978b8717b996fdc4d9bb526f Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Fri, 9 Jun 2017 14:03:39 +0200 Subject: [PATCH 16/30] start implementing header as in #415 --- elements/header.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/elements/header.js b/elements/header.js index 9f80f6c7..4665f1a0 100644 --- a/elements/header.js +++ b/elements/header.js @@ -124,10 +124,14 @@ function HeaderElement () { ${createButton} ${session ? html` - + ` - : loginButton} - ${menuButton} + : html` + + ${menuButton} + ${loginButton} + + `} ${showMenu ? html`
From 5e70559aa3aea55e6ce0dc471f02c1a53c157278 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Fri, 9 Jun 2017 14:09:06 +0200 Subject: [PATCH 17/30] finish technical part of header as in #415 --- elements/header.js | 30 +++++++++++++++++++++++------- pages/main.js | 2 ++ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/elements/header.js b/elements/header.js index 4665f1a0..e1482b9e 100644 --- a/elements/header.js +++ b/elements/header.js @@ -43,7 +43,7 @@ function HeaderElement () { return component function render () { - var { isReady, session, onimport, oncreate, onreport, onlogin, onlogout } = this.props + var { isReady, session, onimport, oncreate, onreport, onlogin, onlogout, onprofile, onhomepage } = this.props var { showMenu, willShowMenu } = this.state if (typeof willShowMenu === 'boolean') { @@ -135,12 +135,24 @@ function HeaderElement () { ${showMenu ? html`
-

- Dat Desktop ${version} -

-

- Dat Desktop is a peer to peer sharing app built for humans by humans. -

+ ${session + ? html` +

+ ${session.email} +

+ ` + : html` +

+ Dat Desktop is a peer to peer sharing app built for humans by humans. +

+ `} + ${session + ? html` +

+ Profile +

+ ` + : ''}

Report Bug

@@ -151,6 +163,10 @@ function HeaderElement () {

` : ''} +

+ Version ${version} | Built by + datproject.org +

` : ''} diff --git a/pages/main.js b/pages/main.js index 6842d57d..c8ca3b0d 100644 --- a/pages/main.js +++ b/pages/main.js @@ -36,6 +36,8 @@ function mainView (state, emit) { oncreate: () => emit('dats:create'), onimport: (link) => emit('dats:download', link), onreport: () => shell.openExternal('https://github.com/datproject/dat-desktop/issues'), + onhomepage: () => shell.openExternal('https://datproject.org/'), + onprofile: () => shell.openExternal(`https://datproject.org/profile/${state.user.session.username}`), onlogin: () => emit('user:login'), onlogout: () => emit('user:logout') } From cc8a255b1fe264923a19157f84877da536880f65 Mon Sep 17 00:00:00 2001 From: Kristina Schneider Date: Fri, 9 Jun 2017 16:20:02 +0200 Subject: [PATCH 18/30] initial styles for register and login form. align copy with datproject.org --- elements/login.js | 39 +++++++++++++++++++++++++-------------- elements/register.js | 41 +++++++++++++++++++++++++++-------------- 2 files changed, 52 insertions(+), 28 deletions(-) diff --git a/elements/login.js b/elements/login.js index 5c9d9c47..8e9025cb 100644 --- a/elements/login.js +++ b/elements/login.js @@ -28,20 +28,31 @@ module.exports = function () { } return html` -
-
- - - - - -
- ${error - ? html` -
Error! ${error.message}
- ` - : ''} -
+
+
+

Log In

+
+

+ +

+

+ +

+

+ +

+

+ + +

+
+ ${error + ? html` +
Oops. ${error.message}
+ ` + : ''} +
+
` } diff --git a/elements/register.js b/elements/register.js index e0dafc53..3056d173 100644 --- a/elements/register.js +++ b/elements/register.js @@ -30,20 +30,33 @@ module.exports = function () { } return html` -
-
- - - - - -
- ${error - ? html` -
Error! ${error.message}
- ` - : ''} -
+
+
+

Create A New Account

+
+

+ +

+

+ +

+

+ +

+

+ +

+

+ +

+
+ ${error + ? html` +
Oops. ${error.message}
+ ` + : ''} +
+
` } From 3d2f3159db36ca9b0f24d4346953aca6d54f1cf9 Mon Sep 17 00:00:00 2001 From: Kristina Schneider Date: Fri, 9 Jun 2017 16:22:48 +0200 Subject: [PATCH 19/30] error styles --- elements/login.js | 4 +++- elements/register.js | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/elements/login.js b/elements/login.js index 8e9025cb..0ad896c1 100644 --- a/elements/login.js +++ b/elements/login.js @@ -48,7 +48,9 @@ module.exports = function () { ${error ? html` -
Oops. ${error.message}
+

+ Oops. ${error.message} +

` : ''}
diff --git a/elements/register.js b/elements/register.js index 3056d173..f7f0e87e 100644 --- a/elements/register.js +++ b/elements/register.js @@ -52,7 +52,9 @@ module.exports = function () { ${error ? html` -
Oops. ${error.message}
+

+ Oops. ${error.message} +

` : ''}
From 97ad2767cb9817e85fe45b323157ff2b7906bdd0 Mon Sep 17 00:00:00 2001 From: Kristina Schneider Date: Fri, 9 Jun 2017 17:32:55 +0200 Subject: [PATCH 20/30] create input element. replace inputs and buttons in register/login form --- elements/input.js | 80 ++++++++++++++++++++++++++++++++++++++++++++ elements/login.js | 30 ++++++++++++----- elements/register.js | 39 ++++++++++++++------- 3 files changed, 128 insertions(+), 21 deletions(-) create mode 100644 elements/input.js diff --git a/elements/input.js b/elements/input.js new file mode 100644 index 00000000..36c7ad94 --- /dev/null +++ b/elements/input.js @@ -0,0 +1,80 @@ +'use strict' + +const html = require('choo/html') +const css = require('sheetify') +const assert = require('assert') +const icon = require('./icon') + +var baseStyles = css` + :host { + --input-height: 2.75rem; + --icon-height: 1.2rem; + height: var(--input-height); + border: 0; + svg { + position: absolute; + top: 0; + bottom: 0; + left: 0; + padding-top: calc(var(--icon-height) - .35rem); + padding-left: .75rem; + pointer-events: none; + display: block; + width: var(--icon-height); + height: var(--icon-height); + transition: color .025s ease-out; + color: var(--color-neutral-30); + } + input { + width: 100%; + height: var(--input-height); + position: relative; + padding-top: 0; + padding-right: .5rem; + padding-bottom: 0; + padding-left: 2.5rem; + font-size: 1rem; + font-weight: 600; + border: 1px solid var(--color-neutral-20); + background-color: var(--color-white); + color: var(--color-green-hover); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + &:hover, + &:focus { + outline: none; + } + } + } +` + +module.exports = inputElement + +function inputElement (value, opts) { + opts = opts || {} + + assert.equal(typeof value, 'string', 'elements/input: value should be type string') + assert.equal(typeof opts, 'object', 'elements/input: opts should be type object') + + var classNames = baseStyles + if (opts.class) classNames += (' ' + opts.class) + + var type = opts.type + var name = opts.name + var placeholder = opts.placeholder + var inputIcon = opts.icon + + return html` + + ` +} diff --git a/elements/login.js b/elements/login.js index 0ad896c1..3590ebfa 100644 --- a/elements/login.js +++ b/elements/login.js @@ -1,5 +1,7 @@ var microcomponent = require('microcomponent') var html = require('choo/html') +var input = require('./input') +var button = require('./button') var FormData = window.FormData module.exports = function () { @@ -32,15 +34,25 @@ module.exports = function () {

Log In

-

- -

-

- -

-

- -

+ + ${input(email, { + type: 'email', + name: 'email', + placeholder: 'E-Mail', + icon: 'letter' + })} + + ${input(password, { + type: 'password', + name: 'password', + placeholder: 'Password', + icon: 'lock' + })} + + ${button.green('Log In', { + class: 'w-100 mb3' + })} +

diff --git a/elements/register.js b/elements/register.js index f7f0e87e..bdc31a26 100644 --- a/elements/register.js +++ b/elements/register.js @@ -1,5 +1,7 @@ var microcomponent = require('microcomponent') var html = require('choo/html') +var input = require('./input') +var button = require('./button') var FormData = window.FormData module.exports = function () { @@ -34,18 +36,31 @@ module.exports = function () {

Create A New Account

-

- -

-

- -

-

- -

-

- -

+ + ${input(username, { + type: 'text', + name: 'username', + placeholder: 'Username', + icon: 'happy-dat' + })} + + ${input(email, { + type: 'email', + name: 'email', + placeholder: 'E-Mail', + icon: 'letter' + })} + + ${input(password, { + type: 'password', + name: 'password', + placeholder: 'Password', + icon: 'lock' + })} + + ${button.green('Register', { + class: 'w-100 mb3' + })}

From 7a5ae0588f9c22aafc26ba1e9c972f17c68d834d Mon Sep 17 00:00:00 2001 From: Kristina Schneider Date: Mon, 12 Jun 2017 08:37:57 +0200 Subject: [PATCH 21/30] add info icon --- elements/header.js | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/elements/header.js b/elements/header.js index e1482b9e..16543b67 100644 --- a/elements/header.js +++ b/elements/header.js @@ -31,7 +31,7 @@ const shareButtonIcon = css` const menuButtonIcon = css` :host { - width: 1.75em; + width: 1em; } ` @@ -72,7 +72,7 @@ function HeaderElement () { }) var menuButton = button.icon('Open Menu', { - icon: icon('menu', { class: menuButtonIcon }), + icon: icon('info', { class: menuButtonIcon }), class: 'ml3 v-mid color-neutral-20 hover-color-white pointer', onclick: toggle }) diff --git a/package.json b/package.json index 23ae51e2..d492e816 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "dat-colors": "^3.5.0", "dat-doctor": "^1.2.2", "dat-encoding": "^4.0.1", - "dat-icons": "^2.2.0", + "dat-icons": "^2.3.0", "dat-node": "^3.2.3", "dat-registry": "^3.0.2", "delegate-electron-events": "github:juliangruber/delegate-electron-events#fix/missing-events", From 64b90074c6f041aeb3a96c7792a3321e50725a9a Mon Sep 17 00:00:00 2001 From: Kristina Schneider Date: Mon, 12 Jun 2017 08:53:31 +0200 Subject: [PATCH 22/30] style avatar --- elements/header.js | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/elements/header.js b/elements/header.js index 16543b67..f10eb38a 100644 --- a/elements/header.js +++ b/elements/header.js @@ -35,6 +35,17 @@ const menuButtonIcon = css` } ` +const avatarButtonStyles = css` + :host { + border: 2px solid var(--color-neutral-40); + vertical-align: middle; + background-color: var(--color-pink); + &:hover, &:focus { + border-color: var(--color-white); + } + } +` + function HeaderElement () { var importButton = DatImport() var component = microcomponent({ name: 'header' }) @@ -66,7 +77,7 @@ function HeaderElement () { onclick: oncreate }) - var loginButton = button.header('Log In', { + var loginButton = button.green('Log In', { class: 'ml3 v-mid color-neutral-30 hover-color-white f7 f6-l', onclick: onlogin }) @@ -78,7 +89,7 @@ function HeaderElement () { }) var avatar = { - size: 23 + size: 26 } if (session) { avatar.url = gravatar.url(session.email, { @@ -89,6 +100,14 @@ function HeaderElement () { }) } + var avatarButton = html` + + ` + function toggle () { if (component.state.showMenu) hide() else show() @@ -124,7 +143,7 @@ function HeaderElement () { ${createButton} ${session ? html` - + ${avatarButton} ` : html` From 85a9a6d02edc15725d390b9689c850d36a9d7254 Mon Sep 17 00:00:00 2001 From: Kristina Schneider Date: Mon, 12 Jun 2017 09:20:40 +0200 Subject: [PATCH 23/30] style dropdown menu, improve legibility --- elements/header.js | 73 ++++++++++++++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 25 deletions(-) diff --git a/elements/header.js b/elements/header.js index f10eb38a..e94af8bb 100644 --- a/elements/header.js +++ b/elements/header.js @@ -46,6 +46,33 @@ const avatarButtonStyles = css` } ` +const menuStyles = css` + :host { + width: 14rem; + position: absolute; + top: 3rem; + right: 0; + border: 1px solid var(--color-neutral-20); + background-color: var(--color-white); + color: var(--color-neutral-60); + box-shadow: 0 0 4px 2px rgba( 0, 0, 0, .1); + section { + padding: 1rem; + border-bottom: 1px solid var(--color-neutral-20); + &:last-child { + border-bottom: none; + } + } + a { + text-decoration: none; + color: var(--color-neutral-80); + &:hover, &:focus { + color: var(--color-blue-hover); + } + } + } +` + function HeaderElement () { var importButton = DatImport() var component = microcomponent({ name: 'header' }) @@ -153,39 +180,35 @@ function HeaderElement () { `} ${showMenu ? html` -
+
${session ? html` -

+

${session.email} -

+
` : html` -

+

Dat Desktop is a peer to peer sharing app built for humans by humans. -

+
`} - ${session - ? html` -

- Profile -

- ` - : ''} -

- Report Bug -

- ${session - ? html` -

- Log out -

- ` - : ''} -

+
+ ${session + ? html` + Profile + ` + : ''} + Report Bug + ${session + ? html` + Log out + ` + : ''} +
+
Version ${version} | Built by - datproject.org -

+ datproject.org +
` : ''} From d7e1c04402fd7d221ec053cb9f24906420d12c1b Mon Sep 17 00:00:00 2001 From: Kristina Schneider Date: Mon, 12 Jun 2017 09:30:30 +0200 Subject: [PATCH 24/30] detail styles for dropdown menu --- elements/header.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/elements/header.js b/elements/header.js index e94af8bb..5b3353eb 100644 --- a/elements/header.js +++ b/elements/header.js @@ -49,18 +49,22 @@ const avatarButtonStyles = css` const menuStyles = css` :host { width: 14rem; + padding-left: 1rem; + padding-right: 1rem; position: absolute; + z-index: 2; top: 3rem; right: 0; border: 1px solid var(--color-neutral-20); + border-radius: .25rem; background-color: var(--color-white); color: var(--color-neutral-60); box-shadow: 0 0 4px 2px rgba( 0, 0, 0, .1); section { - padding: 1rem; - border-bottom: 1px solid var(--color-neutral-20); - &:last-child { - border-bottom: none; + padding-top: 1rem; + padding-bottom: 1rem; + &:first-child { + border-bottom: 1px solid var(--color-neutral-20); } } a { @@ -195,13 +199,13 @@ function HeaderElement () {
${session ? html` - Profile + Profile ` : ''} - Report Bug + Report Bug ${session ? html` - Log out + Log out ` : ''}
From ced0b229a529aba0a2995c0ff03dd5a909ae59fe Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Mon, 12 Jun 2017 11:26:17 +0200 Subject: [PATCH 25/30] elements/input: turn into component --- elements/input.js | 50 +++++++++++++++++++++++--------------------- elements/login.js | 18 ++++++++++------ elements/register.js | 24 ++++++++++++++------- 3 files changed, 54 insertions(+), 38 deletions(-) diff --git a/elements/input.js b/elements/input.js index 36c7ad94..08f6c007 100644 --- a/elements/input.js +++ b/elements/input.js @@ -1,8 +1,8 @@ 'use strict' +const microcomponent = require('microcomponent') const html = require('choo/html') const css = require('sheetify') -const assert = require('assert') const icon = require('./icon') var baseStyles = css` @@ -51,30 +51,32 @@ var baseStyles = css` module.exports = inputElement -function inputElement (value, opts) { - opts = opts || {} +function inputElement (name) { + var component = microcomponent(`input-${name}`) + component.on('render', render) + component.on('update', update) + return component - assert.equal(typeof value, 'string', 'elements/input: value should be type string') - assert.equal(typeof opts, 'object', 'elements/input: opts should be type object') + function render () { + var { name, type, placeholder, value, icon: inputIcon } = this.props + var classNames = baseStyles + if (this.props.class) classNames += ' ' + this.props.class - var classNames = baseStyles - if (opts.class) classNames += (' ' + opts.class) - - var type = opts.type - var name = opts.name - var placeholder = opts.placeholder - var inputIcon = opts.icon + return html` + + ` + } - return html` - - ` + function update () { + return false + } } diff --git a/elements/login.js b/elements/login.js index 89d5219a..abffe476 100644 --- a/elements/login.js +++ b/elements/login.js @@ -9,7 +9,11 @@ module.exports = function () { name: 'login', state: { email: '', - password: '' + password: '', + inputs: { + email: input('email'), + password: input('password') + } } }) component.on('render', render) @@ -18,7 +22,7 @@ module.exports = function () { function render () { var { onlogin, onregister, onresetpassword, error } = this.props - var { email, password } = this.state + var { email, password, inputs } = this.state function onsubmit (ev) { ev.preventDefault() @@ -45,18 +49,20 @@ module.exports = function () {

Log In

- ${input(email, { + ${inputs.email.render({ type: 'email', name: 'email', placeholder: 'E-Mail', - icon: 'letter' + icon: 'letter', + value: email })} - ${input(password, { + ${inputs.password.render({ type: 'password', name: 'password', placeholder: 'Password', - icon: 'lock' + icon: 'lock', + value: password })} ${button.green('Log In', { diff --git a/elements/register.js b/elements/register.js index 3d3b1711..492dd2ff 100644 --- a/elements/register.js +++ b/elements/register.js @@ -10,7 +10,12 @@ module.exports = function () { state: { username: '', email: '', - password: '' + password: '', + inputs: { + username: input('username'), + email: input('email'), + password: input('password') + } } }) component.on('render', render) @@ -19,7 +24,7 @@ module.exports = function () { function render () { var { onregister, onlogin, error } = this.props - var { username, email, password } = this.state + var { username, email, password, inputs } = this.state function onsubmit (ev) { ev.preventDefault() @@ -42,25 +47,28 @@ module.exports = function () {

Create A New Account

- ${input(username, { + ${inputs.username.render({ type: 'text', name: 'username', placeholder: 'Username', - icon: 'happy-dat' + icon: 'happy-dat', + value: username })} - ${input(email, { + ${inputs.email.render({ type: 'email', name: 'email', placeholder: 'E-Mail', - icon: 'letter' + icon: 'letter', + value: email })} - ${input(password, { + ${inputs.password.render({ type: 'password', name: 'password', placeholder: 'Password', - icon: 'lock' + icon: 'lock', + value: password })} ${button.green('Register', { From 68afd3ad6796753fd295f789e9b5996b6b154936 Mon Sep 17 00:00:00 2001 From: Kristina Schneider Date: Wed, 14 Jun 2017 15:31:11 +0200 Subject: [PATCH 26/30] add dark overlay effect to modal --- elements/modal.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/elements/modal.js b/elements/modal.js index d293cafc..19e6840b 100644 --- a/elements/modal.js +++ b/elements/modal.js @@ -137,7 +137,7 @@ function confirmModal () { return Modal({ render: render, onexit: onexit, - class: 'modal' + class: 'modal bg-black-20' }) function onexit () { @@ -256,7 +256,7 @@ function errorModal () { return Modal({ render: render, onexit: onexit, - class: 'modal' + class: 'modal bg-black-20' }) function render (message) { @@ -293,7 +293,7 @@ function warningModal () { return Modal({ render: render, onexit: onexit, - class: 'modal' + class: 'modal bg-black-20' }) function render (message) { @@ -335,7 +335,7 @@ function linkModal () { onunload: onunload, onexit: onexit, render: render, - class: 'modal' + class: 'modal bg-black-20' }) return modal From a9d9f07b99ff32deff5a58678225edf25d8985fd Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Wed, 5 Jul 2017 09:08:37 +0200 Subject: [PATCH 27/30] update dependencies --- package-lock.json | 155 +++++++++++++++++++++------------------------- package.json | 4 +- 2 files changed, 73 insertions(+), 86 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1c9ef1db..366ae1c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -394,6 +394,11 @@ "resolved": "https://registry.npmjs.org/bluebird-lst-c/-/bluebird-lst-c-1.0.6.tgz", "integrity": "sha1-gfiB0T+d9wD2fVd/E0gLwy2Eu6k=" }, + "blueimp-md5": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.7.0.tgz", + "integrity": "sha1-f1GODdcEZ/7+KOy6OYkWCS8qAqk=" + }, "bn.js": { "version": "4.11.7", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", @@ -585,8 +590,7 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" }, "builtin-status-codes": { "version": "3.0.0", @@ -747,8 +751,7 @@ "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=" }, "clone": { "version": "1.0.2", @@ -764,8 +767,7 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "codecs": { "version": "1.2.0", @@ -1099,6 +1101,11 @@ "resolved": "https://registry.npmjs.org/dat-node/-/dat-node-3.5.1.tgz", "integrity": "sha512-z1kUQ823PVqZuemP3YWDPIvbQpLaaWGaKcf6MOVBZr3HHVvRRydxTqnidP0sQg3FhbOnxldSRNCO4ZvQ7swPdQ==" }, + "dat-registry": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dat-registry/-/dat-registry-3.0.3.tgz", + "integrity": "sha512-BWxQlSFQWc5BsIepOw9ZvbzsKkb2h+3lfCFC5pisNjzLdRbvyRuCQn0MicsBYeyCxAe/bNah21KgVPYbp6G1Ng==" + }, "dat-secret-storage": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/dat-secret-storage/-/dat-secret-storage-4.0.0.tgz", @@ -1152,8 +1159,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "deep-equal": { "version": "1.0.1", @@ -1522,6 +1528,11 @@ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "dev": true }, + "email-validator": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-1.0.7.tgz", + "integrity": "sha1-RiHKMvx0HrgzrJjV+1VnC34FbJU=" + }, "end-of-stream": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", @@ -1567,8 +1578,7 @@ "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=" }, "es-abstract": { "version": "1.7.0", @@ -1946,8 +1956,7 @@ "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=" }, "flat-cache": { "version": "1.2.2", @@ -2734,8 +2743,7 @@ "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" }, "get-stdin": { "version": "4.0.1", @@ -2818,6 +2826,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, + "gravatar": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gravatar/-/gravatar-1.6.0.tgz", + "integrity": "sha1-i9ybeGynJajnB2QW0XMfjTMxyXY=" + }, "har-schema": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", @@ -2880,8 +2893,7 @@ "hosted-git-info": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" }, "htmlescape": { "version": "1.1.1", @@ -3131,8 +3143,7 @@ "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" }, "ip": { "version": "1.1.5", @@ -3142,8 +3153,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-binary-path": { "version": "1.0.1", @@ -3159,8 +3169,7 @@ "is-builtin-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=" }, "is-callable": { "version": "1.1.3", @@ -3213,8 +3222,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" }, "is-function": { "version": "1.0.1", @@ -3324,6 +3332,11 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-string": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", + "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=" + }, "is-symbol": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", @@ -3344,8 +3357,7 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" }, "isarray": { "version": "0.0.1", @@ -3551,8 +3563,7 @@ "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=" }, "lcov-parse": { "version": "0.0.10", @@ -3579,8 +3590,7 @@ "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=" }, "localenv": { "version": "0.2.2", @@ -4125,8 +4135,7 @@ "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==" }, "normalize-path": { "version": "2.1.1", @@ -4154,8 +4163,7 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nyc": { "version": "11.0.3", @@ -5349,8 +5357,7 @@ "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=" }, "os-tmpdir": { "version": "1.0.2", @@ -5431,8 +5438,7 @@ "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=" }, "parse-ms": { "version": "1.0.1", @@ -5449,8 +5455,7 @@ "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=" }, "path-is-absolute": { "version": "1.0.1", @@ -5483,8 +5488,7 @@ "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=" }, "pause-stream": { "version": "0.0.11", @@ -5512,20 +5516,17 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" }, "pkg-config": { "version": "1.1.1", @@ -5749,8 +5750,7 @@ "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, "querystring-es3": { "version": "0.2.1", @@ -5846,14 +5846,12 @@ "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=" }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=" }, "readable-stream": { "version": "2.3.3", @@ -5961,14 +5959,12 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, "require-uncached": { "version": "1.0.3", @@ -6076,8 +6072,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-immediate-shim": { "version": "1.0.1", @@ -6264,20 +6259,17 @@ "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=" }, "spdx-expression-parse": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" }, "spdx-license-ids": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" }, "spectron": { "version": "3.7.2", @@ -6532,8 +6524,7 @@ "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" }, "string.prototype.codepointat": { "version": "0.2.0", @@ -6560,8 +6551,7 @@ "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=" }, "strip-eof": { "version": "1.0.0", @@ -6833,6 +6823,11 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=" }, + "township-client": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/township-client/-/township-client-1.3.1.tgz", + "integrity": "sha1-wBY7DLXZl/6NDWDrH1Uqj70VI9A=" + }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -7048,8 +7043,7 @@ "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=" }, "validator": { "version": "7.0.0", @@ -7177,8 +7171,7 @@ "which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, "widest-line": { "version": "1.0.0", @@ -7194,8 +7187,7 @@ "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=" }, "wrappy": { "version": "1.0.2", @@ -7250,8 +7242,7 @@ "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" }, "yallist": { "version": "2.1.2", @@ -7269,13 +7260,11 @@ "version": "6.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, "dependencies": { "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" } } }, @@ -7283,13 +7272,11 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true, "dependencies": { "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" } } }, diff --git a/package.json b/package.json index c46e05e7..723c5b47 100644 --- a/package.json +++ b/package.json @@ -15,9 +15,9 @@ "dat-colors": "^3.5.0", "dat-doctor": "^1.2.2", "dat-encoding": "^4.0.1", - "dat-icons": "^2.3.0", + "dat-icons": "^2.5.1", "dat-node": "^3.2.3", - "dat-registry": "^3.0.2", + "dat-registry": "^3.0.3", "delegate-electron-events": "^1.0.1", "electron-auto-updater": "^0.9.2", "electron-default-menu": "^1.0.0", From 191cd954f4ae594856c743f546861a5fc83550a8 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Wed, 5 Jul 2017 09:19:45 +0200 Subject: [PATCH 28/30] fix rendering by updating choo and nanomorph --- package-lock.json | 80 ++++++++++++++++++++++++++--------------------- package.json | 4 +-- 2 files changed, 46 insertions(+), 38 deletions(-) diff --git a/package-lock.json b/package-lock.json index 366ae1c4..22834854 100644 --- a/package-lock.json +++ b/package-lock.json @@ -674,14 +674,29 @@ "dev": true }, "choo": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/choo/-/choo-5.6.2.tgz", - "integrity": "sha1-WWn6CiyN0Ne0v233vUR9HlmGL+A=", + "version": "6.0.0-2", + "resolved": "https://registry.npmjs.org/choo/-/choo-6.0.0-2.tgz", + "integrity": "sha1-xAFwwYorYvtups/szzqxxbVm2S4=", "dependencies": { - "nanomorph": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/nanomorph/-/nanomorph-4.0.5.tgz", - "integrity": "sha1-fifMXiigXfDCePU7pDDyU/OsP6w=" + "bel": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/bel/-/bel-5.0.2.tgz", + "integrity": "sha1-VMALa7D5m24o/d37iIQhmr4AjKs=" + }, + "nanobus": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/nanobus/-/nanobus-4.2.0.tgz", + "integrity": "sha1-T/6wNlsDPXp8xPDI7lyMGqmzK6w=" + }, + "nanohref": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/nanohref/-/nanohref-3.0.0.tgz", + "integrity": "sha1-wysD4KJY+1/pELtqT+yoESC5RHI=" + }, + "nanotiming": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/nanotiming/-/nanotiming-6.1.0.tgz", + "integrity": "sha1-HWckoYn8LaLvDV6BKMXLEwP7vFI=" } } }, @@ -3193,6 +3208,11 @@ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" }, + "is-electron": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.0.0.tgz", + "integrity": "sha1-yC01mWQPffkchOqu52vFZxPGrHk=" + }, "is-electron-renderer": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-electron-renderer/-/is-electron-renderer-2.0.1.tgz", @@ -3965,25 +3985,15 @@ "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.0.0.tgz", "integrity": "sha1-VVoRIL8mXh0zMy73tYA3ENXiCv8=" }, - "nanobus": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/nanobus/-/nanobus-3.3.0.tgz", - "integrity": "sha1-vOXV1DWlNix9rX+ekM0hlZWJvoY=" - }, "nanocomponent": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/nanocomponent/-/nanocomponent-2.0.3.tgz", "integrity": "sha1-yupqOad9l+T3HanCo15hl8cLcus=" }, - "nanohistory": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nanohistory/-/nanohistory-1.0.0.tgz", - "integrity": "sha1-ZaPSm8X0D2MF7GfRILi+OOlXGeg=" - }, - "nanohref": { + "nanolocation": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nanohref/-/nanohref-1.0.0.tgz", - "integrity": "sha1-Eu1e6ZDZgRE0SgTYFlDRZ60mRCE=" + "resolved": "https://registry.npmjs.org/nanolocation/-/nanolocation-1.0.0.tgz", + "integrity": "sha1-FbXHrwWJXRqfIfDRNkldmURQaGs=" }, "nanologger": { "version": "1.1.0", @@ -3995,17 +4005,10 @@ "resolved": "https://registry.npmjs.org/nanomorph/-/nanomorph-5.1.2.tgz", "integrity": "sha1-ZtElCYco5UsOyqDISYA205XT8l0=" }, - "nanomount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nanomount/-/nanomount-1.0.1.tgz", - "integrity": "sha1-2m5MRG8EaiDVqHv8OmFSvimJDTU=", - "dependencies": { - "nanomorph": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/nanomorph/-/nanomorph-4.0.5.tgz", - "integrity": "sha1-fifMXiigXfDCePU7pDDyU/OsP6w=" - } - } + "nanoquery": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nanoquery/-/nanoquery-1.1.0.tgz", + "integrity": "sha1-g6giCTNAygU9aW7IYKEKWsTDtEI=" }, "nanoraf": { "version": "3.0.1", @@ -4017,11 +4020,6 @@ "resolved": "https://registry.npmjs.org/nanorouter/-/nanorouter-2.1.0.tgz", "integrity": "sha1-T8r5YgOgCJjaiRiLG/9aj8Bu9P8=" }, - "nanotiming": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nanotiming/-/nanotiming-1.0.1.tgz", - "integrity": "sha1-E+ei4nZ5Z5dP7f/wce3Tkyf0TsM=" - }, "nested-error-stacks": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz", @@ -5502,6 +5500,11 @@ "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", "dev": true }, + "pelo": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/pelo/-/pelo-0.0.2.tgz", + "integrity": "sha1-pdQHrT+SGpG40bNF+zigMM9YeW8=" + }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -6058,6 +6061,11 @@ "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", "dev": true }, + "scroll-to-anchor": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/scroll-to-anchor/-/scroll-to-anchor-1.1.0.tgz", + "integrity": "sha1-yZuNLl2VBWdSeHyngJWrdbUgs/0=" + }, "semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", diff --git a/package.json b/package.json index 723c5b47..31de208a 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "author": "Dat Team", "dependencies": { "base-elements": "^2.2.1", - "choo": "^5.1.0", + "choo": "^6.0.0-2", "choo-expose": "^1.0.0", "choo-log": "^6.0.0", "choo-persist": "^3.0.0", @@ -32,7 +32,7 @@ "ms": "^0.7.2", "multidat": "^5.0.1", "nanologger": "^1.0.2", - "nanomorph": "^5.0.0", + "nanomorph": "^5.1.2", "prettier-bytes": "^1.0.3", "rimraf": "^2.5.4", "run-waterfall": "^1.1.3", From a74c868654e1acbd7f4cae16162eba5b1681e521 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Wed, 5 Jul 2017 10:02:47 +0200 Subject: [PATCH 29/30] add exit button to login screen --- elements/login.js | 3 ++- models/user.js | 4 ++++ pages/main.js | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/elements/login.js b/elements/login.js index abffe476..9daf27e2 100644 --- a/elements/login.js +++ b/elements/login.js @@ -21,7 +21,7 @@ module.exports = function () { return component function render () { - var { onlogin, onregister, onresetpassword, error } = this.props + var { onlogin, onregister, onresetpassword, onexit, error } = this.props var { email, password, inputs } = this.state function onsubmit (ev) { @@ -81,6 +81,7 @@ module.exports = function () {

` : ''} +
` diff --git a/models/user.js b/models/user.js index 4e20f688..b76a9a2b 100644 --- a/models/user.js +++ b/models/user.js @@ -20,6 +20,10 @@ function userModel (state, bus) { }) bus.on('user:login!', function (data) { + if (!data) { + state.user.show = null + bus.emit('render') + } registry.login(data, function (err, res, session) { if (err) { state.user.loginError = err diff --git a/pages/main.js b/pages/main.js index db4571e5..95051996 100644 --- a/pages/main.js +++ b/pages/main.js @@ -110,6 +110,7 @@ function mainView (state, emit) { onlogin: data => emit('user:login!', data), onregister: () => emit('user:register'), onresetpassword: () => emit('user:reset-password'), + onexit: () => emit('user:login!', false), error: state.user.loginError })}
From f8b4f049cbdd1c29d3194e5fe6b882bb6d5b3fb5 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Wed, 5 Jul 2017 10:02:56 +0200 Subject: [PATCH 30/30] also show status bar on user screens --- pages/main.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pages/main.js b/pages/main.js index 95051996..f322c51b 100644 --- a/pages/main.js +++ b/pages/main.js @@ -113,6 +113,7 @@ function mainView (state, emit) { onexit: () => emit('user:login!', false), error: state.user.loginError })} + ${statusBar.render(state.dats.speed)}
` } @@ -131,6 +132,7 @@ function mainView (state, emit) { }, error: state.user.registerError })} + ${statusBar.render(state.dats.speed)}
` } @@ -145,6 +147,7 @@ function mainView (state, emit) { emit('user:reset-password!', data) } })} + ${statusBar.render(state.dats.speed)} ` }