aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gossip.js124
1 files changed, 83 insertions, 41 deletions
diff --git a/gossip.js b/gossip.js
index 06ce458..afe6256 100644
--- a/gossip.js
+++ b/gossip.js
@@ -7,64 +7,106 @@ function sync (subs, keys) {
console.log(servers)
wsServers = servers
} else {
- servers = ['ws://localhost:8080/', 'ws://evbogue.com/']
+ servers = ['ws://localhost:8080/', 'ws://bogbook.com/']
localforage.setItem('pubs', servers)
console.log(servers)
wsServers = servers
}
}).then(function () {
subs.forEach(function (sub) {
- wsServers.forEach(function (server) {
- console.log('SYNCING WITH: ' + server + ' to fetch ' + sub)
- var ws = new WebSocket(server + sub)
+ wsServers.forEach(function (server, index) {
+ setTimeout(function () {
+ console.log('SYNCING WITH: ' + server + ' to fetch ' + sub)
+ var ws = new WebSocket(server + sub)
- bog(sub).then(srclog => {
- if (srclog) {
- open(srclog[0]).then(msg => {
+ bog(sub).then(srclog => {
+ if (srclog) {
+ open(srclog[0]).then(msg => {
+ console.log(msg)
+ var req = {
+ src: sub,
+ seq: msg.seq
+ }
+ ws.onopen = function () {
+ ws.send(JSON.stringify(req))
+ }
+ ws.onmessage = function (message) {
+ var serverMsg = JSON.parse(message.data)
+ if (msg.seq === serverMsg.seq) {
+ } else if (msg.seq > serverMsg.seq) {
+ var diff = msg.seq - serverMsg.seq
+ var sendlog = srclog.slice(0, diff)
+ var send = {
+ src: sub,
+ log: sendlog
+ //requester: keys.publicKey
+ }
+ ws.send(JSON.stringify(send))
+ } else {
+ if (serverMsg.log) {
+ var scroller = document.getElementById('scroller')
+ var logFromServer = JSON.parse(message.data)
+ newlog = logFromServer.log
+
+ bog().then(log => {
+ for (var i = newlog.length; i-- > 0; ) {
+ var pubkey = nacl.util.decodeBase64(newlog[i].author.substring(1))
+ var sig = nacl.util.decodeBase64(newlog[i].signature)
+ var opened = JSON.parse(nacl.util.encodeUTF8(nacl.sign.open(sig, pubkey)))
+ log.unshift(opened)
+ opened.key = newlog[i].key
+ scroller.insertBefore(render(opened, keys), scroller.childNodes[2])
+
+ if (i === 0) {
+ console.log('saved log')
+ log.sort((a, b) => a.timestamp - b.timestamp)
+ localforage.setItem(sub, newlog.concat(srclog))
+ localforage.setItem('log', log.reverse())
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+ } else if (srclog === null) {
var req = {
src: sub,
- seq: msg.seq
- //requester: keys.publicKey
+ seq: null
}
+
ws.onopen = function () {
ws.send(JSON.stringify(req))
}
ws.onmessage = function (message) {
- var serverMsg = JSON.parse(message.data)
- if (msg.seq === serverMsg.seq) {
- } else if (msg.seq > serverMsg.seq) {
- var diff = msg.seq - serverMsg.seq
- var sendlog = srclog.slice(0, diff)
- var send = {
- src: sub,
- log: sendlog
- //requester: keys.publicKey
- }
- ws.send(JSON.stringify(send))
- } else {
- if (serverMsg.log) {
- var newlog = serverMsg.log.concat(srclog)
- localforage.setItem(sub, newlog).then(function () {regenerate()})
- }
+ var openedlog = []
+ var scroller = document.getElementById('scroller')
+ var logFromServer = JSON.parse(message.data)
+ log = logFromServer.log
+
+ localforage.setItem(sub, log)
+
+ for (var i = log.length; i-- > 0; ) {
+ console.log(log[i])
+ var pubkey = nacl.util.decodeBase64(log[i].author.substring(1))
+ var sig = nacl.util.decodeBase64(log[i].signature)
+ var opened = JSON.parse(nacl.util.encodeUTF8(nacl.sign.open(sig, pubkey)))
+ console.log(opened)
+ opened.key = log[i].key
+ openedlog.push(opened)
+ scroller.insertBefore(render(opened, keys), scroller.childNodes[2])
}
- }
- })
- } else {
- var req = {
- src: sub,
- seq: null
- //requester: keys.publicKey
- }
- ws.onopen = function () {
- ws.send(JSON.stringify(req))
- }
- ws.onmessage = function (message) {
- var serverMsg = JSON.parse(message.data)
- localforage.setItem(sub, serverMsg.log).then(function () {regenerate()})
+ bog().then(log => {
+ var newlog = openedlog.concat(log)
+ newlog.sort((a, b) => a.timestamp - b.timestamp)
+ localforage.setItem('log', newlog.reverse())
+ })
+
+ }
}
- }
- })
+ })
+ }, index * 100000)
})
})
})