Files: adca29179dee2177af6fefa725c91581ffef5395 / app / html / sideNav / sideNavAddressBook.js
2043 bytesRaw
1 | const nest = require('depnest') |
2 | const { h, computed } = require('mutant') |
3 | |
4 | exports.gives = nest({ |
5 | 'app.html.sideNav': true |
6 | }) |
7 | |
8 | exports.needs = nest({ |
9 | // 'app.html.scroller': 'first', |
10 | // 'about.html.avatar': 'first', |
11 | // 'about.obs.name': 'first', |
12 | // 'feed.pull.private': 'first', |
13 | 'history.sync.push': 'first', |
14 | // 'message.html.subject': 'first', |
15 | // 'sbot.obs.localPeers': 'first', |
16 | 'translations.sync.strings': 'first' |
17 | // 'unread.sync.isUnread': 'first' |
18 | }) |
19 | |
20 | exports.create = (api) => { |
21 | return nest({ |
22 | 'app.html.sideNav': sideNav |
23 | }) |
24 | |
25 | function sideNav (location, relationships) { |
26 | if (location.page !== 'addressBook') return |
27 | if (!location.section) location.section = 'friends' |
28 | |
29 | const strings = api.translations.sync.strings().addressBook |
30 | const goTo = (loc) => () => api.history.sync.push(loc) |
31 | |
32 | // TODO - show local peers? |
33 | // var nearby = api.sbot.obs.localPeers() |
34 | |
35 | return h('SideNav -addressBook', [ |
36 | LevelOneSideNav() |
37 | ]) |
38 | |
39 | function LevelOneSideNav () { |
40 | return h('div.level.-one', [ |
41 | h('section', [ |
42 | SectionOption('search', [ |
43 | h('Button -primary', {}, strings.action.addUser) |
44 | ]), |
45 | h('hr') |
46 | ]), |
47 | |
48 | // Friends |
49 | h('section', [ |
50 | h('header', strings.heading.people), |
51 | SectionOption('friends'), |
52 | SectionOption('following'), |
53 | SectionOption('followers') |
54 | ]) |
55 | ]) |
56 | } |
57 | |
58 | function SectionOption (section, body) { |
59 | const className = section === location.section |
60 | ? '-selected' |
61 | : '' |
62 | return h('Option', |
63 | { className, 'ev-click': goTo({page: 'addressBook', section }) }, |
64 | body || defaulBody(section) |
65 | ) |
66 | |
67 | function defaulBody (section) { |
68 | return [ |
69 | h('i.fa.fa-angle-right'), |
70 | strings.section[section], |
71 | h('div.count', count(section)) |
72 | ] |
73 | } |
74 | } |
75 | |
76 | function count (relationshipType) { |
77 | return computed(relationships, rels => rels[relationshipType].length) |
78 | } |
79 | } |
80 | } |
81 |
Built with git-ssb-web