git ssb

0+

alanz / patchwork



forked from Matt McKegg / patchwork

Tree: df697b6ed4d32422df439d0d48d65a64d1d9b04a

Files: df697b6ed4d32422df439d0d48d65a64d1d9b04a / modules / profile / obs / rank.js

977 bytesRaw
1var computed = require('mutant/computed')
2var nest = require('depnest')
3
4exports.needs = nest({
5 'profile.obs.recentlyUpdated': 'first'
6})
7
8exports.gives = nest('profile.obs.rank')
9
10exports.create = function (api) {
11 return nest('profile.obs.rank', function (ids, max) {
12 var recent = api.profile.obs.recentlyUpdated()
13
14 var result = computed([ids, recent], (ids, recent) => {
15 var result = []
16 ids.forEach((id) => {
17 if (recent.has(id)) {
18 result.push(id)
19 }
20 })
21 ids.forEach((id) => {
22 if (!recent.has(id)) {
23 result.push(id)
24 }
25 })
26 if (max) {
27 result = result.slice(0, max)
28 }
29 return result
30 }, {nextTick: true})
31
32 result.sync = recent.sync
33
34 return result
35 })
36}
37
38function compare (a, b, recent) {
39 var hasA = recent.has(a)
40 var hasB = recent.has(b)
41 if (hasA && hasB) {
42 return 0
43 } else if (hasA && !hasB) {
44 return -1
45 } else {
46 return 1
47 }
48}
49

Built with git-ssb-web