modules_basic/avatar/profile.jsView |
---|
1 | | -var h = require('hyperscript') |
2 | | -var pull = require('pull-stream') |
| 1 … | +const fs = require('fs') |
| 2 … | +const h = require('../../h') |
| 3 … | +const pull = require('pull-stream') |
| 4 … | +const { unique, collect, drain } = pull |
3 | 5 … | |
| 6 … | + |
4 | 7 … | exports.needs = { |
5 | 8 … | avatar_image_link: 'first', |
6 | 9 … | avatar_action: 'map', |
7 | 10 … | avatar_edit: 'first', |
8 | 11 … | follows: 'first', |
9 | 12 … | followers: 'first' |
10 | 13 … | } |
11 | 14 … | |
12 | | -exports.gives = 'avatar_profile' |
13 | | - |
14 | | -function streamToList(stream, el) { |
15 | | - pull( |
16 | | - stream, |
17 | | - pull.drain(function (item) { |
18 | | - if(item) el.appendChild(item) |
19 | | - }) |
20 | | - ) |
21 | | - return el |
| 15 … | +exports.gives = { |
| 16 … | + avatar_profile: true, |
| 17 … | + mcss: true |
22 | 18 … | } |
23 | 19 … | |
24 | 20 … | exports.create = function (api) { |
25 | | - |
26 | | - function image_link (id) { |
27 | | - return api.avatar_image_link(id, 'thumbnail') |
| 21 … | + return { |
| 22 … | + avatar_profile, |
| 23 … | + mcss: () => fs.readFileSync(__filename.replace(/js$/, 'mcss'), 'utf8') |
28 | 24 … | } |
29 | 25 … | |
30 | | - return function (id) { |
| 26 … | + function avatar_profile (id) { |
31 | 27 … | |
32 | | - var follows_el = h('div.profile__follows.wrap') |
33 | | - var friends_el = h('div.profile__friendss.wrap') |
34 | | - var followers_el = h('div.profile__followers.wrap') |
| 28 … | + var friends_el = h('div.friends', [ |
| 29 … | + h('header', 'Friends') |
| 30 … | + ]) |
| 31 … | + var follows_el = h('div.follows', [ |
| 32 … | + h('header', 'Follows') |
| 33 … | + ]) |
| 34 … | + var followers_el = h('div.followers', [ |
| 35 … | + h('header', 'Followers') |
| 36 … | + ]) |
35 | 37 … | var a, b |
36 | 38 … | |
37 | | - pull(api.follows(id), pull.unique(), pull.collect(function (err, ary) { |
38 | | - a = ary || []; next() |
39 | | - })) |
40 | | - pull(api.followers(id), pull.unique(), pull.collect(function (err, ary) { |
41 | | - b = ary || {}; next() |
42 | | - })) |
| 39 … | + pull( |
| 40 … | + api.follows(id), |
| 41 … | + unique(), |
| 42 … | + collect((err, ary = []) => { |
| 43 … | + a = ary; next() |
| 44 … | + }) |
| 45 … | + ) |
| 46 … | + pull( |
| 47 … | + api.followers(id), |
| 48 … | + unique(), |
| 49 … | + collect((err, ary = {}) => { |
| 50 … | + b = ary; next() |
| 51 … | + }) |
| 52 … | + ) |
43 | 53 … | |
44 | 54 … | function next () { |
45 | 55 … | if(!(a && b)) return |
46 | 56 … | var _c = [], _a = [], _b = [] |
47 | 57 … | |
48 | | - a.forEach(function (id) { |
| 58 … | + a.forEach(id => { |
49 | 59 … | if(!~b.indexOf(id)) _a.push(id) |
50 | 60 … | else _c.push(id) |
51 | 61 … | }) |
52 | | - b.forEach(function (id) { |
| 62 … | + b.forEach(id => { |
53 | 63 … | if(!~_c.indexOf(id)) _b.push(id) |
54 | 64 … | }) |
55 | | - function add (ary, el) { |
56 | | - ary.forEach(function (id) { el.appendChild(image_link(id)) }) |
57 | | - } |
58 | 65 … | |
| 66 … | + add(_c, friends_el) |
59 | 67 … | add(_a, follows_el) |
60 | | - add(_c, friends_el) |
61 | 68 … | add(_b, followers_el) |
| 69 … | + |
| 70 … | + function add (ary, el) { |
| 71 … | + ary.forEach(id => el.appendChild(api.avatar_image_link(id)) ) |
| 72 … | + } |
62 | 73 … | } |
63 | 74 … | |
64 | 75 … | |
65 | | - return h('div.column.profile', |
66 | | - api.avatar_edit(id), |
67 | | - api.avatar_action(id), |
68 | | - h('div.profile__relationships.column', |
69 | | - h('strong', 'follows'), |
| 76 … | + return h('Profile', [ |
| 77 … | + h('section.edit', api.avatar_edit(id)), |
| 78 … | + h('section.action', api.avatar_action(id)), |
| 79 … | + h('section.relationships', [ |
| 80 … | + friends_el, |
70 | 81 … | follows_el, |
71 | | - h('strong', 'friends'), |
72 | | - friends_el, |
73 | | - h('strong', 'followers'), |
74 | 82 … | followers_el |
75 | | - ) |
76 | | - ) |
| 83 … | + ]) |
| 84 … | + ]) |
77 | 85 … | } |
78 | 86 … | |
79 | 87 … | } |