thedesk/app/js/tl/list.js

286 lines
8.5 KiB
JavaScript
Raw Permalink Normal View History

2019-05-19 17:39:30 +10:00
function listMenu() {
$("#left-menu div").removeClass("active");
$("#listMenu").addClass("active");
$(".menu-content").addClass("hide");
2019-05-19 17:39:30 +10:00
$("#list-box").removeClass("hide");
$('ul.tabs').tabs('select_tab', 'src-sta');
$("#src-contents").html("");
2018-07-28 07:25:12 +10:00
}
2018-04-01 07:00:27 +10:00
2019-05-19 17:39:30 +10:00
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") {
2019-04-08 01:14:06 +10:00
var start = "https://" + domain + "/api/users/lists/list"
fetch(start, {
method: 'POST',
body: JSON.stringify({
2019-05-19 17:39:30 +10:00
i: at
2019-04-08 01:14:06 +10:00
}),
2019-05-19 17:39:30 +10:00
}).then(function (response) {
2019-04-08 01:14:06 +10:00
return response.json();
2019-05-19 17:39:30 +10:00
}).catch(function (error) {
2019-04-08 01:14:06 +10:00
todo(error);
console.error(error);
2019-05-19 17:39:30 +10:00
}).then(function (json) {
2019-04-08 01:14:06 +10:00
if (json) {
var lists = "";
2019-05-19 17:39:30 +10:00
Object.keys(json).forEach(function (key) {
2019-04-08 01:14:06 +10:00
var list = json[key];
2019-05-19 17:39:30 +10:00
lists = lists + escapeHTML(list.title) + ':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id +
'\')" class="pointer">' + lang.lang_list_show + '</a><br>';
2019-04-08 01:14:06 +10:00
});
$("#lists").html(lists);
2019-05-19 17:39:30 +10:00
} else {
2019-04-08 01:14:06 +10:00
$("#lists").html(lang.lang_list_nodata);
}
});
2019-05-19 17:39:30 +10:00
} else {
2019-04-08 01:14:06 +10:00
var start = "https://" + domain + "/api/v1/lists"
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
2019-05-19 17:39:30 +10:00
}).then(function (response) {
2019-04-08 01:14:06 +10:00
return response.json();
2019-05-19 17:39:30 +10:00
}).catch(function (error) {
2019-04-08 01:14:06 +10:00
todo(error);
console.error(error);
2019-05-19 17:39:30 +10:00
}).then(function (json) {
2019-04-08 01:14:06 +10:00
if (json) {
var lists = "";
2019-05-19 17:39:30 +10:00
Object.keys(json).forEach(function (key) {
2019-04-08 01:14:06 +10:00
var list = json[key];
2019-05-19 17:39:30 +10:00
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>';
2019-04-08 01:14:06 +10:00
});
$("#lists").html(lists);
2019-05-19 17:39:30 +10:00
} else {
2019-04-08 01:14:06 +10:00
$("#lists").html(lang.lang_list_nodata);
}
});
}
2018-04-01 07:00:27 +10:00
}
2019-05-19 17:39:30 +10:00
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;
list();
$("#list-add").val("")
}
2018-04-17 03:10:35 +10:00
}
2019-05-19 17:39:30 +10:00
} 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;
list();
$("#list-add").val("")
}
2019-04-08 01:14:06 +10:00
}
}
}
2019-05-19 17:39:30 +10:00
function listShow(id, title, acct_id) {
localStorage.setItem("list_" + id + "_" + acct_id, title);
tl('list', id, acct_id, 'add');
2018-04-01 07:00:27 +10:00
}
2019-05-19 17:39:30 +10:00
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"
2018-04-01 07:00:27 +10:00
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
2019-05-19 17:39:30 +10:00
}).then(function (response) {
2018-04-01 07:00:27 +10:00
return response.json();
2019-05-19 17:39:30 +10:00
}).catch(function (error) {
2018-04-01 07:00:27 +10:00
todo(error);
console.error(error);
2019-05-19 17:39:30 +10:00
}).then(function (json) {
2018-04-01 07:00:27 +10:00
if (json) {
var lists = "";
2019-05-19 17:39:30 +10:00
var templete = userparse(json, '', acct_id);
if (!json[0]) {
templete = lang.lang_list_nouser;
}
2018-04-01 07:00:27 +10:00
$("#lists-user").html(templete);
2019-08-31 01:10:24 +10:00
jQuery("time.timeago").timeago();
2019-05-19 17:39:30 +10:00
} else {
$("#lists-user").html(lang.lang_list_nouser);
}
2018-04-01 07:00:27 +10:00
});
}
2019-05-19 17:39:30 +10:00
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) {
return response.json();
}).catch(function (error) {
todo(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) {
return response.json();
}).catch(function (error) {
todo(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"
2019-04-08 01:14:06 +10:00
fetch(start, {
method: 'POST',
body: JSON.stringify({
2019-05-19 17:39:30 +10:00
i: at
2019-04-08 01:14:06 +10:00
}),
2019-05-19 17:39:30 +10:00
}).then(function (response) {
2019-04-08 01:14:06 +10:00
return response.json();
2019-05-19 17:39:30 +10:00
}).catch(function (error) {
2019-04-08 01:14:06 +10:00
todo(error);
console.error(error);
2019-05-19 17:39:30 +10:00
}).then(function (json) {
2019-04-08 01:14:06 +10:00
if (json) {
var lists = "";
2019-05-19 17:39:30 +10:00
Object.keys(json).forEach(function (key) {
2019-04-08 01:14:06 +10:00
var list = json[key];
2019-05-19 17:39:30 +10:00
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>';
2019-04-08 01:14:06 +10:00
});
$("#his-lists-a").html(lists);
2019-05-19 17:39:30 +10:00
} else {
2019-04-08 01:14:06 +10:00
$("#his-lists-a").html(lang.lang_list_nodata);
}
});
$("#his-lists-b").html("");
2019-05-19 17:39:30 +10:00
}
2019-04-08 01:14:06 +10:00
}
2019-05-19 17:39:30 +10:00
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") {
2019-04-08 01:14:06 +10:00
var start = "https://" + domain + "/api/users/lists/push"
2019-05-19 17:39:30 +10:00
var i = {
i: at,
listId: id,
userId: user
2019-04-08 01:14:06 +10:00
}
2019-05-19 17:39:30 +10:00
} else {
var start = "https://" + domain + "/api/v1/lists/" + id + "/accounts"
var i = {
2019-04-08 01:14:06 +10:00
account_ids: [user]
}
}
2018-04-17 03:10:35 +10:00
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
2019-03-08 05:19:26 +11:00
httpreq.responseType = "json";
2019-04-08 01:14:06 +10:00
httpreq.send(JSON.stringify(i));
2019-05-19 17:39:30 +10:00
httpreq.onreadystatechange = function () {
2019-03-08 05:19:26 +11:00
if (httpreq.readyState === 4) {
2018-04-17 03:10:35 +10:00
var json = httpreq.response;
2019-05-19 17:39:30 +10:00
hisList(user, acct_id)
2018-04-17 03:10:35 +10:00
}
}
2018-04-01 07:00:27 +10:00
}
2019-05-19 17:39:30 +10:00
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") {
2019-04-08 01:14:06 +10:00
var start = "https://" + domain + "/api/users/lists/push"
2019-05-19 17:39:30 +10:00
var method = 'POST'
var i = {
i: at,
listId: id,
userId: user
2019-04-08 01:14:06 +10:00
}
2019-05-19 17:39:30 +10:00
} else {
var start = "https://" + domain + "/api/v1/lists/" + id + "/accounts"
var method = 'DELETE'
var i = {
2019-04-08 01:14:06 +10:00
account_ids: [user]
}
}
2018-04-17 03:10:35 +10:00
var httpreq = new XMLHttpRequest();
2019-04-08 01:14:06 +10:00
httpreq.open(method, start, true);
2018-04-17 03:10:35 +10:00
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
2019-03-08 05:19:26 +11:00
httpreq.responseType = "json";
2019-04-08 01:14:06 +10:00
httpreq.send(JSON.stringify(i));
2019-05-19 17:39:30 +10:00
httpreq.onreadystatechange = function () {
2019-03-08 05:19:26 +11:00
if (httpreq.readyState === 4) {
2018-04-17 03:10:35 +10:00
var json = httpreq.response;
2019-05-19 17:39:30 +10:00
hisList(user, acct_id)
2018-04-17 03:10:35 +10:00
}
}
2018-04-01 07:00:27 +10:00
}