thedesk/app/js/tl/list.js
2019-11-24 23:53:35 +09:00

386 lines
9.9 KiB
JavaScript

'use strict'
function listMenu() {
$('#left-menu div').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)
}
}
}