diff options
Diffstat (limited to 'themes/blowfish/assets/js/process.js')
-rw-r--r-- | themes/blowfish/assets/js/process.js | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/themes/blowfish/assets/js/process.js b/themes/blowfish/assets/js/process.js new file mode 100644 index 0000000..a91afa7 --- /dev/null +++ b/themes/blowfish/assets/js/process.js @@ -0,0 +1,71 @@ +if (typeof auth !== 'undefined') { + var viewsCollection = db.collection('views'); + var likesCollection = db.collection('likes'); + + function numberWithCommas(x) { + return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); + } + + function toggleLoaders(node){ + var classesString = node.className; + if(classesString == "") return + var classes = classesString.split(" "); + for(var i in classes){ + node.classList.toggle(classes[i]) + } + } + + var update_views = function (node, id) { + viewsCollection.doc(id).onSnapshot(doc => { + var data = doc.data(); + if (data) { + node.innerText = numberWithCommas(data.views) + } else { + node.innerText = 0 + } + toggleLoaders(node) + }) + } + + var update_likes = function (node, id) { + likesCollection.doc(id).onSnapshot(doc => { + var data = doc.data(); + if (data) { + node.innerText = numberWithCommas(data.likes) + } else { + node.innerText = 0 + } + toggleLoaders(node) + + }) + } + + + auth.signInAnonymously() + .then(() => { + var views_nodes = document.querySelectorAll("span[id^='views_']") + + for (var i in views_nodes) { + var node = views_nodes[i] + var id = node.id ? node.id.replaceAll("/", "-") : node.id + if (id) { + update_views(node, id) + } + } + + var likes_nodes = document.querySelectorAll("span[id^='likes_']") + + for (var i in likes_nodes) { + var node = likes_nodes[i] + var id = node.id ? node.id.replaceAll("/", "-") : node.id + if (id) { + update_likes(node, id) + } + } + }) + .catch((error) => { + var errorCode = error.code; + var errorMessage = error.message; + console.error(errorCode, errorMessage) + }); +}
\ No newline at end of file |