UNPKG

2.46 kBJavaScriptView Raw
1const pull = require('pull-stream');
2
3module.exports = (dataAccess, myIdent, chessIndex) => {
4 // untested
5 // function followPlayer(playerPubKey) {
6 // sbot.publish({
7 // type: 'contact',
8 // contact: playerPubKey,
9 // following: true,
10 // });
11 // }
12
13 // // untested
14 // function unfollowPlayer(playerPubKey) {
15 // sbot.publish({
16 // type: 'contact',
17 // contact: playerPubKey,
18 // following: false,
19 // });
20 // }
21
22 function toPromise(source, through) {
23 return new Promise((resolve, reject) => {
24 pull(source, pull.collect((err, results) => {
25 if (err) {
26 reject(err);
27 } else {
28 resolve(results);
29 }
30 }));
31 });
32 }
33
34 function followedByMe() {
35 return new Promise((resolve, reject) => {
36 pull(dataAccess.follows(myIdent, false), pull.take(1), pull.collect((err, results) => {
37 if (err) {
38 reject(err);
39 } else if (results.length == 1) {
40 resolve(results[0]);
41 } else {
42 console.log("followedByMe length is not 1");
43 console.log(results);
44 resolve([]);
45 }
46 }))
47 });
48 }
49
50 function followingMe() {
51 return new Promise((resolve, reject) => {
52 pull(dataAccess.followedBy(myIdent, false), pull.take(1), pull.collect((err, results) => {
53 if (err) {
54 reject(err);
55 } else if (results.length == 1) {
56 resolve(results[0]);
57 } else {
58 console.log("followingMe length is not 1");
59 console.log(results);
60 resolve([]);
61 }
62 }))
63 })
64 }
65
66 function getPlayerDisplayName(playerPubKey) {
67 // TODO: have some way to mark a game as corrupted.
68 if (!playerPubKey || !playerPubKey.startsWith('@')) {
69 return Promise.resolve('<error>');
70 }
71
72 return new Promise((resolve, reject) => {
73 dataAccess.getPlayerDisplayName(playerPubKey, (err, result) => {
74 if (err) {
75 reject(err)
76 } else {
77 resolve(result);
78 }
79 })
80 });
81 }
82
83 function getWeightedPlayFrequencyList() {
84
85 return new Promise( (resolve, reject) => {
86 chessIndex.weightedPlayFrequencyList(myIdent, (err, result) => {
87 if (err) {
88 reject(err);
89 } else {
90 resolve(result);
91 }
92 });
93
94 });
95 }
96
97 return {
98 followingMe,
99 followedByMe,
100 getPlayerDisplayName,
101 getWeightedPlayFrequencyList
102 };
103};