added likes

This commit is contained in:
Nuno Coração
2022-09-28 23:43:50 +01:00
parent 0ee898836d
commit cc13795b9e
11 changed files with 130 additions and 6 deletions

View File

@@ -23,6 +23,9 @@
{{ .Content | emojify }}
</div>
<script>
var liked_article = false
if (typeof auth !== 'undefined') {
var oid = "views_{{ .Path }}"
var id = oid ? oid.replaceAll("/", "-") : oid
@@ -52,6 +55,81 @@
console.error(errorCode, errorMessage)
});
}
var oid_likes = "likes_{{ .Path }}"
var id_likes = oid_likes ? oid_likes.replaceAll("/", "-") : oid_likes
var liked = localStorage.getItem(id_likes);
if (liked) {
liked_article = true
document.querySelectorAll("button[id='likes_button']")[0].innerText = "Remove Like"
}
}
function like_article(id_likes) {
console.log("add")
liked_article = true
localStorage.setItem(id_likes, true);
document.querySelectorAll("button[id='likes_button']")[0].innerText = "Remove Like"
auth.signInAnonymously()
.then(() => {
var docRef = db.collection('likes').doc(id_likes)
docRef.get().then((doc) => {
if (doc.exists) {
db.collection('likes').doc(id_likes).update({
likes: firebase.firestore.FieldValue.increment(1)
});
} else {
db.collection('likes').doc(id_likes).set({ likes: 1 })
}
}).catch((error) => {
console.log("Error getting document:", error);
});
})
.catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
console.error(errorCode, errorMessage)
});
}
function remove_like_article(id_likes) {
console.log("remove")
liked_article = false
localStorage.setItem(id_likes, false);
document.querySelectorAll("button[id='likes_button']")[0].innerText = "Like"
auth.signInAnonymously()
.then(() => {
var docRef = db.collection('likes').doc(id_likes)
docRef.get().then((doc) => {
if (doc.exists) {
db.collection('likes').doc(id_likes).update({
likes: firebase.firestore.FieldValue.increment(-1)
});
} else {
db.collection('likes').doc(id_likes).set({ likes: 0 })
}
}).catch((error) => {
console.log("Error getting document:", error);
});
})
.catch((error) => {
var errorCode = error.code;
var errorMessage = error.message;
console.error(errorCode, errorMessage)
});
}
function process_article() {
var oid_likes = "likes_{{ .Path }}"
var id_likes = oid_likes ? oid_likes.replaceAll("/", "-") : oid_likes
if (!liked_article) {
like_article(id_likes)
} else {
remove_like_article(id_likes)
}
}
</script>
</section>

View File

@@ -28,10 +28,18 @@
{{ $meta.Add "partials" (slice (partial "meta/reading-time.html" .)) }}
{{ end }}
{{ if (.Params.showViews | default (.Site.Params.article.showViews | default true)) }}
{{ if (.Params.showViews | default (.Site.Params.article.showViews | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/views.html" .)) }}
{{ end }}
{{ if (.Params.showLikes | default (.Site.Params.article.showLikes | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/likes.html" .)) }}
{{ end }}
{{ if and (eq $scope "single") (.Params.showLikes | default (.Site.Params.article.showLikes | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/likes_button.html" .)) }}
{{ end }}
{{ if and (eq $scope "single") (.Params.showEdit | default (.Site.Params.article.showEdit | default false)) }}
{{ $meta.Add "partials" (slice (partial "meta/edit.html" .)) }}
{{ end }}

View File

@@ -0,0 +1,4 @@
<span>
<span id="likes_{{ .Path }}" title="likes">{{- i18n "article.likes" 0 | markdownify | emojify -}}</span>
</span>
{{- /* Trim EOF */ -}}

View File

@@ -0,0 +1,6 @@
<span>
<button id="likes_button" class="border rounded px-3" onclick="process_article()">
Like
</button>
</span>
{{- /* Trim EOF */ -}}