Files: 50a8f45832d95d56a26433d9cd66e7453416a55e / app / html / header.js
1548 bytesRaw
1 | const nest = require('depnest') |
2 | const { h, computed, when } = require('mutant') |
3 | const get = require('lodash/get') |
4 | const path = require('path') |
5 | |
6 | exports.gives = nest('app.html.header') |
7 | |
8 | exports.needs = nest('keys.sync.id', 'first') |
9 | |
10 | const SETTINGS_PAGES = [ |
11 | 'settings', |
12 | 'userEdit', |
13 | ] |
14 | |
15 | exports.create = (api) => { |
16 | return nest('app.html.header', (nav) => { |
17 | const { location, push } = nav |
18 | const myKey = api.keys.sync.id() |
19 | |
20 | const loc = computed(location, location => { |
21 | if (typeof location != 'object') return {} |
22 | return location |
23 | }) |
24 | |
25 | if (loc().page === 'splash') return |
26 | |
27 | const isSettings = computed(loc, loc => SETTINGS_PAGES.includes(loc.page)) |
28 | const isProfile = computed(loc, loc => loc.page === 'userShow' && loc.feed == myKey) |
29 | |
30 | const isFeed = computed([isProfile, isSettings], (p, s) => !p && !s) |
31 | |
32 | return h('Header', [ |
33 | h('nav', [ |
34 | h('img.feed', { |
35 | src: when(isFeed, assetPath('feed_on.png'), assetPath('feed.png')), |
36 | 'ev-click': () => push({page: 'blogIndex'}), |
37 | }), |
38 | h('img.profile', { |
39 | src: when(isProfile, assetPath('address_bk_on.png'), assetPath('address_bk.png')), |
40 | 'ev-click': () => push({page: 'userShow', feed: myKey}) |
41 | }), |
42 | h('img.settings', { |
43 | src: when(isSettings, assetPath('settings_on.png'), assetPath('settings.png')), |
44 | 'ev-click': () => push({page: 'settings'}) |
45 | }), |
46 | ]), |
47 | ]) |
48 | }) |
49 | } |
50 | |
51 | function assetPath (name) { |
52 | return path.join(__dirname, '../../assets', name) |
53 | } |
54 | |
55 |
Built with git-ssb-web