715 lines
21 KiB
JavaScript
715 lines
21 KiB
JavaScript
//お気に入り登録やブースト等、フォローやブロック等
|
|
//お気に入り登録
|
|
function fav(id, acct_id, remote) {
|
|
if ($(`.cvo[unique-id=${id}]`).hasClass('faved')) {
|
|
var flag = 'unfavourite'
|
|
} else {
|
|
var flag = 'favourite'
|
|
}
|
|
var domain = localStorage.getItem('domain_' + acct_id)
|
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
|
var start = 'https://' + domain + '/api/v1/statuses/' + id + '/' + flag
|
|
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 (this.status !== 200) {
|
|
setLog(start, this.status, json)
|
|
}
|
|
if (json.reblog) {
|
|
json = json.reblog
|
|
}
|
|
if (remote != 'remote') {
|
|
//APIのふぁぼカウントがおかしい
|
|
if ($('[unique-id=' + id + '] .fav_ct').text() == json.favourites_count) {
|
|
if (flag == 'unfavourite') {
|
|
var fav = json.favourites_count - 1
|
|
if (fav * 1 < 0) {
|
|
fav = 0
|
|
}
|
|
} else {
|
|
var fav = json.favourites_count
|
|
//var fav = json.favourites_count;
|
|
}
|
|
} else {
|
|
var fav = json.favourites_count
|
|
}
|
|
$('[unique-id=' + id + '] .fav_ct').text(fav)
|
|
$('[unique-id=' + id + '] .rt_ct').text(json.reblogs_count)
|
|
if ($('[unique-id=' + id + ']').hasClass('faved')) {
|
|
$('[unique-id=' + id + ']').removeClass('faved')
|
|
$('.fav_' + id).removeClass('yellow-text')
|
|
} else {
|
|
$('[unique-id=' + id + ']').addClass('faved')
|
|
$('.fav_' + id).addClass('yellow-text')
|
|
}
|
|
} else {
|
|
M.toast({ html: lang.lang_status_favWarn, displayLength: 1000 })
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//ブースト
|
|
function rt(id, acct_id, remote, vis) {
|
|
if ($(`.cvo[toot-id=${id}]`).hasClass('rted')) {
|
|
var flag = 'unreblog'
|
|
} else {
|
|
var flag = 'reblog'
|
|
}
|
|
var domain = localStorage.getItem('domain_' + acct_id)
|
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
|
var start = 'https://' + domain + '/api/v1/statuses/' + id + '/' + flag
|
|
var httpreq = new XMLHttpRequest()
|
|
httpreq.open('POST', start, true)
|
|
httpreq.setRequestHeader('Content-Type', 'application/json')
|
|
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
|
httpreq.responseType = 'json'
|
|
if (vis) {
|
|
httpreq.send(JSON.stringify({ visibility: vis }))
|
|
} else {
|
|
httpreq.send()
|
|
}
|
|
httpreq.onreadystatechange = function() {
|
|
if (httpreq.readyState === 4) {
|
|
var json = httpreq.response
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, json)
|
|
}
|
|
if (json.reblog) {
|
|
json = json.reblog
|
|
}
|
|
console.log(['Success: boost', json])
|
|
$('[toot-id=' + id + '] .fav_ct').text(json.favourites_count)
|
|
if (!json.reblog) {
|
|
if (flag == 'unreblog') {
|
|
var rt = json.reblogs_count - 1
|
|
if (rt * 1 < 0) {
|
|
rt = 0
|
|
}
|
|
} else {
|
|
var rt = json.reblogs_count
|
|
}
|
|
$('[toot-id=' + id + '] .rt_ct').text(rt)
|
|
} else {
|
|
$('[toot-id=' + id + '] .rt_ct').text(json.reblogs_count)
|
|
}
|
|
|
|
if ($('[toot-id=' + id + ']').hasClass('rted')) {
|
|
$('[toot-id=' + id + ']').removeClass('rted')
|
|
$('.rt_' + id).removeClass('light-blue-text')
|
|
} else {
|
|
$('[toot-id=' + id + ']').addClass('rted')
|
|
$('.rt_' + id).addClass('light-blue-text')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function boostWith(vis) {
|
|
var id = $('#tootmodal').attr('data-id')
|
|
var acct_id = $('#tootmodal').attr('data-acct')
|
|
rt(id, acct_id, false, vis)
|
|
}
|
|
//ブックマーク
|
|
function bkm(id, acct_id, tlid) {
|
|
if ($(`.cvo[unique-id=${id}]`).hasClass('bkmed')) {
|
|
var flag = 'unbookmark'
|
|
} else {
|
|
var flag = 'bookmark'
|
|
}
|
|
var domain = localStorage.getItem('domain_' + acct_id)
|
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
|
var start = 'https://' + domain + '/api/v1/statuses/' + id + '/' + flag
|
|
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 (this.status !== 200) {
|
|
setLog(start, this.status, json)
|
|
}
|
|
if (json.reblog) {
|
|
json = json.reblog
|
|
}
|
|
var fav = json.favourites_count
|
|
$('[toot-id=' + id + '] .fav_ct').text(fav)
|
|
$('[toot-id=' + id + '] .rt_ct').text(json.reblogs_count)
|
|
if (flag == 'unbookmark') {
|
|
$('.bkmStr_' + id).text(lang.lang_parse_bookmark)
|
|
$('.bkm_' + id).removeClass('red-text')
|
|
$('[toot-id=' + id + ']').removeClass('bkmed')
|
|
} else {
|
|
$('.bkmStr_' + id).text(lang.lang_parse_unbookmark)
|
|
$('.bkm_' + id).addClass('red-text')
|
|
$('[toot-id=' + id + ']').addClass('bkmed')
|
|
}
|
|
var tlidTar = $(`.bookmark-timeline[data-acct=${acct_id}]`).attr('tlid')
|
|
columnReload(tlidTar, 'bookmark')
|
|
}
|
|
}
|
|
}
|
|
|
|
//フォロー
|
|
async function follow(acct_id, resolve) {
|
|
if($('#his-data').hasClass('locked')) {
|
|
locked = true
|
|
} else {
|
|
locked = false
|
|
}
|
|
if (!acct_id && acct_id != 'selector') {
|
|
var acct_id = $('#his-data').attr('use-acct')
|
|
|
|
} else if (acct_id == 'selector') {
|
|
var acct_id = $('#user-acct-sel').val()
|
|
}
|
|
if (!resolve && $('#his-data').hasClass('following')) {
|
|
var flag = 'unfollow'
|
|
var flagm = 'delete'
|
|
} else {
|
|
var flag = 'follow'
|
|
var flagm = 'create'
|
|
}
|
|
|
|
var id = $('#his-data').attr('user-id')
|
|
if (resolve == 'selector') {
|
|
var fullacct = $('#his-acct').attr('fullname')
|
|
var id = await acctResolve(acct_id, fullacct)
|
|
console.log(id)
|
|
}
|
|
var domain = localStorage.getItem('domain_' + acct_id)
|
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
|
var start = 'https://' + domain + '/api/v1/accounts/' + id + '/' + flag
|
|
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
|
var start = 'https://' + domain + '/api/following/' + flagm
|
|
var ent = { i: at, userId: id }
|
|
} else if (flag == 'follow') {
|
|
var ent = {}
|
|
}
|
|
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(JSON.stringify(ent))
|
|
httpreq.onreadystatechange = function() {
|
|
if (httpreq.readyState === 4) {
|
|
var json = httpreq.response
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, json)
|
|
}
|
|
console.log(['Success: folllow', json])
|
|
if ($('#his-data').hasClass('following')) {
|
|
$('#his-data').removeClass('following')
|
|
$('#his-follow-btn-text').text(lang.lang_status_follow)
|
|
} else {
|
|
$('#his-data').addClass('following')
|
|
if(locked) {
|
|
$('#his-follow-btn-text').text(lang.lang_status_requesting)
|
|
} else {
|
|
$('#his-follow-btn-text').text(lang.lang_status_unfollow)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
async function acctResolve(acct_id, user) {
|
|
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=' + user
|
|
let promise = await fetch(start, {
|
|
method: 'GET',
|
|
headers: {
|
|
'content-type': 'application/json',
|
|
Authorization: 'Bearer ' + at
|
|
}
|
|
})
|
|
var idJson = await promise.json()
|
|
if (idJson.accounts[0]) {
|
|
var id = idJson.accounts[0].id
|
|
} else {
|
|
M.toast({ html: lang.lang_fatalerroroccured, displayLength: 2000 })
|
|
}
|
|
return id
|
|
}
|
|
|
|
//ブロック
|
|
function block(acct_id) {
|
|
if ($('#his-data').hasClass('blocking')) {
|
|
var flag = 'unblock'
|
|
var txt = lang.lang_status_unmute
|
|
} else {
|
|
var flag = 'block'
|
|
var txt = lang.lang_status_block
|
|
}
|
|
Swal.fire({
|
|
title: txt,
|
|
text: '',
|
|
type: 'warning',
|
|
showCancelButton: true,
|
|
confirmButtonColor: '#3085d6',
|
|
cancelButtonColor: '#d33',
|
|
confirmButtonText: lang.lang_yesno,
|
|
cancelButtonText: lang.lang_no
|
|
}).then(result => {
|
|
if (result.value) {
|
|
if (!acct_id) {
|
|
var acct_id = $('#his-data').attr('use-acct')
|
|
}
|
|
var id = $('#his-data').attr('user-id')
|
|
var domain = localStorage.getItem('domain_' + acct_id)
|
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
|
var start = 'https://' + domain + '/api/v1/accounts/' + id + '/' + flag
|
|
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 (this.status !== 200) {
|
|
setLog(start, this.status, this.response)
|
|
}
|
|
if ($('#his-data').hasClass('blocking')) {
|
|
$('#his-data').removeClass('blocking')
|
|
$('#his-block-btn-text').text(lang.lang_status_block)
|
|
} else {
|
|
$('#his-data').addClass('blocking')
|
|
$('#his-block-btn-text').text(lang.lang_status_unblock)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
//ミュート
|
|
function muteDo(acct_id) {
|
|
if ($('#his-data').hasClass('muting')) {
|
|
var flag = 'unmute'
|
|
var flagm = 'delete'
|
|
var txt = lang.lang_status_unmute
|
|
} else {
|
|
var flag = 'mute'
|
|
var flagm = 'create'
|
|
var txt = lang.lang_status_mute
|
|
}
|
|
Swal.fire({
|
|
title: txt,
|
|
text: '',
|
|
type: 'warning',
|
|
showCancelButton: true,
|
|
confirmButtonColor: '#3085d6',
|
|
cancelButtonColor: '#d33',
|
|
confirmButtonText: lang.lang_yesno,
|
|
cancelButtonText: lang.lang_no
|
|
}).then(result => {
|
|
if (result.value) {
|
|
if (!acct_id) {
|
|
var acct_id = $('#his-data').attr('use-acct')
|
|
}
|
|
var id = $('#his-data').attr('user-id')
|
|
var domain = localStorage.getItem('domain_' + acct_id)
|
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
|
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
|
var start = 'https://' + domain + '/api/mute/' + flagm
|
|
var ent = { i: at, userId: id }
|
|
var rq = JSON.stringify(ent)
|
|
} else {
|
|
var start = 'https://' + domain + '/api/v1/accounts/' + id + '/' + flag
|
|
var rq = ''
|
|
}
|
|
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(rq)
|
|
httpreq.onreadystatechange = function() {
|
|
if (httpreq.readyState === 4) {
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, this.response)
|
|
}
|
|
if ($('#his-data').hasClass('muting')) {
|
|
$('#his-data').removeClass('muting')
|
|
$('#his-mute-btn-text').text(lang.lang_status_mute)
|
|
} else {
|
|
$('#his-data').addClass('muting')
|
|
$('#his-mute-btn-text').text(lang.lang_status_unmute)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
//投稿削除
|
|
function del(id, acct_id) {
|
|
var domain = localStorage.getItem('domain_' + acct_id)
|
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
|
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
|
var start = 'https://' + domain + '/api/notes/delete'
|
|
var httpreq = new XMLHttpRequest()
|
|
httpreq.open('POST', start, true)
|
|
httpreq.setRequestHeader('Content-Type', 'application/json')
|
|
httpreq.responseType = 'json'
|
|
httpreq.send(JSON.stringify({ i: at, noteId: id }))
|
|
$('[toot-id=' + id + ']').hide()
|
|
$('[toot-id=' + id + ']').remove()
|
|
} else {
|
|
var start = 'https://' + domain + '/api/v1/statuses/' + id
|
|
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) {
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, this.response)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//redraft
|
|
function redraft(id, acct_id) {
|
|
Swal.fire({
|
|
title: lang.lang_status_redraftTitle,
|
|
text: lang.lang_status_redraft,
|
|
type: 'warning',
|
|
showCancelButton: true,
|
|
confirmButtonColor: '#3085d6',
|
|
cancelButtonColor: '#d33',
|
|
confirmButtonText: lang.lang_yesno,
|
|
cancelButtonText: lang.lang_no
|
|
}).then(result => {
|
|
if (result.value) {
|
|
show()
|
|
var domain = localStorage.getItem('domain_' + acct_id)
|
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
|
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
|
var start = 'https://' + domain + '/api/notes/delete'
|
|
var httpreq = new XMLHttpRequest()
|
|
httpreq.open('POST', start, true)
|
|
httpreq.setRequestHeader('Content-Type', 'application/json')
|
|
httpreq.responseType = 'json'
|
|
httpreq.send(JSON.stringify({ i: at, noteId: id }))
|
|
$('[toot-id=' + id + ']').hide()
|
|
$('[toot-id=' + id + ']').remove()
|
|
} else {
|
|
var start = 'https://' + domain + '/api/v1/statuses/' + id
|
|
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) {
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, this.response)
|
|
}
|
|
var json = httpreq.response
|
|
$('#post-acct-sel').prop('disabled', true)
|
|
$('#post-acct-sel').val(acct_id)
|
|
//$('select').formSelect()
|
|
mdCheck()
|
|
var medias = $('[toot-id=' + id + ']').attr('data-medias')
|
|
var mediack = json.media_attachments[0]
|
|
//メディアがあれば
|
|
var media_ids = []
|
|
if (mediack) {
|
|
for (var i = 0; i <= 4; i++) {
|
|
if (json.media_attachments[i]) {
|
|
media_ids.push(json.media_attachments[i].id)
|
|
$('#preview').append(
|
|
'<img src="' +
|
|
json.media_attachments[i].preview_url +
|
|
'" style="width:50px; max-height:100px;">'
|
|
)
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
}
|
|
var vismode = $('[toot-id=' + id + '] .vis-data').attr('data-vis')
|
|
vis(vismode)
|
|
var medias = media_ids.join(',');
|
|
$('#media').val(medias)
|
|
localStorage.setItem('nohide', true)
|
|
show()
|
|
if (json.text) {
|
|
var html = json.text
|
|
} else {
|
|
var html = $('[toot-id=' + id + '] .toot').html()
|
|
html = html.replace(/^<p>(.+)<\/p>$/, '$1')
|
|
html = html.replace(/<br\s?\/?>/, '\n')
|
|
html = html.replace(/<p>/, '\n')
|
|
html = html.replace(/<\/p>/, '\n')
|
|
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, '$1')
|
|
html = $.strip_tags(html)
|
|
}
|
|
$('#textarea').val(html)
|
|
if (json.spoiler_text) {
|
|
cw()
|
|
$('#cw-text').val(json.spoiler_text)
|
|
}
|
|
if (json.sensitive) {
|
|
$('#nsfw').addClass('yellow-text')
|
|
$('#nsfw').html('visibility')
|
|
$('#nsfw').addClass('nsfw-avail')
|
|
}
|
|
if (json.in_reply_to_id) {
|
|
$('#reply').val(json.in_reply_to_id)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
//ピン留め
|
|
function pin(id, acct_id) {
|
|
if ($(`.cvo[unique-id=${id}]`).hasClass('pined')) {
|
|
var flag = 'unpin'
|
|
} else {
|
|
var flag = 'pin'
|
|
}
|
|
var domain = localStorage.getItem('domain_' + acct_id)
|
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
|
var start = 'https://' + domain + '/api/v1/statuses/' + id + '/' + flag
|
|
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 (this.status !== 200) {
|
|
setLog(start, this.status, this.response)
|
|
}
|
|
console.log(['Success: pinned', json])
|
|
if (flag == 'unpin') {
|
|
$('[toot-id=' + id + ']').removeClass('pined')
|
|
$('.pin_' + id).removeClass('blue-text')
|
|
$('.pinStr_' + id).text(lang.lang_parse_pin)
|
|
} else {
|
|
$('[toot-id=' + id + ']').addClass('pined')
|
|
$('.pin_' + id).addClass('blue-text')
|
|
$('.pinStr_' + id).text(lang.lang_parse_unpin)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//フォロリク
|
|
function request(id, flag, acct_id) {
|
|
var domain = localStorage.getItem('domain_' + acct_id)
|
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
|
var start = 'https://' + domain + '/api/v1/follow_requests/' + id + '/' + flag
|
|
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 (this.status !== 200) {
|
|
setLog(start, this.status, this.response)
|
|
}
|
|
console.log(['Success: request', 'type:' + flag, json])
|
|
showReq()
|
|
}
|
|
}
|
|
}
|
|
|
|
//ドメインブロック(未実装)
|
|
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('acct_' + acct_id + '_at')
|
|
var start = 'https://' + domain + '/api/v1/domain_blocks'
|
|
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 (this.status !== 200) {
|
|
setLog(start, this.status, this.response)
|
|
}
|
|
console.log(['Success: domain block', json])
|
|
showDom()
|
|
}
|
|
}
|
|
}
|
|
|
|
function addDomainblock() {
|
|
var domain = $('#domainblock').val()
|
|
domainblock(domain, 'POST')
|
|
}
|
|
//ユーザー強調
|
|
function empUser() {
|
|
var usr = localStorage.getItem('user_emp')
|
|
var obj = JSON.parse(usr)
|
|
var id = $('#his-acct').attr('fullname')
|
|
if (!obj) {
|
|
var obj = []
|
|
obj.push(id)
|
|
M.toast({ html: id + lang.lang_status_emphas, displayLength: 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)
|
|
M.toast({ html: id + lang.lang_status_unemphas, displayLength: 4000 })
|
|
}
|
|
})
|
|
}
|
|
var json = JSON.stringify(obj)
|
|
localStorage.setItem('user_emp', json)
|
|
}
|
|
//Endorse
|
|
function pinUser() {
|
|
var id = $('#his-data').attr('user-id')
|
|
var acct_id = $('#his-data').attr('use-acct')
|
|
if ($('#his-end-btn').hasClass('endorsed')) {
|
|
var flag = 'unpin'
|
|
} else {
|
|
var flag = 'pin'
|
|
}
|
|
var domain = localStorage.getItem('domain_' + acct_id)
|
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
|
var start = 'https://' + domain + '/api/v1/accounts/' + id + '/' + flag
|
|
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 (this.status !== 200) {
|
|
setLog(start, this.status, this.response)
|
|
}
|
|
if ($('#his-end-btn').hasClass('endorsed')) {
|
|
$('#his-end-btn').removeClass('endorsed')
|
|
$('#his-end-btn').text(lang.lang_status_endorse)
|
|
} else {
|
|
$('#his-end-btn').addClass('endorsed')
|
|
$('#his-end-btn').text(lang.lang_status_unendorse)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//URLコピー
|
|
function tootUriCopy(url) {
|
|
execCopy(url)
|
|
M.toast({ html: lang.lang_details_url, displayLength: 1500 })
|
|
}
|
|
|
|
//他のアカウントで…
|
|
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('acct_' + acct_id + '_at')
|
|
var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + url
|
|
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.statuses) {
|
|
if (json.statuses[0]) {
|
|
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
|
|
}
|
|
function toggleAction(elem, height) {
|
|
var cont = elem.parents('.cvo').find('.contextMenu')
|
|
if (cont.hasClass('hide')) {
|
|
$('#contextWrap').removeClass('hide')
|
|
var left = elem.offset().left + 60
|
|
var top = elem.offset().top - height
|
|
if (top < 75) {
|
|
top = elem.offset().top + 45
|
|
cont.removeClass('bottom')
|
|
cont.addClass('top')
|
|
} else {
|
|
cont.removeClass('top')
|
|
cont.addClass('bottom')
|
|
}
|
|
if (elem.parents('.cvo').attr('id') == 'toot-this') {
|
|
console.log($('#toot-this').offset().top, elem.offset().top)
|
|
left = $('#toot-this').offset().left + elem.offset().left + 10
|
|
top = $('#toot-this').offset().top - $('#toot-this').height() - height + 25
|
|
}
|
|
cont.css('top', top + 'px')
|
|
cont.css('right', `calc(100vw - ${left}px)`)
|
|
cont.removeClass('hide')
|
|
elem
|
|
.parents('.cvo')
|
|
.find('.act-icon')
|
|
.text('expand_less')
|
|
} else {
|
|
$('#contextWrap').addClass('hide')
|
|
$('.contextMenu').addClass('hide')
|
|
$('.act-icon').text('expand_more')
|
|
}
|
|
}
|