241 lines
9.1 KiB
JavaScript
241 lines
9.1 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;
|
|
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;
|
|
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) {
|
|
return response.json();
|
|
}).catch(function (error) {
|
|
todo(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) {
|
|
$(".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 (!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)
|
|
}
|
|
}
|
|
}
|
|
} |