123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- let liked = false;
- let disliked = false;
- async function like(id) {
- if(!Cookies.get("user")) {
- return alert("you must be loggefd in to like!");
- }
- if (liked)
- return alert(
- "you already like video you can not like it anymore beacuse you aleady like video!!!"
- );
-
- axios.post(`/api/like/${id}`, {}).then(response => {
- if (response.data.status == 204) {
- liked = true;
- document.getElementById("video-likes").innerText =
- parseInt(document.getElementById("video-likes").innerText) + 1;
- } else {
- document.getElementById("video-likes").innerText =
- "ERROR ERROR ERROR ERROR ERRROR SERVCER ERROR";
- }
- }).catch(error => {
- throw new Error(`like() error: ${error}`);
- })
- }
- async function dislike(id) {
- if(!Cookies.get("user")) {
- return alert("you must be loggefd in to dislike!");
- }
- if (disliked)
- return alert(
- "you already dislike video you can not dislike it anymore beacuse you aleady dislike video!!!"
- );
-
- axios.post(`/api/dislike/${id}`, {}).then(response => {
- if (response.data.status == 204) {
- disliked = true;
- document.getElementById("video-dislikes").innerText =
- parseInt(document.getElementById("video-dislikes").innerText) + 1;
- } else {
- document.getElementById("video-dislikes").innerText =
- "ERROR ERROR ERROR ERROR ERRROR SERVCER ERROR";
- }
- }).catch(error => {
- throw new Error(`dislike() error: ${error}`);
- })
- }
- function gotoUser(user) {
- window.location.pathname = `/user/${user}`;
- }
- document.addEventListener("DOMContentLoaded", async () => {
- let video = document.getElementById("video");
- let id = window.location.pathname.split("/")[2];
- document.getElementById("account-button-anchor").href = `/user/${encodeURIComponent(Cookies.get('user'))}`
- if (Cookies.get("user") != null) {
- document.getElementById("login-button").classList.add("disabled");
- document.getElementById("logout-button").classList.remove("disabled");
- document.getElementById("account-button").classList.remove("disabled");
- document.getElementById("upload-button").classList.remove("disabled");
- }
- document
- .getElementById("comment-form")
- .addEventListener("submit", async (e) => {
- e.preventDefault();
- var formData = new FormData(document.getElementById("comment-form"));
- var json = Object.fromEntries(formData);
- const user = Cookies.get("user");
- if (!user) {
- alert("You must log in to comment.");
- return;
- }
- await axios.post(`/api/comment`, {
- commenter: user,
- videoID: id,
- text: json["text"]
- }, {
- headers: {
- 'Authorization': getToken(Cookies.get("user"))
- }
- }).then(response => {
- if (response.data.status == 201) {
- document.getElementById("comment-textarea").innerText = ""
- makeComment(Cookies.get("user"), "right now", json["text"]);
- } else {
- alert("ERROR ERROR ERROR ERORROR SERVCER ERROR!!!");
- }
- }).catch(error => {
- throw new Error(`comment error: ${error}`)
- })
- });
-
- // Load video
- let source = document.createElement("source");
- source.setAttribute("src", `/api/video/${id}`)
- source.setAttribute("type", "video/mp4");
- video.appendChild(source);
- video.setAttribute("poster", `/api/thumbnail/${id}`);
- // Load video info
- const info = await getInfo(id);
- document.getElementById("video-title").innerText = info.title;
- document.getElementById(
- "video-author"
- ).innerText = `Uploaded by: ${info.uploader}`;
- document.getElementById("video-author-anchor").href = `/user/${encodeURIComponent(info.uploader)}`;
- document.getElementById("video-date").innerText =
- parseTimestamp(info.uploaded_at).date +
- " " +
- parseTimestamp(info.uploaded_at).timestamp;
- document.getElementById("video-description").innerText = info.description;
- document.getElementById("video-likes").innerText = info.likes;
- document.getElementById("video-dislikes").innerText = info.dislikes;
- // Load author info
- const authorInfo = await getUserInfo(info.uploader);
- if(authorInfo.verified) document.getElementById("verified").classList.remove('disabled')
- document.getElementById("author-info").innerText = `${authorInfo.subscribers} subscribers ඞ ${authorInfo.social_score} social credit score`;
- // Check if the user is already subscribed
- if(!localStorage.getItem("subscribed")) localStorage.setItem("subscribed", JSON.stringify([]))
- // If so, disable the subscribe button
- if(JSON.parse(localStorage.getItem("subscribed")).includes(authorInfo.name)) document.getElementById("subscribe").setAttribute("disabled", "true");
- document.getElementById("subscribe").onclick = function(event) { subscribe(authorInfo) }
- // Load comments
- const comments = await getComments(id);
- comments.forEach((comment) => {
- makeComment(
- comment.commenter,
- parseTimestamp(comment.created_at).date +
- " " +
- parseTimestamp(comment.created_at).timestamp,
- comment.text
- );
- });
- document.getElementById("loading").classList.add("disabled")
- });
- function makeComment(username, timestamp, content) {
- let comment = document.createElement("div");
- comment.setAttribute("class", "comment");
- let commentSpan = document.createElement("div");
- commentSpan.setAttribute("class", "comment-span");
- comment.appendChild(commentSpan);
- let userAnchor = document.createElement("a");
- userAnchor.href = `/user/${encodeURIComponent(username)}`;
- userAnchor.classList.add("clickable-user")
- commentSpan.appendChild(userAnchor);
- let user = document.createElement("h2");
- user.innerText = username;
- user.setAttribute("class", "clickable-user");
- userAnchor.appendChild(user);
- let date = document.createElement("h6");
- date.innerText = timestamp;
- commentSpan.appendChild(date);
- let text = document.createElement("p");
- text.innerText = content;
- comment.appendChild(text);
- document.getElementById("comments").appendChild(comment);
- }
- function home() {
- window.location.pathname = "/";
- }
- // TODO: for now subscribe function is fine but maybe polish it up a little
- function subscribe(authorInfo) {
- return axios.get(`/api/subscribe/${encodeURIComponent(authorInfo.name)}`).then(data => {
- if(data.status != 200) {
- return document.getElementById("author-info").innerText = "ERROR ERROR ERROE SEREVER ERROR!!!!"
- }
- // Write to localStorage
- if(!localStorage.getItem("subscribed")) localStorage.setItem("subscribed", JSON.stringify([]))
- const subscribed = JSON.parse(localStorage.getItem("subscribed"));
- subscribed.push(authorInfo.name);
- localStorage.setItem("subscribed", JSON.stringify(subscribed))
- // Disable subscribed button
- document.getElementById("subscribe").setAttribute("disabled", "true");
- // Update subscribed counter
- document.getElementById("author-info").innerText = `${authorInfo.subscribers + 1} subscribers ඞ ${authorInfo.social_score} social credit score`;
- }).catch(error => {
- console.error(error);
- return document.getElementById("author-info").innerText = "ERROR ERROR ERROE SEREVER ERROR!!!!"
- })
- }
|