thedesk/app/js/post/misskeystatus.js

250 lines
9.5 KiB
JavaScript
Raw Normal View History

2018-07-30 21:03:49 +10:00
//Renpost
function renote(id, acct_id, remote) {
2019-05-19 17:39:30 +10:00
if ($("#pub_" + id).hasClass("rted")) {
return false;
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
2018-07-30 21:03:49 +10:00
var start = "https://" + domain + "/api/notes/create";
2019-05-19 17:39:30 +10:00
if (localStorage.getItem("mode_" + domain) != "misskey") {
2018-07-30 21:03:49 +10:00
return false;
}
2019-05-19 17:39:30 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
2019-03-08 05:19:26 +11:00
httpreq.responseType = "json";
2019-05-19 17:39:30 +10:00
httpreq.send(JSON.stringify({ i: at, renoteId: id }));
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
2018-07-30 21:03:49 +10:00
var json = httpreq.response;
2019-10-31 02:30:26 +11:00
if(this.status!==200){ setLog(start, this.status, json); }
2019-05-19 17:39:30 +10:00
console.log(["Success: renote", json]);
2018-07-30 21:03:49 +10:00
$("[toot-id=" + id + "]").addClass("rted");
2019-05-19 17:39:30 +10:00
$(".rt_" + id).toggleClass("teal-text");
}
}
2018-07-30 21:03:49 +10:00
}
//Renote
function renoteqt(id, acct_id) {
2019-05-19 17:39:30 +10:00
localStorage.setItem("nohide", true);
show();
$("#reply").val("renote_" + id);
$("#rec").text("Renote");
$("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true);
2019-06-16 21:35:15 +10:00
$('select').formSelect();
2019-05-19 17:39:30 +10:00
$("#textarea").attr("placeholder", lang.lang_misskeyparse_qt);
$("#textarea").focus();
2018-07-30 21:03:49 +10:00
}
//Reply
function misskeyreply(id, acct_id) {
2019-05-19 17:39:30 +10:00
localStorage.setItem("nohide", true);
show();
$("#reply").val(id);
$("#rec").text("Renote");
$("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true);
2019-06-16 21:35:15 +10:00
$('select').formSelect();
2019-05-19 17:39:30 +10:00
$("#textarea").attr("placeholder", lang.lang_misskeyparse_qt);
$("#textarea").focus();
2018-07-30 21:03:49 +10:00
}
//Reaction
2019-05-19 17:39:30 +10:00
function reactiontoggle(id, acct_id, tlid) {
2018-07-30 21:03:49 +10:00
var domain = localStorage.getItem("domain_" + acct_id);
2019-05-19 17:39:30 +10:00
var at = localStorage.getItem("acct_" + acct_id + "_at");
2018-07-30 21:03:49 +10:00
var start = "https://" + domain + "/api/notes/show";
2019-05-19 17:39:30 +10:00
if (localStorage.getItem("mode_" + domain) != "misskey") {
2018-07-30 21:03:49 +10:00
return false;
}
2019-05-19 17:39:30 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
2019-03-08 05:19:26 +11:00
httpreq.responseType = "json";
2019-05-19 17:39:30 +10:00
httpreq.send(JSON.stringify({ i: at, noteId: id }));
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
2018-07-30 21:03:49 +10:00
var json = httpreq.response;
2019-10-31 02:30:26 +11:00
if(this.status!==200){ setLog(start, this.status, json); }
2019-05-19 17:39:30 +10:00
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")
2018-07-30 21:03:49 +10:00
}
2019-05-19 17:39:30 +10:00
$("#pub_" + id + " .re-" + reactions[i] + "ct").text(json.reactions[reactions[i]])
2018-07-30 21:03:49 +10:00
}
}
2019-05-19 17:39:30 +10:00
$("#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");
2018-07-30 21:03:49 +10:00
}
}
2019-05-19 17:39:30 +10:00
}
2019-04-11 02:52:01 +10:00
}
2019-05-19 17:39:30 +10:00
$("#pub_" + id + " .freeReact").toggleClass("hide");
2019-04-11 02:52:01 +10:00
}
//reactioncustom
2019-05-19 17:39:30 +10:00
function reactioncustom(acct_id, id) {
2019-04-11 02:52:01 +10:00
$("#reply").val(id);
$("#unreact").hide();
$("#addreact").removeClass("hide");
2019-05-19 17:39:30 +10:00
$("#post-acct-sel").val(acct_id);
2019-06-16 21:35:15 +10:00
$('select').formSelect();
2019-05-19 17:39:30 +10:00
localStorage.setItem("nohide", true);
2019-04-11 02:52:01 +10:00
show()
emojiToggle(true)
$("#left-side").hide();
$("#default-emoji").hide();
2018-07-30 21:03:49 +10:00
}
2019-05-19 17:39:30 +10:00
function reactRefresh(acct_id, id) {
2018-08-17 03:21:40 +10:00
var domain = localStorage.getItem("domain_" + acct_id);
2019-05-19 17:39:30 +10:00
var at = localStorage.getItem("acct_" + acct_id + "_at");
2018-08-17 03:21:40 +10:00
var start = "https://" + domain + "/api/notes/show";
2019-05-19 17:39:30 +10:00
var req = {};
req.i = at;
req.noteId = id;
var i = {
2018-08-17 03:21:40 +10:00
method: "POST",
body: JSON.stringify(req),
}
fetch(start, i,
2019-05-19 17:39:30 +10:00
).then(function (response) {
2019-10-31 02:30:26 +11:00
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text);
});
}
return response.json();
2019-05-19 17:39:30 +10:00
}).catch(function (error) {
2018-08-17 03:21:40 +10:00
todo(error);
console.error(error);
2019-05-19 17:39:30 +10:00
}).then(function (json) {
if (!json) {
2018-08-17 03:21:40 +10:00
return false;
}
2019-05-19 17:39:30 +10:00
var poll = "";
if (json.error) {
2019-04-11 03:59:13 +10:00
$("[toot-id=" + id + "]").hide();
2019-05-19 17:39:30 +10:00
$("[toot-id=" + id + "]").remove();
} else {
2019-04-11 03:59:13 +10:00
reactRefreshCore(json)
}
2018-08-17 03:21:40 +10:00
});
}
2019-05-19 17:39:30 +10:00
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")
2018-08-17 03:21:40 +10:00
}
2019-05-19 17:39:30 +10:00
$("#pub_" + id + " .re-" + keyeClass + "ct").text(json.reactions[keye])
2018-08-17 03:21:40 +10:00
}
2019-04-11 02:52:01 +10:00
});
2018-08-17 03:21:40 +10:00
}
}
2019-05-19 17:39:30 +10:00
function emojiReaction(emoji) {
2019-04-11 02:52:01 +10:00
var acct_id = $("#post-acct-sel").val();
var id = $("#reply").val();
2019-05-19 17:39:30 +10:00
reaction(emoji, id, acct_id, null)
2019-04-11 02:52:01 +10:00
clear();
hide();
}
2019-05-19 17:39:30 +10:00
function reaction(mode, id, acct_id, tlid) {
2018-07-30 21:03:49 +10:00
var domain = localStorage.getItem("domain_" + acct_id);
2019-05-19 17:39:30 +10:00
var at = localStorage.getItem("acct_" + acct_id + "_at");
if ($(".fav_" + id).hasClass("yellow-text")) {
var flag = "delete";
} else {
var flag = "create";
2018-07-30 21:03:49 +10:00
}
2019-05-19 17:39:30 +10:00
var start = "https://" + domain + "/api/notes/reactions/" + flag;
if (localStorage.getItem("mode_" + domain) != "misskey") {
2018-07-30 21:03:49 +10:00
return false;
}
2019-05-19 17:39:30 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
2019-03-08 05:19:26 +11:00
httpreq.responseType = "json";
2019-05-19 17:39:30 +10:00
httpreq.send(JSON.stringify({ i: at, noteId: id, reaction: mode }));
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
2019-10-31 02:30:26 +11:00
if(this.status!==200){ setLog(start, this.status, this.response); }
2019-05-19 17:39:30 +10:00
$(".fav_" + id).toggleClass("yellow-text");
}
}
}
//Vote
2019-05-19 17:39:30 +10:00
function vote(acct_id, id, to) {
var domain = localStorage.getItem("domain_" + acct_id);
2019-05-19 17:39:30 +10:00
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/notes/polls/vote";
2019-05-19 17:39:30 +10:00
if (localStorage.getItem("mode_" + domain) != "misskey") {
return false;
}
2019-05-19 17:39:30 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
2019-03-08 05:19:26 +11:00
httpreq.responseType = "json";
2019-05-19 17:39:30 +10:00
httpreq.send(JSON.stringify({ i: at, noteId: id, choice: to }));
httpreq.onreadystatechange = function () {
voterefresh(acct_id, id)
}
}
2019-05-19 17:39:30 +10:00
function voterefresh(acct_id, id) {
var httpreqd = new XMLHttpRequest();
var domain = localStorage.getItem("domain_" + acct_id);
2019-05-19 17:39:30 +10:00
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/notes/show";
2019-05-19 17:39:30 +10:00
httpreqd.open('POST', start, true);
httpreqd.setRequestHeader('Content-Type', 'application/json');
httpreqd.responseType = 'json';
2019-05-19 17:39:30 +10:00
httpreqd.send(JSON.stringify({ i: at, noteId: id }));
httpreqd.onreadystatechange = function () {
if (httpreqd.readyState == 4) {
var json = httpreqd.response;
2019-10-31 02:30:26 +11:00
if(this.status!==200){ setLog(start, this.status, json); }
2019-05-19 17:39:30 +10:00
if (!json) {
return false;
}
2019-05-19 17:39:30 +10:00
var poll = "";
if (json.poll) {
var choices = json.poll.choices;
Object.keys(choices).forEach(function (keyc) {
var choice = choices[keyc];
2019-05-19 17:39:30 +10:00
if (choice.isVoted) {
var myvote = twemoji.parse("✅");
} else {
var myvote = "";
}
2019-05-19 17:39:30 +10:00
poll = poll + '<div class="pointer vote" onclick="vote(\'' + acct_id + '\',\'' + json.id + '\',' + choice.id + ')">' + escapeHTML(choice.text) + '(' + choice.votes + '' + myvote + ')</div>';
});
2019-05-19 17:39:30 +10:00
$(".vote_" + json.id).html(poll)
}
}
}
2018-07-30 21:03:49 +10:00
}