131 lines
4.1 KiB
JavaScript
131 lines
4.1 KiB
JavaScript
const pageScriptElement = document.currentScript;
|
|
const oid =
|
|
pageScriptElement && pageScriptElement.getAttribute("data-oid")
|
|
? pageScriptElement.getAttribute("data-oid")
|
|
: (console.error("data-oid is null"), null);
|
|
const oid_likes =
|
|
pageScriptElement && pageScriptElement.getAttribute("data-oid-likes")
|
|
? pageScriptElement.getAttribute("data-oid-likes")
|
|
: (console.error("data-oid-likes is null"), null);
|
|
let liked_page = false;
|
|
const id = oid ? oid.replaceAll("/", "-") : oid;
|
|
const id_likes = oid_likes ? oid_likes.replaceAll("/", "-") : oid_likes;
|
|
|
|
if (typeof auth !== "undefined") {
|
|
const viewed = localStorage.getItem(id);
|
|
|
|
if (!viewed) {
|
|
auth
|
|
.signInAnonymously()
|
|
.then(() => {
|
|
const docRef = db.collection("views").doc(id);
|
|
localStorage.setItem(id, true);
|
|
docRef
|
|
.get()
|
|
.then((doc) => {
|
|
if (doc.exists) {
|
|
db.collection("views")
|
|
.doc(id)
|
|
.update({
|
|
views: firebase.firestore.FieldValue.increment(1),
|
|
});
|
|
} else {
|
|
db.collection("views").doc(id).set({ views: 1 });
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
console.log("Error getting document:", error);
|
|
});
|
|
})
|
|
.catch((error) => {
|
|
const errorCode = error.code;
|
|
const errorMessage = error.message;
|
|
console.error(errorCode, errorMessage);
|
|
});
|
|
}
|
|
|
|
const liked = localStorage.getItem(id_likes);
|
|
|
|
if (liked) {
|
|
liked_page = true;
|
|
document.querySelectorAll("span[id='button_likes_heart']")[0].style.display = "";
|
|
document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display = "none";
|
|
document.querySelectorAll("span[id='button_likes_text']")[0].innerText = "";
|
|
}
|
|
}
|
|
|
|
function like_article(id_likes) {
|
|
auth
|
|
.signInAnonymously()
|
|
.then(() => {
|
|
const docRef = db.collection("likes").doc(id_likes);
|
|
docRef
|
|
.get()
|
|
.then((doc) => {
|
|
liked_page = true;
|
|
localStorage.setItem(id_likes, true);
|
|
document.querySelectorAll("span[id='button_likes_heart']")[0].style.display = "";
|
|
document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display = "none";
|
|
document.querySelectorAll("span[id='button_likes_text']")[0].innerText = "";
|
|
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) => {
|
|
const errorCode = error.code;
|
|
const errorMessage = error.message;
|
|
console.error(errorCode, errorMessage);
|
|
});
|
|
}
|
|
|
|
function remove_like_article(id_likes) {
|
|
auth
|
|
.signInAnonymously()
|
|
.then(() => {
|
|
const docRef = db.collection("likes").doc(id_likes);
|
|
docRef
|
|
.get()
|
|
.then((doc) => {
|
|
liked_page = false;
|
|
localStorage.removeItem(id_likes);
|
|
document.querySelectorAll("span[id='button_likes_heart']")[0].style.display = "none";
|
|
document.querySelectorAll("span[id='button_likes_emtpty_heart']")[0].style.display = "";
|
|
document.querySelectorAll("span[id='button_likes_text']")[0].innerText = "\xa0Like";
|
|
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) => {
|
|
const errorCode = error.code;
|
|
const errorMessage = error.message;
|
|
console.error(errorCode, errorMessage);
|
|
});
|
|
}
|
|
|
|
function process_article() {
|
|
if (!liked_page) {
|
|
like_article(id_likes);
|
|
} else {
|
|
remove_like_article(id_likes);
|
|
}
|
|
}
|