563 lines
17 KiB
JavaScript
563 lines
17 KiB
JavaScript
//ユーザーデータ表示
|
|
localStorage.removeItem("history")
|
|
//コード受信
|
|
if (location.search) {
|
|
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/)
|
|
var mode = m[1]
|
|
var codex = m[2]
|
|
if (mode == "user") {
|
|
udgEx(codex, "main")
|
|
}
|
|
}
|
|
function udgEx(user, acct_id) {
|
|
if (user == "selector") {
|
|
user = $("#his-acct").attr("fullname")
|
|
}
|
|
if (acct_id == "selector") {
|
|
acct_id = $("#user-acct-sel").val()
|
|
}
|
|
if (acct_id == "main") {
|
|
acct_id = localStorage.getItem("main")
|
|
}
|
|
console.log("Get user data of " + user)
|
|
var domain = localStorage.getItem("domain_" + acct_id)
|
|
if (localStorage.getItem("mode_" + domain) == "misskey") {
|
|
return false
|
|
}
|
|
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
|
var start = "https://" + domain + "/api/v2/search?resolve=true&q=" + encodeURIComponent(user)
|
|
fetch(start, {
|
|
method: "GET",
|
|
headers: {
|
|
"content-type": "application/json",
|
|
Authorization: "Bearer " + at
|
|
}
|
|
})
|
|
.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], "*")
|
|
}
|
|
})
|
|
return true
|
|
}
|
|
function udg(user, acct_id) {
|
|
reset()
|
|
if (!user) {
|
|
user = localStorage.getItem("user-id_" + acct_id)
|
|
}
|
|
todo("User Data Loading...")
|
|
var domain = localStorage.getItem("domain_" + acct_id)
|
|
if (localStorage.getItem("mode_" + domain) == "misskey") {
|
|
misskeyUdg(user, acct_id)
|
|
return
|
|
}
|
|
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
|
var start = "https://" + domain + "/api/v1/accounts/" + user
|
|
fetch(start, {
|
|
method: "GET",
|
|
headers: {
|
|
"content-type": "application/json",
|
|
Authorization: "Bearer " + at
|
|
}
|
|
})
|
|
.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
|
|
}
|
|
utlShow(json.id, "", acct_id)
|
|
flw(json.id, "", acct_id)
|
|
fer(json.id, "", acct_id)
|
|
var dis_name = escapeHTML(json.display_name)
|
|
dis_name = twemoji.parse(dis_name)
|
|
|
|
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>"
|
|
}
|
|
table = table + "</table>"
|
|
$("#his-des").html(twemoji.parse(note))
|
|
} else {
|
|
$("#his-des").css("max-height", "400px")
|
|
}
|
|
$("#his-table").html(twemoji.parse(table))
|
|
} else {
|
|
$("#his-des").css("max-height", "400px")
|
|
}
|
|
$("#his-des").html(twemoji.parse(note))
|
|
if (json.bot) {
|
|
$("#his-bot").html(lang.lang_showontl_botacct)
|
|
}
|
|
$("#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()
|
|
}
|
|
todc()
|
|
if(json.locked) {
|
|
$('#his-data').addClass('locked')
|
|
} else {
|
|
$('#his-data').removeClass('locked')
|
|
}
|
|
//外部データ取得(死かもしれないので)
|
|
udAdd(acct_id, user, json.url)
|
|
})
|
|
}
|
|
function misskeyUdg(user, acct_id) {
|
|
reset()
|
|
if (!user) {
|
|
user = localStorage.getItem("user-id_" + acct_id)
|
|
}
|
|
todo("User Data Loading...")
|
|
var domain = localStorage.getItem("domain_" + acct_id)
|
|
if (localStorage.getItem("mode_" + domain) != "misskey") {
|
|
udg(user, acct_id)
|
|
return
|
|
}
|
|
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
|
var start = "https://" + domain + "/api/users/show"
|
|
fetch(start, {
|
|
method: "POST",
|
|
headers: {
|
|
"content-type": "application/json"
|
|
},
|
|
body: JSON.stringify({
|
|
i: at,
|
|
userId: user
|
|
})
|
|
})
|
|
.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"))
|
|
}
|
|
$("#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
|
|
}
|
|
utlShow(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 = 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()
|
|
})
|
|
}
|
|
//一つ前のユーザーデータ表示
|
|
function historyShow() {
|
|
var acct_id = $("#his-data").attr("use-acct")
|
|
var user = $("#his-data").attr("history")
|
|
udg(user, acct_id, "true")
|
|
}
|
|
//選択アカウントのプロフ
|
|
function profShow() {
|
|
var acct_id = $("#post-acct-sel").val()
|
|
var user = localStorage.getItem("user-id_" + acct_id)
|
|
udg(user, acct_id)
|
|
hide()
|
|
}
|
|
|
|
//FF関係取得
|
|
function relations(user, acct_id) {
|
|
var domain = localStorage.getItem("domain_" + acct_id)
|
|
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
|
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) {
|
|
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.requested) {
|
|
//フォロリク中
|
|
$('#his-data').addClass('following')
|
|
$("#his-follow-btn-text").text(lang.lang_status_requesting)
|
|
}
|
|
if (json.following) {
|
|
//自分がフォローしている
|
|
$("#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.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()
|
|
}
|
|
})
|
|
}
|
|
function profbrws() {
|
|
var url = $("#his-openin").attr("data-href")
|
|
postMessage(["openUrl", url], "*")
|
|
}
|
|
function setMain() {
|
|
var acct_id = $("#his-data").attr("use-acct")
|
|
localStorage.setItem("main", acct_id)
|
|
multiSelector(true)
|
|
M.toast({ html: lang.lang_manager_mainAcct, displayLength: 3000 })
|
|
}
|
|
//オールリセット
|
|
function hisclose() {
|
|
$("#his-data").modal("close")
|
|
reset()
|
|
$("#his-data").attr("history", "")
|
|
localStorage.removeItem("history")
|
|
}
|
|
function reset() {
|
|
$(".his-var-content:eq(0)").show()
|
|
$(".his-var-content:gt(0)").hide()
|
|
$("#my-data-nav .btn").removeClass("disabled")
|
|
$(".active-back").removeClass("active-back")
|
|
$(".column-first").addClass("active-back")
|
|
$("#his-name").text("Loading")
|
|
$("#his-acct").text("")
|
|
$("#his-prof").attr("src", "../../img/loading.svg")
|
|
$("#his-data").css("background-image", "url(../../img/loading.svg)")
|
|
$("#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")
|
|
$("#his-end-btn").removeClass("endorsed")
|
|
$("#his-des").css("max-height", "250px")
|
|
$("#his-bot").html("")
|
|
$("#his-follow-btn").show()
|
|
$("#his-block-btn").show()
|
|
$("#his-mute-btn").show()
|
|
$("#his-notf-btn").show()
|
|
$("#his-domain-btn").show()
|
|
$("#his-emp-btn").show()
|
|
$("#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)
|
|
$("#his-notf-btn").text(lang.lang_showontl_notf + lang.lang_status_mute)
|
|
$("#his-domain-btn").text(lang.lang_showontl_domain + lang.lang_status_block)
|
|
$("#his-relation").text("")
|
|
$(".cont-series").html("")
|
|
$("#domainblock").val("")
|
|
$("#his-lists-a").html(lang.lang_showontl_listwarn)
|
|
$("#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("")
|
|
$("#his-endorse").html("")
|
|
$("#his-openin").attr("data-href", "")
|
|
$("#his-float-timeline").show()
|
|
$("#his-float-blocked").hide()
|
|
$("#his-main-acct").show()
|
|
$("#his-proof-prof").html("")
|
|
$('#his-data').removeClass('locked')
|
|
$('#his-data').removeClass('requesting')
|
|
}
|
|
$("#my-data-nav .anc-link").on("click", function() {
|
|
var target = $(this).attr("go")
|
|
if (target) {
|
|
$("#my-data-nav .anc-link").removeClass("active-back")
|
|
$(this).addClass("active-back")
|
|
$(target).show()
|
|
$(".his-var-content:not(" + target + ")").hide()
|
|
}
|
|
})
|