thedesk/app/js/userdata/showOnTL.js

488 lines
15 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
//コード受信
if(location.search){
2018-02-26 02:32:10 +11:00
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
2018-02-18 16:43:11 +11:00
var mode=m[1];
var codex=m[2];
if(mode=="user"){
2018-05-20 16:17:10 +10:00
udgEx(codex,'main');
2018-02-18 16:43:11 +11:00
}
}
2018-03-21 16:36:02 +11:00
function udgEx(user,acct_id){
2018-03-31 13:39:06 +11:00
if(user=="selector"){
user = $("#his-acct").attr('fullname');
}
if(acct_id=="selector"){
acct_id = $("#user-acct-sel").val();
}
2018-05-20 16:17:10 +10:00
if(acct_id=="main"){
acct_id = localStorage.getItem("main");
}
2018-03-31 13:39:06 +11:00
console.log(user);
2018-03-21 16:36:02 +11:00
var domain = localStorage.getItem("domain_" + acct_id);
2018-08-23 03:29:39 +10:00
if(localStorage.getItem("mode_" + domain)=="misskey"){ return false; }
2018-07-07 03:51:48 +10:00
var at = localStorage.getItem("acct_"+ acct_id + "_at");
2018-03-21 16:36:02 +11:00
var start = "https://" + domain + "/api/v1/search?resolve=true&q="+user
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) {
2018-09-06 02:47:27 +10:00
console.log(json);
if(json.accounts){
var id=json.accounts[0].id;
udg(id,acct_id);
}else{
var url="https://"+user.split('@')[1]+"/@"+user.split('@')[0];
const {shell} = require('electron');
shell.openExternal(url);
}
2018-03-21 16:36:02 +11:00
});
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) {
2018-02-17 00:08:43 +11:00
user = localStorage.getItem("user-id_"+acct_id);
console.log(user);
2018-01-28 23:22:43 +11:00
}
todo("User Data Loading...");
var domain = localStorage.getItem("domain_" + acct_id);
2018-08-23 03:29:39 +10:00
if(localStorage.getItem("mode_" + domain)=="misskey"){
2018-07-30 21:03:49 +10:00
misskeyUdg(user, acct_id)
return;
}
2018-07-07 03:51:48 +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;
2018-02-25 18:21:13 +11:00
console.log(start);
2018-01-28 23:22:43 +11:00
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) {
2018-06-12 01:44:28 +10:00
console.log(json);
2018-02-05 01:56:31 +11:00
//一つ前のユーザーデータ
if (!localStorage.getItem("history")){
$("#his-history-btn").prop("disabled",true);
}else{
$("#his-history-btn").prop("disabled",false);
$('#his-data').attr("history", localStorage.getItem("history"));
}
2018-01-28 23:22:43 +11:00
//moved設定時
if (json.moved) {
Materialize.toast(
2019-01-26 14:24:26 +11:00
lang.lang_showontl_movetxt+'<button class="btn-flat toast-action" onclick="udg(\'' +
json.moved.id + '\',\''+acct_id+'\')">'+lang.lang_showontl_movebtn+'</button>', 4000)
2018-09-10 03:06:00 +10:00
}
2018-02-25 18:21:13 +11:00
$('#his-data').modal('open');
2018-01-28 23:22:43 +11:00
$('#his-data').attr("user-id", user);
$('#his-data').attr("use-acct", acct_id);
2018-01-31 03:43:01 +11:00
if(json.username!=json.acct){
//Remote
$('#his-data').attr("remote", "true");
2018-03-11 01:22:59 +11:00
var fullname=json.acct;
2018-01-31 03:43:01 +11:00
}else{
$('#his-data').attr("remote", "false");
2018-03-11 01:22:59 +11:00
var fullname=json.acct+"@"+domain;
2018-01-31 03:43:01 +11:00
}
2018-02-25 18:21:13 +11:00
utl(json.id, '', acct_id);
flw(json.id, '', acct_id);
fer(json.id, '', acct_id);
2018-05-10 01:33:08 +10:00
var dis_name=escapeHTML(json.display_name);
2018-05-26 22:48:13 +10:00
dis_name=twemoji.parse(dis_name);
2019-04-14 02:42:18 +10:00
2018-09-14 02:40:51 +10:00
var note=json.note;
2018-05-10 01:33:08 +10:00
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 +
2019-04-04 03:07:07 +11:00
'" class="emoji-img" data-emoji="'+shortcode+'" draggable="false">';
2018-05-10 01:33:08 +10:00
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
2018-09-14 02:40:51 +10:00
note = note.replace(regExp, emoji_url);
2018-05-10 01:33:08 +10:00
});
}
2019-04-14 02:42:18 +10:00
//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)
console.log(note)
//note=note.replace(/\s@([a-zA-Z_0-9@.-]+)/gi, mens)
2018-05-10 01:33:08 +10:00
$("#his-name").html(dis_name);
2018-01-28 23:22:43 +11:00
$("#his-acct").text(json.acct);
2018-03-11 01:22:59 +11:00
$("#his-acct").attr("fullname",fullname);
2018-01-28 23:22:43 +11:00
$("#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);
2019-03-10 16:32:44 +11:00
var flerc=json.followers_count;
if(flerc<0){
flerc="-";
}
$("#his-follower").text(flerc);
2018-02-25 18:21:13 +11:00
$("#his-since").text(crat(json.created_at));
2018-09-05 01:04:56 +10:00
$("#his-openin").attr("data-href", json.url);
2018-04-17 03:10:35 +10:00
if(json.fields){
2018-05-02 14:14:03 +10:00
if(json.fields.length>0){
2018-09-14 02:40:51 +10:00
note=note+'<table id="his-field">'
2018-05-02 14:14:03 +10:00
for(var i=0;i<json.fields.length;i++){
var fname=json.fields[i].name;
var fval=json.fields[i].value;
2019-04-04 03:07:07 +11:00
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"
}
2019-04-16 02:29:44 +10:00
note=note+'<tr><td class="his-field-title">'+twemoji.parse(escapeHTML(fname))+'</td><td class="his-field-content" title="'+when+'" style="background-color:'+color+'">'+twemoji.parse(fval)+'</td></tr>';
2018-05-02 14:14:03 +10:00
}
note=note+'</table>'
2018-07-05 11:26:07 +10:00
$("#his-des").html(twemoji.parse(note));
2018-05-02 14:14:03 +10:00
}else{
2018-07-05 11:26:07 +10:00
$("#his-des").html(twemoji.parse(note));
2018-04-17 03:10:35 +10:00
}
}else{
2018-07-05 11:26:07 +10:00
$("#his-des").html(twemoji.parse(note));
2018-04-17 03:10:35 +10:00
}
2018-06-12 01:44:28 +10:00
if(json.bot){
2019-01-26 14:24:26 +11:00
$("#his-bot").html(lang.lang_showontl_botacct);
2018-06-12 01:44:28 +10:00
}
2019-04-14 02:42:18 +10:00
$("#his-des").attr("data-acct",acct_id);
2018-01-28 23:22:43 +11:00
$('#his-data').css('background-size', 'cover');
2018-09-05 01:04:56 +10:00
$("#his-data .tab-content").css("height",$("#his-float-timeline").height()-70+"px")
2018-02-05 01:56:31 +11:00
localStorage.setItem("history" , user);
2018-02-25 18:21:13 +11:00
//自分の時
if (json.acct == localStorage.getItem("user_"+acct_id)) {
showFav('', acct_id);
showBlo('', acct_id);
showMut('', acct_id);
showDom('', acct_id);
showReq('', acct_id);
2018-07-07 03:51:48 +10:00
showFrl('', acct_id);
2018-02-25 18:21:13 +11:00
$("#his-name-val").val(json.display_name);
2018-07-28 07:25:12 +10:00
if(json.fields.length>0){
$("#his-f1-name").val(json.fields[0].name); $("#his-f1-val").val($.strip_tags(json.fields[0].value));
$("#his-f2-name").val(json.fields[1].name); $("#his-f2-val").val($.strip_tags(json.fields[1].value));
$("#his-f3-name").val(json.fields[2].name); $("#his-f3-val").val($.strip_tags(json.fields[2].value));
$("#his-f4-name").val(json.fields[3].name); $("#his-f4-val").val($.strip_tags(json.fields[3].value));
}
2018-02-25 18:21:13 +11:00
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();
2018-03-11 01:22:59 +11:00
$("#his-emp-btn").hide();
2018-03-14 05:31:31 +11:00
$(".only-my-data").show();
2018-03-21 16:36:02 +11:00
$(".only-his-data").hide();
2018-02-25 18:21:13 +11:00
} else {
relations(user, acct_id);
2018-03-14 05:31:31 +11:00
$(".only-my-data").hide();
2018-03-21 16:36:02 +11:00
$(".only-his-data").show();
2018-02-25 18:21:13 +11:00
}
2018-01-28 23:22:43 +11:00
todc();
2019-04-13 13:41:58 +10:00
//外部データ取得(死かもしれないので)
udAdd(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) {
user = localStorage.getItem("user-id_"+acct_id);
console.log(user);
}
todo("User Data Loading...");
var domain = localStorage.getItem("domain_" + acct_id);
2018-08-23 03:29:39 +10:00
if(localStorage.getItem("mode_" + domain)!="misskey"){
2018-07-30 21:03:49 +10:00
udg(user, acct_id)
return;
}
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/users/show";
console.log(user);
fetch(start, {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body: JSON.stringify({
i:at,
userId:user
})
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(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"));
}
$('#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;
}
utl(json.id, '', acct_id);
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);
}else{
var dis_name=json.name
}
$("#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=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();
} else {
if (json.isFollowing) {
//自分がフォローしている
$("#his-data").addClass("following");
2019-01-26 14:24:26 +11:00
$("#his-follow-btn").text(lang.lang_status_unfollow);
2018-07-30 21:03:49 +10:00
hisList(user,acct_id);
}else{
2019-01-26 14:24:26 +11:00
$("#his-follow-btn").text(lang.lang_status_follow);
2018-07-30 21:03:49 +10:00
}
if (json.isFollowed) {
//フォローされてる
2019-01-26 14:24:26 +11:00
$("#his-relation").text(lang.lang_showontl_followed);
2018-07-30 21:03:49 +10:00
}
$("#his-block-btn").hide();
if (json.isMuted) {
$("#his-data").addClass("muting");
2019-01-26 14:24:26 +11:00
$("#his-mute-btn").text(lang.lang_status_unmute);
2018-07-30 21:03:49 +10:00
}else{
2019-01-26 14:24:26 +11:00
$("#his-mute-btn").text(lang.lang_status_mute);
2018-07-30 21:03:49 +10:00
}
$(".only-my-data").hide();
$(".only-his-data").show();
}
todc();
});
}
2018-02-05 01:56:31 +11:00
//一つ前のユーザーデータ表示
function historyShow(){
var acct_id=$('#his-data').attr("use-acct");
var user=$('#his-data').attr("history");
udg(user, acct_id, "true")
}
2018-02-17 00:08:43 +11:00
//選択アカウントのプロフ
function profShow(){
var acct_id = $("#post-acct-sel").val();
var user = localStorage.getItem("user-id_"+acct_id);
console.log("user-id_"+acct_id+":"+user);
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);
2018-07-07 03:51:48 +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, {
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 json = json[0];
console.log(json);
if (json.following) {
//自分がフォローしている
$("#his-data").addClass("following");
2019-01-26 14:24:26 +11:00
$("#his-follow-btn").text(lang.lang_status_unfollow);
2018-06-12 01:44:28 +10:00
hisList(user,acct_id);
2018-01-31 03:43:01 +11:00
}else{
2019-01-26 14:24:26 +11:00
$("#his-follow-btn").text(lang.lang_status_follow);
2018-01-28 23:22:43 +11:00
}
if (json.followed_by) {
//フォローされてる
2019-01-26 14:24:26 +11:00
$("#his-relation").text(lang.lang_showontl_followed);
2018-01-28 23:22:43 +11:00
}
if (json.blocking) {
$("#his-data").addClass("blocking");
2019-01-26 14:24:26 +11:00
$("#his-block-btn").text(lang.lang_status_unblock);
2018-01-31 03:43:01 +11:00
}else{
2019-01-26 14:24:26 +11:00
$("#his-block-btn").text(lang.lang_status_block);
2018-01-28 23:22:43 +11:00
}
if (json.muting) {
$("#his-data").addClass("muting");
2019-01-26 14:24:26 +11:00
$("#his-mute-btn").text(lang.lang_status_unmute);
2018-01-31 03:43:01 +11:00
}else{
2019-01-26 14:24:26 +11:00
$("#his-mute-btn").text(lang.lang_status_mute);
2018-01-28 23:22:43 +11:00
}
if (json.muting_notifications) {
$("#his-data").addClass("mutingNotf");
2019-01-26 14:24:26 +11:00
$("#his-notf-btn").text(lang.lang_showontl_notf+lang.lang_status_unmute);
2018-01-31 03:43:01 +11:00
}else{
2019-01-26 14:24:26 +11:00
$("#his-notf-btn").text(lang.lang_showontl_notf+lang.lang_status_mute);
2018-01-28 23:22:43 +11:00
}
if (json.domain_blocking) {
$("#his-data").addClass("blockingDom");
2019-01-26 14:24:26 +11:00
$("#his-domain-btn").text(lang.lang_showontl_domain+lang.lang_status_unblock);
2018-01-31 03:43:01 +11:00
}else{
2019-01-26 14:24:26 +11:00
$("#his-domain-btn").text(lang.lang_showontl_domain+lang.lang_status_block);
2018-01-28 23:22:43 +11:00
}
2018-09-05 01:04:56 +10:00
//Endorsed
if(json.endorsed){
$("#his-end-btn").addClass("endorsed");
2019-01-26 14:24:26 +11:00
$("#his-end-btn").text(lang.lang_status_unendorse)
2018-09-05 01:04:56 +10:00
}else{
$("#his-end-btn").removeClass("endorsed");
2019-01-26 14:24:26 +11:00
$("#his-end-btn").text(lang.lang_status_endorse)
2018-09-05 01:04:56 +10:00
}
2019-04-11 02:52:01 +10:00
//Blocked
if(json.blocked_by){
$("#his-float-timeline").hide();
$("#his-float-blocked").show();
$("#his-follow-btn").hide()
}
2018-01-28 23:22:43 +11:00
});
}
2018-09-05 01:04:56 +10:00
function profbrws(){
const {shell} = require('electron');
var url=$("#his-openin").attr("data-href")
shell.openExternal(url);
}
2018-01-28 23:22:43 +11:00
//オールリセット
function hisclose() {
$('#his-data').modal('close');
2018-02-25 18:21:13 +11:00
reset();
$('#his-data').attr("history", "");
localStorage.removeItem("history");
}
function reset(){
2018-03-14 05:31:31 +11:00
$(".tab-content:eq(0)").show();
$(".tab-content:gt(0)").hide();
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");
$('#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("");
$('#his-data').css('background-size', 'cover');
$("#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");
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-01-26 14:24:26 +11:00
$("#his-follow-btn").text(lang.lang_status_follow);
$("#his-mute-btn").text(lang.lang_status_mute);
$("#his-block-btn").text(lang.lang_status_block);
$("#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);
2018-06-12 01:44:28 +10:00
$("#his-lists-b").html('');
$("#his-name-val").val("");
$("#his-des-val").val("");
$("#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-04-13 13:41:58 +10:00
$("#his-proof-prof").html("")
2018-03-14 05:31:31 +11:00
}
$('#my-data-nav .custom-tab').on('click',function(){
var target=$(this).find("a").attr("go");
$("#my-data-nav .custom-tab").removeClass("active-back");
$(this).addClass("active-back");
$(target).show();
$(".tab-content:not("+target+")").hide();
});