Add list on misskey

This commit is contained in:
Cutls
2019-04-08 00:14:06 +09:00
parent 50bfbbd755
commit f1c4276d06
8 changed files with 270 additions and 60 deletions

View File

@@ -12,40 +12,68 @@ 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");
var start = "https://" + domain + "/api/v1/lists"
console.log(start)
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 = "";
Object.keys(json).forEach(function(key) {
var list = json[key];
lists = lists + list.title+':<a onclick="listShow(' + list.id + ',\'' + 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);
}
});
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) {
return response.json();
}).catch(function(error) {
todo(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 + '\',\'' + list.title + '\',\'' + acct_id +
'\')" class="pointer">'+lang.lang_list_show+'</a>';
});
$("#lists").html(lists);
}else{
$("#lists").html(lang.lang_list_nodata);
}
});
}else{
var start = "https://" + domain + "/api/v1/lists"
console.log(start)
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 = "";
Object.keys(json).forEach(function(key) {
var list = json[key];
lists = lists + list.title+':<a onclick="listShow(\'' + list.id + '\',\'' + 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';
});
$("#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");
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)!="misskey"){
var start = "https://" + domain + "/api/v1/lists"
console.log(start)
var httpreq = new XMLHttpRequest();
@@ -63,6 +91,25 @@ function makeNewList(){
$("#list-add").val("")
}
}
}else{
var start = "https://" + domain + "/users/lists/create"
console.log(start)
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("")
}
}
}
}
function listShow(id,title,acct_id){
localStorage.setItem("list_"+id+"_"+acct_id,title);
@@ -70,8 +117,8 @@ function listShow(id,title,acct_id){
}
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"
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
console.log(start)
fetch(start, {
method: 'GET',
@@ -99,7 +146,8 @@ function listUser(id,acct_id){
}
function hisList(user,acct_id){
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)!="misskey"){
var start = "https://" + domain + "/api/v1/lists"
console.log(start)
fetch(start, {
@@ -118,7 +166,7 @@ function hisList(user,acct_id){
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 +
lists = lists + '<a onclick="listAdd(\'' + list.id + '\',\'' + user + '\',\'' + acct_id +
'\')" class="pointer">'+escapeHTML(list.title)+'</a><br> ';
});
$("#his-lists-a").html(lists);
@@ -144,28 +192,65 @@ function hisList(user,acct_id){
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 +
lists = lists + '<a onclick="listRemove(\'' + list.id + '\',\'' + user + '\',\'' + acct_id +
'\')" class="pointer">'+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) {
return response.json();
}).catch(function(error) {
todo(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 + '\',\'' + list.title + '\',\'' + acct_id +
'\')" class="pointer">'+lang.lang_list_show+'</a>';
});
$("#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");
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
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]
}
}
console.log(start)
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({
account_ids: [user]
}));
httpreq.send(JSON.stringify(i));
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response;
@@ -176,16 +261,28 @@ function listAdd(id,user,acct_id){
function listRemove(id,user,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"
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]
}
}
console.log(start)
var httpreq = new XMLHttpRequest();
httpreq.open('DELETE', start, true);
httpreq.open(method, start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
account_ids: [user]
}));
httpreq.send(JSON.stringify(i));
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response;

View File

@@ -164,6 +164,7 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
localStorage.setItem("now", type);
if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey=true;
console.log(type);
if (type == "home") {
var start = "wss://" + domain +
"/?i=" + at;
@@ -183,12 +184,12 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
var start = "wss://" + domain +
"/hybrid-timeline?i=" + at;
} else if (type == "tag") {
Materialize.toast(lang_misskeyparse_tagnostr[lang], 1000);
Materialize.toast(lang.lang_misskeyparse_tagnostr, 3000);
} else if (type == "noauth") {
var start = "wss://" + acct_id +
"/local-timeline?i=" + at;
} else if (type=="list"){
Materialize.toast(lang_misskeyparse_listnostr[lang], 1000);
Materialize.toast(lang.lang_misskeyparse_listnostr, 3000);
}
}else{
var misskey=false;
@@ -463,6 +464,115 @@ function moreload(type, tlid) {
});
}
}
//TL差分取得
function tlDiff(type, data, acct_id, tlid, delc, voice, mode) {
console.log("sabun")
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
var acct_id = obj[tlid].domain;
if (!type) {
var type = obj[tlid].type;
}else{
var data;
}
if(type=="tag"){
var data=obj[tlid].data;
var tag = localStorage.getItem("tag-range");
if(tag=="local"){
data=data+"&local=true";
}
}else if(type=="list"){
var data=obj[tlid].data;
}
var sid = $("#timeline_" + tlid + " .cvo").first().attr("unique-id");
if (sid && !moreloading) {
if (type == "mix" && localStorage.getItem("mode_" + localStorage.getItem("domain_" + acct_id))!="misskey") {
return;
}else if (type == "plus" && localStorage.getItem("mode_" + localStorage.getItem("domain_" + acct_id))!="misskey") {
return;
}else if (type == "notf") {
return;
}
moreloading=true;
localStorage.setItem("now", type);
todo(cap(type) + " TL MoreLoading");
if(type!="noauth"){
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var hdr={
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
};
var domain = localStorage.getItem("domain_" + acct_id);
}else{
var hdr={
'content-type': 'application/json'
};
domain=acct_id;
}
if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey=true;
hdr={
'content-type': 'application/json'
};
var url=misskeycom(type, data);
var start = "https://" + domain + "/api/notes/"+url;
var method="POST";
var req={};
if(type!="noauth"){
req.i=at;
}
if(type=="local-media"||type=="pub-media"){
req.mediaOnly=true;
}
if(type=="tag"){
req.tag=data;
}
if(type=="list"){
req.listId=data;
}
req.sinceId=sid;
req.limit=20;
var i={
method: method,
headers: hdr,
body: JSON.stringify(req),
}
}else{
var misskey=false;
var start = "https://" + domain + "/api/v1/timelines/" + com(type,data) +
"since_id=" + sid;
if(type=="dm"){
var start = "https://" + domain + "/api/v1/conversations?" +
"since_id=" + sid;
}
var method="GET";
var i={
method: method,
headers: hdr
};
}
fetch(start, i).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
if(misskey){
var templete = misskeyParse(json, '', acct_id, tlid,"",mute);
}else{
var templete = parse(json, '', acct_id, tlid,"",mute, type);
}
$("#timeline_" + tlid).prepend(templete);
additional(acct_id, tlid);
jQuery("time.timeago").timeago();
moreloading=false;
todc();
});
}
}
//WebSocket切断
function tlCloser() {