aboutsummaryrefslogtreecommitdiff
path: root/lib.js
diff options
context:
space:
mode:
authorEv Bogue <ev@evbogue.com>2019-04-19 12:21:45 -0500
committerEv Bogue <ev@evbogue.com>2019-04-19 12:21:45 -0500
commitfbd1267a7c2902bcca183ff874d26d352053711c (patch)
tree98493f966c0b1a00c54b370a6618d5194d73510b /lib.js
parentd4e69ef860b7715536bde821f49b1d2830338df2 (diff)
making some progress...
Diffstat (limited to 'lib.js')
-rw-r--r--lib.js160
1 files changed, 88 insertions, 72 deletions
diff --git a/lib.js b/lib.js
index 23a570e..308c081 100644
--- a/lib.js
+++ b/lib.js
@@ -1,109 +1,120 @@
-// generate a public.private keypair with TweetNaCl.js
+function requestFeed (src, server, requester) {
+
+ console.log(src)
+ console.log(server)
-function requestFeed (src, server) {
var ws = new WebSocket(server + src)
localforage.getItem(src, function (err, log) {
if (log) {
+ console.log(log)
+
+ var post = log[0]
+
+ var pubkey = nacl.util.decodeBase64(src.substring(1))
+ var sig = nacl.util.decodeBase64(post.signature)
+ post.content = JSON.parse(nacl.util.encodeUTF8(nacl.sign.open(sig, pubkey)))
+
+ var seq = post.content.sequence
+
ws.onopen = function () {
- var clientLog = { publicKey: src, log: log }
- ws.send(JSON.stringify(clientLog))
- }
- ws.onmessage = function (ev) {
- var serverLog = JSON.parse(ev.data)
+ var req = {
+ feed: src,
+ seq,
+ requester
+ }
+
+ console.log(req)
+
+ ws.send(JSON.stringify(req))
- if (serverLog.log.length > log.length) {
- localforage.setItem(src, serverLog.log)
- localforage.getItem('log', function (err, publicLog) {
- if (publicLog) {
- var num = serverLog.log.length - publicLog.length
- var diff = serverLog.log.slice(0, num)
- newLog = diff.concat(publicLog)
- localforage.setItem('log', newLog)
- } else {
- localforage.setItem('log', serverLog.log)
- }
- })
- }
+ }
+ ws.onmessage = function (message) {
+ var res = JSON.parse(message.data)
+ if (res.seq == null) {
+ console.log('SENDING ENTIRE LOG')
+ var send = {
+ feed: src,
+ log,
+ requester
+ }
+ ws.send(JSON.stringify(send))
+ }
+ if (seq > res.req) {
+ console.log('SENDING')
+ console.log(log)
+ }
}
} else {
ws.onopen = function () {
- var clientLog = {
- publicKey: src,
- log: []
- }
- ws.send(JSON.stringify(clientLog))
+ var seq = null
+
}
- ws.onmessage = function (ev) {
- serverLog = JSON.parse(ev.data)
- localforage.setItem(src, serverLog.log)
- localforage.getItem('log', function (err, publicLog) {
- if (publicLog) {
- newLog = serverLog.log.concat(publicLog)
- localforage.setItem('log', newLog)
- } else {
- localforage.setItem('log', serverLog.log)
- }
- })
+ ws.onmessage = function (message) {
+ console.log(message.data)
}
}
})
}
// publish new messages to your log
-function publish (content, keys) {
+function publish (toPublish, keys) {
- console.log(content)
- console.log(keys)
localforage.getItem(keys.publicKey, function (err, log) {
if (log) {
var lastPost = log[0]
var pubkey = nacl.util.decodeBase64(keys.publicKey.substring(1))
var sig = nacl.util.decodeBase64(lastPost.signature)
- var opened = JSON.parse(nacl.util.encodeUTF8(nacl.sign.open(sig, pubkey)))
- console.log(opened)
+ var opened = JSON.parse(nacl.util.encodeUTF8(nacl.sign.open(sig, pubkey)))
var seq = opened.sequence
- content.sequence = ++seq
- content.previous = nacl.util.encodeBase64(nacl.hash(nacl.util.decodeUTF8(JSON.stringify(log[0]))))
- var post = {
- author: keys.publicKey,
- key: '%' + nacl.util.encodeBase64(nacl.hash(nacl.util.decodeUTF8(JSON.stringify(content)))),
- signature: nacl.util.encodeBase64(nacl.sign(nacl.util.decodeUTF8(JSON.stringify(content)), nacl.util.decodeBase64(keys.privateKey)))
+ toPublish.sequence = ++seq
+ toPublish.previous = nacl.util.encodeBase64(nacl.hash(nacl.util.decodeUTF8(JSON.stringify(log[0]))))
+
+ var author = keys.publicKey
+ var key = '%' + nacl.util.encodeBase64(nacl.hash(nacl.util.decodeUTF8(JSON.stringify(toPublish))))
+ var signature = nacl.util.encodeBase64(nacl.sign(nacl.util.decodeUTF8(JSON.stringify(toPublish)), nacl.util.decodeBase64(keys.privateKey)))
+
+ var toPost = {
+ author,
+ key,
+ signature
}
+ console.log(toPost)
+
// update the log
- updateLog(keys.publicKey, post)
+ updateLog(keys.publicKey, toPost)
- var scroller = document.getElementById('scroller')
+ /*var scroller = document.getElementById('scroller')
if (scroller.firstChild) {
- scroller.insertBefore(renderMessage(post), scroller.childNodes[1])
+ scroller.insertBefore(renderMessage(toPost), scroller.childNodes[1])
} else {
- scroller.appendChild(renderMessage(post))
- }
+ scroller.appendChild(renderMessage(toPost))
+ }*/
} else {
- content.sequence = 0
+ toPublish.sequence = 0
- var post = {
+ var toPost = {
author: keys.publicKey,
- key: '%' + nacl.util.encodeBase64(nacl.hash(nacl.util.decodeUTF8(JSON.stringify(content)))),
- signature: nacl.util.encodeBase64(nacl.sign(nacl.util.decodeUTF8(JSON.stringify(content)), nacl.util.decodeBase64(keys.privateKey)))
+ key: '%' + nacl.util.encodeBase64(nacl.hash(nacl.util.decodeUTF8(JSON.stringify(toPublish)))),
+ signature: nacl.util.encodeBase64(nacl.sign(nacl.util.decodeUTF8(JSON.stringify(toPublish)), nacl.util.decodeBase64(keys.privateKey)))
}
- updateLog(keys.publicKey, post)
+ updateLog(keys.publicKey, toPost)
- var scroller = document.getElementById('scroller')
+ /*var scroller = document.getElementById('scroller')
if (scroller.firstChild) {
- scroller.insertBefore(renderMessage(post), scroller.childNodes[1])
+ scroller.insertBefore(renderMessage(toPost), scroller.childNodes[1])
} else {
- scroller.appendChild(renderMessage(post))
- }
+ scroller.appendChild(renderMessage(toPost))
+ }*/
}
})
}
@@ -123,14 +134,14 @@ function compose (keys) {
h('button', {
onclick: function () {
if (textarea.value) {
- var content = {
+ var toPublish = {
author: keys.publicKey,
type: 'post',
text: textarea.value,
timestamp: Date.now()
}
textarea.value = ''
- publish(content, keys)
+ publish(toPublish, keys)
}
}
}, ['Publish'])
@@ -142,30 +153,36 @@ function compose (keys) {
// update your log in the browser
function updateLog (feed, post) {
- console.log('UPDATE LOG')
- console.log(feed)
- console.log(post)
localforage.getItem(feed, function (err, log) {
if (log) {
log.unshift(post)
- localforage.setItem(feed, log)
+ localforage.setItem(feed, log, function () {
+ console.log('FEED UPDATED')
+ })
} else {
log = []
log.unshift(post)
- localforage.setItem(feed, log)
+ localforage.setItem(feed, log, function () {
+ console.log('FEED UPDATED')
+ })
}
})
localforage.getItem('log', function (err, log) {
if (log) {
log.unshift(post)
- localforage.setItem('log', log)
+ localforage.setItem('log', log, function () {
+ console.log('LOG UPDATED')
+ location.reload()
+ })
} else {
log = []
log.unshift(post)
- localforage.setItem('log', log)
+ localforage.setItem('log', log, function () {
+ console.log('LOG UPDATED')
+ location.reload()
+ })
}
-
})
}
@@ -184,7 +201,6 @@ function getName (id) {
//if (post.content) {
if (post.content.type == 'name') {
- console.log(post.content.name)
name.textContent = '@' + post.content.name
}
//}