thedesk/app/js/userdata/showOnTL.js

555 lines
17 KiB
JavaScript
Raw Normal View History

2018-01-28 23:22:43 +11:00
//ユーザーデータ表示
2018-02-05 01:56:31 +11:00
localStorage.removeItem("history");
2018-02-18 16:43:11 +11:00
//コード受信
2019-05-19 17:39:30 +10:00
if (location.search) {
2018-02-26 02:32:10 +11:00
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
2019-05-19 17:39:30 +10:00
var mode = m[1];
var codex = m[2];
if (mode == "user") {
2019-11-04 03:09:02 +11:00
udgEx(codex, "main");
2018-02-18 16:43:11 +11:00
}
}
2019-05-19 17:39:30 +10:00
function udgEx(user, acct_id) {
if (user == "selector") {
2019-11-04 03:09:02 +11:00
user = $("#his-acct").attr("fullname");
2018-03-31 13:39:06 +11:00
}
2019-05-19 17:39:30 +10:00
if (acct_id == "selector") {
2018-03-31 13:39:06 +11:00
acct_id = $("#user-acct-sel").val();
}
2019-05-19 17:39:30 +10:00
if (acct_id == "main") {
2018-05-20 16:17:10 +10:00
acct_id = localStorage.getItem("main");
}
2019-05-19 17:39:30 +10:00
console.log("Get user data of " + user);
2018-03-21 16:36:02 +11:00
var domain = localStorage.getItem("domain_" + acct_id);
2019-11-04 03:09:02 +11:00
if (localStorage.getItem("mode_" + domain) == "misskey") {
return false;
}
2019-05-19 17:39:30 +10:00
var at = localStorage.getItem("acct_" + acct_id + "_at");
2019-11-18 03:08:55 +11:00
var start = "https://" + domain + "/api/v2/search?resolve=true&q=" + encodeURIComponent(user);
2018-03-21 16:36:02 +11:00
fetch(start, {
2019-11-04 03:09:02 +11:00
method: "GET",
2018-03-21 16:36:02 +11:00
headers: {
2019-11-04 03:09:02 +11:00
"content-type": "application/json",
Authorization: "Bearer " + at
2018-09-06 02:47:27 +10:00
}
2019-11-04 03:09:02 +11:00
})
.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.accounts[0]) {
var id = json.accounts[0].id;
udg(id, acct_id);
} else {
postMessage(["openUrl", user], "*");
}
});
2019-03-08 05:19:26 +11:00
return true;
2018-03-21 16:36:02 +11:00
}
2018-01-28 23:22:43 +11:00
function udg(user, acct_id) {
2018-02-25 18:21:13 +11:00
reset();
2018-01-28 23:22:43 +11:00
if (!user) {
2019-05-19 17:39:30 +10:00
user = localStorage.getItem("user-id_" + acct_id);
2018-01-28 23:22:43 +11:00
}
todo("User Data Loading...");
var domain = localStorage.getItem("domain_" + acct_id);
2019-05-19 17:39:30 +10:00
if (localStorage.getItem("mode_" + domain) == "misskey") {
2019-11-04 03:09:02 +11:00
misskeyUdg(user, acct_id);
2018-07-30 21:03:49 +10:00
return;
}
2019-05-19 17:39:30 +10:00
var at = localStorage.getItem("acct_" + acct_id + "_at");
2018-01-28 23:22:43 +11:00
var start = "https://" + domain + "/api/v1/accounts/" + user;
fetch(start, {
2019-11-04 03:09:02 +11:00
method: "GET",
2018-01-28 23:22:43 +11:00
headers: {
2019-11-04 03:09:02 +11:00
"content-type": "application/json",
Authorization: "Bearer " + at
2019-05-19 17:39:30 +10:00
}
2019-11-04 03:09:02 +11:00
})
.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 (!localStorage.getItem("history")) {
$("#his-history-btn").prop("disabled", true);
} else {
$("#his-history-btn").prop("disabled", false);
$("#his-data").attr("history", localStorage.getItem("history"));
}
//moved設定時
if (json.moved) {
M.toast({
html: lang.lang_showontl_movetxt + '<button class="btn-flat toast-action" onclick="udg(\'' + json.moved.id + "','" + acct_id + "')\">" + lang.lang_showontl_movebtn + "</button>",
displayLength: 4000
});
}
$("#his-data").modal("open");
$("#his-data").attr("user-id", user);
$("#his-data").attr("use-acct", acct_id);
if (json.username != json.acct) {
//Remote
$("#his-data").attr("remote", "true");
var fullname = json.acct;
} else {
$("#his-data").attr("remote", "false");
var fullname = json.acct + "@" + domain;
}
2020-05-07 01:31:11 +10:00
utlShow(json.id, "", acct_id);
2019-11-04 03:09:02 +11:00
flw(json.id, "", acct_id);
fer(json.id, "", acct_id);
var dis_name = escapeHTML(json.display_name);
dis_name = twemoji.parse(dis_name);
2019-04-14 02:42:18 +10:00
2019-11-04 03:09:02 +11:00
var note = json.note;
if (json.emojis) {
var actemojick = json.emojis[0];
} else {
var actemojick = false;
}
//絵文字があれば
if (actemojick) {
Object.keys(json.emojis).forEach(function(key5) {
var emoji = json.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" draggable="false">';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
note = note.replace(regExp, emoji_url);
});
}
//noteの解析
//var tags = '<a onclick="tl(\'tag\',\'$1\',' + acct_id +',\'add\')" class="pointer parsed">#$1</a>';
//var mens = '<a onclick="udgEx(\'$1\',' + acct_id +')" class="pointer parsed">@$1</a>';
//note=note.replace(/#(\S+)/gi, tags)
//note=note.replace(/\s@([a-zA-Z_0-9@.-]+)/gi, mens)
$("#his-name").html(dis_name);
$("#his-acct").text(json.acct);
$("#his-acct").attr("fullname", fullname);
$("#his-prof").attr("src", json.avatar);
$("#his-data").css("background-image", "url(" + json.header + ")");
$("#his-sta").text(json.statuses_count);
$("#his-follow").text(json.following_count);
var flerc = json.followers_count;
if (flerc < 0) {
flerc = "-";
}
$("#his-follower").text(flerc);
$("#his-since").text(crat(json.created_at));
$("#his-openin").attr("data-href", json.url);
if (json.fields) {
var table = "";
if (json.fields.length > 0) {
$("#his-des").css("max-height", "250px");
table = '<table id="his-field">';
for (var i = 0; i < json.fields.length; i++) {
var fname = json.fields[i].name;
var fval = json.fields[i].value;
if (json.fields[i].verified_at) {
var when = lang.lang_showontl_verified + ":" + crat(json.fields[i].verified_at);
var color = "rgba(121,189,154,.25);";
} else {
var when = "";
var color = "inherit";
}
table = table + '<tr><td class="his-field-title">' + escapeHTML(fname) + '</td><td class="his-field-content" title="' + when + '" style="background-color:' + color + '">' + fval + "</td></tr>";
2018-05-02 14:14:03 +10:00
}
2019-11-04 03:09:02 +11:00
table = table + "</table>";
$("#his-des").html(twemoji.parse(note));
} else {
$("#his-des").css("max-height", "400px");
2018-04-17 03:10:35 +10:00
}
2019-11-04 03:09:02 +11:00
$("#his-table").html(twemoji.parse(table));
2018-02-25 18:21:13 +11:00
} else {
2019-10-20 15:11:03 +11:00
$("#his-des").css("max-height", "400px");
2018-02-25 18:21:13 +11:00
}
2019-11-04 03:09:02 +11:00
$("#his-des").html(twemoji.parse(note));
if (json.bot) {
$("#his-bot").html(lang.lang_showontl_botacct);
2019-05-19 17:39:30 +10:00
}
2019-11-04 03:09:02 +11:00
$("#his-des").attr("data-acct", acct_id);
$("#his-data").css("background-size", "cover");
$("#his-float-timeline").css("height", $("#his-data-show").height() + "px");
localStorage.setItem("history", user);
//自分の時
if (json.acct == localStorage.getItem("user_" + acct_id)) {
showFav("", acct_id);
showBlo("", acct_id);
showMut("", acct_id);
showDom("", acct_id);
showReq("", acct_id);
showFrl("", acct_id);
$("#his-name-val").val(json.display_name);
if (json.fields.length > 0) {
if (json.fields[0]) {
$("#his-f1-name").val(json.fields[0].name);
$("#his-f1-val").val($.strip_tags(json.fields[0].value));
}
if (json.fields[1]) {
$("#his-f2-name").val(json.fields[1].name);
$("#his-f2-val").val($.strip_tags(json.fields[1].value));
}
if (json.fields[2]) {
$("#his-f3-name").val(json.fields[2].name);
$("#his-f3-val").val($.strip_tags(json.fields[2].value));
}
if (json.fields[3]) {
$("#his-f4-name").val(json.fields[3].name);
$("#his-f4-val").val($.strip_tags(json.fields[3].value));
}
}
var des = json.note;
des = des.replace(/<br \/>/g, "\n");
des = $.strip_tags(des);
$("#his-des-val").val(des);
$("#his-follow-btn").hide();
$("#his-block-btn").hide();
$("#his-mute-btn").hide();
$("#his-notf-btn").hide();
$("#his-domain-btn").hide();
$("#his-emp-btn").hide();
$(".only-my-data").show();
$(".only-his-data").hide();
if (localStorage.getItem("main") == acct_id) {
$("#his-main-acct").hide();
}
} else {
relations(user, acct_id);
$(".only-my-data").hide();
$(".only-his-data").show();
2019-07-07 00:16:41 +10:00
}
2019-11-04 03:09:02 +11:00
todc();
//外部データ取得(死かもしれないので)
udAdd(acct_id, user, json.url);
});
2018-01-28 23:22:43 +11:00
}
2018-07-30 21:03:49 +10:00
function misskeyUdg(user, acct_id) {
reset();
if (!user) {
2019-05-19 17:39:30 +10:00
user = localStorage.getItem("user-id_" + acct_id);
2018-07-30 21:03:49 +10:00
}
todo("User Data Loading...");
var domain = localStorage.getItem("domain_" + acct_id);
2019-05-19 17:39:30 +10:00
if (localStorage.getItem("mode_" + domain) != "misskey") {
2019-11-04 03:09:02 +11:00
udg(user, acct_id);
2018-07-30 21:03:49 +10:00
return;
}
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/users/show";
fetch(start, {
2019-11-04 03:09:02 +11:00
method: "POST",
2018-07-30 21:03:49 +10:00
headers: {
2019-11-04 03:09:02 +11:00
"content-type": "application/json"
2018-07-30 21:03:49 +10:00
},
body: JSON.stringify({
2019-05-19 17:39:30 +10:00
i: at,
userId: user
2018-07-30 21:03:49 +10:00
})
2019-11-04 03:09:02 +11:00
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text);
});
2019-07-07 00:16:41 +10:00
}
2019-11-04 03:09:02 +11:00
return response.json();
})
.catch(function(error) {
todo(error);
setLog(start, "JSON", error);
console.error(error);
})
.then(function(json) {
//一つ前のユーザーデータ
if (!localStorage.getItem("history")) {
$("#his-history-btn").prop("disabled", true);
2019-05-19 17:39:30 +10:00
} else {
2019-11-04 03:09:02 +11:00
$("#his-history-btn").prop("disabled", false);
$("#his-data").attr("history", localStorage.getItem("history"));
2018-07-30 21:03:49 +10:00
}
2019-11-04 03:09:02 +11:00
$("#his-data").modal("open");
$("#his-data").attr("user-id", user);
$("#his-data").attr("use-acct", acct_id);
if (json.host) {
//Remote
$("#his-data").attr("remote", "false");
var fullname = json.username + "@" + json.host;
} else {
$("#his-data").attr("remote", "false");
var fullname = json.acct + "@" + domain;
2018-07-30 21:03:49 +10:00
}
2020-05-07 01:31:11 +10:00
utlShow(json.id, "", acct_id);
2019-11-04 03:09:02 +11:00
flw(json.id, "", acct_id);
fer(json.id, "", acct_id);
if (json.name) {
var dis_name = escapeHTML(json.name);
dis_name = twemoji.parse(dis_name);
2018-07-30 21:03:49 +10:00
} else {
2019-11-04 03:09:02 +11:00
var dis_name = json.name;
2018-07-30 21:03:49 +10:00
}
2019-11-04 03:09:02 +11:00
$("#his-name").html(dis_name);
$("#his-acct").text(json.username);
$("#his-acct").attr("fullname", fullname);
$("#his-prof").attr("src", json.avatarUrl);
$("#his-data").css("background-image", "url(" + json.bannerUrl + ")");
$("#his-sta").text(json.notesCount);
$("#his-follow").text(json.followingCount);
$("#his-follower").text(json.followersCount);
$("#his-since").text(crat(json.createdAt));
var note = escapeHTML(json.description);
$("#his-des").html(twemoji.parse(note));
if (json.isCat) {
$("#his-bot").html("Cat" + twemoji.parse("😺"));
}
$("#his-data").css("background-size", "cover");
localStorage.setItem("history", user);
//自分の時
if (json.username == localStorage.getItem("user_" + acct_id) && !json.host) {
//showFav('', acct_id);
//showMut('', acct_id);
//showReq('', acct_id);
showFrl("", acct_id);
$("#his-name-val").val(json.name);
var des = json.note;
des = nl2br(des);
des = $.strip_tags(des);
$("#his-des-val").val(des);
$("#his-follow-btn").hide();
$("#his-block-btn").hide();
$("#his-mute-btn").hide();
$("#his-notf-btn").hide();
$("#his-domain-btn").hide();
$("#his-emp-btn").hide();
$(".only-my-data").show();
$(".only-his-data").hide();
if (localStorage.getItem("main") == acct_id) {
$("#his-main-acct").hide();
}
} else {
if (json.isFollowing) {
//自分がフォローしている
$("#his-data").addClass("following");
$("#his-follow-btn-text").text(lang.lang_status_unfollow);
hisList(user, acct_id);
} else {
$("#his-follow-btn-text").text(lang.lang_status_follow);
}
if (json.isFollowed) {
//フォローされてる
$("#his-relation").text(lang.lang_showontl_followed);
}
$("#his-block-btn").hide();
if (json.isMuted) {
$("#his-data").addClass("muting");
$("#his-mute-btn-text").text(lang.lang_status_unmute);
} else {
$("#his-mute-btn-text").text(lang.lang_status_mute);
}
$(".only-my-data").hide();
$(".only-his-data").show();
}
todc();
});
2018-07-30 21:03:49 +10:00
}
2018-02-05 01:56:31 +11:00
//一つ前のユーザーデータ表示
2019-05-19 17:39:30 +10:00
function historyShow() {
2019-11-04 03:09:02 +11:00
var acct_id = $("#his-data").attr("use-acct");
var user = $("#his-data").attr("history");
udg(user, acct_id, "true");
2018-02-05 01:56:31 +11:00
}
2018-02-17 00:08:43 +11:00
//選択アカウントのプロフ
2019-05-19 17:39:30 +10:00
function profShow() {
2018-02-17 00:08:43 +11:00
var acct_id = $("#post-acct-sel").val();
2019-05-19 17:39:30 +10:00
var user = localStorage.getItem("user-id_" + acct_id);
2019-11-04 03:09:02 +11:00
udg(user, acct_id);
2018-07-28 07:25:12 +10:00
hide();
2018-02-17 00:08:43 +11:00
}
2018-01-28 23:22:43 +11:00
//FF関係取得
function relations(user, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
2019-05-19 17:39:30 +10:00
var at = localStorage.getItem("acct_" + acct_id + "_at");
2018-01-28 23:22:43 +11:00
var start = "https://" + domain + "/api/v1/accounts/relationships?id=" + user;
fetch(start, {
2019-11-04 03:09:02 +11:00
method: "GET",
2018-01-28 23:22:43 +11:00
headers: {
2019-11-04 03:09:02 +11:00
"content-type": "application/json",
Authorization: "Bearer " + at
2018-01-28 23:22:43 +11:00
}
2019-11-04 03:09:02 +11:00
})
.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) {
var json = json[0];
if (json.following) {
//自分がフォローしている
$("#his-data").addClass("following");
$("#his-follow-btn-text").text(lang.lang_status_unfollow);
hisList(user, acct_id);
2020-05-24 02:42:00 +10:00
} else if (json.requested) {
//フォローリクエストを送っている
$("#his-data").addClass("follow-requested");
$("#his-follow-btn-text").text(lang.lang_status_cancel_follow_request);
2019-11-04 03:09:02 +11:00
} else {
$("#his-follow-btn-text").text(lang.lang_status_follow);
}
if (json.followed_by) {
//フォローされてる
$("#his-relation").text(lang.lang_showontl_followed);
}
if (json.blocking) {
$("#his-data").addClass("blocking");
$("#his-block-btn-text").text(lang.lang_status_unblock);
} else {
$("#his-block-btn-text").text(lang.lang_status_block);
}
if (json.muting) {
$("#his-data").addClass("muting");
$("#his-mute-btn-text").text(lang.lang_status_unmute);
} else {
$("#his-mute-btn-text").text(lang.lang_status_mute);
}
if (json.muting_notifications) {
$("#his-data").addClass("mutingNotf");
$("#his-notf-btn-text").text(lang.lang_showontl_notf + lang.lang_status_unmute);
} else {
$("#his-notf-btn-text").text(lang.lang_showontl_notf + lang.lang_status_mute);
}
if (json.domain_blocking) {
$("#his-data").addClass("blockingDom");
$("#his-domain-btn-text").text(lang.lang_showontl_domain + lang.lang_status_unblock);
} else {
$("#his-domain-btn-text").text(lang.lang_showontl_domain + lang.lang_status_block);
}
//Endorsed
if (json.endorsed) {
$("#his-end-btn").addClass("endorsed");
$("#his-end-btn-text").text(lang.lang_status_unendorse);
} else {
$("#his-end-btn").removeClass("endorsed");
$("#his-end-btn-text").text(lang.lang_status_endorse);
}
//Blocked
if (json.blocked_by) {
$("#my-data-nav .btn").addClass("disabled");
$(".his-var-content").hide();
$("#his-float-blocked").show();
$("#his-follow-btn").hide();
}
});
2018-01-28 23:22:43 +11:00
}
2019-05-19 17:39:30 +10:00
function profbrws() {
2019-11-04 03:09:02 +11:00
var url = $("#his-openin").attr("data-href");
postMessage(["openUrl", url], "*");
2018-09-05 01:04:56 +10:00
}
2019-07-07 00:16:41 +10:00
function setMain() {
2019-11-04 03:09:02 +11:00
var acct_id = $("#his-data").attr("use-acct");
2019-07-07 00:16:41 +10:00
localStorage.setItem("main", acct_id);
2019-11-04 03:09:02 +11:00
multiSelector(true);
M.toast({ html: lang.lang_manager_mainAcct, displayLength: 3000 });
2019-07-07 00:16:41 +10:00
}
2018-01-28 23:22:43 +11:00
//オールリセット
function hisclose() {
2019-11-04 03:09:02 +11:00
$("#his-data").modal("close");
2018-02-25 18:21:13 +11:00
reset();
2019-11-04 03:09:02 +11:00
$("#his-data").attr("history", "");
2018-02-25 18:21:13 +11:00
localStorage.removeItem("history");
}
2019-05-19 17:39:30 +10:00
function reset() {
2019-08-24 02:09:56 +10:00
$(".his-var-content:eq(0)").show();
$(".his-var-content:gt(0)").hide();
2019-11-04 03:09:02 +11:00
$("#my-data-nav .btn").removeClass("disabled");
2018-06-12 01:44:28 +10:00
$(".active-back").removeClass("active-back");
$(".column-first").addClass("active-back");
2018-01-28 23:22:43 +11:00
$("#his-name").text("Loading");
$("#his-acct").text("");
2019-02-05 13:33:32 +11:00
$("#his-prof").attr("src", "../../img/loading.svg");
2019-11-04 03:09:02 +11:00
$("#his-data").css("background-image", "url(../../img/loading.svg)");
2018-01-28 23:22:43 +11:00
$("#his-sta").text("");
$("#his-follow").text("");
$("#his-follower").text("");
$("#his-des").html("");
2019-11-04 03:09:02 +11:00
$("#his-data").css("background-size", "cover");
2018-01-28 23:22:43 +11:00
$("#his-since").text("");
$("#his-data").removeClass("following");
$("#his-data").removeClass("muting");
$("#his-data").removeClass("blocking");
$("#his-data").removeClass("mutingNotf");
$("#his-data").removeClass("blockingDom");
2018-09-05 01:04:56 +10:00
$("#his-end-btn").removeClass("endorsed");
2019-10-20 15:11:03 +11:00
$("#his-des").css("max-height", "250px");
2018-06-12 01:44:28 +10:00
$("#his-bot").html("");
2018-01-28 23:22:43 +11:00
$("#his-follow-btn").show();
$("#his-block-btn").show();
$("#his-mute-btn").show();
$("#his-notf-btn").show();
$("#his-domain-btn").show();
2018-03-11 01:22:59 +11:00
$("#his-emp-btn").show();
2019-10-20 15:11:03 +11:00
$("#his-follow-btn-text").text(lang.lang_status_follow);
$("#his-mute-btn-text").text(lang.lang_status_mute);
$("#his-block-btn-text").text(lang.lang_status_block);
2019-05-19 17:39:30 +10:00
$("#his-notf-btn").text(lang.lang_showontl_notf + lang.lang_status_mute);
$("#his-domain-btn").text(lang.lang_showontl_domain + lang.lang_status_block);
2018-01-28 23:22:43 +11:00
$("#his-relation").text("");
$(".cont-series").html("");
$("#domainblock").val("");
2019-01-26 14:24:26 +11:00
$("#his-lists-a").html(lang.lang_showontl_listwarn);
2019-11-04 03:09:02 +11:00
$("#his-lists-b").html("");
2018-06-12 01:44:28 +10:00
$("#his-name-val").val("");
$("#his-des-val").val("");
2019-11-04 03:09:02 +11:00
$("#his-f1-name").val("");
$("#his-f1-val").val("");
$("#his-f2-name").val("");
$("#his-f2-val").val("");
$("#his-f3-name").val("");
$("#his-f3-val").val("");
$("#his-f4-name").val("");
$("#his-f4-val").val("");
2018-09-05 01:04:56 +10:00
$("#his-endorse").html("");
$("#his-openin").attr("data-href", "");
2019-04-11 02:52:01 +10:00
$("#his-float-timeline").show();
$("#his-float-blocked").hide();
2019-07-07 00:16:41 +10:00
$("#his-main-acct").show();
2019-11-04 03:09:02 +11:00
$("#his-proof-prof").html("");
2018-03-14 05:31:31 +11:00
}
2019-11-04 03:09:02 +11:00
$("#my-data-nav .anc-link").on("click", function() {
2019-08-24 02:09:56 +10:00
var target = $(this).attr("go");
if (target) {
2019-08-24 02:09:56 +10:00
$("#my-data-nav .anc-link").removeClass("active-back");
$(this).addClass("active-back");
$(target).show();
$(".his-var-content:not(" + target + ")").hide();
}
2019-11-04 03:09:02 +11:00
});