385 lines
9.9 KiB
JavaScript
385 lines
9.9 KiB
JavaScript
function listMenu() {
|
|
$('#left-menu a').removeClass('active')
|
|
$('#listMenu').addClass('active')
|
|
$('.menu-content').addClass('hide')
|
|
$('#list-box').removeClass('hide')
|
|
$('ul.tabs').tabs('select_tab', 'src-sta')
|
|
$('#src-contents').html('')
|
|
}
|
|
|
|
function list() {
|
|
$('#lists-user').html('')
|
|
var acct_id = $('#list-acct-sel').val()
|
|
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/lists/list'
|
|
fetch(start, {
|
|
method: 'POST',
|
|
body: JSON.stringify({
|
|
i: 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) {
|
|
var lists = ''
|
|
Object.keys(json).forEach(function(key) {
|
|
var list = json[key]
|
|
lists =
|
|
lists +
|
|
escapeHTML(list.title) +
|
|
`:<a onclick="listShow('${list.id}','${escapeHTML(
|
|
list.title
|
|
)}','${acct_id}')" class="pointer">
|
|
${lang.lang_list_show}
|
|
</a><br>`
|
|
})
|
|
$('#lists').html(lists)
|
|
} else {
|
|
$('#lists').html(lang.lang_list_nodata)
|
|
}
|
|
})
|
|
} else {
|
|
var start = 'https://' + domain + '/api/v1/lists'
|
|
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) {
|
|
var lists = ''
|
|
Object.keys(json).forEach(function(key) {
|
|
var list = json[key]
|
|
lists =
|
|
lists +
|
|
escapeHTML(list.title) +
|
|
`:<a onclick="listShow('${list.id}','${escapeHTML(
|
|
list.title
|
|
)}','${acct_id}')" class="pointer">
|
|
${lang.lang_list_show}
|
|
</a>/
|
|
<a onclick="listUser('${list.id}','${acct_id}')" class="pointer">
|
|
${lang.lang_list_users}
|
|
'</a><br>`
|
|
})
|
|
$('#lists').html(lists)
|
|
} else {
|
|
$('#lists').html(lang.lang_list_nodata)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
function makeNewList() {
|
|
var acct_id = $('#list-acct-sel').val()
|
|
var text = $('#list-add').val()
|
|
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/v1/lists'
|
|
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({
|
|
title: text
|
|
})
|
|
)
|
|
httpreq.onreadystatechange = function() {
|
|
if (httpreq.readyState === 4) {
|
|
var json = httpreq.response
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, this.response)
|
|
}
|
|
list()
|
|
$('#list-add').val('')
|
|
}
|
|
}
|
|
} else {
|
|
var start = 'https://' + domain + '/api/users/lists/create'
|
|
var httpreq = new XMLHttpRequest()
|
|
httpreq.open('POST', start, true)
|
|
httpreq.setRequestHeader('Content-Type', 'application/json')
|
|
httpreq.responseType = 'json'
|
|
httpreq.send(
|
|
JSON.stringify({
|
|
i: at,
|
|
title: text
|
|
})
|
|
)
|
|
httpreq.onreadystatechange = function() {
|
|
if (httpreq.readyState === 4) {
|
|
var json = httpreq.response
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, this.response)
|
|
}
|
|
list()
|
|
$('#list-add').val('')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function listShow(id, title, acct_id) {
|
|
localStorage.setItem('list_' + id + '_' + acct_id, title)
|
|
tl('list', id, acct_id, 'add')
|
|
}
|
|
function listUser(id, acct_id) {
|
|
var domain = localStorage.getItem('domain_' + acct_id)
|
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
|
var start = 'https://' + domain + '/api/v1/lists/' + id + '/accounts'
|
|
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) {
|
|
var lists = ''
|
|
var templete = userparse(json, '', acct_id)
|
|
if (!json[0]) {
|
|
templete = lang.lang_list_nouser
|
|
}
|
|
$('#lists-user').html(templete)
|
|
jQuery('time.timeago').timeago()
|
|
} else {
|
|
$('#lists-user').html(lang.lang_list_nouser)
|
|
}
|
|
})
|
|
}
|
|
function hisList(user, 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/v1/lists'
|
|
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) {
|
|
var lists = lang.lang_list_add + '<br>'
|
|
Object.keys(json).forEach(function(key) {
|
|
var list = json[key]
|
|
lists =
|
|
lists +
|
|
`<a onclick="listAdd('${list.id}','${user}','${acct_id}')" class="pointer">
|
|
${escapeHTML(list.title)}
|
|
</a><br> `
|
|
})
|
|
$('#his-lists-a').html(lists)
|
|
} else {
|
|
$('#his-lists-a').html(lang.lang_list_nodata)
|
|
}
|
|
})
|
|
var start = 'https://' + domain + '/api/v1/accounts/' + user + '/lists'
|
|
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) {
|
|
var lists = lang.lang_list_remove + '<br>'
|
|
Object.keys(json).forEach(function(key) {
|
|
var list = json[key]
|
|
lists =
|
|
lists +
|
|
`<a onclick="listRemove('${list.id}','${user}','${acct_id}')" class="pointer">
|
|
${escapeHTML(list.title)}
|
|
</a><br> `
|
|
})
|
|
$('#his-lists-b').html(lists)
|
|
} else {
|
|
$('#his-lists-b').html(lang.lang_list_nodata)
|
|
}
|
|
})
|
|
} else {
|
|
var start = 'https://' + domain + '/api/users/lists/list'
|
|
fetch(start, {
|
|
method: 'POST',
|
|
body: JSON.stringify({
|
|
i: 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) {
|
|
var lists = ''
|
|
Object.keys(json).forEach(function(key) {
|
|
var list = json[key]
|
|
lists =
|
|
lists +
|
|
list.title +
|
|
`:<a onclick="listShow('${list.id}','${escapeHTML(
|
|
list.title
|
|
)}','${acct_id}')" class="pointer">
|
|
${lang.lang_list_show}
|
|
</a>/
|
|
<a onclick="listAdd('${list.id}','${user}','${acct_id}')" class="pointer">
|
|
${lang.lang_list_add}
|
|
${lang.lang_list_add_misskey}
|
|
'</a><br>`
|
|
})
|
|
$('#his-lists-a').html(lists)
|
|
} else {
|
|
$('#his-lists-a').html(lang.lang_list_nodata)
|
|
}
|
|
})
|
|
$('#his-lists-b').html('')
|
|
}
|
|
}
|
|
function listAdd(id, user, 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/users/lists/push'
|
|
var i = {
|
|
i: at,
|
|
listId: id,
|
|
userId: user
|
|
}
|
|
} else {
|
|
var start = 'https://' + domain + '/api/v1/lists/' + id + '/accounts'
|
|
var i = {
|
|
account_ids: [user]
|
|
}
|
|
}
|
|
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(i))
|
|
httpreq.onreadystatechange = function() {
|
|
if (httpreq.readyState === 4) {
|
|
var json = httpreq.response
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, this.response)
|
|
}
|
|
hisList(user, acct_id)
|
|
}
|
|
}
|
|
}
|
|
function listRemove(id, user, 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/users/lists/push'
|
|
var method = 'POST'
|
|
var i = {
|
|
i: at,
|
|
listId: id,
|
|
userId: user
|
|
}
|
|
} else {
|
|
var start = 'https://' + domain + '/api/v1/lists/' + id + '/accounts'
|
|
var method = 'DELETE'
|
|
var i = {
|
|
account_ids: [user]
|
|
}
|
|
}
|
|
var httpreq = new XMLHttpRequest()
|
|
httpreq.open(method, start, true)
|
|
httpreq.setRequestHeader('Content-Type', 'application/json')
|
|
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
|
httpreq.responseType = 'json'
|
|
httpreq.send(JSON.stringify(i))
|
|
httpreq.onreadystatechange = function() {
|
|
if (httpreq.readyState === 4) {
|
|
var json = httpreq.response
|
|
if (this.status !== 200) {
|
|
setLog(start, this.status, this.response)
|
|
}
|
|
hisList(user, acct_id)
|
|
}
|
|
}
|
|
}
|