diff --git a/app/about.html b/app/about.html index 874deec6..63f25012 100644 --- a/app/about.html +++ b/app/about.html @@ -76,7 +76,7 @@ a,button{
TheDesk
-
バージョン
+
External version
Internal version
diff --git a/app/css/master.css b/app/css/master.css index 9b193194..74e7b81c 100644 --- a/app/css/master.css +++ b/app/css/master.css @@ -389,6 +389,9 @@ blockquote:before, .quote:before { font-size:16px; padding:4px; } +#something-wrong{ + width:100%; height:100%; position:absolute; display:flex; justify-content: center; align-items:center +} /*スクロールバー*/ ::-webkit-scrollbar { diff --git a/app/css/tl.css b/app/css/tl.css index 04fbd169..42df4407 100644 --- a/app/css/tl.css +++ b/app/css/tl.css @@ -224,7 +224,10 @@ grid-area: toot; cursor:text; user-select: auto; grid-area: additional; - } + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} .area-actions { padding:0; @@ -334,6 +337,7 @@ p:not(:last-child){ .notice-box { top: 0; background-color:var(--notfbox); + filter: brightness(110%); position: relative; margin-right: 10px; width:100%; @@ -501,7 +505,26 @@ p:not(:last-child){ .votebtn:hover{ background-color:var(--color); } - +.jump{ + display: inline-block; animation: jump 0.75s linear infinite; +} +@keyframes jump { + 0% { + transform: translateY(0); +} +25% { + transform: translateY(-16px); +} +50% { + transform: translateY(0); +} +75% { + transform: translateY(-8px); +} +100% { + transform: translateY(0); +} +} @keyframes fadeInDown { from { opacity: 0; diff --git a/app/css/userdata.css b/app/css/userdata.css index b6b82986..99219106 100644 --- a/app/css/userdata.css +++ b/app/css/userdata.css @@ -45,6 +45,7 @@ height:1.5rem; padding:0; background-color:#757575; text-align:center; padding:5px; margin-bottom:1px; + width:30%; } .his-field-content{ height:1.5rem; padding:0; padding-left:5px; @@ -89,4 +90,11 @@ #his-des .mention{ color: #039be5; cursor: pointer; +} +#his-float-blocked{ + display:flex; justify-content: center; align-items:center; + font-size:2rem; + width: 90%; + height: 100%; + position: absolute; } \ No newline at end of file diff --git a/app/js/lang/lang.en.js b/app/js/lang/lang.en.js index 37320ed2..4bb2b0da 100644 --- a/app/js/lang/lang.en.js +++ b/app/js/lang/lang.en.js @@ -91,6 +91,7 @@ var lang={ "lang_list_users":"Users list", "lang_list_nouser":"No users in this list.", "lang_list_add":"Add to the list", + "lang_list_add_misskey":"(perhaps this user has been listed)", "lang_list_remove":"Remove from the list", //tl/notification.js "lang_notf_new":" new notifications", @@ -148,6 +149,7 @@ var lang={ "lang_showontl_notf":"Notification ", "lang_showontl_domain":"Domain ", "lang_showontl_listwarn":"Follow to add this user to lists.", + "lang_showontl_verified":"This website is verified by owner at ", //parse "lang_parse_mentioned":" replied to you", "lang_parse_faved":" favourited your toot", diff --git a/app/js/lang/lang.ja.js b/app/js/lang/lang.ja.js index ba51e9ad..5930feef 100644 --- a/app/js/lang/lang.ja.js +++ b/app/js/lang/lang.ja.js @@ -91,6 +91,7 @@ var lang={ "lang_list_users":"ユーザー一覧", "lang_list_nouser":"ユーザーはいません", "lang_list_add":"リストに追加", + "lang_list_add_misskey":"(重複追加の可能性があります)", "lang_list_remove":"リストから削除", //tl/notification.js "lang_notf_new":"件の新しい通知", @@ -150,6 +151,7 @@ var lang={ "lang_showontl_notf":"通知", "lang_showontl_domain":"ドメイン", "lang_showontl_listwarn":"リストに追加するためにはフォローが必要です。", + "lang_showontl_verified":"このユーザーの所持するWebサイトであると証明されています。", //parse "lang_parse_mentioned":"が返信しました", "lang_parse_faved":"がお気に入り登録しました", diff --git a/app/js/login/instance.js b/app/js/login/instance.js index f768144c..0f770ed8 100644 --- a/app/js/login/instance.js +++ b/app/js/login/instance.js @@ -8,17 +8,17 @@ var idata={ "kirishima.cloud_glitch":"enabled", "kirishima.cloud_public":"パブリックタイムライン", "minohdon.jp":"instance", - "minohdon.jp_name":"箕面丼", + "minohdon.jp_name":"箕面どん", "minohdon.jp_letters":"500", "minohdon.jp_bbcode":"disabled", "minohdon.jp_markdown":"disabled", "minohdon.jp_glitch":"disabled", "knzk.me":"instance", - "knzk.me_name":"神崎丼", + "knzk.me_name":"Knzk", "knzk.me_letters":"5000", "knzk.me_bbcode":"disabled", "knzk.me_markdown":"disabled", - "knzk.me_glitch":"enabled", + "knzk.me_glitch":"disabled", "mastodos.com":"instance", "mastodos.com_name":"マストどす", "mastodos.com_letters":"500", @@ -32,7 +32,7 @@ var idata={ "dev.kirishima.cloud_markdown":"enabled", "dev.kirishima.cloud_glitch":"enabled", "mstdn.y-zu.org":"instance", - "mstdn.y-zu.org_name":"Yづドン!(502 BadGateway)", + "mstdn.y-zu.org_name":"Yづドン(Y-zuDon)", "mstdn.y-zu.org_letters":"500", "mstdn.y-zu.org_bbcode":"disabled", "mstdn.y-zu.org_markdown":"enabled", @@ -84,20 +84,14 @@ var idata={ "itabashi.0j0.jp_bbcode":"disabled", "itabashi.0j0.jp_markdown":"disabled", "itabashi.0j0.jp_glitch":"disabled", - "theboss.tech":"instance", - "theboss.tech_name":"theboss.tech", - "theboss.tech_letters":"1000", - "theboss.tech_bbcode":"disabled", - "theboss.tech_markdown":"disabled", - "theboss.tech_glitch":"disabled", "dtp-mstdn.jp":"instance", "dtp-mstdn.jp_name":"DTP鯖", "dtp-mstdn.jp_letters":"500", "dtp-mstdn.jp_bbcode":"disabled", "dtp-mstdn.jp_markdown":"disabled", "dtp-mstdn.jp_glitch":"disabled", - "misskey.xyz":"instance", - "misskey.xyz_name":"Misskey", + "misskey.xyz":"misskey", + "misskey.xyz_name":"misskey.xyz", "misskey.xyz_letters":"1000", "misskey.xyz_bbcode":"disabled", "misskey.xyz_markdown":"enabled", @@ -105,6 +99,28 @@ var idata={ "misskey.xyz_post":"Post", "misskey.xyz_fav":" reacted your post.", "misskey.xyz_bt":" reposted your post.", + "misskey.dev":"misskey", + "misskey.dev_name":"misskey.dev", + "misskey.dev_letters":"1024", + "misskey.dev_bbcode":"disabled", + "misskey.dev_markdown":"enabled", + "misskey.dev_public":"Global", + "misskey.dev_post":"Post", + "misskey.dev_fav":" reacted your post.", + "misskey.dev_bt":" reposted your post.", + "precure.ml":"instance", + "precure.ml_name":"キュアスタ!", + "precure.ml_letters":"1024", + "precure.ml_bbcode":"disabled", + "precure.ml_markdown":"disabled", + "precure.ml_post":"キュア!", + "precure.ml_glitch":"disabled", + "best-friends.chat":"instance", + "best-friends.chat_name":"Best Friends", + "best-friends.chat_letters":"500", + "best-friends.chat_bbcode":"disabled", + "best-friends.chat_markdown":"disabled", + "best-friends.chat_glitch":"disabled", }; localStorage.setItem("instance", JSON.stringify(idata)); diff --git a/app/js/login/login.js b/app/js/login/login.js index 30fbff5f..83cc982c 100644 --- a/app/js/login/login.js +++ b/app/js/login/login.js @@ -42,29 +42,24 @@ function ck() { } } var multi = localStorage.getItem("multi"); - if (!multi) { - var obj = []; - var json = JSON.stringify(obj); - localStorage.setItem("multi", json); - } else { + if(!multi || multi=="[]"){ + location.href="acct.html?mode=first&code=true" + }else{ var obj = JSON.parse(multi); - } Object.keys(obj).forEach(function(key) { var acct=obj[key]; if(acct.domain){ refresh(key,true) } }); - console.log(obj); - if (obj[0].domain) { +if (obj[0].domain) { $("#tl").show(); ticker(); multiSelector(); - } else { - $("#tl").show(); - $("#post-box").hide(); + verck(ver); } } +} ck(); //ログインポップアップ function login(url) { diff --git a/app/js/login/manager.js b/app/js/login/manager.js index e9dd6776..884b50eb 100644 --- a/app/js/login/manager.js +++ b/app/js/login/manager.js @@ -2,6 +2,15 @@ //最初に読むやつ function load() { $("#acct-list").html(""); + if(location.search){ + var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/); + var mode=m[1]; + var codex=m[2]; + if(mode=="first" && codex=="true"){ + $("body").addClass("first") + }else{ + } + } var prof = localStorage.getItem("prof"); $(".my-prof").attr("src", prof); var name = localStorage.getItem("name"); @@ -57,14 +66,8 @@ function load() { localStorage.setItem("acct", 0); var acctN = 0; } - var electron = require("electron"); - var remote=electron.remote; - var platform=remote.process.platform; - if(localStorage.getItem("winstore")!="localinstall"){ - $("#linux").prop("checked", false); - }else{ - $("#linux").prop("checked", true); - } + //全部チェックアリでいいと思うの + $("#linux").prop("checked", true); } //最初に読む @@ -262,6 +265,10 @@ function support() { templete = '' + idata[key + "_name"] + '(' + key + ')'; $("#support").append(templete); + }else if (instance == "misskey") { + templete = '' + idata[key + "_name"] + '(' + key + ')'; + $("#support").append(templete); } }); } @@ -270,7 +277,7 @@ function support() { function login(url) { var multi = localStorage.getItem("multi"); var obj = JSON.parse(multi); - if($('#misskey:checked').val()=="on" || url=="misskey.xyz"){ + if($('#misskey:checked').val()=="on"){ $("#misskey").prop("checked", true); misskeyLogin(url); return; @@ -458,7 +465,9 @@ function code(code) { console.log(obj); var json = JSON.stringify(obj); localStorage.setItem("multi", json); - + if($("body").hasClass("first")){ + location.href="index.html" + } load(); return; } @@ -546,6 +555,9 @@ function getdata(domain, at) { console.log(obj); var json = JSON.stringify(obj); localStorage.setItem("multi", json); + if($("body").hasClass("first")){ + location.href="index.html" + } load(); }); } diff --git a/app/js/platform/end.js b/app/js/platform/end.js index ac852838..9d18fe07 100644 --- a/app/js/platform/end.js +++ b/app/js/platform/end.js @@ -19,7 +19,7 @@ //メンションっぽかったら var ats=[]; ats = url.match( - /https:\/\/([-a-zA-Z0-9@.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/ + /https:\/\/([-a-zA-Z0-9.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/ ); console.log(toot); if(toot){ @@ -41,7 +41,8 @@ }else if(ats){ console.log(ats); if(ats[2]){ - if(ats[1]!="quesdon.rinsuki.net"){ + //Quesdon判定 + if(!~ats[2].indexOf("@")){ udgEx(ats[2]+"@"+ats[1],"main"); return false }else{ diff --git a/app/js/post/emoji.js b/app/js/post/emoji.js index 19750457..5f571c46 100644 --- a/app/js/post/emoji.js +++ b/app/js/post/emoji.js @@ -4,11 +4,11 @@ $("#emoji-before").addClass("disabled"); $("#emoji-next").addClass("disabled"); //絵文字ボタンのトグル -function emojiToggle() { +function emojiToggle(reaction) { var acct_id = $("#post-acct-sel").val(); var selin = $("#textarea").prop('selectionStart'); - if(!selin){ - selin=0; + if (!selin) { + selin = 0; } localStorage.setItem("cursor", selin); @@ -18,10 +18,10 @@ function emojiToggle() { $("#suggest").html(""); if (!localStorage.getItem("emoji_" + acct_id)) { var html = - ''; + ''; $("#emoji-list").html(html); } else { - emojiList('home'); + emojiList('home', reaction); } } else { $("#poll").addClass("hide") @@ -34,43 +34,97 @@ function emojiToggle() { } //絵文字リスト挿入 -function emojiGet(parse) { +function emojiGet(parse, started) { $('#emoji-list').html('Loading...'); var acct_id = $("#post-acct-sel").val(); var domain = localStorage.getItem("domain_" + acct_id); - var start = "https://" + domain + "/api/v1/custom_emojis"; - fetch(start, { - method: 'GET', - headers: { - 'content-type': 'application/json' - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - if (parse == "true") { - $('#emoji-list').html('Parsing...'); - //絵文字をマストドン公式と同順にソート - json.sort(function(a, b) { - if (a.shortcode < b.shortcode) return -1; - if (a.shortcode > b.shortcode) return 1; - return 0; + if (localStorage.getItem("mode_" + domain) != "misskey") { + var start = "https://" + domain + "/api/v1/custom_emojis"; + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json' + }, + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + if (parse == "true") { + $('#emoji-list').html('Parsing...'); + //絵文字をマストドン公式と同順にソート + json.sort(function (a, b) { + if (a.shortcode < b.shortcode) return -1; + if (a.shortcode > b.shortcode) return 1; + return 0; + }); + localStorage.setItem("emoji_" + acct_id, JSON.stringify(json)); + } else { + localStorage.setItem("emoji_" + acct_id, JSON.stringify(json)); + } + localStorage.setItem("emojiseek", 0); + if (!started) { + emojiList('home') + } + }); + } else { + var start = "https://" + domain + "/api/meta"; + fetch(start, { + method: 'POST', + headers: { + 'content-type': 'application/json' + }, + }).then(function (response) { + return response.json(); + }).catch(function (error) { + todo(error); + console.error(error); + }).then(function (json) { + if (json.enableEmojiReaction) { + localStorage.setItem("emojiReaction_" + acct_id, "true"); + } else { + localStorage.setItem("emojiReaction_" + acct_id, "disabled"); + } + var emojis = json.emojis; + var md = []; + Object.keys(emojis).forEach(function (key) { + var emoji = emojis[key]; + md.push({ + "shortcode": emoji.name, + "url": emoji.url + }) }); - localStorage.setItem("emoji_" + acct_id, JSON.stringify(json)); - } else { - localStorage.setItem("emoji_" + acct_id, JSON.stringify(json)); - } - localStorage.setItem("emojiseek", 0); - emojiList('home') - }); + if (parse == "true") { + $('#emoji-list').html('Parsing...'); + //絵文字をマストドン公式と同順にソート + md.sort(function (a, b) { + if (a.shortcode < b.shortcode) return -1; + if (a.shortcode > b.shortcode) return 1; + return 0; + }); + localStorage.setItem("emoji_" + acct_id, JSON.stringify(md)); + } else { + localStorage.setItem("emoji_" + acct_id, JSON.stringify(md)); + } + localStorage.setItem("emojiseek", 0); + if (!started) { + emojiList('home') + } + }); + } } //リストの描画 -function emojiList(target) { +function emojiList(target, reaction) { $("#now-emoji").text(lang.lang_emoji_custom); var acct_id = $("#post-acct-sel").val(); + if (reaction && localStorage.getItem("emojiReaction_" + acct_id) != "true") { + console.error("Disabled") + clear() + hide(); + return false; + } var start = localStorage.getItem("emojiseek"); if (target == "next") { var start = start * 1 + 127; @@ -103,8 +157,14 @@ function emojiList(target) { for (i = start; i < start + 126; i++) { var emoji = obj[i]; if (emoji) { - html = html + ''; + if (reaction) { + html = html + ''; + } else { + html = html + ''; + } + } } $("#emoji-list").html(html); @@ -114,14 +174,19 @@ function emojiList(target) { function emojiInsert(code, del) { var now = $("#textarea").val(); var selin = localStorage.getItem("cursor"); + if (localStorage.getItem("emoji-zero-width") == "yes") { + var brank = "​"; + } else { + var brank = " "; + } console.log(selin); var now = $("#textarea").val(); - if(selin>0){ - var before = now.substr(0, selin); - var after = now.substr(selin, now.length); - newt = before + " "+ code+" " + after; - }else{ - newt = code+" "; + if (selin > 0) { + var before = now.substr(0, selin); + var after = now.substr(selin, now.length); + newt = before + brank + code + brank + after; + } else { + newt = code + brank; } if (!del) { $("#textarea").val(newt); @@ -129,20 +194,20 @@ function emojiInsert(code, del) { } else { var regExp = new RegExp(del, "g"); var now = now.replace(regExp, ""); - $("#textarea").val(now + " " + code); + $("#textarea").val(now + brank + code); } - + $("#textarea").focus(); var selin = $("#textarea").prop('selectionStart'); - if(!selin){ - selin=0; + if (!selin) { + selin = 0; } localStorage.setItem("cursor", selin); } //改行挿入 function brInsert(code) { - if(!$('#post-box').hasClass("appear")){ - localStorage.setItem("nohide",true); + if (!$('#post-box').hasClass("appear")) { + localStorage.setItem("nohide", true); show(); } var now = $("#textarea").val(); diff --git a/app/js/post/misskeystatus.js b/app/js/post/misskeystatus.js index 6724c2f6..84366e83 100644 --- a/app/js/post/misskeystatus.js +++ b/app/js/post/misskeystatus.js @@ -65,7 +65,7 @@ function reactiontoggle(id,acct_id,tlid){ var json = httpreq.response; console.log(json); if(json.reactionCounts){ - var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"]; + var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding","star"]; for(var i=0;i'+lang.lang_list_show+'/'+lang.lang_list_users+'
'; - }); - $("#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+':'+lang.lang_list_show+'
'; + }); + $("#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+':'+lang.lang_list_show+'/'+lang.lang_list_users+'
'; + }); + $("#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 + "/api/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+"
"; Object.keys(json).forEach(function(key) { var list = json[key]; - lists = lists + ''+escapeHTML(list.title)+'
'; }); $("#his-lists-a").html(lists); @@ -144,28 +192,66 @@ function hisList(user,acct_id){ var lists = lang.lang_list_remove+"
"; Object.keys(json).forEach(function(key) { var list = json[key]; - lists = lists + ''+list.title+'
'; }); $("#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+':'+lang.lang_list_show+'/'+lang.lang_list_add+lang.lang_list_add_misskey+'
'; + }); + $("#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 +262,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; diff --git a/app/js/tl/misskeyparse.js b/app/js/tl/misskeyparse.js index 485ab460..c8d6ca2d 100644 --- a/app/js/tl/misskeyparse.js +++ b/app/js/tl/misskeyparse.js @@ -160,6 +160,15 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { }else{ disname=""; } + //絵文字があれば + Object.keys(toot.user.emojis).forEach(function(key5) { + var emoji = toot.user.emojis[key5]; + var shortcode = emoji.name; + var emoji_url = ' :'+shortcode+': '; + var regExp = new RegExp(":" + shortcode + ":", "g"); + dis_name = dis_name.replace(regExp, emoji_url); + }); if (mix == "notf") { if (gif == "yes") { noticeavatar = toot.user.avatarUrl; @@ -192,24 +201,25 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { "congrats":"🎉", "amgry":"💢", "confused":"😥", - "pudding":"🍮" + "pudding":"🍮", + "star":"⭐" } var icon=reactions[toot.reaction]; - var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"]; - for(var i=0;i'; + } + } + } + } + } }else{ var icon = 'info'; } @@ -250,19 +260,19 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { var ipc = electron.ipcRenderer; var os = electron.remote.process.platform; var options = { - body: toot.account.display_name+"(" + toot.account.acct +")"+what+"\n\n"+$.strip_tagstemp(toot.status.content), - icon: toot.account.avatar + body: toot.user.name+"(" + toot.user.username +")"+what+"\n\n"+$.strip_tagstemp(toot.note.text), + icon: toot.user.avatarUrl }; if(os=="darwin"){ var n = new Notification('TheDesk:'+domain, options); }else{ ipc.send('native-notf', [ 'TheDesk:'+domain, - toot.account.display_name+"(" + toot.account.acct +")"+what+"\n\n"+$.strip_tagstemp(toot.status.content), - toot.account.avatar, + toot.user.name+"(" + toot.user.username +")"+what+"\n\n"+$.strip_tagstemp(toot.note.text), + toot.user.avatarUrl, "toot", acct_id, - toot.status.id + toot.note.id ]); } } @@ -395,7 +405,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { var emojick = toot.emojis[0]; }else{ var emojick=false; - } + } //デフォ絵文字 if(content){ //MFM @@ -403,17 +413,35 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { content=content.replace(/`(.+)`/gi, '$1') content=content.replace(/(http(s)?:\/\/[\x21-\x7e]+)/gi, '$1') content=content.replace(/\(\(\((.+)\)\)\)/gi, '$1') - content=content.replace(/(.+)<\/motion>/gi, '$1') + content=content.replace(/<motion>(.+)<\/motion>/gi, '$1') content=content.replace(/\*\*\*([^*]+)\*\*\*/gi, '$1') content=content.replace(/\*\*([^*]+)\*\*/gi, '$1') content=content.replace(/^(.+)\s(検索|search)$/gmi, '
search
') content=content.replace(/\[(.+)\]\($1'); - + content=content.replace(/<center>/gi, '
') + content=content.replace(/<\/center>/gi, '
') + content=content.replace(/<flip>(.+)<\/flip>/gi, '$1') + content=content.replace(/<small>(.+)<\/small>/gi, '$1') + content=content.replace(/<i>(.+)<\/i>/gi, '$1') + content=content.replace(/<spin>(.+)<\/spin>/gi, '$1') + content=content.replace(/\*\*(.+)\*\*/gi, '$1') + content=content.replace(/<jump>(.+)<\/jump>/gi, '$1') content=twemoji.parse(content); }else{ content=""; } - + //絵文字があれば + if (emojick) { + Object.keys(toot.emojis).forEach(function(key5) { + var emoji = toot.emojis[key5]; + var shortcode = emoji.name; + var emoji_url = ' :'+shortcode+': '; + var regExp = new RegExp(":" + shortcode + ":", "g"); + content = content.replace(regExp, emoji_url); + spoil = spoil.replace(regExp, emoji_url); + }); + } if(dis_name){ dis_name=twemoji.parse(dis_name); }else{ @@ -606,8 +634,46 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { }); poll='
'+poll+'
'; } + /* + + */ + if(localStorage.getItem("emojiReaction_" + acct_id)=="disabled"){ + var freeReact="hide"; + }else{ + var freeReact=""; + } //Reactions if(toot.reactionCounts){ + var addReact=""; + Object.keys(toot.reactionCounts).forEach(function(keye) { + var thisReact=toot.reactionCounts[keye]; + if(keye=="like"){ var defaultEmoji=true;} + else if(keye=="love"){ var defaultEmoji=true; } + else if(keye=="laugh"){ var defaultEmoji=true; } + else if(keye=="hmm"){ var defaultEmoji=true; } + else if(keye=="surprise"){ var defaultEmoji=true; } + else if(keye=="congrats"){ var defaultEmoji=true; } + else if(keye=="angry"){ var defaultEmoji=true; } + else if(keye=="confused"){ var defaultEmoji=true; } + else if(keye=="pudding"){ var defaultEmoji=true; } + else{ + var obj = JSON.parse(localStorage.getItem("emoji_" + acct_id)); + if(obj){ + var num = obj.length; + var ehtml=""; + for (i = 0; i < num; i++) { + var emoji = obj[i]; + if (":"+emoji.shortcode+":"==keye) { + if (emoji) { + addReact=addReact+ ''+thisReact+ + ''; + } + } + } + } + } + }); if(toot.reactionCounts.like){ var like=toot.reactionCounts.like; var likehide=""; @@ -676,7 +742,10 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { var like=0;var love=0;var laugh=0;var hmm=0;var surprise=0;var congrats=0;var angry=0;var confused=0;var pudding=0; var likehide="hide";var lovehide="hide";var laughhide="hide";var hmmhide="hide";var suphide="hide";var conghide="hide";var anghide="hide";var confhide="hide";var pudhide="hide"; var fullhide="hide"; - } + } + if(!addReact && likehide=="hide"&& lovehide=="hide"&& laughhide=="hide"&& hmmhide=="hide"&& suphide=="hide"&& conghide=="hide"&& anghide=="hide"&& confhide=="hide"&& pudhide=="hide"){ + var fullhide="hide"; + } if(toot.myReaction){ var reacted=toot.myReaction; }else{ @@ -687,6 +756,11 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { content='This post has no content. It may be media-only, private or deleted.'; } var trans=""; + if(toot.user.emojis){ + var actemojick = toot.user.emojis[0]; + }else{ + var actemojick=false; + } templete = templete + '
' + @@ -711,8 +785,8 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { api_spoil + ' cw_text_' + toot.id + '">' + spoil + spoiler_show + '' + '' + viewer + '' + - '
'+analyze+ - '
'+analyze+ + '
'+twemoji.parse("👍")+''+like+ ''+twemoji.parse("💓")+''+love+ @@ -730,7 +804,9 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { ',\'' + tlid +'\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">'+twemoji.parse("😥")+''+confused+ ''+twemoji.parse("🍮")+''+pudding+ - '
'+poll + mentions + tags + '
' + + '
'+addReact+ + 'add_box
' + +poll + mentions + tags + '
' + '
'+ '
' + '
'+vis+'
'+ diff --git a/app/js/tl/notification.js b/app/js/tl/notification.js index 0a95417e..40b7b86c 100644 --- a/app/js/tl/notification.js +++ b/app/js/tl/notification.js @@ -60,13 +60,13 @@ function notfColumn(acct_id, tlid, sys){ var ipc = electron.ipcRenderer; var os = electron.remote.process.platform; var options = { - body: ct+lang_notf_new[lang], + body: ct+lang.lang_notf_new, icon: localStorage.getItem("prof_"+acct_id) }; if(os=="darwin"){ var n = new Notification('TheDesk:'+domain, options); }else{ - ipc.send('native-notf', ['TheDesk:'+domain,ct+lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]); + ipc.send('native-notf', ['TheDesk:'+domain,ct+lang.lang_notf_new,localStorage.getItem("prof_"+acct_id)]); } } @@ -233,13 +233,13 @@ function notfCommon(acct_id, tlid, sys) { var ipc = electron.ipcRenderer; var os = electron.remote.process.platform; var options = { - body: ct+lang_notf_new[lang], + body: ct+lang.lang_notf_new[lang], icon: localStorage.getItem("prof_"+acct_id) }; if(os=="darwin"){ var n = new Notification('TheDesk:'+domain, options); }else{ - ipc.send('native-notf', ['TheDesk:'+domain,ct+lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]); + ipc.send('native-notf', ['TheDesk:'+domain,ct+lang.lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]); } } @@ -482,23 +482,12 @@ function notfCanceler(acct){ function allNotfRead(){ console.log(localStorage.getItem("notf-fav_2")); var multi = localStorage.getItem("multi"); - if (!multi) { - var obj = [{ - at: localStorage.getItem("acct_0_at"), - name: localStorage.getItem("name_0"), - domain: localStorage.getItem("domain_0"), - user: localStorage.getItem("user_0"), - prof: localStorage.getItem("prof_0"), - id: localStorage.getItem("user-id_0") - }]; - var json = JSON.stringify(obj); - localStorage.setItem("multi", json); - } else { + if (multi) { var obj = JSON.parse(multi); - } Object.keys(obj).forEach(function(key) { console.log(key); notfCanceler(key) }); } +} allNotfRead() \ No newline at end of file diff --git a/app/js/tl/parse.js b/app/js/tl/parse.js index 1f0e1541..05e97ecd 100644 --- a/app/js/tl/parse.js +++ b/app/js/tl/parse.js @@ -33,6 +33,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { var ltr = localStorage.getItem("letters"); var gif = localStorage.getItem("gif"); var imh = localStorage.getItem("img-height"); + if(!imh){ + imh=200; + } if(imh=="full"){ imh="auto"; }else{ @@ -757,12 +760,12 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) { '
' + '
'+tickerdom+'' + spoil + "" + spoiler_show + - '' + content + + '' + content +poll+ '' + '' + viewer + '' + '
' + analyze + '' + - '' +poll+ mentions + tags + '
' + + '' + mentions + tags + '' + '
'+ '
' + '
'+vis+'
'+ diff --git a/app/js/tl/src.js b/app/js/tl/src.js index 9b1755c9..7f6bcbb6 100644 --- a/app/js/tl/src.js +++ b/app/js/tl/src.js @@ -15,7 +15,7 @@ function src(mode) { var q = $("#src").val(); var acct_id = $("#src-acct-sel").val(); if(acct_id=="tootsearch"){ - tootsearch(q); + tsAdd(q) return false; } localStorage.setItem("last-use", acct_id); @@ -73,9 +73,26 @@ function src(mode) { jQuery("time.timeago").timeago(); }); } -function tootsearch(q){ +function tsAdd(q){ + var add = { + domain: acct_id, + type: "tootsearch", + data: q + }; + 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); + localStorage.setItem("column", json); + parseColumn(); +} +function tootsearch(tlid,q){ var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q console.log(start) + $("#notice_" + tlid).text("tootsearch("+q+")"); + $("#notice_icon_" + tlid).text("search"); fetch(start, { method: 'GET', headers: { @@ -90,17 +107,68 @@ function tootsearch(q){ var templete=""; var json=raw.hits.hits; console.log(json); - Object.keys(json).forEach(function(key5) { - var toot = json[key5]["_source"]; - console.log(toot); - if(toot && toot.account){ - templete = templete+parse([toot],'noauth'); + var max_id = raw["hits"].length; + for(var i=0;i
'; } - $("#src-contents").html("Tootsearch("+lang.lang_src_ts+")
" + templete); + $("#timeline_" + tlid).html(templete); + + jQuery("time.timeago").timeago(); + }); +} +function moreTs(tlid,q){ + var sid = $("#timeline_" + tlid + " .ts-marker").last().attr("data-maxid"); + moreloading=true; + var start = "https://tootsearch.chotto.moe/api/v1/search?from="+sid+"&sort=created_at%3Adesc&q=" + q + console.log(start) + $("#notice_" + tlid).text("tootsearch("+q+")"); + $("#notice_icon_" + tlid).text("search"); + fetch(start, { + method: 'GET', + headers: { + 'content-type': 'application/json' + }, + }).then(function(response) { + return response.json(); + }).catch(function(error) { + todo(error); + console.error(error); + }).then(function(raw) { + var templete=""; + var json=raw.hits.hits; + console.log(json); + var max_id = raw["hits"].length; + for(var i=0;i'; + } + $("#timeline_" + tlid).append(templete); + jQuery("time.timeago").timeago(); }); } diff --git a/app/js/tl/tl.js b/app/js/tl/tl.js index b73709af..d6451b6d 100644 --- a/app/js/tl/tl.js +++ b/app/js/tl/tl.js @@ -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,13 @@ 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); + var start = "wss://" + domain + + "/user-list?i=" + at+"&listId="+data; } }else{ var misskey=false; @@ -382,6 +384,10 @@ function moreload(type, tlid) { }else if (type == "notf") { notfmore(tlid); return; + }else if (type == "tootsearch") { + var data=obj[tlid].data; + moreTs(tlid,data); + return; } moreloading=true; localStorage.setItem("now", type); @@ -441,8 +447,6 @@ function moreload(type, tlid) { headers: hdr }; } - - fetch(start, i).then(function(response) { return response.json(); }).catch(function(error) { @@ -463,6 +467,119 @@ 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(); + }); + } +} +//TL再取得 +function reloadTL(type, data, acct_id, key, delc,voice){ + tl(type, data, acct_id, key, delc,voice,""); +} //WebSocket切断 function tlCloser() { @@ -567,6 +684,8 @@ function cap(type, data, acct_id) { var response= "Local+" }else if (type == "webview") { var response="Twitter" + }else if (type == "tootsearch") { + var response="tootsearch(" + data + ")"; } return response; } @@ -624,7 +743,7 @@ function icon(type) { } else if (type == "pub-media") { var response="language"; } else if (type == "tag") { - var response="search"; + var response="whatshot"; } else if (type == "list") { var response="view_headline"; } else if (type == "notf") { @@ -639,6 +758,8 @@ function icon(type) { var response="merge_type"; }else if (type == "webview") { var response="language"; + }else if (type == "tootsearch") { + var response="search"; } return response; } diff --git a/app/js/ui/layout.js b/app/js/ui/layout.js index b024f4e6..389117f1 100644 --- a/app/js/ui/layout.js +++ b/app/js/ui/layout.js @@ -30,11 +30,7 @@ function parseColumn() { } tlCloser(); var multi = localStorage.getItem("multi"); - if (!multi) { - var obj = []; - var json = JSON.stringify(obj); - localStorage.setItem("multi", json); - } else { + if (multi) { var obj = JSON.parse(multi); var templete; @@ -130,6 +126,21 @@ function parseColumn() { } var html =webviewParse("https://tweetdeck.twitter.com",key,insert,icnsert,css); $("#timeline-container").append(html); + }else if(acct.type=="tootsearch"){ + if(!acct.left_fold){ + basekey=key; + } + var width = localStorage.getItem("width"); + if (width) { + var css=" min-width:"+width+"px;" + } + var anime = localStorage.getItem("animation"); + if (anime=="yes" || !anime) { + var animecss="box-anime"; + }else{ + var animecss=""; + } + unstreamingTL(acct.type,key,basekey,insert,icnsert,acct.left_fold,css,animecss,acct.data); }else{ var width = localStorage.getItem("width"); if (width) { @@ -168,7 +179,7 @@ function parseColumn() { } var html='
'+ '
'+exclude+left_hold+'perm_mediaOn'+lang.lang_layout_mediafil +'
'; + $("#timeline-container").append(basehtml); + var left_hold='view_agenda'+lang.lang_layout_leftFold+'
'; + }else{ + var left_hold='view_column'+lang.lang_layout_leftUnfold+'
'; + } + var html='
'+ + '
'+left_hold+'perm_mediaOn'+lang.lang_layout_mediafil +'
'+lang.lang_layout_headercolor +'
'+lang.lang_layout_nodata +'
' + $('#timeline_box_' + basekey + '_parentBox').append(html); + tootsearch(key,q); + cardCheck(key); + ebtCheck(key); + mediaCheck(key); + catchCheck(key); + voiceCheck(key); + return true; +} function leftFoldSet(key){ var multi = localStorage.getItem("column"); var obj = JSON.parse(multi); diff --git a/app/js/ui/menu.js b/app/js/ui/menu.js index 1fda04bf..429fba4e 100644 --- a/app/js/ui/menu.js +++ b/app/js/ui/menu.js @@ -19,6 +19,8 @@ function menu(){ $("#menu-bar").html("TheDesk "+localStorage.getItem("ver")); $(".menu-content").addClass("hide"); $("#add-box").removeClass("hide"); + $("#left-menu div").removeClass("active"); + $("#addColumnMenu").addClass("active"); }else{ $('#menu').fadeOut() $("#menu").removeClass("appear") diff --git a/app/js/ui/post-box.js b/app/js/ui/post-box.js index 8101f1e3..7c57328e 100644 --- a/app/js/ui/post-box.js +++ b/app/js/ui/post-box.js @@ -5,6 +5,10 @@ function hide() { $('#post-box').fadeOut() $("#post-box").removeClass("appear") $("#emoji").addClass("hide") + $("#left-side").show(); + $("#default-emoji").show(); + $("#unreact").show(); + $("#addreact").addClass("hide"); } //最小化 function mini() { diff --git a/app/js/ui/sort.js b/app/js/ui/sort.js index 157c5e36..8286d16b 100644 --- a/app/js/ui/sort.js +++ b/app/js/ui/sort.js @@ -58,6 +58,8 @@ function Scap(type, data) { return "Integrated" }else if (type == "webview") { return "Twitter" + }else if (type == "tootsearch") { + return "tootsearch(" + data + ")" }else{ console.log(type); } diff --git a/app/js/ui/spotify.js b/app/js/ui/spotify.js index 259c6018..2bf196fd 100644 --- a/app/js/ui/spotify.js +++ b/app/js/ui/spotify.js @@ -214,50 +214,4 @@ $("#npbtn").click(function() { $("#npbtn").bind('contextmenu', function() { nowplaying('itunes'); return false; -}); -/*cinderella NP*/ -function cgNP(q){ - suggest = "https://cg.toot.app/api/v1/?song=" + q - console.log(suggest) - fetch(suggest, { - method: 'GET', - headers: { - 'content-type': 'application/json' - }, - }).then(function(response) { - return response.json(); - }).catch(function(error) { - todo(error); - console.error(error); - }).then(function(json) { - console.log(json); - var electron = require("electron"); - var ipc = electron.ipcRenderer; - var flag=localStorage.getItem("artwork"); - if(flag){ - var img=json.album.artwork; - ipc.send('bmp-image', [img,0]); - } - var content=localStorage.getItem("np-temp"); - if(!content || content==""){ - var content="#NowPlaying {song} / {album} / {artist}\n{url}"; - } - var regExp = new RegExp("{song}", "g"); - content = content.replace(regExp, json.name); - var regExp = new RegExp("{album}", "g"); - content = content.replace(regExp, json.album.name); - var regExp = new RegExp("{artist}", "g"); - content = content.replace(regExp, json.artist.text); - var regExp = new RegExp("{composer}", "g"); - content = content.replace(regExp, json.composer); - var regExp = new RegExp("{lyricist}", "g"); - content = content.replace(regExp, json.lyricist); - var regExp = new RegExp("{bpm}", "g"); - content = content.replace(regExp, json.bpm); - var regExp = new RegExp("{genre}", "g"); - content = content.replace(regExp, ""); - var regExp = new RegExp("{url}", "g"); - content = content.replace(regExp, ""); - $("#textarea").val(content); - }); -} \ No newline at end of file +}); \ No newline at end of file diff --git a/app/js/userdata/showOnTL.js b/app/js/userdata/showOnTL.js index 4b8728d8..7c70667b 100644 --- a/app/js/userdata/showOnTL.js +++ b/app/js/userdata/showOnTL.js @@ -117,7 +117,7 @@ function udg(user, acct_id) { var emoji = json.emojis[key5]; var shortcode = emoji.shortcode; var emoji_url = ''; + '" class="emoji-img" data-emoji="'+shortcode+'" draggable="false">'; var regExp = new RegExp(":" + shortcode + ":", "g"); dis_name = dis_name.replace(regExp, emoji_url); note = note.replace(regExp, emoji_url); @@ -143,8 +143,15 @@ function udg(user, acct_id) { for(var i=0;i'+fname+''+fval+''; + note=note+''+fname+''+fval+''; } note=note+'' $("#his-des").html(twemoji.parse(note)); @@ -392,6 +399,12 @@ function relations(user, acct_id) { $("#his-end-btn").removeClass("endorsed"); $("#his-end-btn").text(lang.lang_status_endorse) } + //Blocked + if(json.blocked_by){ + $("#his-float-timeline").hide(); + $("#his-float-blocked").show(); + $("#his-follow-btn").hide() + } }); } @@ -453,6 +466,8 @@ function reset(){ $("#his-f4-name").val(""); $("#his-f4-val").val(""); $("#his-endorse").html(""); $("#his-openin").attr("data-href", ""); + $("#his-float-timeline").show(); + $("#his-float-blocked").hide(); } $('#my-data-nav .custom-tab').on('click',function(){ var target=$(this).find("a").attr("go"); diff --git a/app/main.js b/app/main.js index 7ebc5197..03544790 100644 --- a/app/main.js +++ b/app/main.js @@ -1,4 +1,4 @@ -'use strict'; + var dir='file://' + __dirname; var base=dir + '/view/'; // Electronのモジュール @@ -50,19 +50,14 @@ try { }; // デフォルトバリュー } -try { - var lang = fs.readFileSync(lang_path, 'utf8'); -} catch (e) { - var langs=app.getLocale(); - if(~langs.indexOf("ja")){ - lang="ja"; - }else{ - lang="en"; +function isFile(file){ + try { + fs.statSync(file); + return true + } catch (err) { + if (err.code === 'ENOENT') return false } - fs.writeFileSync(lang_path,lang); } -console.log(app.getLocale()); -console.log("launch:"+lang); // 全てのウィンドウが閉じたら終了 app.on('window-all-closed', function() { if (process.platform != 'darwin') { @@ -70,8 +65,31 @@ app.on('window-all-closed', function() { app.quit(); } }); +// macOSでウィンドウを閉じた後に再度開けるようにする +app.on('activate', function() { + if (mainWindow == null) { + createWindow(); + } +}); function createWindow() { + if(isFile(lang_path)) { + console.log("exist"); + var lang = fs.readFileSync(lang_path, 'utf8'); + } else { + var langs=app.getLocale(); + console.log(langs); + if(~langs.indexOf("ja")){ + lang="ja"; + }else{ + lang="en"; + } + fs.mkdir(app.getPath("userData"), function (err) { + fs.writeFileSync(lang_path,lang); + }); + } + console.log(app.getLocale()); + console.log("launch:"+lang); // メイン画面の表示。ウィンドウの幅、高さを指定できる var platform=process.platform; var bit=process.arch; @@ -109,6 +127,7 @@ function createWindow() { } // ウィンドウが閉じられたらアプリも終了 mainWindow.on('closed', function() { + electron.ipcMain.removeAllListeners(); mainWindow = null; }); mainWindow.on('close', function() { @@ -131,7 +150,7 @@ function createWindow() { var platform=process.platform; var bit=process.arch; if(platform=="darwin"){ - Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang,mainWindow,false))); + Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang,mainWindow,false,dir))); } //CSS css.css(mainWindow); diff --git a/app/main/language.js b/app/main/language.js index 92d547d4..94c3279f 100644 --- a/app/main/language.js +++ b/app/main/language.js @@ -1,5 +1,5 @@ // Create the Application's main menu -function templete(lang,mainWindow,packaged){ +function templete(lang,mainWindow,packaged,dir){ const electron = require("electron"); const app = electron.app; const BrowserWindow = electron.BrowserWindow; @@ -74,7 +74,7 @@ function templete(lang,mainWindow,packaged){ "transparent": false, // ウィンドウの背景を透過 "frame": false, // 枠の無いウィンドウ "resizable": false }); - window.loadURL('file://' + __dirname + '/about.html?ver='+ver); + window.loadURL(dir + '/about.html?ver='+ver); } }, { type: "separator" }, { label: dict.quit[lang], accelerator: "Command+Q", click: function() { app.quit(); }} diff --git a/app/package.json b/app/package.json index 3756ab1d..77eac9f3 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "thedesk", - "version": "18.1.0", + "version": "18.2.0", "description": "TheDesk is a Mastodon client for PC.", "main": "main.js", "scripts": { diff --git a/app/view/en/acct.html b/app/view/en/acct.html index 77f68349..efdbe7df 100644 --- a/app/view/en/acct.html +++ b/app/view/en/acct.html @@ -18,6 +18,14 @@ body,html{overflow-y: scroll;} .colorsel{ display:flex; } .card .colorsel div:not(.exc){width:20px;height:20px;} .card .colorsel div.exc{width:40px;height:20px;} +.first{ + display:flex; + justify-content: center; + align-items:center +} +.first .hide-first{ + display:none; +}
@@ -205,7 +204,6 @@ var tlid=0;
Refresh emojis list - cancel
@@ -259,12 +257,8 @@ var tlid=0;
-
- WIP -
@@ -274,9 +268,9 @@ var tlid=0;

- days - hours - minutes + day(s) + hour(s) + minute(s)
@@ -360,7 +354,6 @@ var tlid=0;