git ssb

10+

Matt McKegg / patchwork



Tree: c792588268e3e2efcd286ebe0d46e93b0f34bbb7

Files: c792588268e3e2efcd286ebe0d46e93b0f34bbb7 / 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