TheDesk Mio (15.9.0)
This commit is contained in:
parent
49a45f2ecf
commit
faa8b70aff
20
LATEST.md
20
LATEST.md
|
@ -1,19 +1,19 @@
|
|||
## For Astarte(kirishima.cloud), My Primary Instance
|
||||
|
||||
TheDesk :thedesk: Mio (15.8.0)
|
||||
・Glance TLの不具合解消
|
||||
・フォントが変更可能に
|
||||
・同一インスタンスで複数垢ログインに対応
|
||||
・カラーテーマの追加
|
||||
TheDesk :thedesk: Mio (15.9.0)
|
||||
・フィルター機能に対応
|
||||
・削除して再編集に対応
|
||||
・削除追跡(削除されたトゥートが画面から消えずに背景色のみ変化します。)
|
||||
・通知が表示されないバグ・削除時に境界線が太くなる現象の修正など
|
||||
ほか
|
||||
https://thedesk.top
|
||||
:github: https://github.com/cutls/TheDesk #Desk #DeskUpdate
|
||||
|
||||
## For Other Instances
|
||||
|
||||
PCクライアントTheDesk Mio (15.8.0)
|
||||
・Glance TLの不具合解消
|
||||
・フォントが変更可能に
|
||||
・同一インスタンスで複数垢ログインに対応
|
||||
・カラーテーマの追加
|
||||
PCクライアントTheDesk Mio (15.9.0)
|
||||
・フィルター機能に対応
|
||||
・削除して再編集に対応
|
||||
・削除追跡(削除されたトゥートが画面から消えずに背景色のみ変化します。)
|
||||
・通知が表示されないバグ・削除時に境界線が太くなる現象の修正など
|
||||
https://thedesk.top
|
|
@ -106,6 +106,7 @@ iframe {
|
|||
}
|
||||
.cvo {
|
||||
padding-left: 5px;
|
||||
border-bottom:0.5px solid;
|
||||
padding-right: 2px;
|
||||
word-break: break-all;
|
||||
width: 100%;
|
||||
|
@ -169,8 +170,15 @@ grid-area: toot;
|
|||
}
|
||||
|
||||
.area-actions {
|
||||
margin:2px;
|
||||
grid-area: actions;
|
||||
padding:0;
|
||||
margin:0;
|
||||
top:-20px;
|
||||
display:flex;
|
||||
justify-content:space-around;
|
||||
width:300px;
|
||||
max-width:100%;
|
||||
margin:2px;
|
||||
grid-area: actions;
|
||||
}
|
||||
.area-vis {
|
||||
margin:2px;
|
||||
|
@ -338,6 +346,18 @@ p:not(:last-child){
|
|||
.modal-footer{
|
||||
background-color:var(--box);
|
||||
}
|
||||
.ballons{
|
||||
background-color: var(--box);
|
||||
position:absolute;
|
||||
bottom:0px;
|
||||
right:0px;
|
||||
}
|
||||
.btn-flat{
|
||||
color:var(--color);
|
||||
}
|
||||
.toot a span.ellipsis:after{
|
||||
content:"...";
|
||||
}
|
||||
.toot a:not(.mention) span:last-of-type{
|
||||
display:none;
|
||||
}
|
|
@ -113,19 +113,58 @@ var tlid=0;
|
|||
</div>
|
||||
<!--リスト-->
|
||||
<div id="list-box" class="hide notf-box z-depth-4">
|
||||
アカウント選択
|
||||
<div class="input-field">
|
||||
<div class="input-field" style="width:calc( 100% - 100px);float:left">
|
||||
<select id="list-acct-sel" class="acct-sel"></select>
|
||||
<label></label>
|
||||
<label>アカウント選択</label>
|
||||
</div>
|
||||
<button class="btn waves-effect indigo" style="width:calc( 60% - 40px);" onclick="list()" data-trans-i="lists">
|
||||
リスト一覧
|
||||
</button><br><br>
|
||||
<div style="float:left; padding-top:8px; padding-bottom:28px;">
|
||||
<button class="btn waves-effect indigo" style="width:80px;" onclick="list()" data-trans-i="lists">
|
||||
一覧
|
||||
</button>
|
||||
</div>
|
||||
<br><br>
|
||||
<div id="lists"></div>
|
||||
<div id="lists-user"></div>
|
||||
<input type="text" style="width:150px" id="list-add" placeholder="タイトル">
|
||||
<button class="btn waves-effect" style="width:120px;" onclick="makeNewList()">新規作成</button>
|
||||
</div>
|
||||
<!--フィルター-->
|
||||
<div id="filter-box" class="hide notf-box z-depth-4">
|
||||
<div class="input-field" style="width:calc( 100% - 100px);float:left">
|
||||
<select id="filter-acct-sel" class="acct-sel"></select>
|
||||
<label>アカウント選択</label>
|
||||
</div>
|
||||
<div style="float:left; padding-top:8px; padding-bottom:28px;">
|
||||
<button class="btn waves-effect indigo" style="width:80px;" onclick="filter()" data-trans-i="filters">
|
||||
一覧
|
||||
</button>
|
||||
</div>
|
||||
<div id="filtered-words"></div>
|
||||
<input type="hidden" id="filter-edit-id">
|
||||
<input type="text" style="width:150px" id="filter-add-word" placeholder="フィルターワード"><br>
|
||||
適用範囲<br>
|
||||
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
|
||||
<label for="home_filter">ホーム</label>
|
||||
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
|
||||
<label for="local_filter">ローカル</label>
|
||||
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
|
||||
<label for="notf_filter">通知</label>
|
||||
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
|
||||
<label for="conv_filter">会話</label><br>
|
||||
オプション<br>
|
||||
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
|
||||
<label for="wholeword_filter">単語マッチ</label><br>
|
||||
<span class="sml">非ラテン系の文字列では「単語マッチ」は推奨されません。</span><br>
|
||||
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
|
||||
<label for="except_filter">除外</label><br>
|
||||
<span class="sml">「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。</span><br>
|
||||
有効期限(あと)<span class="sml">未指定(または0分)で「無制限」になります。<b>仕様上数値の正確性を保証できません。</b></span><br><br>
|
||||
<input type="text" style="width:50px" id="days_filter" placeholder="d" value="0">日
|
||||
<input type="text" style="width:50px" id="hours_filter" placeholder="h" value="0">時間
|
||||
<input type="text" style="width:50px" id="mins_filter" placeholder="m" value="0">分
|
||||
<button class="btn waves-effect" style="width:120px;" onclick="makeNewFilter()" id="add-filter-btn">追加</button><br>
|
||||
<span class="sml">Integrated TL/Plus TLは、公開/ホームのフィルターワードが合算されて適応されます。どちらか一方の指定でも非表示になります。</span>
|
||||
</div>
|
||||
<div id="main">
|
||||
<!--TLのTL-->
|
||||
<div id="timeline-container">
|
||||
|
@ -177,6 +216,12 @@ var tlid=0;
|
|||
<span class="side-label" data-trans="list">リスト</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu" id="filter-tgl">
|
||||
<a onclick="filterToggle()" class="nex waves-effect">
|
||||
<i class="material-icons" title="フィルター" data-trans-title="filter">filter_list</i>
|
||||
<span class="side-label" data-trans="filter">Filter</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu">
|
||||
<a href="index.html" class="nex mize waves-effect">
|
||||
<i class="material-icons nex" title="スーパーリロード(F5/⌘+R)" data-trans-title="reload">refresh</i>
|
||||
|
|
|
@ -351,6 +351,7 @@ function multiSelector() {
|
|||
}else{
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
var acct = obj[key];
|
||||
|
||||
var list = key * 1 + 1;
|
||||
if (key == last) {
|
||||
sel = "selected";
|
||||
|
|
|
@ -226,6 +226,34 @@ function del(id, acct_id) {
|
|||
}
|
||||
}
|
||||
}
|
||||
//redraft
|
||||
function redraft(id, acct_id){
|
||||
if(confirm("削除して再編集しますか?そのトゥートの全てのデータがリセットされます。この機能はベータ版です。画像は~v2.4.1で破棄されます。")){
|
||||
show();
|
||||
del(id, acct_id);
|
||||
$("#post-acct-sel").prop("disabled", true);
|
||||
var medias=$("[toot-id="+id+"]").attr("data-medias");
|
||||
var vismode=$("[toot-id="+id+"] .vis-data").attr("data-vis");
|
||||
vis(vismode);
|
||||
$("#media").val(medias);
|
||||
var ct=medias.split(",").length;
|
||||
$("[toot-id="+id+"] img.toot-img").each(function(i, elem) {
|
||||
if(i<ct){
|
||||
var url=$(elem).attr("src");
|
||||
console.log(url);
|
||||
$('#preview').append('<img src="' + url + '" style="width:50px; max-height:100px;">');
|
||||
}
|
||||
});
|
||||
var html=$("[toot-id="+id+"] .toot").html();
|
||||
html = html.replace(/^<p>(.+)<\/p>$/,"$1");
|
||||
html = html.replace(/<br\s?\/?>/, "\n");
|
||||
html = html.replace(/<p>/, "\n");
|
||||
html = html.replace(/<\/p>/, "\n");
|
||||
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
|
||||
html=$.strip_tags(html);
|
||||
$("#textarea").val(html);
|
||||
}
|
||||
}
|
||||
//ピン留め
|
||||
function pin(id, acct_id) {
|
||||
if ($("#pub_" + id).hasClass("pined")) {
|
||||
|
|
|
@ -70,8 +70,17 @@ function replyTL(id, acct_id) {
|
|||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
var templete = parse([json], '', acct_id);
|
||||
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
|
||||
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"thread");
|
||||
}else{
|
||||
var mute=[];
|
||||
}
|
||||
console.log(mute);
|
||||
var templete = parse([json], '', acct_id,"","",mute);
|
||||
$("#toot-reply").prepend(templete);
|
||||
$("#toot-reply .hide").html("フィルターされました。");
|
||||
$("#toot-reply .by_filter").css("display","block");
|
||||
$("#toot-reply .by_filter").removeClass("hide");
|
||||
jQuery("time.timeago").timeago();
|
||||
if (json.in_reply_to_id) {
|
||||
replyTL(json.in_reply_to_id, acct_id);
|
||||
|
@ -96,9 +105,16 @@ function context(id, acct_id) {
|
|||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
var templete = parse(json.descendants, '', acct_id);
|
||||
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
|
||||
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"thread");
|
||||
}else{
|
||||
var mute=[];
|
||||
}
|
||||
var templete = parse(json.descendants, '', acct_id,"","",mute);
|
||||
$("#toot-after").html(templete);
|
||||
|
||||
$("#toot-after .hide").html("フィルターされました。");
|
||||
$("#toot-after .by_filter").css("display","block");
|
||||
$("#toot-after .by_filter").removeClass("hide");
|
||||
jQuery("time.timeago").timeago();
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
/*メディアフィルター機能*/
|
||||
//各TL上方のMedia[On/Off]
|
||||
function mediaToggle(tlid) {
|
||||
var media = localStorage.getItem("media_" + tlid);
|
||||
|
@ -26,3 +27,320 @@ function mediaCheck(tlid) {
|
|||
$("#timeline_"+tlid).removeClass("media-filter")
|
||||
}
|
||||
}
|
||||
/* 削除追跡*/
|
||||
function catchToggle(tlid) {
|
||||
var catchck = localStorage.getItem("catch_" + tlid);
|
||||
if (catchck) {
|
||||
localStorage.removeItem("catch_" + tlid);
|
||||
$("#sta-del-" + tlid).text("Off");
|
||||
$("#sta-del-" + tlid).css("color",'red');
|
||||
parseColumn();
|
||||
} else {
|
||||
localStorage.setItem("catch_" + tlid, "true");
|
||||
$("#sta-del-" + tlid).text("On");
|
||||
$("#sta-del-" + tlid).css("color",'#009688');
|
||||
$("#timeline_"+tlid).addClass("media-filter");
|
||||
parseColumn();
|
||||
}
|
||||
}
|
||||
function catchCheck(tlid) {
|
||||
var catchck = localStorage.getItem("catch_" + tlid);
|
||||
if (catchck) {
|
||||
$("#sta-del-" + tlid).text("On");
|
||||
$("#sta-del-" + tlid).css("color",'#009688');
|
||||
} else {
|
||||
$("#sta-del-" + tlid).text("Off");
|
||||
$("#sta-del-" + tlid).css("color",'red');
|
||||
}
|
||||
}
|
||||
function catchCheck(tlid) {
|
||||
var catchck = localStorage.getItem("catch_" + tlid);
|
||||
if (catchck) {
|
||||
$("#sta-del-" + tlid).text("On");
|
||||
$("#sta-del-" + tlid).css("color",'#009688');
|
||||
} else {
|
||||
$("#sta-del-" + tlid).text("Off");
|
||||
$("#sta-del-" + tlid).css("color",'red');
|
||||
}
|
||||
}
|
||||
function delreset(tlid){
|
||||
$("[tlid=" + tlid + "] .by_delcatch").hide();
|
||||
$("[tlid=" + tlid + "] .by_delcatch").remove();
|
||||
|
||||
}
|
||||
/*ワードフィルター機能*/
|
||||
function filterToggle(){
|
||||
if ($("#filter-box").hasClass("hide")) {
|
||||
$("#filter-box").removeClass("hide");
|
||||
$("#filter-box").addClass("show");
|
||||
$("#filter-box").css("top",$('#filter-tgl').offset().top-$('#filter-box').height()/2+"px");
|
||||
$("#filter-box").css("left",$('#filter-tgl').offset().left-410+"px");
|
||||
//フィルターロード
|
||||
} else {
|
||||
$("#filter-box").removeClass("show");
|
||||
$("#filter-box").addClass("hide")
|
||||
}
|
||||
}
|
||||
function filter(){
|
||||
$("#filtered-words").html("");
|
||||
$("#filter-edit-id").val("")
|
||||
var acct_id = $("#filter-acct-sel").val();
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/filters"
|
||||
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) {
|
||||
console.log(json);
|
||||
if (json) {
|
||||
var filters = "";
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var filterword = json[key];
|
||||
var context = filterword.context.join(',');
|
||||
filters = filters + filterword.phrase+'<span class="sml">(for '+context+')</span>:<a onclick="filterEdit(\'' + filterword.id + '\',\'' + acct_id +
|
||||
'\')" class="pointer">編集</a>/<a onclick="filterDel(' + filterword.id + ',' + acct_id +
|
||||
')" class="pointer">削除</a><br> ';
|
||||
});
|
||||
if(filters==""){
|
||||
filters="フィルターはありません<br>";
|
||||
}
|
||||
$("#filtered-words").html(filters);
|
||||
}else{
|
||||
$("#filtered-words").html("フィルターはありません");
|
||||
}
|
||||
});
|
||||
}
|
||||
function makeNewFilter(){
|
||||
var acct_id = $("#filter-acct-sel").val();
|
||||
var phr=$("#filter-add-word").val();
|
||||
var cont=[];
|
||||
if($("#home_filter:checked").val()){
|
||||
cont.push("home");
|
||||
}
|
||||
if($("#local_filter:checked").val()){
|
||||
cont.push("public");
|
||||
}
|
||||
if($("#notf_filter:checked").val()){
|
||||
cont.push("notifications");
|
||||
}
|
||||
if($("#conv_filter:checked").val()){
|
||||
cont.push("thread");
|
||||
}
|
||||
console.log(cont);
|
||||
if(!cont.length){
|
||||
$("#filtered-words").html('Error:適応範囲を最低一つ以上チェックしてください。');
|
||||
}
|
||||
var exc=$("#except_filter:checked").val();
|
||||
var who=$("#wholeword_filter:checked").val();
|
||||
var time=$("#days_filter").val()*24*60*60+$("#hours_filter").val()*60*60+$("#mins_filter").val()*60;
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
if($("#filter-edit-id").val()){
|
||||
var start = "https://" + domain + "/api/v1/filters/"+$("#filter-edit-id").val();
|
||||
var method="PUT"
|
||||
}else{
|
||||
var start = "https://" + domain + "/api/v1/filters"
|
||||
var method="POST"
|
||||
}
|
||||
|
||||
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({
|
||||
phrase: phr,
|
||||
context: cont,
|
||||
irreversible: exc,
|
||||
whole_word:who,
|
||||
expires_in:time
|
||||
}));
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState == 4) {
|
||||
var json = httpreq.response;
|
||||
filter();
|
||||
filterUpdate(acct_id)
|
||||
$("#filter-add-word").val("");
|
||||
$("#home_filter").prop("checked",false);
|
||||
$("#local_filter").prop("checked",false);
|
||||
$("#notf_filter").prop("checked",false);
|
||||
$("#conv_filter").prop("checked",false);
|
||||
$("#except_filter").prop("checked",false);
|
||||
$("#wholeword_filter").prop("checked",false);
|
||||
$("#days_filter").val("0");
|
||||
$("#hours_filter").val("0");
|
||||
$("#mins_filter").val("0");
|
||||
$("#add-filter-btn").text("追加");
|
||||
$("#filter-edit-id").val("")
|
||||
}
|
||||
}
|
||||
}
|
||||
function filterEdit(id,acct_id){
|
||||
$("#filter-add-word").val("");
|
||||
$("#home_filter").prop("checked",false);
|
||||
$("#local_filter").prop("checked",false);
|
||||
$("#notf_filter").prop("checked",false);
|
||||
$("#conv_filter").prop("checked",false);
|
||||
$("#except_filter").prop("checked",false);
|
||||
$("#wholeword_filter").prop("checked",false);
|
||||
$("#days_filter").val("0");
|
||||
$("#hours_filter").val("0");
|
||||
$("#mins_filter").val("0");
|
||||
$("#add-filter-btn").text("編集");
|
||||
$("#filter-edit-id").val(id);
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/filters/"+id
|
||||
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) {
|
||||
console.log(json);
|
||||
if (json) {
|
||||
var now = new Date() ;
|
||||
now = now.getTime() ;
|
||||
var now = Math.floor(now / 1000 ) ;
|
||||
$("#filter-add-word").val(json.phrase);
|
||||
Object.keys(json.context).forEach(function(key) {
|
||||
var context = json.context[key];
|
||||
$("[value="+context+"]").prop("checked",true);
|
||||
});
|
||||
if(json.irreversible){
|
||||
$("#except_filter").prop("checked",true);
|
||||
}
|
||||
if(json.whole_word){
|
||||
$("#wholeword_filter").prop("checked",true);
|
||||
}
|
||||
var expires=date(json.expires_at, 'unix')-now;
|
||||
var mins=Math.floor(expires/60)%60;
|
||||
var hours=Math.floor(expires/3600)%24;
|
||||
var days=Math.floor(expires/3600/24);
|
||||
$("#days_filter").val(days);
|
||||
$("#hours_filter").val(hours);
|
||||
$("#mins_filter").val(mins);
|
||||
}
|
||||
});
|
||||
}
|
||||
function filterDel(id,acct_id){
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/filters/"+id;
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open("DELETE", start, true);
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
||||
httpreq.responseType = 'json';
|
||||
httpreq.send();
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState == 4) {
|
||||
var json = httpreq.response;
|
||||
filter();
|
||||
filterUpdate(acct_id)
|
||||
}
|
||||
}
|
||||
}
|
||||
function getFilter(acct_id){
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/filters"
|
||||
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) {
|
||||
localStorage.setItem("filter_"+ acct_id ,JSON.stringify(json));
|
||||
});
|
||||
}
|
||||
function getFilterType(json,type){
|
||||
if(type=="local"){
|
||||
type="public";
|
||||
}else if(type=="list"){
|
||||
type="home";
|
||||
}else if(type=="notf"){
|
||||
type="notifi";
|
||||
}
|
||||
var mutedfilters=[];
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var filterword = json[key];
|
||||
var phrases = filterword.phrase;
|
||||
if(filterword.context.join(",").indexOf(type)!== -1){
|
||||
mutedfilters.push(phrases);
|
||||
}
|
||||
});
|
||||
return mutedfilters;
|
||||
}
|
||||
function filterUpdate(acct_id){
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/filters"
|
||||
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) {
|
||||
localStorage.setItem("filter_"+ acct_id ,JSON.stringify(json));
|
||||
filterUpdateInternal(json,"home");
|
||||
filterUpdateInternal(json,"local");
|
||||
filterUpdateInternal(json,"notf");
|
||||
filterUpdateInternal(json,"pub");
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
function filterUpdateInternal(json,type){
|
||||
var home=getFilterType(json,type);
|
||||
var wordmute = localStorage.getItem("word_mute");
|
||||
if(wordmute){
|
||||
var wordmute = JSON.parse(wordmute);
|
||||
home = home.concat(wordmute);
|
||||
}
|
||||
if(home){
|
||||
$("[data-acct="+acct_id+"] [data-type="+type+"] .cvo").each(function(i, elem) {
|
||||
var id=$(elem).attr("toot-id");
|
||||
$("[toot-id="+id+"]").removeClass("hide");
|
||||
var text=$(elem).find('.toot').html();
|
||||
Object.keys(home).forEach(function(key8) {
|
||||
var word = home[key8];
|
||||
var regExp = new RegExp( word, "g" );
|
||||
if($.strip_tags(text).match(regExp)){
|
||||
$("[toot-id="+id+"]").addClass("hide");
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
//Integrated TL
|
||||
function mixtl(acct_id, tlid, type) {
|
||||
console.log(type);
|
||||
function mixtl(acct_id, tlid, type,delc) {
|
||||
console.log(delc);
|
||||
localStorage.removeItem("morelock")
|
||||
localStorage.setItem("now", type);
|
||||
todo("Integrated TL Loading...(Local)");
|
||||
|
@ -48,11 +48,16 @@ function mixtl(acct_id, tlid, type) {
|
|||
var pkey=key*1+1;
|
||||
if(pkey<timeline.length){
|
||||
if(date(timeline[key].created_at,"unix")!=date(timeline[pkey].created_at,"unix")){
|
||||
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
|
||||
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"mix");
|
||||
}else{
|
||||
var mute=[];
|
||||
}
|
||||
if(type=="integrated"){
|
||||
templete = templete+parse([timeline[key]], '', acct_id, tlid);
|
||||
templete = templete+parse([timeline[key]], '', acct_id, tlid, "", mute);
|
||||
}else if(type=="plus"){
|
||||
if(timeline[key].account.acct==timeline[key].account.username){
|
||||
templete = templete+parse([timeline[key]], '', acct_id, tlid);
|
||||
templete = templete+parse([timeline[key]], '', acct_id, tlid, "", mute);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -62,7 +67,7 @@ function mixtl(acct_id, tlid, type) {
|
|||
});
|
||||
|
||||
$("#timeline_" + tlid).html(templete);
|
||||
mixre(acct_id, tlid, type);
|
||||
mixre(acct_id, tlid, type, mute,delc);
|
||||
additional(acct_id, tlid);
|
||||
jQuery("time.timeago").timeago();
|
||||
todc();
|
||||
|
@ -72,7 +77,7 @@ function mixtl(acct_id, tlid, type) {
|
|||
|
||||
|
||||
//Streamingに接続
|
||||
function mixre(acct_id, tlid, TLtype) {
|
||||
function mixre(acct_id, tlid, TLtype, mute,delc) {
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var startHome = "wss://" + domain +
|
||||
|
@ -99,10 +104,16 @@ function mixre(acct_id, tlid, TLtype) {
|
|||
console.log(obj);
|
||||
var type = JSON.parse(mess.data).event;
|
||||
if (type == "delete") {
|
||||
if(delc=="true"){
|
||||
$("#timeline_"+tlid+" [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized");
|
||||
$("#timeline_"+tlid+" [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch");
|
||||
}else{
|
||||
$("[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);
|
||||
var templete = parse([obj], '', acct_id, tlid,"",mute);
|
||||
if (!$("#timeline_"+tlid+" [toot-id="+obj.id+"]").length) {
|
||||
var pool = localStorage.getItem("pool_" + tlid);
|
||||
if (pool && templete) {
|
||||
|
@ -126,14 +137,19 @@ function mixre(acct_id, tlid, TLtype) {
|
|||
console.log(obj);
|
||||
var type = JSON.parse(mess.data).event;
|
||||
if (type == "delete") {
|
||||
if(delc=="true"){
|
||||
$("[toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized");
|
||||
$("[toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch");
|
||||
}else{
|
||||
$("[toot-id=" + JSON.parse(mess.data).payload + "]").hide();
|
||||
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
|
||||
}
|
||||
} else if (type == "update") {
|
||||
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);
|
||||
var templete = parse([obj], '', acct_id, tlid,"",mute);
|
||||
}else{
|
||||
var templete="";
|
||||
}
|
||||
|
@ -212,11 +228,16 @@ function mixmore(tlid,type) {
|
|||
var pkey=key*1+1;
|
||||
if(pkey<20){
|
||||
if(date(timeline[key].created_at,"unix")!=date(timeline[pkey].created_at,"unix")){
|
||||
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
|
||||
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"mix");
|
||||
}else{
|
||||
var mute=[];
|
||||
}
|
||||
if(type=="integrated"){
|
||||
templete = templete+parse([timeline[key]], '', acct_id, tlid);
|
||||
templete = templete+parse([timeline[key]], '', acct_id, tlid,"",mute);
|
||||
}else if(type=="plus"){
|
||||
if(timeline[key].account.acct==timeline[key].account.username){
|
||||
templete = templete+parse([timeline[key]], '', acct_id, tlid);
|
||||
templete = templete+parse([timeline[key]], '', acct_id, tlid,"",mute);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,8 +22,10 @@ function notf(acct_id, tlid, sys) {
|
|||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
if(json[0]){
|
||||
var templete="";
|
||||
var lastnotf=localStorage.getItem("lastnotf_" + acct_id);
|
||||
console.log(domain);
|
||||
localStorage.setItem("lastnotf_" + acct_id,json[0].id);
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var obj = json[key];
|
||||
|
@ -37,7 +39,7 @@ function notf(acct_id, tlid, sys) {
|
|||
var os = electron.remote.process.platform;
|
||||
var options = {
|
||||
body: ct+"件の新しい通知",
|
||||
icon: tlocalStorage.getItem("prof_"+acct_id)
|
||||
icon: localStorage.getItem("prof_"+acct_id)
|
||||
};
|
||||
if(os=="darwin"){
|
||||
var n = new Notification('TheDesk:'+domain, options);
|
||||
|
@ -46,12 +48,16 @@ function notf(acct_id, tlid, sys) {
|
|||
}
|
||||
|
||||
}
|
||||
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
|
||||
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"notif");
|
||||
}else{
|
||||
var mute=[];
|
||||
}
|
||||
if(obj.type!="follow"){
|
||||
templete = templete+parse([obj], 'notf', acct_id, 'notf', -1);
|
||||
templete = templete+parse([obj], 'notf', acct_id, 'notf', -1, mute);
|
||||
}else{
|
||||
templete = templete+userparse([obj.account], 'notf', acct_id, 'notf', -1);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
if (sys == "direct") {
|
||||
|
@ -61,6 +67,7 @@ function notf(acct_id, tlid, sys) {
|
|||
}
|
||||
|
||||
jQuery("time.timeago").timeago();
|
||||
}
|
||||
$("#notf-box").addClass("fetched");
|
||||
todc();
|
||||
});
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
//オブジェクトパーサー(トゥート)
|
||||
function parse(obj, mix, acct_id, tlid, popup) {
|
||||
function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||
var templete = '';
|
||||
var actb = localStorage.getItem("action_btns");
|
||||
var actb='re,rt,fav,qt,del,pin';
|
||||
var actb='re,rt,fav,qt,del,pin,red';
|
||||
if(actb){
|
||||
var actb = actb.split(',');
|
||||
var disp={};
|
||||
|
@ -55,7 +55,13 @@ function parse(obj, mix, acct_id, tlid, popup) {
|
|||
var wordmute = localStorage.getItem("word_mute");
|
||||
if(wordmute){
|
||||
var wordmute = JSON.parse(wordmute);
|
||||
wordmute = wordmute.concat(mutefilter);
|
||||
}else{
|
||||
wordmute = mutefilter;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!sent) {
|
||||
var sent = 500;
|
||||
}
|
||||
|
@ -368,12 +374,14 @@ function parse(obj, mix, acct_id, tlid, popup) {
|
|||
}
|
||||
var mediack = toot.media_attachments[0];
|
||||
//メディアがあれば
|
||||
var media_ids="";
|
||||
if (mediack) {
|
||||
hasmedia = "hasmedia";
|
||||
var cwdt = 100 / toot.media_attachments.length
|
||||
var cwdt = 100 / toot.media_attachments.length;
|
||||
Object.keys(toot.media_attachments).forEach(function(key2) {
|
||||
var media = toot.media_attachments[key2];
|
||||
var purl = media.preview_url;
|
||||
media_ids=media_ids+media.id+",";
|
||||
var url = media.url;
|
||||
if (toot.sensitive && nsfw) {
|
||||
var sense = "sensitive"
|
||||
|
@ -386,6 +394,7 @@ function parse(obj, mix, acct_id, tlid, popup) {
|
|||
purl + '" class="' + sense +
|
||||
' toot-img pointer" style="width:' + cwdt + '%; height:'+imh+'px;"></a></span>';
|
||||
});
|
||||
media_ids = media_ids.slice(0, -1) ;
|
||||
} else {
|
||||
viewer = "";
|
||||
hasmedia = "nomedia";
|
||||
|
@ -473,10 +482,14 @@ function parse(obj, mix, acct_id, tlid, popup) {
|
|||
Object.keys(wordmute).forEach(function(key8) {
|
||||
var worde = wordmute[key8];
|
||||
if(worde){
|
||||
if(worde.tag){
|
||||
var word=worde.tag;
|
||||
}else{
|
||||
var word=worde
|
||||
}
|
||||
var regExp = new RegExp( word, "g" ) ;
|
||||
if($.strip_tags(content).match(regExp)){
|
||||
boostback = "hide";
|
||||
boostback = "hide by_filter";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -500,7 +513,7 @@ function parse(obj, mix, acct_id, tlid, popup) {
|
|||
}
|
||||
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
|
||||
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + pin_app +
|
||||
' ' + hasmedia + '" toot-id="' + id + '" unixtime="' + date(obj[
|
||||
' ' + hasmedia + '" toot-id="' + id + '" data-medias="'+media_ids+' " unixtime="' + date(obj[
|
||||
key].created_at, 'unix') + '" '+if_notf+' onmouseover="mov(\'' + toot.id + '\',\''+tlid+'\')" onmouseout="resetmv()">' +
|
||||
'<div class="area-notice"><span class="gray sharesta">' + notice + home +
|
||||
'</span></div>' +
|
||||
|
@ -527,7 +540,7 @@ function parse(obj, mix, acct_id, tlid, popup) {
|
|||
'</span>' +
|
||||
'' + mentions + tags + '</div>' +
|
||||
'<div class="area-vis"></div>'+
|
||||
'<div class="area-actions '+mouseover+'" style="padding:0; margin:0; top:-20px; display:flex; justify-content:space-around; max-width:100%; ">' +
|
||||
'<div class="area-actions '+mouseover+'">' +
|
||||
'<div class="action">'+vis+'</div>'+
|
||||
'<div class="action '+antinoauth+'"><a onclick="detEx(\''+toot.url+'\',\'main\')" class="waves-effect waves-dark details" style="padding:0">詳細(メインアカウント経由)</a></div>' +
|
||||
'<div class="action '+disp["re"]+' '+noauth+'"><a onclick="re(\'' + toot.id +
|
||||
|
@ -552,14 +565,17 @@ function parse(obj, mix, acct_id, tlid, popup) {
|
|||
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="このトゥートを削除"><i class="fa fa-trash-o"></i></a></div>' +
|
||||
'<div class="' + if_mine + ' action pin '+disp["pin"]+' '+noauth+'"><a onclick="pin(\'' + toot.id + '\',' +
|
||||
acct_id +
|
||||
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="このトゥートをピン留め"><i class="fa fa-map-pin pin_' + toot.id + ' '+if_pin+'"></i></a></div>' +trans+
|
||||
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="このトゥートをピン留め"><i class="fa fa-map-pin pin_' + toot.id + ' '+if_pin+'"></i></a></div>'
|
||||
+'<div class="' + if_mine + ' action '+disp["red"]+' '+noauth+'"><a onclick="redraft(\'' + toot.id + '\',' +
|
||||
acct_id +
|
||||
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="このトゥートを削除して再投稿"><i class="material-icons">redo</i></a></div>'+trans+
|
||||
'<div class="action ' + if_mine + ' '+noauth+'"><a onclick="toggleAction(\'' + toot.id + '\',\''+tlid+'\',\''+acct_id+'\')" class="waves-effect waves-dark btn-flat" style="padding:0"><i class="text-darken-3 material-icons act-icon">expand_more</i></a></div>' +
|
||||
'<div class="action '+noauth+'"><a onclick="details(\'' + toot.id + '\',' + acct_id +
|
||||
',\''+tlid+'\')" class="waves-effect waves-dark btn-flat details" style="padding:0"><i class="text-darken-3 material-icons">more_vert</i></a></div>' +
|
||||
'<span class="cbadge waves-effect '+viashow+' '+mine_via+'" onclick="client(\''+$.strip_tags(via)+'\')" title="via ' + $.strip_tags(via) + '">via ' +
|
||||
via +
|
||||
'</span></div></div>' +
|
||||
'</div></div>' + divider;
|
||||
'</div></div>';
|
||||
});
|
||||
if (mix == "mix") {
|
||||
return [templete, local, times]
|
||||
|
|
|
@ -10,7 +10,7 @@ if(location.search){
|
|||
}
|
||||
//よく使うタグ
|
||||
function tagShow(tag){
|
||||
$("[data-tag="+tag+"]").toggleClass("hide");
|
||||
$("[data-tag="+decodeURI(tag)+"]").toggleClass("hide");
|
||||
}
|
||||
//タグ追加
|
||||
function tagPin(tag){
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//TL取得
|
||||
function tl(type, data, acct_id, tlid) {
|
||||
function tl(type, data, acct_id, tlid, delc) {
|
||||
scrollevent();
|
||||
localStorage.removeItem("morelock");
|
||||
localStorage.removeItem("pool");
|
||||
|
@ -36,14 +36,14 @@ 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, "integrated");
|
||||
mixtl(acct_id, tlid, "integrated",delc);
|
||||
return;
|
||||
}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");
|
||||
mixtl(acct_id, tlid, "plus",delc);
|
||||
return;
|
||||
}else if (type == "notf") {
|
||||
//通知なら飛ばす
|
||||
|
@ -89,18 +89,24 @@ function tl(type, data, acct_id, tlid) {
|
|||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
var templete = parse(json, type, acct_id, tlid);
|
||||
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
|
||||
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),type);
|
||||
}else{
|
||||
var mute=[];
|
||||
}
|
||||
|
||||
var templete = parse(json, type, acct_id, tlid, "", mute);
|
||||
$("#timeline_" + tlid).html(templete);
|
||||
additional(acct_id, tlid);
|
||||
jQuery("time.timeago").timeago();
|
||||
todc();
|
||||
reload(type, '', acct_id, tlid, data);
|
||||
reload(type, '', acct_id, tlid, data, mute, delc);
|
||||
$(window).scrollTop(0);
|
||||
});
|
||||
}
|
||||
|
||||
//Streaming接続
|
||||
function reload(type, cc, acct_id, tlid, data) {
|
||||
function reload(type, cc, acct_id, tlid, data, mute, delc) {
|
||||
if (!type) {
|
||||
var type = localStorage.getItem("now");
|
||||
}
|
||||
|
@ -157,13 +163,19 @@ function reload(type, cc, acct_id, tlid, data) {
|
|||
var typeA = JSON.parse(mess.data).event;
|
||||
if (typeA == "delete") {
|
||||
var obj = JSON.parse(mess.data).payload;
|
||||
if(delc=="true"){
|
||||
$("#timeline_"+tlid+" [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized");
|
||||
$("#timeline_"+tlid+" [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch");
|
||||
}else{
|
||||
$("[toot-id=" + JSON.parse(mess.data).payload + "]").hide();
|
||||
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
|
||||
}
|
||||
|
||||
} else if (typeA == "update") {
|
||||
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], type, acct_id, tlid);
|
||||
var templete = parse([obj], type, acct_id, tlid,"",mute);
|
||||
var pool = localStorage.getItem("pool_" + tlid);
|
||||
if (pool) {
|
||||
pool = templete + pool;
|
||||
|
@ -181,6 +193,8 @@ function reload(type, cc, acct_id, tlid, data) {
|
|||
}
|
||||
|
||||
todc();
|
||||
}else if(typeA=="filters_changed"){
|
||||
filterUpdate(acct_id);
|
||||
}
|
||||
websocket[wsid].onclose = function(mess) {
|
||||
console.log("Close Streaming API:" + type);
|
||||
|
@ -241,7 +255,7 @@ function moreload(type, tlid) {
|
|||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
var templete = parse(json, '', acct_id, tlid);
|
||||
var templete = parse(json, '', acct_id, tlid,"",mute);
|
||||
$("#timeline_" + tlid).append(templete);
|
||||
additional(acct_id, tlid);
|
||||
jQuery("time.timeago").timeago();
|
||||
|
|
|
@ -42,6 +42,8 @@ function parseColumn() {
|
|||
localStorage.setItem("acct_"+ key + "_at", acct.at);
|
||||
notf(key, 0);
|
||||
ckdb(key);
|
||||
//フィルターデータ読もう
|
||||
getFilter(key);
|
||||
});
|
||||
}
|
||||
var acctlist=obj;
|
||||
|
@ -113,13 +115,16 @@ function parseColumn() {
|
|||
')" class="setting nex" title="このカラムの設定"'+icnsert+'><i class="material-icons waves-effect nex">settings</i></a></div></div>'+
|
||||
'<div class="hide notf-indv-box z-depth-4" id="notf-box_' + key +
|
||||
'"><div id="notifications_' + key +
|
||||
'" data-notf="' + acct.domain + '"></div></div><div class="hide notf-indv-box" id="util-box_' + key +
|
||||
'" data-notf="' + acct.domain + '" data-type="notf"></div></div><div class="hide notf-indv-box" id="util-box_' + key +
|
||||
'" style="padding:5px;"><a onclick="mediaToggle(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="メディアフィルター">perm_media</i><span id="sta-media-' +
|
||||
key + '">On</span></a>メディアフィルター<br><a onclick="cardToggle(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="リンクの解析を切り替え(OFFで制限を回避出来る場合があります)">link</i><span id="sta-card-' +
|
||||
key + '">On</span></a>リンク解析<br>TLヘッダーの色<br><div id="picker_'+key+'" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '"><div id="timeline_' + key +
|
||||
'" class="tl" tlid="' + key + '"'+notf_attr+'><div style="text-align:center">[ここにトゥートはありません。]<br>F5/⌘+Rで再読込できます。</div></div></div></div>';
|
||||
key + '">On</span></a>リンク解析<br><a onclick="catchToggle(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="削除捕捉(削除されても残ります。背景色が変化します。)">delete</i><span id="sta-del-' +
|
||||
key + '">On</span></a>削除捕捉<a onclick="delreset(' + key +
|
||||
')" class="pointer">リセット</a><br>TLヘッダーの色<br><div id="picker_'+key+'" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '"><div id="timeline_' + key +
|
||||
'" class="tl" tlid="' + key + '"'+notf_attr+' data-type="' + acct.type + '"><div style="text-align:center">[ここにトゥートはありません。]<br>F5/⌘+Rで再読込できます。</div></div></div></div>';
|
||||
$("#timeline-container").append(html);
|
||||
localStorage.removeItem("pool_" + key);
|
||||
if (acct.data) {
|
||||
|
@ -127,9 +132,15 @@ function parseColumn() {
|
|||
} else {
|
||||
var data = "";
|
||||
}
|
||||
tl(acct.type, data, acct.domain, key);
|
||||
if(localStorage.getItem("catch_" + tlid)){
|
||||
var delc="true";
|
||||
}else{
|
||||
var delc="false";
|
||||
}
|
||||
tl(acct.type, data, acct.domain, key, delc);
|
||||
cardCheck(key);
|
||||
mediaCheck(key);
|
||||
catchCheck(key)
|
||||
});
|
||||
var width = localStorage.getItem("width");
|
||||
if (width) {
|
||||
|
|
|
@ -70,7 +70,7 @@ function pinutl(before,user, acct_id) {
|
|||
}).then(function(json) {
|
||||
var templete = parse(json, '', acct_id);
|
||||
if(!json[0]){
|
||||
templete="データはありません<br>";
|
||||
templete="";
|
||||
}
|
||||
var height = $("#his-data-content").height() - 245;
|
||||
$(".tab-content").css('height', height);
|
||||
|
@ -396,10 +396,14 @@ function showFrl(more, acct_id) {
|
|||
$("#his-follow-recom-contents").html("データはありません(Mastodon 2.4.3~が必要です)<br>");
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
console.log(json);
|
||||
if(!json[0]){
|
||||
templete="データはありません(Mastodon 2.4.3~)<br>";
|
||||
}
|
||||
console.log("No data");
|
||||
templete="データはありません(非フォローだけど絡みがある時に表示されます。)<br>";
|
||||
}else{
|
||||
var templete = userparse(json,'',acct_id);
|
||||
}
|
||||
|
||||
if (more) {
|
||||
$("#his-follow-recom-contents").append(templete);
|
||||
} else {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "TheDesk",
|
||||
"version": "15.8.0",
|
||||
"version": "15.9.0",
|
||||
"description": "TheDesk on Mastodonはシンプルと多機能を両立したデスクトップ向けクライアントです",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
|
Loading…
Reference in New Issue
Block a user