git ssb

2+

mixmix / ticktack



Commit aa385bc7adcc17f7091af60e79e1cd9802cc5dfe

add placeholders for all pages, add new app.html.link helper

mix irving committed on 8/14/2017, 12:38:46 AM
Parent: 49bee78f3c1fec7174a11ee2c7277f5c9a7f47fc

Files changed

app/html/app.jschanged
app/html/nav.jschanged
app/html/nav.mcsschanged
app/html/link.jsadded
app/index.jschanged
app/page/home.jschanged
app/page/group.jsdeleted
app/page/error.jsadded
app/page/groupFind.jsadded
app/page/groupIndex.jsadded
app/page/groupNew.jsadded
app/page/private.jsdeleted
app/page/groupShow.jsadded
app/page/settings.jsadded
app/page/threadShow.jsadded
app/page/userFind.jsadded
app/page/userShow.jsadded
router/sync/routes.jschanged
app/html/app.jsView
@@ -27,9 +27,9 @@
2727 api.history.sync.push(link)
2828 })
2929
3030 api.history.obs.location()(render)
31- api.history.sync.push({ page: 'home' })
31+ api.history.sync.push({ page: 'settings' })
3232 }
3333
3434 function render (location) {
3535 const newView = api.router.sync.router(location)
app/html/nav.jsView
@@ -3,8 +3,9 @@
33
44 exports.gives = nest('app.html.nav')
55
66 exports.needs = nest({
7+ 'app.html.link': 'first',
78 'history.sync.push': 'first',
89 'history.sync.back': 'first'
910 })
1011
@@ -12,14 +13,18 @@
1213 return nest('app.html.nav', nav)
1314
1415 function nav (id) {
1516 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+
1622 return h('Nav', [
1723 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')
2328 ])
2429 }
2530 }
app/html/nav.mcssView
@@ -3,9 +3,10 @@
33 align-items: center
44
55 margin: 0 0 1rem 1rem
66
7- div {
7+ a, div {
8+ color: #222
89 margin-right: 1rem
910
1011 :hover {
1112 text-decoration: underline
app/html/link.jsView
@@ -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.jsView
@@ -4,12 +4,20 @@
44 },
55 html: {
66 app: require('./html/app'),
77 thread: require('./html/thread'),
8- nav: require('./html/nav')
8+ link: require('./html/link'),
9+ nav: require('./html/nav'),
910 },
1011 page: {
11- group: require('./page/group'),
12+ error: require('./page/error'),
13+ groupFind: require('./page/groupFind'),
14+ groupIndex: require('./page/groupIndex'),
15+ groupNew: require('./page/groupNew'),
16+ groupShow: require('./page/groupShow'),
1217 home: require('./page/home'),
13- private: require('./page/private')
18+ settings: require('./page/settings'),
19+ userFind: require('./page/userFind'),
20+ userShow: require('./page/userShow'),
21+ threadShow: require('./page/threadShow'),
1422 }
1523 }
app/page/home.jsView
@@ -59,8 +59,9 @@
5959 var container = h('div.container', [])
6060
6161 function subject (msg) {
6262 const { subject, text } = msg.value.content
63+
6364 return api.message.html.markdown(firstLine(subject|| text))
6465 }
6566
6667 function link(location) {
app/page/group.jsView
@@ -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.jsView
@@ -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.jsView
@@ -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.jsView
@@ -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.jsView
@@ -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.jsView
@@ -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.jsView
@@ -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.jsView
@@ -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.jsView
@@ -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.jsView
@@ -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.jsView
@@ -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.jsView
@@ -1,12 +1,19 @@
11 const nest = require('depnest')
2-const ref = require('ssb-ref')
2+const { isMsg, isFeed } = require('ssb-ref')
33 exports.gives = nest('router.sync.routes')
44
55 exports.needs = nest({
6+ 'app.page.error': 'first',
67 'app.page.home': 'first',
7- 'app.page.group': 'first',
8- 'app.page.private': 'first'
8+ 'app.page.settings': 'first',
9+ 'app.page.groupFind': 'first',
10+ 'app.page.groupIndex': 'first',
11+ 'app.page.groupNew': 'first',
12+ 'app.page.groupShow': 'first',
13+ 'app.page.userFind': 'first',
14+ 'app.page.userShow': 'first',
15+ 'app.page.threadShow': 'first'
916 })
1017
1118 exports.create = (api) => {
1219 return nest('router.sync.routes', (sofar = []) => {
@@ -14,11 +21,26 @@
1421 // route format: [ routeValidator, routeFunction ]
1522
1623 const routes = [
1724 [ location => location.page === 'home', pages.home ],
18- [ location => location.type === 'group', pages.group ],
19- [ location => location.page === 'channel', pages.channel ],
20- [ location => ref.isMsg(location.key), pages.private ]
25+ [ location => location.page === 'settings', pages.settings ],
26+
27+ // Group pages
28+ [ location => location.page === 'groupFind', pages.groupFind ],
29+ [ location => location.page === 'groupIndex', pages.groupIndex ],
30+ [ location => location.page === 'groupNew', pages.groupNew ],
31+ [ location => location.type === 'groupShow' && isMsg(location.key), pages.groupShow ],
32+
33+ // User pages
34+ [ location => location.page === 'userFind', pages.userFind ],
35+ [ location => isFeed(location.feed), pages.userShow ],
36+
37+ // Thread pages
38+ // QUESTION - should this be for private threads + group threads?
39+ [ location => isMsg(location.key), pages.threadShow ],
40+
41+ // Error page
42+ [ location => true, pages.error ]
2143 ]
2244
2345 return [...routes, ...sofar]
2446 })

Built with git-ssb-web