TheDesk Airi (ver.9)

This commit is contained in:
cutls
2018-03-27 11:39:35 +09:00
parent a84a1da29b
commit d3a8302e46
43 changed files with 2703 additions and 5621 deletions

View File

@@ -179,6 +179,19 @@ function cbCopy(mode){
}
}
//本文のコピー
function staCopy(id){
var html=$("[toot-id="+id+"] .toot").html();
html = html.match(/^<p>(.+)<\/p>$/)[1];
html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n");
html=$.strip_tags(html);
if(execCopy(html)){
Materialize.toast("トゥート本文をコピーしました", 1500);
}
}
//魚拓
function shot(){
var id=$("#tootmodal").attr("data-id");

View File

@@ -1,6 +1,6 @@
//Integrated TL
function mixtl(acct_id, tlid) {
var type = "mix";
function mixtl(acct_id, tlid, type) {
console.log(type);
localStorage.removeItem("morelock")
localStorage.setItem("now", type);
todo("Integrated TL Loading...(Local)");
@@ -39,21 +39,30 @@ function mixtl(acct_id, tlid) {
if(date(a.created_at,"unix")>date(b.created_at,"unix")) return -1;
if(date(a.created_at,"unix")<date(b.created_at,"unix")) return 1;
return 0;
});
timeline.splice(20);
});
if(type=="integrated"){
timeline.splice(20);
}
var templete="";
Object.keys(timeline).forEach(function(key) {
var pkey=key*1+1;
if(pkey<20){
if(pkey<timeline.length){
if(date(timeline[key].created_at,"unix")!=date(timeline[pkey].created_at,"unix")){
templete = templete+parse([timeline[key]], '', acct_id, tlid);
if(type=="integrated"){
templete = templete+parse([timeline[key]], '', acct_id, tlid);
}else if(type=="plus"){
if(timeline[key].account.acct==timeline[key].account.username){
templete = templete+parse([timeline[key]], '', acct_id, tlid);
}
}
}
}
});
$("#timeline_" + tlid).html(templete);
mixre(acct_id, tlid);
mixre(acct_id, tlid, type);
additional(acct_id, tlid);
jQuery("time.timeago").timeago();
todc();
@@ -63,11 +72,9 @@ function mixtl(acct_id, tlid) {
//Streamingに接続
function mixre(acct_id, tlid) {
function mixre(acct_id, tlid, TLtype) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem(domain + "_at");
var type = "mix";
localStorage.setItem("now", type);
var startHome = "wss://" + domain +
"/api/v1/streaming/?stream=user&access_token=" + at;
@@ -96,6 +103,7 @@ function mixre(acct_id, tlid) {
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
} else if (type == "update") {
var templete = parse([obj], '', acct_id, tlid);
if (!$("[toot-id="+obj.id+"]").length) {
var pool = localStorage.getItem("pool_" + tlid);
if (pool) {
pool = templete + pool;
@@ -107,7 +115,7 @@ function mixre(acct_id, tlid) {
additional(acct_id, tlid);
jQuery("time.timeago").timeago();
todc();
}
}}
}
websocketHome[wshid].onmessage = function(mess) {
console.log("Receive Streaming API:(Home)");
@@ -119,8 +127,16 @@ function mixre(acct_id, tlid) {
$("[toot-id=" + JSON.parse(mess.data).payload + "]").hide();
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
} else if (type == "update") {
var templete = parse([obj], '', acct_id, tlid);
if (obj.visibility != "public" || obj.account.acct != obj.account.username) {
if(TLtype=="integrated"){
var templete = parse([obj], '', acct_id, tlid);
}else if(TLtype=="plus"){
if(obj.account.acct==obj.account.username){
var templete = parse([obj], '', acct_id, tlid);
}else{
var templete="";
}
}
if (!$("[toot-id="+obj.id+"]").length) {
var pool = localStorage.getItem("pool_" + tlid);
if (pool) {
pool = templete + pool;
@@ -143,7 +159,7 @@ function mixre(acct_id, tlid) {
}
//ある程度のスクロールで発火
function mixmore(tlid) {
function mixmore(tlid,type) {
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
var acct_id = obj[tlid].domain;
@@ -192,7 +208,13 @@ function mixmore(tlid) {
var pkey=key*1+1;
if(pkey<20){
if(date(timeline[key].created_at,"unix")!=date(timeline[pkey].created_at,"unix")){
templete = templete+parse([timeline[key]], '', acct_id, tlid);
if(type=="integrated"){
templete = templete+parse([timeline[key]], '', acct_id, tlid);
}else if(type=="plus"){
if(timeline[key].account.acct==timeline[key].account.username){
templete = templete+parse([timeline[key]], '', acct_id, tlid);
}
}
}
}

View File

@@ -7,6 +7,11 @@ function parse(obj, mix, acct_id, tlid, popup) {
var ltr = localStorage.getItem("letters");
var gif = localStorage.getItem("gif");
var imh = localStorage.getItem("img-height");
//独自ロケール
var locale = localStorage.getItem("locale");
if(locale=="yes"){
var locale=false;
}
//クライアント強調
var emp = localStorage.getItem("client_emp");
if(emp){
@@ -73,32 +78,47 @@ function parse(obj, mix, acct_id, tlid, popup) {
if(!wordmute){
var wordmute=[];
}
//認証なしTL
if(mix=="noauth"){
var noauth="hide";
}else{
var noauth="";
}
var local = [];
var times=[];
Object.keys(obj).forEach(function(key) {
var toot = obj[key];
if (mix == "notf") {
if (toot.type == "mention") {
var what = "返信しました";
var what = "返信しました";
} else if (toot.type == "reblog") {
var what = "ブーストしました";
var what = "ブーストしました";
if(localStorage.getItem("domain_" + acct_id)=="imastodon.net" && !locale){
what = ":「わかるわ」";
}else if(localStorage.getItem("domain_" + acct_id)=="mstdn.osaka" && !locale){
what = "がしばきました";
}
} else if (toot.type == "favourite") {
var what = "お気に入り登録しました";
var what = "お気に入り登録しました";
if(localStorage.getItem("domain_" + acct_id)=="imastodon.net" && !locale){
what = "の頭にティンときたようです";
}else if(localStorage.getItem("domain_" + acct_id)=="mstdn.osaka" && !locale){
what = "がええやんと言いました";
}
}
var noticetext = '<span class="cbadge"title="' + date(toot.created_at,
'absolute') + '(通知された時間)"><i class="fa fa-clock-o"></i>' + date(toot.created_at,
datetype) +
'</span><a onclick="udg(\'' + toot.account.id +
'\',\'' + acct_id + '\')" class="pointer">' + toot.account.display_name +
'\',\'' + acct_id + '\')" class="pointer">' + escapeHTML(toot.account.display_name) +
"(" + toot.account.acct +
")</a>" + what;
")</a>" + what;
var notice = noticetext;
var memory = localStorage.getItem("notice-mem");
if (popup >= 0 && obj.length < 5 && noticetext != memory) {
var domain = localStorage.getItem("domain_" + acct_id);
if(popup>0){
Materialize.toast("["+domain+"より]"+toot.account.display_name+"が"+what, popup * 1000);
Materialize.toast("["+domain+"より]"+escapeHTML(toot.account.display_name)+what, popup * 1000);
}
$(".notf-icon_" + acct_id).addClass("red-text");
localStorage.setItem("notice-mem", noticetext);
@@ -107,8 +127,14 @@ function parse(obj, mix, acct_id, tlid, popup) {
var toot = toot.status;
}else{
if (toot.reblog) {
var notice = toot.account.display_name + "(" + toot.account.acct +
")がブースト<br>";
var rebtxt = "がブースト";
if(localStorage.getItem("domain_" + acct_id)=="imastodon.net" && !locale){
rebtxt = ":「わかるわ」";
}else if(localStorage.getItem("domain_" + acct_id)=="mstdn.osaka" && !locale){
rebtxt = "がしばいた";
}
var notice = escapeHTML(toot.account.display_name) + "(" + toot.account.acct +
")"+rebtxt+"<br>";
var boostback = "shared";
var toot = toot.reblog;
} else {
@@ -133,7 +159,7 @@ function parse(obj, mix, acct_id, tlid, popup) {
}
var id = toot.id;
if (mix == "home") {
var home = "Home TLより"
var home = ""
var divider = '<div class="divider"></div>';
} else {
var home = "";
@@ -212,43 +238,26 @@ function parse(obj, mix, acct_id, tlid, popup) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img src="' + emoji.url +
'" class="emoji-img">';
'" class="emoji-img" data-emoji="'+shortcode+'">';
var regExp = new RegExp(":" + shortcode + ":", "g");
content = content.replace(regExp, emoji_url);
spoil = spoil.replace(regExp, emoji_url);
});
}
var dis_name=escapeHTML(toot.account.display_name);
//デフォ絵文字
var defemo=content.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);
if(defemo && defemo[0]){
defemo = defemo.filter(function (x, i, self) {
return self.indexOf(x) === i;
});
Object.keys(defemo).forEach(function(key12) {
var demo=defemo[key12];
var regExp = new RegExp(demo, "g");
for(var i=0;i<map.length;i++){
var imap=map[i];
//console.log(regExp);
if (imap.emoji.match(regExp)) {
for(var l=0;l<defaultemojiList.length;l++){
var catlist=defaultemoji[defaultemojiList[l]];
for(var m=0;m<catlist.length;m++){
var imoji=catlist[m];
if(imoji.shortcode==imap.name){
content=content.replace(regExp,'<span style="width: 20px; height: 20px; display: inline-block; background-image: url(\'./img/sheet.png\'); background-size: 4900%; background-position: '+imoji["css"]+';"></span>');
break;
}
}
}
break;
}
}
});
content=emojione.unicodeToImage(content);
if(dis_name){
dis_name=emojione.unicodeToImage(dis_name);
}
if(spoil){
spoil=emojione.unicodeToImage(spoil);
}
if(noticetext){
noticetext=emojione.unicodeToImage(noticetext);
}
if(notice){
notice=emojione.unicodeToImage(notice);
}
var mediack = toot.media_attachments[0];
//メディアがあれば
@@ -306,19 +315,19 @@ function parse(obj, mix, acct_id, tlid, popup) {
var visen = toot.visibility;
if (visen == "public") {
var vis =
'<i class="text-darken-3 material-icons gray sml vis-data" title="公開" data-vis="public">public</i>';
'<i class="text-darken-3 material-icons gray sml vis-data pointer" title="公開(クリックして本文コピー)" data-vis="public" onclick="staCopy(\''+id+'\')">public</i>';
var can_rt = "";
} else if (visen == "unlisted") {
var vis =
'<i class="text-darken-3 material-icons blue-text vis-data" title="未収載" data-vis="unlisted">lock_open</i>';
'<i class="text-darken-3 material-icons blue-text vis-data pointer" title="未収載(クリックして本文コピー)" data-vis="unlisted" onclick="staCopy(\''+id+'\')">lock_open</i>';
var can_rt = "";
} else if (visen == "plivate") {
var vis =
'<i class="text-darken-3 material-icons orange-text vis-data" title="非公開" data-vis="private">lock</i>';
'<i class="text-darken-3 material-icons orange-text vis-data pointer" title="非公開(クリックして本文コピー)" data-vis="private" onclick="staCopy(\''+id+'\')">lock</i>';
var can_rt = "hide";
} else if (visen == "direct") {
var vis =
'<i class="text-darken-3 material-icons red-text vis-data" title="ダイレクト" data-vis="direct">mail</i>';
'<i class="text-darken-3 material-icons red-text vis-data pointer" title="ダイレクト(クリックして本文コピー)" data-vis="direct" onclick="staCopy(\''+id+'\')">mail</i>';
var can_rt = "hide";
}
if (toot.account.acct == localStorage.getItem("user_" + acct_id)) {
@@ -389,7 +398,7 @@ function parse(obj, mix, acct_id, tlid, popup) {
'" width="40" class="prof-img" user="' + toot.account.acct +
'"></a></div>' +
'<div class="area-display_name"><span class="user">' +
escapeHTML(toot.account.display_name) +
dis_name +
'</span><span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; cursor:text;"> @' +
toot.account.acct + locked + '</span></div>' +
'<div class="area-acct"><div><span class="cbadge pointer waves-effect" onclick="tootUriCopy(\'' +
@@ -404,7 +413,7 @@ function parse(obj, mix, acct_id, tlid, popup) {
'</div><div class="area-additional"><span class="additional">' + analyze +
'</span>' +
'' + mentions + tags + '</div>' +
'<div class="area-actions" style="padding:0; margin:0; top:-20px; display:flex; justify-content:space-around; max-width:100%; ">' +
'<div class="area-actions '+noauth+'" style="padding:0; margin:0; top:-20px; display:flex; justify-content:space-around; max-width:100%; ">' +
'<div class="action"><span style="padding:0">' +
vis + '</span></div><div class="action"><a onclick="re(\'' + toot.id +
'\',\'' + toot.account.acct + '\',' +
@@ -443,6 +452,11 @@ function parse(obj, mix, acct_id, tlid, popup) {
//オブジェクトパーサー(ユーザーデータ)
function userparse(obj, auth, acct_id, tlid, popup) {
//独自ロケール
var locale = localStorage.getItem("locale");
if(locale=="yes"){
var locale=false;
}
var templete = '';
var datetype = localStorage.getItem("datetype");
Object.keys(obj).forEach(function(key) {
@@ -458,17 +472,23 @@ function userparse(obj, auth, acct_id, tlid, popup) {
} else {
var auth = "";
}
if(popup > 0){
var ftxt="フォローされました";
if(localStorage.getItem("domain_" + acct_id)=="imastodon.net" && !locale){
ftxt = "名刺をいただきました";
}else if(localStorage.getItem("domain_" + acct_id)=="mstdn.osaka" && !locale){
ftxt = "ツルまれました";
}
if(popup > 0 || popup==-1){
var notftext='<span class="cbadge"title="' + date(toot.created_at,
'absolute') + '(通知された時間)"><i class="fa fa-clock-o"></i>' + date(toot.created_at,
datetype) +
'</span>フォローされました。<br>';
'</span>'+ftxt+'。<br>';
}else{
var notftext="";
}
var memory = localStorage.getItem("notice-mem");
if (popup >= 0 && obj.length < 5 && noticetext != memory) {
Materialize.toast(escapeHTML(toot.display_name)+"にフォローされました", popup * 1000);
Materialize.toast(escapeHTML(toot.display_name)+"に"+ftxt, popup * 1000);
$(".notf-icon_" + tlid).addClass("red-text");
localStorage.setItem("notice-mem", noticetext);
noticetext = "";

View File

@@ -15,6 +15,7 @@ function tl(type, data, acct_id, tlid) {
};
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
localStorage.setItem("card_" + obj.length,"true");
obj.push(add);
console.log(obj);
var json = JSON.stringify(obj);
@@ -35,9 +36,16 @@ function tl(type, data, acct_id, tlid) {
$("#notice_" + tlid).text("Integrated TL(" + localStorage.getItem(
"user_" + acct_id) + "@" + domain + ")");
$("#notice_icon_" + tlid).text("merge_type");
mixtl(acct_id, tlid);
mixtl(acct_id, tlid, "integrated");
return;
} else if (type == "notf") {
}else if (type == "plus") {
//Local+なら飛ばす
$("#notice_" + tlid).text("Local+ TL(" + localStorage.getItem(
"user_" + acct_id) + "@" + domain + ")");
$("#notice_icon_" + tlid).text("people_outline");
mixtl(acct_id, tlid, "plus");
return;
}else if (type == "notf") {
//通知なら飛ばす
//notf(acct_id, tlid, 'direct');
$("#notice_" + tlid).text(cap(type, data, acct_id) + "(" + localStorage.getItem(
@@ -48,8 +56,20 @@ function tl(type, data, acct_id, tlid) {
localStorage.setItem("now", type);
todo(cap(type) + " TL Loading...");
var at = localStorage.getItem(domain + "_at");
$("#notice_" + tlid).text(cap(type, data, acct_id) + "(" + localStorage.getItem(
"user_" + acct_id) + "@" + domain + ")");
if(type!="noauth"){
var hdr={
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
};
$("#notice_" + tlid).text(cap(type, data, acct_id) + "(" + localStorage.getItem(
"user_" + acct_id) + "@" + domain + ")");
}else{
var hdr={
'content-type': 'application/json'
};
domain=acct_id;
$("#notice_" + tlid).text("Glance TL(" + domain + ")");
}
$("#notice_icon_" + tlid).text(icon(type));
var url=com(type, data);
if(type=="tag"){
@@ -62,17 +82,14 @@ function tl(type, data, acct_id, tlid) {
console.log(start);
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
headers: hdr,
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
var templete = parse(json, '', acct_id, tlid);
var templete = parse(json, type, acct_id, tlid);
$("#timeline_" + tlid).html(templete);
additional(acct_id, tlid);
jQuery("time.timeago").timeago();
@@ -108,7 +125,10 @@ function reload(type, cc, acct_id, tlid, data) {
}
var start = "wss://" + domain +
"/api/v1/streaming/?stream=hashtag&tag=" + data +"&access_token=" + at;
}
} else if (type == "noauth") {
var start = "wss://" + acct_id +
"/api/v1/streaming/?stream=public:local";
}
console.log(start);
var wsid = websocket.length;
websocket[wsid] = new WebSocket(start);
@@ -131,7 +151,7 @@ function reload(type, cc, acct_id, tlid, data) {
var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj);
if($("#timeline_" + tlid +" [toot-id=" + obj.id + "]").length < 1){
var templete = parse([obj], '', acct_id, tlid);
var templete = parse([obj], type, acct_id, tlid);
var pool = localStorage.getItem("pool_" + tlid);
if (pool) {
pool = templete + pool;
@@ -180,7 +200,10 @@ function moreload(type, tlid) {
if (localStorage.getItem("morelock") != sid) {
localStorage.setItem("morelock", sid);
if (type == "mix") {
mixmore(tlid);
mixmore(tlid,"integrated");
return;
}else if (type == "plus") {
mixmore(tlid,"plus");
return;
}else if (type == "notf") {
notfmore(tlid);
@@ -257,20 +280,25 @@ function tlCloser() {
//TLのタイトル
function cap(type, data, acct_id) {
//独自ロケール
var locale = localStorage.getItem("locale");
if(locale=="yes"){
var locale=false;
}
if (type == "home") {
if(localStorage.getItem("home_" + acct_id)){
if(localStorage.getItem("home_" + acct_id) && !locale){
var response=localStorage.getItem("home_" + acct_id);
}else{
var response="Home TL";
}
} else if (type == "local") {
if(localStorage.getItem("local_" + acct_id)){
if(localStorage.getItem("local_" + acct_id) && !locale){
var response=localStorage.getItem("local_" + acct_id);
}else{
var response="Local TL";
}
} else if (type == "pub") {
if(localStorage.getItem("public_" + acct_id)){
if(localStorage.getItem("public_" + acct_id) && !locale){
var response=localStorage.getItem("public_" + acct_id);
}else{
var response="Federated TL";
@@ -280,11 +308,13 @@ function cap(type, data, acct_id) {
} else if (type == "list") {
var response= "List(id:" + data + ")"
} else if (type == "notf") {
if(localStorage.getItem("notification_" + acct_id)){
if(localStorage.getItem("notification_" + acct_id) && !locale){
var response=localStorage.getItem("notification_" + acct_id);
}else{
var response="Notification TL";
}
} else if (type == "noauth") {
var response= "Glance TL"
}
return response;
}
@@ -293,7 +323,7 @@ function cap(type, data, acct_id) {
function com(type, data) {
if (type == "home") {
return "home?"
} else if (type == "local") {
} else if (type == "local" || type == "noauth") {
return "public?local=true&"
} else if (type == "pub") {
return "public?"
@@ -309,7 +339,7 @@ function com(type, data) {
function icon(type) {
if (type == "home") {
return "home"
} else if (type == "local") {
} else if (type == "local" || type == "noauth") {
return "people_outline"
} else if (type == "pub") {
return "language"
@@ -319,4 +349,4 @@ function icon(type) {
if (type == "list") {
return "subject"
}
}
}