'use strict' //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) $('#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 acct_id = $('#post-acct-sel').val() var id = $('#reply').val() 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 + `