Commit 84264ad623514504ac769c561b7e7b10a163e69a
fix everything
Dominic Tarr committed on 7/20/2017, 10:47:23 AMParent: f48fb1aaaee24b2d0214b1f4aa1f66f3dec41972
Files changed
index.js | changed |
irc.js | changed |
ssb.js | changed |
index.js | ||
---|---|---|
@@ -1,6 +1,7 @@ | ||
1 | 1 … | var ssb = require('./ssb') |
2 | 2 … | var IRC = require('./irc') |
3 … | +var pull = require('pull-stream') | |
3 | 4 … | //this should just wrap the stuff in util.js |
4 | 5 … | |
5 | 6 … | exports.name = 'irc' |
6 | 7 … | exports.version = '1.0.0' |
@@ -9,12 +10,12 @@ | ||
9 | 10 … | exports.init = function (sbot, config) { |
10 | 11 … | // |
11 | 12 … | var n = 2 |
12 | 13 … | //load current state |
13 | - var state = ssb.init(sbot, process.argv[2] || sbot.id, next) | |
14 … | + var state = ssb.init(sbot, sbot.id, next) | |
14 | 15 … | var irc = IRC(config, next) |
15 | 16 … | |
16 | - | |
17 … | + console.log("STATE", state) | |
17 | 18 … | function notify (note) { |
18 | 19 … | irc.say( |
19 | 20 … | note.type == 'channel' |
20 | 21 … | ? IRC.toChannel(note.target) |
@@ -23,15 +24,16 @@ | ||
23 | 24 … | ssb.render(note, ssb.link(note.id, config)) |
24 | 25 … | ) |
25 | 26 … | } |
26 | 27 … | |
27 | - function next (err, state) { | |
28 … | + function next () { | |
28 | 29 … | if(--n) return |
29 | 30 … | //XXX: properly persist state with a flumeview? |
30 | 31 … | |
31 | 32 … | //make sure we have joined every channel |
32 | 33 … | for(var k in state.channels) { |
33 | - var channel = state.channels[k] | |
34 … | + var channel = state.channels[k] === true ? k : state.channels[k] | |
35 … | + console.log("JOIN", channel) | |
34 | 36 … | IRC.join(irc, channel) |
35 | 37 … | } |
36 | 38 … | |
37 | 39 … | //only notify about live posts. |
@@ -41,16 +43,14 @@ | ||
41 | 43 … | pull( |
42 | 44 … | sbot.createLogStream({live: true}), |
43 | 45 … | pull.drain(function (msg) { |
44 | 46 … | if(msg.sync) return |
45 | - var a = tests.reduce(function (found, test) { | |
46 | - return found.concat(exports.match(state, msg) || []) | |
47 | - }, []) | |
48 | - | |
47 … | + var a = ssb.match(state, msg) | |
49 | 48 … | if(a.length) |
50 | 49 … | a.forEach(notify) |
51 | 50 … | }) |
52 | 51 … | ) |
53 | 52 … | } |
54 | 53 … | } |
55 | 54 … | |
56 | 55 … | |
56 … | + |
irc.js | ||
---|---|---|
@@ -5,10 +5,23 @@ | ||
5 | 5 … | conf.host || 'irc.freenode.net', |
6 | 6 … | conf.port || 6667, |
7 | 7 … | conf.name || 'ssbbot' |
8 | 8 … | ) |
9 | - irc.connect() | |
9 … | + ;(function connect() { | |
10 … | + irc.connect() | |
11 … | + irc.client.on('error', reconnect) | |
12 … | + irc.client.on('close', reconnect) | |
13 … | + var retry = false | |
14 … | + function reconnect () { | |
15 … | + if(retry) return | |
16 … | + retry = true | |
17 … | + setTimeout(connect, 10e3) | |
18 … | + } | |
19 … | + }) | |
10 | 20 … | irc.on('ready', cb) |
21 … | + irc.on('error', function () { | |
22 … | + | |
23 … | + }) | |
11 | 24 … | return irc |
12 | 25 … | } |
13 | 26 … | |
14 | 27 … | IRC.toChannel = function (channel) { |
@@ -33,29 +46,32 @@ | ||
33 | 46 … | irc.say(nick, message) |
34 | 47 … | } |
35 | 48 … | |
36 | 49 … | |
37 | -if(!module.parent) { | |
38 | - var ssb = require('./ssb') | |
39 | - var irc = IRC({}, function (err) { | |
40 | - var note = { | |
41 | - author: 'dominic', | |
42 | - target: 'domanic', | |
43 | - text: 'test 1 2 3, @domanic', | |
44 | - id: '%v6y1c1VYXthYbNYh0RqmXfC18HyhHnozDN3ZhrWLThU=.sha256' | |
45 | - } | |
46 | - var config = {} | |
50 … | +//if(!module.parent) { | |
51 … | +// var ssb = require('./ssb') | |
52 … | +// var irc = IRC({}, function (err) { | |
53 … | +// var note = { | |
54 … | +// author: 'dominic', | |
55 … | +// target: 'domanic', | |
56 … | +// text: 'test 1 2 3, @domanic', | |
57 … | +// id: '%v6y1c1VYXthYbNYh0RqmXfC18HyhHnozDN3ZhrWLThU=.sha256' | |
58 … | +// } | |
59 … | +// var config = {} | |
60 … | +// | |
61 … | +// function notify (note) { | |
62 … | +// irc.say( | |
63 … | +// note.type == 'channel' | |
64 … | +// ? IRC.toChannel(note.target) | |
65 … | +// : note.target | |
66 … | +// , | |
67 … | +// ssb.render(note, ssb.link(note.id, config)) | |
68 … | +// ) | |
69 … | +// } | |
70 … | +// | |
71 … | +// notify(note) | |
72 … | +// }) | |
73 … | +//} | |
74 … | +// | |
47 | 75 … | |
48 | - function notify (note) { | |
49 | - irc.say( | |
50 | - note.type == 'channel' | |
51 | - ? IRC.toChannel(note.target) | |
52 | - : note.target | |
53 | - , | |
54 | - ssb.render(note, ssb.link(note.id, config)) | |
55 | - ) | |
56 | - } | |
57 | 76 … | |
58 | - notify(note) | |
59 | - }) | |
60 | -} | |
61 | 77 … |
ssb.js | ||
---|---|---|
@@ -36,11 +36,14 @@ | ||
36 | 36 … | }) |
37 | 37 … | ) |
38 | 38 … | }) |
39 | 39 … | ) |
40 … | + | |
40 | 41 … | return state |
41 | 42 … | } |
42 | 43 … | |
44 … | +exports.init = init | |
45 … | + | |
43 | 46 … | function toKey(fn) { |
44 | 47 … | return function (state, msg) { |
45 | 48 … | var key |
46 | 49 … | if(msg.key) { |
@@ -148,9 +151,9 @@ | ||
148 | 151 … | exports.isUserMention, |
149 | 152 … | exports.isUserFollow |
150 | 153 … | ] |
151 | 154 … | |
152 | -exports.match = function (msg) { | |
155 … | +exports.match = function (state, msg) { | |
153 | 156 … | return exports.tests.reduce(function (found, test) { |
154 | 157 … | return found.concat(test(state, msg) || []) |
155 | 158 … | }, []) |
156 | 159 … | |
@@ -172,29 +175,29 @@ | ||
172 | 175 … | exports.link = function (id, config) { |
173 | 176 … | return ((config && config.irc && config.irc.domain) || "http://viewer.scuttlebot.io") + '/' + encodeURIComponent(id) |
174 | 177 … | } |
175 | 178 … | |
176 | -if(!module.parent) { | |
177 | - //this is just for testing... | |
178 | - require('ssb-client')(function (err, sbot) { | |
179 | - if(err) throw err | |
180 | - var state = init(sbot, process.argv[2] || sbot.id, function (err, state) { | |
181 | - | |
182 | - console.log(state) | |
183 | - //XXX: properly persist state with a flumeview? | |
184 | - | |
185 | - pull( | |
186 | - sbot.createLogStream({}), | |
187 | - pull.drain(function (msg) { | |
188 | - if(msg.sync) return | |
189 | - var a = tests.reduce(function (found, test) { | |
190 | - return found.concat(exports.match(state, msg) || []) | |
191 | - }, []) | |
192 | - if(a.length) { | |
193 | - | |
194 | - } | |
195 | - }) | |
196 | - ) | |
197 | - }) | |
198 | - }) | |
199 | -} | |
200 | - | |
179 … | +//if(!module.parent) { | |
180 … | +// //this is just for testing... | |
181 … | +// require('ssb-client')(function (err, sbot) { | |
182 … | +// if(err) throw err | |
183 … | +// var state = init(sbot, process.argv[2] || sbot.id, function (err, state) { | |
184 … | +// | |
185 … | +// console.log(state) | |
186 … | +// //XXX: properly persist state with a flumeview? | |
187 … | +// | |
188 … | +// pull( | |
189 … | +// sbot.createLogStream({}), | |
190 … | +// pull.drain(function (msg) { | |
191 … | +// if(msg.sync) return | |
192 … | +// var a = tests.reduce(function (found, test) { | |
193 … | +// return found.concat(exports.match(state, msg) || []) | |
194 … | +// }, []) | |
195 … | +// if(a.length) { | |
196 … | +// | |
197 … | +// } | |
198 … | +// }) | |
199 … | +// ) | |
200 … | +// }) | |
201 … | +// }) | |
202 … | +//} | |
203 … | +// |
Built with git-ssb-web