Commit 5abfc002ffe8f5899adc25a75831481771f6163e
Merge branch 'master' into homescreen
mix irving committed on 8/14/2017, 6:47:38 AMParent: 8776d4d68b0cf75470ccc46b11f37d84c1789740
Parent: d2ef619dd77cafe0c113840831438790127a1875
Files changed
app/html/nav.js | changed |
app/html/nav.mcss | changed |
app/html/link.js | added |
app/index.js | changed |
app/page/group.js | deleted |
app/page/error.js | added |
app/page/groupFind.js | added |
app/page/groupIndex.js | added |
app/page/groupNew.js | added |
app/page/private.js | deleted |
app/page/groupShow.js | added |
app/page/settings.js | added |
app/page/threadShow.js | added |
app/page/userFind.js | added |
app/page/userShow.js | added |
router/sync/routes.js | changed |
app/html/nav.js | ||
---|---|---|
@@ -3,8 +3,9 @@ | ||
3 | 3 | |
4 | 4 | exports.gives = nest('app.html.nav') |
5 | 5 | |
6 | 6 | exports.needs = nest({ |
7 | + 'app.html.link': 'first', | |
7 | 8 | 'history.sync.push': 'first', |
8 | 9 | 'history.sync.back': 'first' |
9 | 10 | }) |
10 | 11 | |
@@ -12,15 +13,19 @@ | ||
12 | 13 | return nest('app.html.nav', nav) |
13 | 14 | |
14 | 15 | function nav (id) { |
15 | 16 | const { push, back } = api.history.sync |
17 | + | |
18 | + const goHome = () => push({page: 'home'}) | |
19 | + // CHANGE THIS : zero history | |
20 | + const Link = api.app.html.link | |
21 | + | |
16 | 22 | return h('Nav', [ |
17 | 23 | h('div.back', { 'ev-click': back }, '←'), |
18 | - h('div', { 'ev-click': () => push({page: 'home'}) }, 'Home') | |
19 | - // h('div', { 'ev-click': () => push({type: 'group', key: '%sadlkjas;lkdjas'}) }, 'Group'), | |
20 | -// h('div', { 'ev-click': () => push({key: '%fXXZgQrwnj7F+Y19H0IXxNriuvPFoahvusih3UzpkfA=.sha256'}) }, 'Thread A'), | |
21 | -// h('div', { 'ev-click': () => push({key: '%3cWZHeN6k03XpvDBxrxP5bGLsNByFLTvr/rKYFV4f+c=.sha256'}) }, 'Thread B'), | |
22 | -// h('a', { href: '%YRhFXmsAwipgyiwuHSP+EBr9fGjSqrMpWXUxgWcHxkM=.sha256' }, 'href link') | |
24 | + h('div', { 'ev-click': goHome }, 'Home'), | |
25 | + Link({ page: 'settings' }, 'Settings'), | |
26 | + Link({ page: 'userFind' }, 'Find a User'), | |
27 | + h('a', { href: '%YRhFXmsAwipgyiwuHSP+EBr9fGjSqrMpWXUxgWcHxkM=.sha256' }, 'A Thread') | |
23 | 28 | ]) |
24 | 29 | } |
25 | 30 | } |
26 | 31 |
app/html/nav.mcss | ||
---|---|---|
@@ -3,9 +3,10 @@ | ||
3 | 3 | align-items: center |
4 | 4 | |
5 | 5 | margin: 0 0 1rem 1rem |
6 | 6 | |
7 | - div { | |
7 | + a, div { | |
8 | + color: #222 | |
8 | 9 | margin-right: 1rem |
9 | 10 | |
10 | 11 | :hover { |
11 | 12 | text-decoration: underline |
app/html/link.js | ||
---|---|---|
@@ -1,0 +1,17 @@ | ||
1 | +const nest = require('depnest') | |
2 | +const { h } = require('mutant') | |
3 | + | |
4 | +exports.gives = nest('app.html.link') | |
5 | + | |
6 | +exports.needs = nest({ | |
7 | + 'history.sync.push': 'first', | |
8 | +}) | |
9 | + | |
10 | +exports.create = (api) => { | |
11 | + return nest('app.html.link', (location, body) => { | |
12 | + return h('Link', { | |
13 | + 'ev-click': () => api.history.sync.push(location) | |
14 | + }, body) | |
15 | + }) | |
16 | +} | |
17 | + |
app/index.js | ||
---|---|---|
@@ -4,15 +4,24 @@ | ||
4 | 4 | }, |
5 | 5 | html: { |
6 | 6 | app: require('./html/app'), |
7 | 7 | thread: require('./html/thread'), |
8 | + link: require('./html/link'), | |
8 | 9 | nav: require('./html/nav'), |
9 | - threadCard: require('./html/thread-card') | |
10 | + threadCard: require('./html/thread-card'), | |
11 | + nav: require('./html/nav'), | |
10 | 12 | }, |
11 | 13 | page: { |
12 | - group: require('./page/group'), | |
13 | 14 | channel: require('./page/channel'), |
15 | + error: require('./page/error'), | |
16 | + groupFind: require('./page/groupFind'), | |
17 | + groupIndex: require('./page/groupIndex'), | |
18 | + groupNew: require('./page/groupNew'), | |
19 | + groupShow: require('./page/groupShow'), | |
14 | 20 | home: require('./page/home'), |
15 | - private: require('./page/private') | |
21 | + settings: require('./page/settings'), | |
22 | + threadShow: require('./page/threadShow'), | |
23 | + userFind: require('./page/userFind'), | |
24 | + userShow: require('./page/userShow'), | |
16 | 25 | } |
17 | 26 | } |
18 | 27 |
app/page/group.js | ||
---|---|---|
@@ -1,23 +1,0 @@ | ||
1 | -const nest = require('depnest') | |
2 | -const { h } = require('mutant') | |
3 | - | |
4 | -exports.gives = nest('app.page.group') | |
5 | - | |
6 | -exports.needs = nest({ | |
7 | - 'app.html.nav': 'first' | |
8 | -}) | |
9 | - | |
10 | -exports.create = (api) => { | |
11 | - return nest('app.page.group', group) | |
12 | - | |
13 | - function group (location) { | |
14 | - // location here can be the root message of a group : { type: 'group', key } | |
15 | - // TODO show specific group index described by key | |
16 | - | |
17 | - return h('Page -group', [ | |
18 | - h('h1', 'Group'), | |
19 | - api.app.html.nav(), | |
20 | - h('p', `key: ${location.key}`) | |
21 | - ]) | |
22 | - } | |
23 | -} |
app/page/error.js | ||
---|---|---|
@@ -1,0 +1,22 @@ | ||
1 | +const nest = require('depnest') | |
2 | +const { h } = require('mutant') | |
3 | + | |
4 | +exports.gives = nest('app.page.error') | |
5 | + | |
6 | +exports.needs = nest({ | |
7 | + 'app.html.nav': 'first' | |
8 | +}) | |
9 | + | |
10 | +exports.create = (api) => { | |
11 | + return nest('app.page.error', error) | |
12 | + | |
13 | + function error (location) { | |
14 | + | |
15 | + return h('Page -error', [ | |
16 | + h('h1', 'Error'), | |
17 | + api.app.html.nav(), | |
18 | + "The route wasn't found of there was an error", | |
19 | + location.error | |
20 | + ]) | |
21 | + } | |
22 | +} |
app/page/groupFind.js | ||
---|---|---|
@@ -1,0 +1,21 @@ | ||
1 | +const nest = require('depnest') | |
2 | +const { h } = require('mutant') | |
3 | + | |
4 | +exports.gives = nest('app.page.groupFind') | |
5 | + | |
6 | +exports.needs = nest({ | |
7 | + 'app.html.nav': 'first' | |
8 | +}) | |
9 | + | |
10 | +exports.create = (api) => { | |
11 | + return nest('app.page.groupFind', groupFind) | |
12 | + | |
13 | + function groupFind (location) { | |
14 | + | |
15 | + return h('Page -groupFind', [ | |
16 | + h('h1', 'Group Find'), | |
17 | + api.app.html.nav(), | |
18 | + h('p', `key: ${location.key}`) | |
19 | + ]) | |
20 | + } | |
21 | +} |
app/page/groupIndex.js | ||
---|---|---|
@@ -1,0 +1,19 @@ | ||
1 | +const nest = require('depnest') | |
2 | +const { h } = require('mutant') | |
3 | + | |
4 | +exports.gives = nest('app.page.groupIndex') | |
5 | + | |
6 | +exports.needs = nest({ | |
7 | + 'app.html.nav': 'first' | |
8 | +}) | |
9 | + | |
10 | +exports.create = (api) => { | |
11 | + return nest('app.page.groupIndex', groupIndex) | |
12 | + | |
13 | + function groupIndex (location) { | |
14 | + return h('Page -groupIndex', [ | |
15 | + h('h1', 'Group Index'), | |
16 | + api.app.html.nav() | |
17 | + ]) | |
18 | + } | |
19 | +} |
app/page/groupNew.js | ||
---|---|---|
@@ -1,0 +1,19 @@ | ||
1 | +const nest = require('depnest') | |
2 | +const { h } = require('mutant') | |
3 | + | |
4 | +exports.gives = nest('app.page.groupNew') | |
5 | + | |
6 | +exports.needs = nest({ | |
7 | + 'app.html.nav': 'first' | |
8 | +}) | |
9 | + | |
10 | +exports.create = (api) => { | |
11 | + return nest('app.page.groupNew', groupNew) | |
12 | + | |
13 | + function groupNew (location) { | |
14 | + return h('Page -groupNew', [ | |
15 | + h('h1', 'Group New'), | |
16 | + api.app.html.nav() | |
17 | + ]) | |
18 | + } | |
19 | +} |
app/page/private.js | ||
---|---|---|
@@ -1,25 +1,0 @@ | ||
1 | -const nest = require('depnest') | |
2 | -const { h } = require('mutant') | |
3 | - | |
4 | -exports.gives = nest('app.page.private') | |
5 | - | |
6 | -exports.needs = nest({ | |
7 | - 'app.html.nav': 'first', | |
8 | - 'app.html.thread': 'first' | |
9 | -}) | |
10 | - | |
11 | -exports.create = (api) => { | |
12 | - return nest('app.page.private', privatePage) | |
13 | - | |
14 | - function privatePage (location) { | |
15 | - // location here can expected to be an ssb-message | |
16 | - | |
17 | - const thread = api.app.html.thread(location.key) | |
18 | - | |
19 | - return h('Page -private', [ | |
20 | - h('h1', 'Private message'), | |
21 | - api.app.html.nav(), | |
22 | - h('div.container', thread) | |
23 | - ]) | |
24 | - } | |
25 | -} |
app/page/groupShow.js | ||
---|---|---|
@@ -1,0 +1,23 @@ | ||
1 | +const nest = require('depnest') | |
2 | +const { h } = require('mutant') | |
3 | + | |
4 | +exports.gives = nest('app.page.groupShow') | |
5 | + | |
6 | +exports.needs = nest({ | |
7 | + 'app.html.nav': 'first' | |
8 | +}) | |
9 | + | |
10 | +exports.create = (api) => { | |
11 | + return nest('app.page.groupShow', groupShow) | |
12 | + | |
13 | + function groupShow (location) { | |
14 | + // location here can be the root message of a group : { type: 'group', key } | |
15 | + // TODO show specific group index described by key | |
16 | + | |
17 | + return h('Page -groupShow', [ | |
18 | + h('h1', 'Group Show'), | |
19 | + api.app.html.nav(), | |
20 | + h('p', `key: ${location.key}`) | |
21 | + ]) | |
22 | + } | |
23 | +} |
app/page/settings.js | ||
---|---|---|
@@ -1,0 +1,20 @@ | ||
1 | +const nest = require('depnest') | |
2 | +const { h } = require('mutant') | |
3 | + | |
4 | +exports.gives = nest('app.page.settings') | |
5 | + | |
6 | +exports.needs = nest({ | |
7 | + 'app.html.nav': 'first' | |
8 | +}) | |
9 | + | |
10 | +exports.create = (api) => { | |
11 | + return nest('app.page.settings', settings) | |
12 | + | |
13 | + function settings (location) { | |
14 | + | |
15 | + return h('Page -settings', [ | |
16 | + h('h1', 'Settings'), | |
17 | + api.app.html.nav(), | |
18 | + ]) | |
19 | + } | |
20 | +} |
app/page/threadShow.js | ||
---|---|---|
@@ -1,0 +1,25 @@ | ||
1 | +const nest = require('depnest') | |
2 | +const { h } = require('mutant') | |
3 | + | |
4 | +exports.gives = nest('app.page.threadShow') | |
5 | + | |
6 | +exports.needs = nest({ | |
7 | + 'app.html.nav': 'first', | |
8 | + 'app.html.thread': 'first' | |
9 | +}) | |
10 | + | |
11 | +exports.create = (api) => { | |
12 | + return nest('app.page.threadShow', threadShow) | |
13 | + | |
14 | + function threadShow (location) { | |
15 | + // location here can expected to be an ssb-message | |
16 | + | |
17 | + const thread = api.app.html.thread(location.key) | |
18 | + | |
19 | + return h('Page -threadShow', [ | |
20 | + h('h1', 'Private message'), | |
21 | + api.app.html.nav(), | |
22 | + h('div.container', thread) | |
23 | + ]) | |
24 | + } | |
25 | +} |
app/page/userFind.js | ||
---|---|---|
@@ -1,0 +1,20 @@ | ||
1 | +const nest = require('depnest') | |
2 | +const { h } = require('mutant') | |
3 | + | |
4 | +exports.gives = nest('app.page.userFind') | |
5 | + | |
6 | +exports.needs = nest({ | |
7 | + 'app.html.nav': 'first' | |
8 | +}) | |
9 | + | |
10 | +exports.create = (api) => { | |
11 | + return nest('app.page.userFind', userFind) | |
12 | + | |
13 | + function userFind (location) { | |
14 | + | |
15 | + return h('Page -userFind', [ | |
16 | + h('h1', 'Find a User'), | |
17 | + api.app.html.nav() | |
18 | + ]) | |
19 | + } | |
20 | +} |
app/page/userShow.js | ||
---|---|---|
@@ -1,0 +1,21 @@ | ||
1 | +const nest = require('depnest') | |
2 | +const { h } = require('mutant') | |
3 | + | |
4 | +exports.gives = nest('app.page.userShow') | |
5 | + | |
6 | +exports.needs = nest({ | |
7 | + 'app.html.nav': 'first' | |
8 | +}) | |
9 | + | |
10 | +exports.create = (api) => { | |
11 | + return nest('app.page.userShow', userShow) | |
12 | + | |
13 | + function userShow (location) { | |
14 | + | |
15 | + return h('Page -userShow', [ | |
16 | + h('h1', 'User show'), | |
17 | + api.app.html.nav(), | |
18 | + h('p', `key: ${location.key}`) | |
19 | + ]) | |
20 | + } | |
21 | +} |
router/sync/routes.js | ||
---|---|---|
@@ -1,13 +1,20 @@ | ||
1 | 1 | const nest = require('depnest') |
2 | -const ref = require('ssb-ref') | |
2 | +const { isMsg, isFeed } = require('ssb-ref') | |
3 | 3 | exports.gives = nest('router.sync.routes') |
4 | 4 | |
5 | 5 | exports.needs = nest({ |
6 | + 'app.page.error': 'first', | |
6 | 7 | 'app.page.home': 'first', |
7 | - 'app.page.group': 'first', | |
8 | 8 | 'app.page.channel': 'first', |
9 | - 'app.page.private': 'first' | |
9 | + 'app.page.settings': 'first', | |
10 | + 'app.page.groupFind': 'first', | |
11 | + 'app.page.groupIndex': 'first', | |
12 | + 'app.page.groupNew': 'first', | |
13 | + 'app.page.groupShow': 'first', | |
14 | + 'app.page.userFind': 'first', | |
15 | + 'app.page.userShow': 'first', | |
16 | + 'app.page.threadShow': 'first' | |
10 | 17 | }) |
11 | 18 | |
12 | 19 | exports.create = (api) => { |
13 | 20 | return nest('router.sync.routes', (sofar = []) => { |
@@ -15,11 +22,27 @@ | ||
15 | 22 | // route format: [ routeValidator, routeFunction ] |
16 | 23 | |
17 | 24 | const routes = [ |
18 | 25 | [ location => location.page === 'home', pages.home ], |
19 | - [ location => location.type === 'group', pages.group ], | |
20 | 26 | [ location => location.channel , pages.channel ], |
21 | - [ location => ref.isMsg(location.key), pages.private ] | |
27 | + [ location => location.page === 'settings', pages.settings ], | |
28 | + | |
29 | + // Group pages | |
30 | + [ location => location.page === 'groupFind', pages.groupFind ], | |
31 | + [ location => location.page === 'groupIndex', pages.groupIndex ], | |
32 | + [ location => location.page === 'groupNew', pages.groupNew ], | |
33 | + [ location => location.type === 'groupShow' && isMsg(location.key), pages.groupShow ], | |
34 | + | |
35 | + // User pages | |
36 | + [ location => location.page === 'userFind', pages.userFind ], | |
37 | + [ location => isFeed(location.feed), pages.userShow ], | |
38 | + | |
39 | + // Thread pages | |
40 | + // QUESTION - should this be for private threads + group threads? | |
41 | + [ location => isMsg(location.key), pages.threadShow ], | |
42 | + | |
43 | + // Error page | |
44 | + [ location => true, pages.error ] | |
22 | 45 | ] |
23 | 46 | |
24 | 47 | return [...routes, ...sofar] |
25 | 48 | }) |
Built with git-ssb-web