aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gossip.js108
-rw-r--r--views.js33
2 files changed, 93 insertions, 48 deletions
diff --git a/gossip.js b/gossip.js
index 16b96a3..81c4d5e 100644
--- a/gossip.js
+++ b/gossip.js
@@ -1,55 +1,71 @@
-function sync (src, keys) {
- var server = 'ws://localhost:8080/'
+function sync (subs, keys) {
- var ws = new WebSocket(server + src)
+ var wsServers
- console.log('SYNCING')
+ localforage.getItem('servers').then(function (servers) {
+ if (servers) {
+ console.log(servers)
+ wsServers = servers
+ } else {
+ servers = ['ws://localhost:8080/', 'ws://evbogue.com/']
+ localforage.setItem('servers', 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)
- bog(src).then(srclog => {
- if (srclog) {
- open(srclog[0]).then(msg => {
- var req = {
- src,
- seq: msg.seq,
- requester: keys.publicKey
- }
- 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,
- log: sendlog,
+ bog(sub).then(srclog => {
+ if (srclog) {
+ open(srclog[0]).then(msg => {
+ var req = {
+ src: sub,
+ seq: msg.seq,
+ requester: keys.publicKey
+ }
+ 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()})
+ }
+ }
+ }
+ })
+ } else {
+ var req = {
+ src: sub,
+ seq: null,
requester: keys.publicKey
}
- ws.send(JSON.stringify(send))
- } else {
- if (serverMsg.log) {
- var newlog = serverMsg.log.concat(srclog)
- localforage.setItem(src, newlog).then(function () {regenerate()})
- }
+
+ 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()})
+ }
}
- }
+ })
})
- } else {
- var req = {
- src,
- 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(src, serverMsg.log).then(function () {regenerate()})
- }
- }
+ })
})
}
diff --git a/views.js b/views.js
index 5b57442..5861a01 100644
--- a/views.js
+++ b/views.js
@@ -9,7 +9,9 @@ function profilePage (src, keys) {
scroller.appendChild(profile)
- sync(src, keys)
+ var subs = [src]
+
+ sync(subs, keys)
var input = h('input', {placeholder: 'New name'})
@@ -35,6 +37,24 @@ function profilePage (src, keys) {
}, ['Identify'])
]))
+ localforage.getItem('subscriptions').then(function (subs) {
+ if (subs.includes(src)) {
+ profile.appendChild(h('button', {
+ onclick: function () {
+ subs = subs.filter(a => a !== src)
+ localforage.setItem('subscriptions', subs).then(function () { location.reload() })
+ }
+ }, ['Unsubscribe']))
+ } else {
+ profile.appendChild(h('button', {
+ onclick: function () {
+ subs.push(src)
+ localforage.setItem('subscriptions', subs).then(function () { location.reload() })
+ }
+ }, ['Subscribe']))
+ }
+ })
+
/*profile.appendChild(h('button', {
onclick: function () {
sync(src, keys)
@@ -63,7 +83,16 @@ function profilePage (src, keys) {
}
function publicPage (keys) {
- sync('@Q++V5BbvWIg8B+TqtC9ZKFhetruuw+nOgxEqfjlOZI0=', keys)
+
+ localforage.getItem('subscriptions').then(function (subs) {
+ if (subs) {
+ sync(subs, keys)
+ } else {
+ var subs = [keys.publicKey]
+ localforage.setItem('subscriptions', subs)
+ sync(subs, keys)
+ }
+ })
scroller.appendChild(h('button', {
onclick: function () {