thedesk/app/js/post/misskeystatus.js
2020-07-05 19:45:21 +09:00

279 lines
8.3 KiB
JavaScript

//Renpost
function renote(id, acct_id, remote) {
if ($('#pub_' + id).hasClass('rted')) {
return false
}
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/notes/create'
if (localStorage.getItem('mode_' + domain) != 'misskey') {
return false
}
var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
httpreq.responseType = 'json'
httpreq.send(JSON.stringify({ i: at, renoteId: id }))
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
setLog(start, this.status, json)
}
console.log(['Success: renote', json])
$('[toot-id=' + id + ']').addClass('rted')
$('.rt_' + id).toggleClass('teal-text')
}
}
}
//Renote
function renoteqt(id, acct_id) {
localStorage.setItem('nohide', true)
show()
$('#reply').val('renote_' + id)
$('#rec').text('Renote')
$('#post-acct-sel').val(acct_id)
$('#post-acct-sel').prop('disabled', true)
//$('select').formSelect()
$('#textarea').attr('placeholder', lang.lang_misskeyparse_qt)
$('#textarea').focus()
}
//Reply
function misskeyreply(id, acct_id) {
localStorage.setItem('nohide', true)
show()
$('#reply').val(id)
$('#rec').text('Renote')
$('#post-acct-sel').val(acct_id)
$('#post-acct-sel').prop('disabled', true)
//$('select').formSelect()
$('#textarea').attr('placeholder', lang.lang_misskeyparse_qt)
$('#textarea').focus()
}
//Reaction
function reactiontoggle(id, acct_id, tlid) {
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/notes/show'
if (localStorage.getItem('mode_' + domain) != 'misskey') {
return false
}
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 }))
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
setLog(start, this.status, json)
}
console.log(['Success: reaction', json])
if (json.reactions) {
var reactions = [
'like',
'love',
'laugh',
'hmm',
'surprise',
'congrats',
'angry',
'confused',
'pudding',
'rip'
]
for (var i = 0; i < reactions.length; i++) {
if (json.reactions[reactions[i]]) {
$('#pub_' + id + ' .re-' + reactions[i] + 'ct').text(json.reactions[reactions[i]])
$('#pub_' + id + ' .re-' + reactions[i]).removeClass('hide')
} else {
$('#pub_' + id + ' .re-' + reactions[i] + 'ct').text(0)
if ($('#pub_' + id + ' .reactions').hasClass('fullreact')) {
$('#pub_' + id + ' .re-' + reactions[i]).addClass('hide')
} else {
$('#pub_' + id + ' .re-' + reactions[i]).removeClass('hide')
}
$('#pub_' + id + ' .re-' + reactions[i] + 'ct').text(json.reactions[reactions[i]])
}
}
$('#pub_' + id + ' .reactions').removeClass('hide')
$('#pub_' + id + ' .reactions').toggleClass('fullreact')
} else {
if ($('#pub_' + id + ' .reactions').hasClass('fullreact')) {
$('#pub_' + id + ' .reactions').addClass('hide')
$('#pub_' + id + ' .reactions').removeClass('fullreact')
} else {
$('#pub_' + id + ' .reactions').removeClass('hide')
$('#pub_' + id + ' .reaction').removeClass('hide')
$('#pub_' + id + ' .reactions').addClass('fullreact')
}
}
}
}
$('#pub_' + id + ' .freeReact').toggleClass('hide')
}
//reactioncustom
function reactioncustom(acct_id, id) {
$('#reply').val(id)
$('#media').val('misskey')
$('#unreact').hide()
$('#addreact').removeClass('hide')
$('#post-acct-sel').val(acct_id)
//$('select').formSelect()
localStorage.setItem('nohide', true)
show()
emojiToggle(true)
$('#left-side').hide()
$('#default-emoji').hide()
}
function reactRefresh(acct_id, id) {
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/notes/show'
var req = {}
req.i = at
req.noteId = id
var i = {
method: 'POST',
body: JSON.stringify(req)
}
fetch(start, i)
.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) {
return false
}
var poll = ''
if (json.error) {
$('[toot-id=' + id + ']').hide()
$('[toot-id=' + id + ']').remove()
} else {
reactRefreshCore(json)
}
})
}
function reactRefreshCore(json) {
var id = json.id
if (json.reactions) {
$('#pub_' + id + ' .reactions').removeClass('hide')
var regExp = new RegExp(':', 'g')
Object.keys(json.reactions).forEach(function(keye) {
keyeClass = keye.replace(regExp, '')
if (json.reactions[keye]) {
$('#pub_' + id + ' .re-' + keyeClass + 'ct').text(json.reactions[keye])
$('#pub_' + id + ' .re-' + keyeClass).removeClass('hide')
} else {
$('#pub_' + id + ' .re-' + keyeClass + 'ct').text(0)
if ($('#pub_' + id + ' .reactions').hasClass('fullreact')) {
$('#pub_' + id + ' .re-' + keyeClass).addClass('hide')
}
$('#pub_' + id + ' .re-' + keyeClass + 'ct').text(json.reactions[keye])
}
})
}
}
function emojiReaction(emoji) {
var media = $('#media').val()
var acct_id = $('#post-acct-sel').val()
var id = $('#reply').val()
if(media == 'announcement') {
announReaction(id, acct_id, 0, false, emoji)
} else {
reaction(emoji, id, acct_id, null)
}
clear()
hide()
}
function reaction(mode, id, acct_id, tlid) {
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
if ($('.fav_' + id).hasClass('yellow-text')) {
var flag = 'delete'
} else {
var flag = 'create'
}
var start = 'https://' + domain + '/api/notes/reactions/' + flag
if (localStorage.getItem('mode_' + domain) != 'misskey') {
return false
}
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, reaction: mode }))
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
if (this.status !== 200) {
setLog(start, this.status, this.response)
}
$('.fav_' + id).toggleClass('yellow-text')
}
}
}
//Vote
function vote(acct_id, id, to) {
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/notes/polls/vote'
if (localStorage.getItem('mode_' + domain) != 'misskey') {
return false
}
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, choice: to }))
httpreq.onreadystatechange = function() {
voterefresh(acct_id, id)
}
}
function voterefresh(acct_id, id) {
var httpreqd = new XMLHttpRequest()
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/notes/show'
httpreqd.open('POST', start, true)
httpreqd.setRequestHeader('Content-Type', 'application/json')
httpreqd.responseType = 'json'
httpreqd.send(JSON.stringify({ i: at, noteId: id }))
httpreqd.onreadystatechange = function() {
if (httpreqd.readyState == 4) {
var json = httpreqd.response
if (this.status !== 200) {
setLog(start, this.status, json)
}
if (!json) {
return false
}
var poll = ''
if (json.poll) {
var choices = json.poll.choices
Object.keys(choices).forEach(function(keyc) {
var choice = choices[keyc]
if (choice.isVoted) {
var myvote = twemoji.parse('✅')
} else {
var myvote = ''
}
poll = poll + `<div class="pointer vote" onclick="vote('${acct_id}','${json.id}',"${choice.id}')">${escapeHTML(choice.text)}(${choice.votes})${myvote})</div>`
})
$('.vote_' + json.id).html(poll)
}
}
}
}