262 lines
8.3 KiB
JavaScript
262 lines
8.3 KiB
JavaScript
//Renpost
|
|
function renote(id, acct_id, remote) {
|
|
if ($("#pub_" + id).hasClass("rted")) {
|
|
return false;
|
|
}
|
|
var domain = localStorage.getItem("domain_" + acct_id);
|
|
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
|
var start = "https://" + domain + "/api/notes/create";
|
|
if (localStorage.getItem("mode_" + domain) != "misskey") {
|
|
return false;
|
|
}
|
|
var httpreq = new XMLHttpRequest();
|
|
httpreq.open("POST", start, true);
|
|
httpreq.setRequestHeader("Content-Type", "application/json");
|
|
httpreq.responseType = "json";
|
|
httpreq.send(JSON.stringify({ i: at, renoteId: id }));
|
|
httpreq.onreadystatechange = function() {
|
|
if (httpreq.readyState === 4) {
|
|
var json = httpreq.response;
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, json);
|
|
}
|
|
console.log(["Success: renote", json]);
|
|
$("[toot-id=" + id + "]").addClass("rted");
|
|
$(".rt_" + id).toggleClass("teal-text");
|
|
}
|
|
};
|
|
}
|
|
//Renote
|
|
function renoteqt(id, acct_id) {
|
|
localStorage.setItem("nohide", true);
|
|
show();
|
|
$("#reply").val("renote_" + id);
|
|
$("#rec").text("Renote");
|
|
$("#post-acct-sel").val(acct_id);
|
|
$("#post-acct-sel").prop("disabled", true);
|
|
$("select").formSelect();
|
|
$("#textarea").attr("placeholder", lang.lang_misskeyparse_qt);
|
|
$("#textarea").focus();
|
|
}
|
|
//Reply
|
|
function misskeyreply(id, acct_id) {
|
|
localStorage.setItem("nohide", true);
|
|
show();
|
|
$("#reply").val(id);
|
|
$("#rec").text("Renote");
|
|
$("#post-acct-sel").val(acct_id);
|
|
$("#post-acct-sel").prop("disabled", true);
|
|
$("select").formSelect();
|
|
$("#textarea").attr("placeholder", lang.lang_misskeyparse_qt);
|
|
$("#textarea").focus();
|
|
}
|
|
//Reaction
|
|
function reactiontoggle(id, acct_id, tlid) {
|
|
var domain = localStorage.getItem("domain_" + acct_id);
|
|
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
|
var start = "https://" + domain + "/api/notes/show";
|
|
if (localStorage.getItem("mode_" + domain) != "misskey") {
|
|
return false;
|
|
}
|
|
var httpreq = new XMLHttpRequest();
|
|
httpreq.open("POST", start, true);
|
|
httpreq.setRequestHeader("Content-Type", "application/json");
|
|
httpreq.responseType = "json";
|
|
httpreq.send(JSON.stringify({ i: at, noteId: id }));
|
|
httpreq.onreadystatechange = function() {
|
|
if (httpreq.readyState === 4) {
|
|
var json = httpreq.response;
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, json);
|
|
}
|
|
console.log(["Success: reaction", json]);
|
|
if (json.reactions) {
|
|
var reactions = ["like", "love", "laugh", "hmm", "surprise", "congrats", "angry", "confused", "pudding", "rip"];
|
|
for (var i = 0; i < reactions.length; i++) {
|
|
if (json.reactions[reactions[i]]) {
|
|
$("#pub_" + id + " .re-" + reactions[i] + "ct").text(json.reactions[reactions[i]]);
|
|
$("#pub_" + id + " .re-" + reactions[i]).removeClass("hide");
|
|
} else {
|
|
$("#pub_" + id + " .re-" + reactions[i] + "ct").text(0);
|
|
if ($("#pub_" + id + " .reactions").hasClass("fullreact")) {
|
|
$("#pub_" + id + " .re-" + reactions[i]).addClass("hide");
|
|
} else {
|
|
$("#pub_" + id + " .re-" + reactions[i]).removeClass("hide");
|
|
}
|
|
$("#pub_" + id + " .re-" + reactions[i] + "ct").text(json.reactions[reactions[i]]);
|
|
}
|
|
}
|
|
$("#pub_" + id + " .reactions").removeClass("hide");
|
|
$("#pub_" + id + " .reactions").toggleClass("fullreact");
|
|
} else {
|
|
if ($("#pub_" + id + " .reactions").hasClass("fullreact")) {
|
|
$("#pub_" + id + " .reactions").addClass("hide");
|
|
$("#pub_" + id + " .reactions").removeClass("fullreact");
|
|
} else {
|
|
$("#pub_" + id + " .reactions").removeClass("hide");
|
|
$("#pub_" + id + " .reaction").removeClass("hide");
|
|
$("#pub_" + id + " .reactions").addClass("fullreact");
|
|
}
|
|
}
|
|
}
|
|
};
|
|
$("#pub_" + id + " .freeReact").toggleClass("hide");
|
|
}
|
|
//reactioncustom
|
|
function reactioncustom(acct_id, id) {
|
|
$("#reply").val(id);
|
|
$("#unreact").hide();
|
|
$("#addreact").removeClass("hide");
|
|
$("#post-acct-sel").val(acct_id);
|
|
$("select").formSelect();
|
|
localStorage.setItem("nohide", true);
|
|
show();
|
|
emojiToggle(true);
|
|
$("#left-side").hide();
|
|
$("#default-emoji").hide();
|
|
}
|
|
function reactRefresh(acct_id, id) {
|
|
var domain = localStorage.getItem("domain_" + acct_id);
|
|
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
|
var start = "https://" + domain + "/api/notes/show";
|
|
|
|
var req = {};
|
|
req.i = at;
|
|
req.noteId = id;
|
|
var i = {
|
|
method: "POST",
|
|
body: JSON.stringify(req)
|
|
};
|
|
fetch(start, i)
|
|
.then(function(response) {
|
|
if (!response.ok) {
|
|
response.text().then(function(text) {
|
|
setLog(response.url, response.status, text);
|
|
});
|
|
}
|
|
return response.json();
|
|
})
|
|
.catch(function(error) {
|
|
todo(error);
|
|
setLog(start, "JSON", error);
|
|
console.error(error);
|
|
})
|
|
.then(function(json) {
|
|
if (!json) {
|
|
return false;
|
|
}
|
|
var poll = "";
|
|
if (json.error) {
|
|
$("[toot-id=" + id + "]").hide();
|
|
$("[toot-id=" + id + "]").remove();
|
|
} else {
|
|
reactRefreshCore(json);
|
|
}
|
|
});
|
|
}
|
|
function reactRefreshCore(json) {
|
|
var id = json.id;
|
|
if (json.reactions) {
|
|
$("#pub_" + id + " .reactions").removeClass("hide");
|
|
var regExp = new RegExp(":", "g");
|
|
Object.keys(json.reactions).forEach(function(keye) {
|
|
keyeClass = keye.replace(regExp, "");
|
|
if (json.reactions[keye]) {
|
|
$("#pub_" + id + " .re-" + keyeClass + "ct").text(json.reactions[keye]);
|
|
$("#pub_" + id + " .re-" + keyeClass).removeClass("hide");
|
|
} else {
|
|
$("#pub_" + id + " .re-" + keyeClass + "ct").text(0);
|
|
if ($("#pub_" + id + " .reactions").hasClass("fullreact")) {
|
|
$("#pub_" + id + " .re-" + keyeClass).addClass("hide");
|
|
}
|
|
$("#pub_" + id + " .re-" + keyeClass + "ct").text(json.reactions[keye]);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
function emojiReaction(emoji) {
|
|
var acct_id = $("#post-acct-sel").val();
|
|
var id = $("#reply").val();
|
|
reaction(emoji, id, acct_id, null);
|
|
clear();
|
|
hide();
|
|
}
|
|
function reaction(mode, id, acct_id, tlid) {
|
|
var domain = localStorage.getItem("domain_" + acct_id);
|
|
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
|
if ($(".fav_" + id).hasClass("yellow-text")) {
|
|
var flag = "delete";
|
|
} else {
|
|
var flag = "create";
|
|
}
|
|
var start = "https://" + domain + "/api/notes/reactions/" + flag;
|
|
if (localStorage.getItem("mode_" + domain) != "misskey") {
|
|
return false;
|
|
}
|
|
var httpreq = new XMLHttpRequest();
|
|
httpreq.open("POST", start, true);
|
|
httpreq.setRequestHeader("Content-Type", "application/json");
|
|
httpreq.responseType = "json";
|
|
httpreq.send(JSON.stringify({ i: at, noteId: id, reaction: mode }));
|
|
httpreq.onreadystatechange = function() {
|
|
if (httpreq.readyState === 4) {
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, this.response);
|
|
}
|
|
$(".fav_" + id).toggleClass("yellow-text");
|
|
}
|
|
};
|
|
}
|
|
//Vote
|
|
function vote(acct_id, id, to) {
|
|
var domain = localStorage.getItem("domain_" + acct_id);
|
|
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
|
var start = "https://" + domain + "/api/notes/polls/vote";
|
|
if (localStorage.getItem("mode_" + domain) != "misskey") {
|
|
return false;
|
|
}
|
|
var httpreq = new XMLHttpRequest();
|
|
httpreq.open("POST", start, true);
|
|
httpreq.setRequestHeader("Content-Type", "application/json");
|
|
httpreq.responseType = "json";
|
|
httpreq.send(JSON.stringify({ i: at, noteId: id, choice: to }));
|
|
httpreq.onreadystatechange = function() {
|
|
voterefresh(acct_id, id);
|
|
};
|
|
}
|
|
function voterefresh(acct_id, id) {
|
|
var httpreqd = new XMLHttpRequest();
|
|
var domain = localStorage.getItem("domain_" + acct_id);
|
|
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
|
var start = "https://" + domain + "/api/notes/show";
|
|
httpreqd.open("POST", start, true);
|
|
httpreqd.setRequestHeader("Content-Type", "application/json");
|
|
httpreqd.responseType = "json";
|
|
httpreqd.send(JSON.stringify({ i: at, noteId: id }));
|
|
httpreqd.onreadystatechange = function() {
|
|
if (httpreqd.readyState == 4) {
|
|
var json = httpreqd.response;
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, json);
|
|
}
|
|
if (!json) {
|
|
return false;
|
|
}
|
|
var poll = "";
|
|
if (json.poll) {
|
|
var choices = json.poll.choices;
|
|
Object.keys(choices).forEach(function(keyc) {
|
|
var choice = choices[keyc];
|
|
if (choice.isVoted) {
|
|
var myvote = twemoji.parse("✅");
|
|
} else {
|
|
var myvote = "";
|
|
}
|
|
poll = poll + '<div class="pointer vote" onclick="vote(\'' + acct_id + "','" + json.id + "'," + choice.id + ')">' + escapeHTML(choice.text) + "(" + choice.votes + "" + myvote + ")</div>";
|
|
});
|
|
$(".vote_" + json.id).html(poll);
|
|
}
|
|
}
|
|
};
|
|
}
|