thedesk/app/js/tl/datails.js

667 lines
17 KiB
JavaScript
Raw Permalink Normal View History

2019-11-25 00:26:19 +11:00
'use strict'
2018-01-28 23:22:43 +11:00
//トゥートの詳細
2019-03-16 21:06:03 +11:00
function details(id, acct_id, tlid, mode) {
2019-11-09 00:52:54 +11:00
if (mode == 'dm') {
$('.dm-hide').hide()
2019-05-19 17:39:30 +10:00
} else {
2019-11-09 00:52:54 +11:00
$('.dm-hide').show()
2019-03-16 21:06:03 +11:00
}
2019-11-09 00:52:54 +11:00
$('.toot-reset').html('<span class="no-data">' + lang.lang_details_nodata + '</span>')
var html = $('#timeline_' + tlid + ' [toot-id=' + id + ']').html()
$('#toot-this').html(html)
$('#tootmodal').modal('open')
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/show'
2019-05-19 17:39:30 +10:00
var i = {
2019-11-09 00:52:54 +11:00
method: 'POST',
2018-07-30 21:03:49 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json'
2018-07-30 21:03:49 +10:00
},
2019-05-19 17:39:30 +10:00
body: JSON.stringify({
i: at,
noteId: id
2018-07-30 21:03:49 +10:00
})
2019-11-09 00:52:54 +11:00
}
2019-05-19 17:39:30 +10:00
} else {
2019-11-09 00:52:54 +11:00
var start = 'https://' + domain + '/api/v1/statuses/' + id
2019-05-19 17:39:30 +10:00
var i = {
2019-11-09 00:52:54 +11:00
method: 'GET',
2018-07-30 21:03:49 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json',
Authorization: 'Bearer ' + at
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
}
2018-07-30 21:03:49 +10:00
}
2019-05-19 17:39:30 +10:00
2019-11-04 03:10:06 +11:00
fetch(start, i)
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
2019-11-09 00:52:54 +11:00
console.log(['Toot data:', json])
if (!$('#timeline_' + tlid + ' #pub_' + id).length) {
var html = parse([json], '', acct_id)
$('#toot-this').html(html)
jQuery('time.timeago').timeago()
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
if (localStorage.getItem('mode_' + domain) == 'misskey') {
var url = 'https://' + domain + '/notes/' + json.id
var scn = json.user.username
2019-11-04 03:10:06 +11:00
if (!json.user.host) {
2019-11-09 00:52:54 +11:00
var local = true
2019-11-04 03:10:06 +11:00
} else {
2019-11-09 00:52:54 +11:00
var local = false
scn = scn + '@' + host
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
var rep = ''
var uid = json.user.id
2019-11-04 03:10:06 +11:00
if (json._replyIds) {
2019-11-09 00:52:54 +11:00
replyTL(json._replyIds[0], acct_id)
2019-11-04 03:10:06 +11:00
}
2019-05-19 17:39:30 +10:00
} else {
2019-11-09 00:52:54 +11:00
var url = json.url
2019-11-04 03:10:06 +11:00
if (json.account.acct == json.account.username) {
2019-11-09 00:52:54 +11:00
var local = true
2019-11-04 03:10:06 +11:00
} else {
2019-11-09 00:52:54 +11:00
var local = false
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
var scn = json.account.acct
var uid = json.account.id
if (json['in_reply_to_id']) {
replyTL(json['in_reply_to_id'], acct_id)
2019-11-04 03:10:06 +11:00
}
2018-07-30 21:03:49 +10:00
}
2019-11-09 00:52:54 +11:00
$('#toot-this .fav_ct').text(json.favourites_count)
$('#toot-this .rt_ct').text(json.reblogs_count)
$('#tootmodal').attr('data-url', url)
$('#tootmodal').attr('data-id', json.id)
$('#tootmodal').attr('data-acct', acct_id)
2019-11-04 03:10:06 +11:00
if (local) {
2019-11-09 00:52:54 +11:00
$('#tootmodal').attr('data-user', scn + '@' + domain)
2019-11-04 03:10:06 +11:00
} else {
2019-11-09 00:52:54 +11:00
$('#tootmodal').attr('data-user', scn)
2018-07-30 21:03:49 +10:00
}
2019-11-09 00:52:54 +11:00
getContext(id, acct_id)
var dom = null
2019-11-04 03:10:06 +11:00
if (!local) {
2019-11-09 00:52:54 +11:00
dom = scn.replace(/.+@/g, '')
2019-05-19 17:39:30 +10:00
} else {
2019-11-09 00:52:54 +11:00
dom = domain
2018-07-30 21:03:49 +10:00
}
2019-11-09 00:52:54 +11:00
beforeToot(id, acct_id, dom)
userToot(id, acct_id, uid)
afterToot(id, acct_id, dom)
afterUserToot(id, acct_id, uid)
afterFTLToot(id, acct_id, dom)
faved(id, acct_id)
rted(id, acct_id)
if ($('#toot-this div').hasClass('cvo')) {
$('#toot-this').removeClass('cvo')
2019-11-04 03:10:06 +11:00
} else {
2019-11-09 00:52:54 +11:00
if (!$('#toot-this .cvo').hasClass('cvo')) {
$('#toot-this').addClass('cvo')
2019-11-04 03:10:06 +11:00
}
2018-07-30 21:03:49 +10:00
}
2019-11-09 00:52:54 +11:00
if (!$('#activator').hasClass('active')) {
$('#det-col').collapsible('open', 4)
2019-07-13 01:01:09 +10:00
}
2019-11-09 00:52:54 +11:00
})
2018-01-28 23:22:43 +11:00
}
//返信タイムライン
function replyTL(id, acct_id) {
2019-11-09 00:52:54 +11:00
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/show'
2019-05-19 17:39:30 +10:00
var i = {
2019-11-09 00:52:54 +11:00
method: 'POST',
2018-07-30 21:03:49 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json'
2018-07-30 21:03:49 +10:00
},
2019-05-19 17:39:30 +10:00
body: JSON.stringify({
i: at,
noteId: id
2018-07-30 21:03:49 +10:00
})
2019-11-09 00:52:54 +11:00
}
2019-05-19 17:39:30 +10:00
} else {
2019-11-09 00:52:54 +11:00
return false
2018-07-30 21:03:49 +10:00
}
2019-11-04 03:10:06 +11:00
fetch(start, i)
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2018-07-30 21:03:49 +10:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
2019-11-09 04:05:15 +11:00
var mute = getFilterTypeByAcct(acct_id, 'thread')
2019-11-09 00:52:54 +11:00
if (localStorage.getItem('mode_' + domain) == 'misskey') {
var templete = misskeyParse([json], '', acct_id, '', '', mute)
$('#toot-after').prepend(templete)
$('#toot-after .hide').html(lang.lang_details_filtered)
$('#toot-after .by_filter').css('display', 'block')
$('#toot-after .by_filter').removeClass('hide')
var rep = '_replyIds'
2019-11-04 03:10:06 +11:00
if (json[rep]) {
2019-11-09 00:52:54 +11:00
replyTL(json[rep][0], acct_id)
2019-11-04 03:10:06 +11:00
}
}
2019-11-09 00:52:54 +11:00
})
2018-01-28 23:22:43 +11:00
}
//コンテクストってなんですか
2019-07-29 02:09:12 +10:00
function getContext(id, acct_id) {
2019-11-09 00:52:54 +11:00
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/conversation'
2019-05-19 17:39:30 +10:00
var i = {
2019-11-09 00:52:54 +11:00
method: 'POST',
2018-07-30 21:03:49 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json'
2018-07-30 21:03:49 +10:00
},
2019-05-19 17:39:30 +10:00
body: JSON.stringify({
i: at,
noteId: id
2018-07-30 21:03:49 +10:00
})
2019-11-09 00:52:54 +11:00
}
2019-05-19 17:39:30 +10:00
} else {
2019-11-09 00:52:54 +11:00
var start = 'https://' + domain + '/api/v1/statuses/' + id + '/context'
2019-05-19 17:39:30 +10:00
var i = {
2019-11-09 00:52:54 +11:00
method: 'GET',
2018-07-30 21:03:49 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json',
Authorization: 'Bearer ' + at
2018-07-30 21:03:49 +10:00
}
2019-11-09 00:52:54 +11:00
}
2019-11-04 03:10:06 +11:00
}
fetch(start, i)
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-03-16 21:06:03 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
2019-11-09 00:52:54 +11:00
if (localStorage.getItem('mode_' + domain) == 'misskey') {
json.reverse()
var templete = misskeyParse(json, '', acct_id, '', '', [])
$('#toot-reply').html(templete)
$('#toot-reply .hide').html(lang.lang_details_filtered)
$('#toot-reply .by_filter').css('display', 'block')
$('#toot-reply .by_filter').removeClass('hide')
jQuery('time.timeago').timeago()
2019-11-04 03:10:06 +11:00
} else {
2019-11-09 04:05:15 +11:00
var mute = getFilterTypeByAcct(acct_id, 'thread')
2019-11-09 00:52:54 +11:00
var templete = parse(json.descendants, '', acct_id, '', '', mute)
if (templete != '') {
$('#toot-after .no-data').hide()
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
$('#toot-after').html(templete)
$('#toot-after .hide').html(lang.lang_details_filtered)
$('#toot-after .by_filter').css('display', 'block')
$('#toot-after .by_filter').removeClass('hide')
var templete = parse(json.ancestors, '', acct_id, '', '', mute)
if (templete != '') {
$('#toot-reply .no-data').hide()
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
$('#toot-reply').prepend(templete)
$('#toot-reply .hide').html(lang.lang_details_filtered)
$('#toot-reply .by_filter').css('display', 'block')
$('#toot-reply .by_filter').removeClass('hide')
jQuery('time.timeago').timeago()
2019-07-13 01:01:09 +10:00
}
2019-11-09 00:52:54 +11:00
})
2018-01-28 23:22:43 +11:00
}
//前のトゥート(Back TL)
2018-05-20 16:17:10 +10:00
function beforeToot(id, acct_id, domain) {
//var domain = localStorage.getItem("domain_" + acct_id);
2019-11-09 00:52:54 +11:00
var at = localStorage.getItem('acct_' + acct_id + '_at')
if (localStorage.getItem('mode_' + domain) == 'misskey') {
var start = 'https://' + domain + '/api/notes/local-timeline'
2018-07-30 21:03:49 +10:00
fetch(start, {
2019-11-09 00:52:54 +11:00
method: 'POST',
2018-07-30 21:03:49 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json'
2018-07-30 21:03:49 +10:00
},
2019-05-19 17:39:30 +10:00
body: JSON.stringify({
i: at,
untilID: id
2018-07-30 21:03:49 +10:00
})
2019-11-04 03:10:06 +11:00
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
2019-11-09 00:52:54 +11:00
var templete = misskeyParse(json, 'noauth', acct_id)
$('#toot-before').html(templete)
jQuery('time.timeago').timeago()
})
2019-05-19 17:39:30 +10:00
} else {
2019-11-09 00:52:54 +11:00
var start = 'https://' + domain + '/api/v1/timelines/public?local=true&max_id=' + id
2018-07-30 21:03:49 +10:00
fetch(start, {
2019-11-09 00:52:54 +11:00
method: 'GET',
2018-07-30 21:03:49 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json'
2019-03-16 21:06:03 +11:00
}
2019-11-04 03:10:06 +11:00
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
2019-11-09 00:52:54 +11:00
var templete = parse(json, 'noauth', acct_id)
if (templete != '') {
$('#toot-before .no-data').hide()
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
$('#toot-before').html(templete)
jQuery('time.timeago').timeago()
})
2018-07-30 21:03:49 +10:00
}
2018-01-28 23:22:43 +11:00
}
2018-05-02 14:14:03 +10:00
//前のユーザーのトゥート
function userToot(id, acct_id, user) {
2019-11-09 00:52:54 +11:00
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/users/notes'
2018-07-30 21:03:49 +10:00
fetch(start, {
2019-11-09 00:52:54 +11:00
method: 'POST',
2018-07-30 21:03:49 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json'
2018-07-30 21:03:49 +10:00
},
2019-05-19 17:39:30 +10:00
body: JSON.stringify({
i: at,
untilID: id,
userId: user
2018-07-30 21:03:49 +10:00
})
2019-11-04 03:10:06 +11:00
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
2019-11-09 00:52:54 +11:00
var templete = misskeyParse(json, 'noauth', acct_id)
$('#user-before').html(templete)
jQuery('time.timeago').timeago()
})
2019-05-19 17:39:30 +10:00
} else {
2019-11-09 00:52:54 +11:00
var start = 'https://' + domain + '/api/v1/accounts/' + user + '/statuses?max_id=' + id
2018-07-30 21:03:49 +10:00
fetch(start, {
2019-11-09 00:52:54 +11:00
method: 'GET',
2018-07-30 21:03:49 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json',
Authorization: 'Bearer ' + at
2019-03-16 21:06:03 +11:00
}
2019-11-04 03:10:06 +11:00
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
2019-11-09 00:52:54 +11:00
var templete = parse(json, '', acct_id)
if (templete != '') {
$('#user-before .no-data').hide()
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
$('#user-before').html(templete)
jQuery('time.timeago').timeago()
})
2018-07-30 21:03:49 +10:00
}
2018-05-02 14:14:03 +10:00
}
2019-05-06 20:10:03 +10:00
//後のLTL
function afterToot(id, acct_id, domain) {
//var domain = localStorage.getItem("domain_" + acct_id);
2019-11-09 00:52:54 +11:00
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/timelines/public?local=true&min_id=' + id
2019-05-19 17:39:30 +10:00
fetch(start, {
2019-11-09 00:52:54 +11:00
method: 'GET',
2019-05-19 17:39:30 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json'
2019-05-19 17:39:30 +10:00
}
2019-11-04 03:10:06 +11:00
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
2019-11-09 00:52:54 +11:00
var templete = parse(json, 'noauth', acct_id)
if (templete != '') {
$('#ltl-after .no-data').hide()
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
$('#ltl-after').html(templete)
jQuery('time.timeago').timeago()
})
2019-05-06 20:10:03 +10:00
}
//後のUTL
function afterUserToot(id, acct_id, user) {
2019-11-09 00:52:54 +11:00
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/accounts/' + user + '/statuses?min_id=' + id
2019-05-19 17:39:30 +10:00
fetch(start, {
2019-11-09 00:52:54 +11:00
method: 'GET',
2019-05-19 17:39:30 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json',
Authorization: 'Bearer ' + at
2019-10-31 02:30:26 +11:00
}
2019-11-04 03:10:06 +11:00
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
2019-11-09 00:52:54 +11:00
var templete = parse(json, '', acct_id)
if (templete != '') {
$('#user-after .no-data').hide()
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
$('#user-after').html(templete)
jQuery('time.timeago').timeago()
})
2019-05-06 20:10:03 +10:00
}
//後のFTL
function afterFTLToot(id, acct_id, domain) {
//var domain = localStorage.getItem("domain_" + acct_id);
2019-11-09 00:52:54 +11:00
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/timelines/public?min_id=' + id
2019-05-19 17:39:30 +10:00
fetch(start, {
2019-11-09 00:52:54 +11:00
method: 'GET',
2019-05-19 17:39:30 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json'
2019-05-19 17:39:30 +10:00
}
2019-11-04 03:10:06 +11:00
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
2019-11-09 00:52:54 +11:00
var templete = parse(json, 'noauth', acct_id)
if (templete != '') {
$('#ftl-after .no-data').hide()
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
$('#ftl-after').html(templete)
jQuery('time.timeago').timeago()
})
2019-05-06 20:10:03 +10:00
}
2018-01-28 23:22:43 +11:00
//ふぁぼ一覧
function faved(id, acct_id) {
2019-11-09 00:52:54 +11:00
var domain = localStorage.getItem('domain_' + acct_id)
if (localStorage.getItem('mode_' + domain) == 'misskey') {
return false
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/statuses/' + id + '/favourited_by'
2018-01-28 23:22:43 +11:00
fetch(start, {
2019-11-09 00:52:54 +11:00
method: 'GET',
2018-01-28 23:22:43 +11:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json',
Authorization: 'Bearer ' + at
2019-03-16 21:06:03 +11:00
}
2019-11-04 03:10:06 +11:00
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
2019-11-09 00:52:54 +11:00
var templete = userparse(json, '', acct_id)
if (templete != '') {
$('#toot-fav .no-data').hide()
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
$('#toot-fav').html(templete)
jQuery('time.timeago').timeago()
})
2018-01-28 23:22:43 +11:00
}
//ブースト一覧
function rted(id, acct_id) {
2019-11-09 00:52:54 +11:00
var domain = localStorage.getItem('domain_' + acct_id)
if (localStorage.getItem('mode_' + domain) == 'misskey') {
return false
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/statuses/' + id + '/reblogged_by'
2018-01-28 23:22:43 +11:00
fetch(start, {
2019-11-09 00:52:54 +11:00
method: 'GET',
2018-01-28 23:22:43 +11:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json',
Authorization: 'Bearer ' + at
2019-10-31 02:30:26 +11:00
}
2019-11-04 03:10:06 +11:00
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
2019-11-09 00:52:54 +11:00
var templete = userparse(json, '', acct_id)
$('#toot-rt').html(templete)
jQuery('time.timeago').timeago()
})
2018-01-28 23:22:43 +11:00
}
2018-02-18 03:44:03 +11:00
//URL等のコピー
2019-05-19 17:39:30 +10:00
function cbCopy(mode) {
2019-11-09 00:52:54 +11:00
var url = $('#tootmodal').attr('data-url')
var urls = url.match(/https?:\/\/([-.a-zA-Z0-9]+)/)
var domain = urls[1]
if (mode == 'emb') {
var emb =
`<iframe src="${url}/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"></iframe>
<script src="https://${domain}/embed.js" async="async"></script>`
execCopy(emb)
M.toast({ html: lang.lang_details_embed, displayLength: 1500 })
2019-05-19 17:39:30 +10:00
} else {
if (execCopy(url)) {
2019-11-09 00:52:54 +11:00
M.toast({ html: lang.lang_details_url, displayLength: 1500 })
2018-02-25 19:41:34 +11:00
}
2018-02-18 03:44:03 +11:00
}
2018-03-11 01:22:59 +11:00
}
2018-03-27 13:39:35 +11:00
//本文のコピー
2019-05-19 17:39:30 +10:00
function staCopy(id) {
2019-11-09 00:52:54 +11:00
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')
console.log('Copy it:\n' + html)
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, '$1')
html = $.strip_tags(html)
2019-05-19 17:39:30 +10:00
if (execCopy(html)) {
2019-11-09 00:52:54 +11:00
M.toast({ html: lang.lang_details_txt, displayLength: 1500 })
2018-03-27 13:39:35 +11:00
}
}
2018-03-31 13:39:06 +11:00
//翻訳
2019-11-18 03:08:25 +11:00
function trans(tar, to, elem) {
var html = elem.parents('.cvo').find('.toot').html()
2019-05-19 17:39:30 +10:00
if (html.match(/^<p>(.+)<\/p>$/)) {
2019-11-09 00:52:54 +11:00
html = html.match(/^<p>(.+)<\/p>$/)[1]
2018-03-31 13:39:06 +11:00
}
2019-11-09 00:52:54 +11:00
html = html.replace(/<br\s?\/?>/g, '\n')
html = html.replace(/<p>/g, '\n')
html = html.replace(/<\/p>/g, '\n')
html = $.strip_tags(html)
if (~tar.indexOf('zh')) {
tar = 'zh'
2019-03-08 05:19:26 +11:00
}
2019-11-09 00:52:54 +11:00
$('#toot-this .additional').text('Loading...(Powered by Google Translate)')
var exec =
'https://script.google.com/macros/s/AKfycbxhwW5tjjop9Irg-y1zr_WsXlCKEzwWG6KuoOt_vVRDfEbRv0c/exec?format=json&text=' +
encodeURIComponent(html) +
'&source=' +
tar +
'&target=' +
to
console.log('Try to translate from ' + tar + ' to ' + to + ' at ' + exec)
2018-03-31 13:39:06 +11:00
fetch(exec, {
2019-11-09 00:52:54 +11:00
method: 'GET'
2019-11-04 03:10:06 +11:00
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(text) {
2019-11-18 03:08:25 +11:00
elem.parents('.cvo').find('.toot').append('<span class="gray translate">' + text.text + '</span>')
2019-11-09 00:52:54 +11:00
})
2018-04-07 14:31:09 +10:00
}
//ブラウザで開く
2019-05-19 17:39:30 +10:00
function brws() {
2019-11-09 00:52:54 +11:00
var url = $('#tootmodal').attr('data-url')
postMessage(['openUrl', url], '*')
2018-04-07 14:31:09 +10:00
}
//外部からトゥート開く
2019-05-19 17:39:30 +10:00
function detEx(url, acct_id) {
2019-11-09 00:52:54 +11:00
if (acct_id == 'main') {
acct_id = localStorage.getItem('main')
2018-05-20 16:17:10 +10:00
}
2019-11-09 00:52:54 +11:00
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
2019-11-18 03:08:25 +11:00
var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + encodeURIComponent(url)
2018-04-07 14:31:09 +10:00
fetch(start, {
2019-11-09 00:52:54 +11:00
method: 'GET',
2018-04-07 14:31:09 +10:00
headers: {
2019-11-09 00:52:54 +11:00
'content-type': 'application/json',
Authorization: 'Bearer ' + at
2019-10-31 02:30:26 +11:00
}
2019-11-04 03:10:06 +11:00
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
2019-11-09 00:52:54 +11:00
setLog(response.url, response.status, text)
})
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
return response.json()
2019-11-04 03:10:06 +11:00
})
.catch(function(error) {
2019-11-09 00:52:54 +11:00
todo(error)
setLog(start, 'JSON', error)
console.error(error)
2019-11-04 03:10:06 +11:00
})
.then(function(json) {
if (!json.statuses) {
2019-11-09 00:52:54 +11:00
postMessage(['openUrl', url], '*')
2019-11-04 03:10:06 +11:00
} else {
2019-11-09 00:52:54 +11:00
var id = json.statuses[0].id
$('.loadp').text($('.loadp').attr('href'))
$('.loadp').removeClass('loadp')
details(id, acct_id, 0)
2019-11-04 03:10:06 +11:00
}
2019-11-09 00:52:54 +11:00
})
return
2019-11-04 03:10:06 +11:00
}