thedesk/app/js/post/status.js

367 lines
11 KiB
JavaScript
Raw Normal View History

2018-01-28 23:22:43 +11:00
//お気に入り登録やブースト等、フォローやブロック等
//お気に入り登録
2018-03-21 16:36:02 +11:00
function fav(id, acct_id, remote) {
2018-01-28 23:22:43 +11:00
if ($("#pub_" + id).hasClass("faved")) {
var flag = "unfavourite";
} else {
var flag = "favourite";
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem(domain + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/" + flag;
2018-04-17 03:10:35 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
var json = httpreq.response;
if(remote!="remote"){
//APIのふぁぼカウントがおかしい
if ($("[toot-id=" + id + "] .fav_ct").text() == json.favourites_count){
if(flag=="unfavourite"){
var fav=json.favourites_count - 1;
}else{
var fav=json.favourites_count + 1;
//var fav = json.favourites_count;
}
}else{
var fav = json.favourites_count;
}
$("[toot-id=" + id + "] .fav_ct").text(fav);
if (!json.reblog) {
} else {
$("[toot-id=" + id + "] .rt_ct").text(fav);
}
if ($("[toot-id=" + id +"]").hasClass("faved")) {
$("[toot-id=" + id +"]").removeClass("faved");
$(".fav_" + id).removeClass("yellow-text");
} else {
$("[toot-id=" + id +"]").addClass("faved");
$(".fav_" + id).addClass("yellow-text");
}
}else{
Materialize.toast("お気に入り登録しました。インスタンスが違うときは時間がかかる場合があります。", 1000);
}
}
}
2018-01-28 23:22:43 +11:00
}
//ブースト
2018-03-21 16:36:02 +11:00
function rt(id, acct_id, remote) {
2018-01-28 23:22:43 +11:00
if ($("#pub_" + id).hasClass("rted")) {
var flag = "unreblog";
} else {
var flag = "reblog";
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem(domain + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/" + flag;
2018-04-17 03:10:35 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
var json = httpreq.response;
console.log(json);
if (remote != "remote") {
$("[toot-id=" + id + "] .fav_ct").text(json.favourites_count);
if (!json.reblog) {
if (flag == "unreblog") {
var rt = json.reblogs_count - 1;
} else {
var rt = json.reblogs_count + 1;
}
$("[toot-id=" + id + "] .rt_ct").text(rt);
} else {
$("[toot-id=" + id + "] .rt_ct").text(json.reblog.reblogs_count);
}
2018-01-28 23:22:43 +11:00
2018-04-17 03:10:35 +10:00
if ($("[toot-id=" + id + "]").hasClass("rted")) {
$("[toot-id=" + id + "]").removeClass("rted");
$(".rt_" + id).removeClass("teal-text");
} else {
$("[toot-id=" + id + "]").addClass("rted");
$(".rt_" + id).addClass("teal-text");
}
} else {
Materialize.toast("ブーストしました。インスタンスが違うときは時間がかかる場合があります。", 1000);
}
2018-01-28 23:22:43 +11:00
}
2018-03-21 16:36:02 +11:00
}
2018-01-28 23:22:43 +11:00
}
//フォロー
2018-03-21 16:36:02 +11:00
function follow(acct_id,remote) {
if (!acct_id && acct_id!="selector") {
2018-01-28 23:22:43 +11:00
var acct_id = $('#his-data').attr("use-acct");
2018-03-21 16:36:02 +11:00
}else if (acct_id=="selector") {
var acct_id = $("#user-acct-sel").val();
2018-01-28 23:22:43 +11:00
}
2018-03-21 16:36:02 +11:00
if (!remote && $("#his-data").hasClass("following")) {
2018-01-28 23:22:43 +11:00
var flag = "unfollow";
} else {
var flag = "follow";
}
2018-03-21 16:36:02 +11:00
var id = $("#his-data").attr("user-id");
if(!remote){
var remote = $("#his-data").attr("remote");
}
2018-01-28 23:22:43 +11:00
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem(domain + "_at");
2018-01-31 03:43:01 +11:00
if(remote=="true" && flag=="follow"){
var start = "https://" + domain + "/api/v1/follows";
var user=$("#his-acct").text();
var ent={"uri":user}
}else{
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
var ent={}
}
2018-04-17 03:10:35 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
var json = httpreq.response;
console.log(json);
if ($("#his-data").hasClass("following")) {
$("#his-data").removeClass("following");
$("#his-follow-btn").text("フォロー");
} else {
$("#his-data").addClass("following");
$("#his-follow-btn").text("フォロー解除");
}
2018-01-28 23:22:43 +11:00
}
2018-04-17 03:10:35 +10:00
}
2018-01-28 23:22:43 +11:00
}
//ブロック
function block(acct_id) {
if (!acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var id = $("#his-data").attr("user-id");
if ($("#his-data").hasClass("blocking")) {
var flag = "unblock";
} else {
var flag = "block";
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem(domain + "_at");
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
2018-04-17 03:10:35 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if ($("#his-data").hasClass("blocking")) {
$("#his-data").removeClass("blocking");
$("#his-block-btn").text("ブロック");
} else {
$("#his-data").addClass("blocking");
$("#his-block-btn").text("ブロック解除");
}
2018-01-28 23:22:43 +11:00
}
2018-04-17 03:10:35 +10:00
}
2018-01-28 23:22:43 +11:00
}
//ミュート
function mute(acct_id) {
if (!acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var id = $("#his-data").attr("user-id");
if ($("#his-data").hasClass("muting")) {
var flag = "unmute";
} else {
var flag = "mute";
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem(domain + "_at");
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
2018-04-17 03:10:35 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if ($("#his-data").hasClass("muting")) {
$("#his-data").removeClass("muting");
$("#his-mute-btn").text("ミュート");
} else {
$("#his-data").addClass("muting");
$("#his-mute-btn").text("ミュート解除");
}
2018-01-28 23:22:43 +11:00
}
2018-04-17 03:10:35 +10:00
}
2018-01-28 23:22:43 +11:00
}
//投稿削除
function del(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem(domain + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id;
2018-04-17 03:10:35 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('DELETE', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
}
}
2018-01-28 23:22:43 +11:00
}
2018-03-11 01:22:59 +11:00
//ピン留め
function pin(id, acct_id) {
if ($("#pub_" + id).hasClass("pined")) {
var flag = "unpin";
} else {
var flag = "pin";
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem(domain + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/" + flag;
2018-04-17 03:10:35 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('DELETE', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
var json = httpreq.response;
console.log(json);
if ($("[toot-id=" + id + "]").hasClass("pined")) {
$("[toot-id=" + id + "]").removeClass("pined");
$(".pin_" + id).removeClass("blue-text");
} else {
$("[toot-id=" + id + "]").addClass("pined");
$(".pin_" + id).addClass("blue-text");
}
2018-03-11 01:22:59 +11:00
}
2018-04-17 03:10:35 +10:00
}
2018-03-11 01:22:59 +11:00
}
2018-01-28 23:22:43 +11:00
//フォロリク
function request(id, flag, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem(domain + "_at");
var start = "https://" + domain + "/api/v1/follow_requests/" + id + "/" + flag;
2018-04-17 03:10:35 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
var json = httpreq.response;
console.log(json);
showReq();
}
}
2018-01-28 23:22:43 +11:00
}
//ドメインブロック(未実装)
function domainblock(add, flag, acct_id) {
if (!acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem(domain + "_at");
var start = "https://" + domain + "/api/v1/domain_blocks"
2018-04-17 03:10:35 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
var json = httpreq.response;
console.log(json);
showDom();
}
}
2018-01-28 23:22:43 +11:00
}
function addDomainblock() {
var domain = $("#domainblock").val();
domainblock(domain, 'POST');
}
2018-03-11 01:22:59 +11:00
//ユーザー強調
function empUser(){
var usr = localStorage.getItem("user_emp");
var obj = JSON.parse(usr);
var id=$("#his-acct").attr("fullname");
console.log(id);
if(!obj){
var obj=[];
obj.push(id);
Materialize.toast(id+"を強調します。設定を適用するにはF5を押して下さい。", 4000);
}else{
var can;
Object.keys(obj).forEach(function(key) {
var usT = obj[key];
if(usT!=id && !can){
can=false;
}else{
can=true;
obj.splice(key, 1);
Materialize.toast(id+"の強調を解除しました。設定を適用するにはF5を押して下さい。", 4000);
}
});
}
var json = JSON.stringify(obj);
localStorage.setItem("user_emp", json);
}
2018-02-18 16:43:11 +11:00
//URLコピー
function tootUriCopy(url){
execCopy(url);
Materialize.toast("トゥートURLをコピーしました", 1500);
2018-03-21 16:36:02 +11:00
}
//他のアカウントで…
function staEx(mode){
var url=$("#tootmodal").attr("data-url");
var acct_id = $("#status-acct-sel").val();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem(domain + "_at");
var start = "https://" + domain + "/api/v1/search?resolve=true&q="+url
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
}
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
var id=json.statuses[0].id;
if(mode=="rt"){
rt(id, acct_id, 'remote')
}else if(mode=="fav"){
fav(id, acct_id, 'remote')
}else if(mode=="reply"){
reEx(id)
}
});
return;
2018-02-18 16:43:11 +11:00
}