aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEv Bogue <ev@evbogue.com>2019-07-14 15:05:12 -0500
committerEv Bogue <ev@evbogue.com>2019-07-14 15:05:12 -0500
commit088276b482cf29e244a5b982252dd8b97a1532f6 (patch)
treeeb18dae3d54109e5dd3bc42357d40724c5344551
parentad394bdbe7dbff6dc386ec1699454806f97d2f87 (diff)
cache names to avoid scanning the entire log every time a name loads
-rw-r--r--bog.js39
1 files changed, 25 insertions, 14 deletions
diff --git a/bog.js b/bog.js
index c378ff4..e767243 100644
--- a/bog.js
+++ b/bog.js
@@ -59,22 +59,33 @@ function getName (id, keys) {
name.textContent = id.substring(0, 10) + '...'
- bog().then(log => {
- if (log) {
- for (var i = 0; i < log.length; i++ ) {
- if ((log[i].named === id) && (log[i].author === keys.publicKey)) {
- // if you've identified someone as something else show that something else
- return name.textContent = '@' + log[i].name
- } else if ((log[i].named === id) && (log[i].author === id)) {
- // else if show the name they gave themselves
- return name.textContent = '@' + log[i].name
- }
- // there should probably be some sort of sybil attack resiliance here (weight avatar name based on number of times used by individuals), but this will do for now.
- }
- }
+ localforage.getItem('name:' + id).then(cache => {
+ if (cache) {
+ console.log('GOT NAME FROM CACHE: ' + cache)
+ return name.textContent = '@' + cache
+ } else {
+ bog().then(log => {
+ if (log) {
+ for (var i = 0; i < log.length; i++ ) {
+ if ((log[i].named === id) && (log[i].author === keys.publicKey)) {
+ // if you've identified someone as something else show that something else
+ localforage.setItem('name:' + id, log[i].name)
+ console.log('FINDING NAME AND SAVING TO CACHE: ' + log[i].name)
+ return name.textContent = '@' + log[i].name
+ } else if ((log[i].named === id) && (log[i].author === id)) {
+ // else if show the name they gave themselves
+ localforage.setItem('name:' + id, log[i].name)
+ console.log('FINDING NAME AND SAVING TO CACHE: ' + log[i].name)
+ return name.textContent = '@' + log[i].name
+ }
+ // there should probably be some sort of sybil attack resiliance here (weight avatar name based on number of times used by individuals), but this will do for now.
+ }
+ }
+ })
+ }
})
-
return name
+
}
// bog.regenerate -- regenerates main log by taking all of the feed logs, combinging them, and then sorting them