TheDesk Mio (15.7.0)

This commit is contained in:
cutls 2018-06-17 23:26:45 +09:00
parent a8e0133edb
commit f42f6e2572
21 changed files with 426 additions and 267 deletions

View File

@ -1,23 +1,29 @@
## For Astarte(kirishima.cloud), My Primary Instance
TheDesk :thedesk: Mio (ver.6)
・ウィンドウの最大化を記憶するように
・v2.4.0/1対応(bot表示/v2-search/rc時のトレンドタグ)
・NanoウィンドウのUI改善
・キーボードショートカット追加(Ctrl+Shift+1/2/3で特定文字を入力)
・Spotifyのアートワーク投稿を任意に
・さまざまなバグを修正
TheDesk :thedesk: Mio (ver.7)
・公開範囲情報の記録がインスタンスごとに(これにより一度記録がリセットされます。)
・インスタンスのユーザー設定に従った公開範囲指定(アカウント設定より情報更新をしてください。)
・インスタンスカラーを設定できるように(アカウント設定から)
・スクリーンショット(魚拓)機能の高速化
・Integrated TLのバグ修正
・キーボードショートカットのバグ修正
・コピペのバグ改善(ただし、ワンクリックコピーで複数の絵文字があるトゥートをコピーするとバグが発生します)
・CWのバグ改善
・[b]DTP鯖(dtp-mstdn.jp)( #dtp )とtheboss.tech( #theboss_tech )をサポート[/b]タグ付きトゥート時、デフォルトタグがないとき確認ダイアログが表示されます。
ほか
https://thedesk.top
:github: https://github.com/cutls/TheDesk #Desk #DeskUpdate
## For Other Instances
PCクライアントTheDesk Mio (ver.3)
・ウィンドウの最大化を記憶するように
・v2.4.0/1対応(bot表示/v2-search/rc時のトレンドタグ)
・NanoウィンドウのUI改善
・キーボードショートカット追加(Ctrl+Shift+1/2/3で特定文字を入力)
・Spotifyのアートワーク投稿を任意に
・さまざまなバグを修正
PCクライアントTheDesk Mio (ver.7)
・公開範囲情報の記録がインスタンスごとに(これにより一度記録がリセットされます。)
・インスタンスのユーザー設定に従った公開範囲指定(アカウント設定より情報更新をしてください。)
・インスタンスカラーを設定できるように(アカウント設定から)
・スクリーンショット(魚拓)機能の高速化
・Integrated TLのバグ修正
・キーボードショートカットのバグ修正
・コピペのバグ改善(ただし、ワンクリックコピーで複数の絵文字があるトゥートをコピーするとバグが発生します)
・CWのバグ改善
・DTP鯖(dtp-mstdn.jp)( #dtp )とtheboss.tech( #theboss_tech )をサポート。タグ付きトゥート時、デフォルトタグがないとき確認ダイアログが表示されます。
https://thedesk.top

View File

@ -15,6 +15,9 @@
body,html{overflow-y: scroll;}
#acct-list{display:flex; flex-wrap:wrap; color:white; align-items: flex-start}
.lts{font-size:150%}
.colorsel{ display:flex; }
.card .colorsel div:not(.exc){width:20px;height:20px;}
.card .colorsel div.exc{width:40px;height:20px;}
</style>
<meta charset="utf-8">
</head>
@ -68,6 +71,6 @@ body,html{overflow-y: scroll;}
マストドンバージョン:<span id="ins-ver"></span><br>
<script type="text/javascript" src="./js/ui/theme.js"></script>
<script type="text/javascript" src="./js/platform/end.js"></script>
<script type="text/javascript" src="./js/login/manager.js"></script>
<script type="text/javascript" src="./js/login/instance.js"></script>
<script type="text/javascript" src="./js/login/manager.js"></script>
<script type="text/javascript" src="./js/tl/date.js"></script>

View File

@ -254,7 +254,7 @@ blockquote:before, .quote:before {
/*スクロールバー*/
::-webkit-scrollbar {
width: 5px;
height: 5px;
height: 10px;
background: rgba(0, 0, 0, 0.05);
}
::-webkit-scrollbar-track {

View File

@ -24,7 +24,7 @@
<script type="text/javascript" src="./js/common/modal.js"></script>
<script type="text/javascript" src="./js/ui/jquery-ui.min.js"></script>
<script>
var ver="Mio (15.6.0)";
var ver="Mio (15.7.0)";
//betaを入れるとバージョンチェックしない
//var ver="beta";
var acct_id=0;
@ -236,7 +236,7 @@ var tlid=0;
</span>
<!--Markdown-->
<div class="row" style="margin-bottom:0">
<div class="markdown mize">
<div class="markdown mize hide">
<div class="col s12">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i>
@ -687,38 +687,20 @@ var tlid=0;
<h3>TheDesk</h3>
<a href="https://thedesk.top" target="_blank">HP</a><br>
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br><br>
<div id="release-Mio_15-6-0" style="display:none">
<h5>Release Note Mio (ver.6)</h5>
<ul>
<li>ウィンドウの最大化を記憶するように</li>
<li>v2.4.0/1対応(bot表示/v2-search/rc時のトレンドタグ)</li>
<li>NanoウィンドウのUI改善</li>
<li>キーボードショートカット追加(Ctrl+Shift+1/2/3で特定文字を入力)</li>
<li>Spotifyのアートワーク投稿を任意に</li>
<li>さまざまなバグを修正</li>
以下ver.5の新機能<br>
<li>絵文字がいい感じに(Twemoji採用)</li>
<li>打てる絵文字が拡充</li>
<li>iTunesなうぷれのタグ追加</li>
<li>ダウンローダーに関する不具合を修正</li>
</ul>
以下ver.4の新機能<br>
<ul>
<li>セキュリティアップデート</li>
<li>UI変更</li>
<li>macOSで通知が表示されるように</li>
</ul>
以下はver.3の新機能<br>
<ul><li>macOS版正式リリース</li>
<li>Spotifyなうぷれ改修(アートワーク投稿)</li>
<li>iTunesなうぷれ機能(macOS必須/Thanks to rinsuki)</li>
<li>メインアカウント機能(起動時や投稿後のアカウントを指定)</li>
<li>エアリプソース確認が投稿者のアカウントのLTLに</li>
<li>未認証TLのトゥートをメインアカウントで詳細表示できるように</li>
<li>Nano機能がウィンドウ位置を記憶するように</li>
<li>DMタイムライン</li>
<li>(imastodon.net)トレンドタグ表示機能</li>
</ul>
<div id="release-Mio_15-7-0" style="display:none">
<h5>Release Note Mio (15.7.0)</h5>
<ul>
<li>公開範囲情報の記録がインスタンスごとに(これにより一度記録がリセットされます。)</li>
<li>インスタンスのユーザー設定に従った公開範囲指定(アカウント設定より情報更新をしてください。)</li>
<li>インスタンスカラーを設定できるように(アカウント設定から)</li>
<li>スクリーンショット(魚拓)機能の高速化</li>
<li>Integrated TLのバグ修正</li>
<li>キーボードショートカットのバグ修正</li>
<li>コピペのバグ改善(ただし、ワンクリックコピーで複数の絵文字があるトゥートをコピーするとバグが発生します)</li>
<li>CWのバグ改善</li>
<li><b>DTP鯖(dtp-mstdn.jp)とtheboss.techをサポート</b>タグ付きトゥート時、デフォルトタグがないとき確認ダイアログが表示されます。</li>
</ul>
</div>
<br><br>
TheDeskはオープンソース・ソフトウェアです。<br>
@ -766,6 +748,7 @@ var tlid=0;
<script type="text/javascript" src="./js/tl/list.js"></script>
<script type="text/javascript" src="./js/ui/post-box.js"></script>
<script type="text/javascript" src="./js/ui/layout.js"></script>
<script type="text/javascript" src="./js/login/instance.js"></script>
<script type="text/javascript" src="./js/login/login.js"></script>
<script type="text/javascript" src="./js/ui/img.js"></script>
<script type="text/javascript" src="./js/ui/theme.js"></script>

View File

@ -145,7 +145,7 @@ $(function($) {
if (event.ctrlKey && event.shiftKey) {
if (e.keyCode >= 49 && e.keyCode <= 51) {
var no=e.keyCode-48;
if(localStorage.getItem("oks-"+no)){$("#textarea").val(localStorage.getItem("oks-"+no))}
if(localStorage.getItem("oks-"+no)){$("#textarea").val($("#textarea").val()+localStorage.getItem("oks-"+no))}
return false;
}
}

View File

@ -1,51 +1,77 @@
//入力時にハッシュタグと@をサジェスト
var timer = null;
//インスタンスリスト
var idata={
"kirishima.cloud":"instance",
"kirishima.cloud_name":"アスタルテ",
"kirishima.cloud_letters":"6229",
"kirishima.cloud_bbcode":"enabled",
"kirishima.cloud_markdown":"enabled",
"minohdon.jp":"instance",
"minohdon.jp_name":"箕面丼",
"minohdon.jp_letters":"500",
"minohdon.jp_bbcode":"disabled",
"minohdon.jp_markdown":"disabled",
"knzk.me":"instance",
"knzk.me_name":"神崎丼",
"knzk.me_letters":"5000",
"knzk.me_bbcode":"disabled",
"knzk.me_markdown":"disabled",
"mastodos.com":"instance",
"mastodos.com_name":"マストどす",
"mastodos.com_letters":"500",
"mastodos.com_bbcode":"disabled",
"mastodos.com_markdown":"disabled",
"dev.kirishima.cloud":"hidden",
"dev.kirishima.cloud_name":"アスタルテ(Dev)",
"dev.kirishima.cloud_letters":"6229",
"dev.kirishima.cloud_bbcode":"enabled",
"dev.kirishima.cloud_markdown":"enabled",
"mstdn.y-zu.org":"instance",
"mstdn.y-zu.org_name":"Yづドン!(502 BadGateway)",
"mstdn.y-zu.org_letters":"500",
"mstdn.y-zu.org_bbcode":"disabled",
"mstdn.y-zu.org_markdown":"disabled",
"imastodon.net":"instance",
"imastodon.net_name":"im@stodon",
"imastodon.net_letters":"500",
"imastodon.net_bbcode":"disabled",
"imastodon.net_markdown":"disabled",
"imastodon.net_home":"オフィス",
"imastodon.net_local":"楽屋",
"imastodon.net_notification":"ホワイトボード",
"imastodon.net_public":"ライブステージ",
"mstdn.osaka":"instance",
"mstdn.osaka_name":"大阪丼",
"mstdn.osaka_letters":"500",
"mstdn.osaka_bbcode":"disabled",
"mstdn.osaka_markdown":"disabled",
"mstdn.osaka_home":"ウチ",
"mstdn.osaka_local":"近所",
"mstdn.osaka_notification":"あめちゃん",
"mstdn.osaka_public":"新世界",
"mstdn.kemono-friends.info":"instance",
"mstdn.kemono-friends.info_name":"ますとどんちほー",
"mstdn.kemono-friends.info_letters":"1024",
"mstdn.kemono-friends.info_bbcode":"disabled",
"mstdn.kemono-friends.info_markdown":"disabled",
"mstdn.kemono-friends.info_home":"なわばり",
"mstdn.kemono-friends.info_local":"ますとどんちほー",
"mstdn.kemono-friends.info_notification":"ねえねえ!",
"mstdn.kemono-friends.info_public":"ジャパリパーク",
"itabashi.0j0.jp":"instance",
"itabashi.0j0.jp_name":"板橋丼",
"itabashi.0j0.jp_letters":"1024",
"itabashi.0j0.jp_bbcode":"disabled",
"itabashi.0j0.jp_markdown":"disabled",
"theboss.tech":"instance",
"theboss.tech_name":"theboss.tech",
"theboss.tech_letters":"1000",
"theboss.tech_bbcode":"disabled",
"theboss.tech_markdown":"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"
};
var input = document.getElementById("url");
var prev_val = input.value;
var oldSuggest;
var suggest;
input.addEventListener("focus", function() {
$("#ins-suggest").html("");
window.clearInterval(timer);
timer = window.setInterval(function() {
var new_val = input.value;
if (prev_val != new_val) {
if (new_val.length > 3) {
var start = "https://instances.social/api/1.0/instances/search?q=" +
new_val;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer tC8F6xWGWBUwGScyNevYlx62iO6fdQ4oIK0ad68Oo7ZKB8GQdGpjW9TKxBnIh8grAhvd5rw3iyP9JPamoDpeLQdz62EToPJUW99hDx8rfuJfGdjQuimZPTbIOx0woA5M'
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
if (!json.error) {
var urls = "もしかして:";
Object.keys(json.instances).forEach(function(key) {
var url = json.instances[key];
urls = urls + ' <a onclick="login(\'' + url.name +
'\')" class="pointer">' + url.name + '</a> ';
});
$("#ins-suggest").html(urls);
}
});
}
oldSuggest = suggest;
prev_value = new_val;
}
}, 1000);
}, false);
input.addEventListener("blur", function() {
window.clearInterval(timer);
}, false);
localStorage.setItem("instance", JSON.stringify(idata));

View File

@ -5,71 +5,6 @@
localStorage.removeItem("kirishima")
localStorage.removeItem("imas")
localStorage.removeItem("image");
var idata={
"kirishima.cloud":"instance",
"kirishima.cloud_name":"アスタルテ",
"kirishima.cloud_letters":"6229",
"kirishima.cloud_bbcode":"enabled",
"kirishima.cloud_markdown":"enabled",
"minohdon.jp":"instance",
"minohdon.jp_name":"箕面丼",
"minohdon.jp_letters":"500",
"minohdon.jp_bbcode":"disabled",
"minohdon.jp_markdown":"disabled",
"knzk.me":"instance",
"knzk.me_name":"神崎丼",
"knzk.me_letters":"5000",
"knzk.me_bbcode":"disabled",
"knzk.me_markdown":"disabled",
"mastodos.com":"instance",
"mastodos.com_name":"マストどす",
"mastodos.com_letters":"500",
"mastodos.com_bbcode":"disabled",
"mastodos.com_markdown":"disabled",
"dev.kirishima.cloud":"hidden",
"dev.kirishima.cloud_name":"アスタルテ(Dev)",
"dev.kirishima.cloud_letters":"6229",
"dev.kirishima.cloud_bbcode":"enabled",
"dev.kirishima.cloud_markdown":"enabled",
"mstdn.y-zu.org":"instance",
"mstdn.y-zu.org_name":"Yづドン!(502 BadGateway)",
"mstdn.y-zu.org_letters":"500",
"mstdn.y-zu.org_bbcode":"disabled",
"mstdn.y-zu.org_markdown":"disabled",
"imastodon.net":"instance",
"imastodon.net_name":"im@stodon",
"imastodon.net_letters":"500",
"imastodon.net_bbcode":"disabled",
"imastodon.net_markdown":"disabled",
"imastodon.net_home":"オフィス",
"imastodon.net_local":"楽屋",
"imastodon.net_notification":"ホワイトボード",
"imastodon.net_public":"ライブステージ",
"mstdn.osaka":"instance",
"mstdn.osaka_name":"大阪丼",
"mstdn.osaka_letters":"500",
"mstdn.osaka_bbcode":"disabled",
"mstdn.osaka_markdown":"disabled",
"mstdn.osaka_home":"ウチ",
"mstdn.osaka_local":"近所",
"mstdn.osaka_notification":"あめちゃん",
"mstdn.osaka_public":"新世界",
"mstdn.kemono-friends.info":"instance",
"mstdn.kemono-friends.info_name":"ますとどんちほー",
"mstdn.kemono-friends.info_letters":"1024",
"mstdn.kemono-friends.info_bbcode":"disabled",
"mstdn.kemono-friends.info_markdown":"disabled",
"mstdn.kemono-friends.info_home":"なわばり",
"mstdn.kemono-friends.info_local":"ますとどんちほー",
"mstdn.kemono-friends.info_notification":"ねえねえ!",
"mstdn.kemono-friends.info_public":"ジャパリパーク",
"itabashi.0j0.jp":"instance",
"itabashi.0j0.jp_name":"板橋丼",
"itabashi.0j0.jp_letters":"1024",
"itabashi.0j0.jp_bbcode":"disabled",
"itabashi.0j0.jp_markdown":"disabled",
};
localStorage.setItem("instance", JSON.stringify(idata));
function ck() {
var main = localStorage.getItem("main");
@ -236,7 +171,9 @@ function getdata() {
name: json["display_name"],
domain: domain,
user: json["acct"],
prof: avatar
prof: avatar,
id: json["id"],
vis: json["source"]["privacy"]
}];
var json = JSON.stringify(obj);
console.log(obj);
@ -285,7 +222,8 @@ function getdataAdv(domain, at) {
domain: domain,
user: json["acct"],
prof: avatar,
id: json["id"]
id: json["id"],
vis: json["source"]["privacy"]
};
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
@ -408,6 +346,12 @@ function multi() {
}
$("#acct-sel-prof").attr("src",profimg);
$("#toot-post-btn").text("トゥート("+domain+")");
if(acct.background && acct.background!="def" && acct.text && acct.text!="def"){
$("#toot-post-btn").removeClass("indigo");
$("#toot-post-btn").css("background-color","#"+acct.background);
$("#toot-post-btn").css("color",acct.text);
}else{
}
if(domain=="kirishima.cloud"){
$("#faicon-btn").show();
}else{

View File

@ -30,7 +30,12 @@ function load() {
Object.keys(obj).forEach(function(key) {
var acct = obj[key];
var list = key * 1 + 1;
templete = '<div id="acct_' + key + '" class="card"><div class="card-content white-text"><span class="lts">' + list +
if(acct.background!="def" && acct.text!="def"){
var style='style="background-color:#'+acct.background+'; color:'+acct.text+';"'
}else{
var style=""
}
templete = '<div id="acct_' + key + '" class="card" '+style+'><div class="card-content "><span class="lts">' + list +
'.</span><img src="' + acct.prof + '" width="40" height="40"><span class="card-title">' +
acct.name + '</span>' + escapeHTML(acct.user) + '@' + acct.domain +
'</div><div class="card-action"><a class="waves-effect disTar pointer white-text" onclick="data(\'' +
@ -39,8 +44,9 @@ function load() {
key +
')"><i class="material-icons">refresh</i>情報更新</a><a class="waves-effect disTar pointer red-text" onclick="multiDel(' +
key +
')"><i class="material-icons">delete</i>削除</a></div></div>';
')"><i class="material-icons">delete</i>削除</a><br>アカウントカラーの選択<div id="colorsel_'+key+'" class="colorsel"></div></div></div>';
$("#acct-list").append(templete);
colorpicker(key)
});
multisel();
var acctN = localStorage.getItem("acct");
@ -120,13 +126,11 @@ function multiDel(target) {
//サポートインスタンス
function support() {
var json=JSON.parse(localStorage.getItem("instance"));
console.log(json);
Object.keys(json).forEach(function(key) {
var instance = json[key];
Object.keys(idata).forEach(function(key) {
var instance = idata[key];
if (instance == "instance") {
templete = '<a onclick="login(\'' + key +
'\')" class="collection-item pointer transparent">' + json[key + "_name"] + '(' + key + ')</a>';
'\')" class="collection-item pointer transparent">' + idata[key + "_name"] + '(' + key + ')</a>';
$("#support").append(templete);
}
});
@ -268,7 +272,8 @@ function getdata(domain, at) {
domain: domain,
user: json["acct"],
prof: avatar,
id: json["id"]
id: json["id"],
vis: json["source"]["privacy"]
};
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
@ -322,7 +327,8 @@ function refresh(target) {
domain: obj[target].domain,
user: json["acct"],
prof: avatar,
id: json["id"]
id: json["id"],
vis: json["source"]["privacy"]
};
localStorage.setItem("name_" + target, json["display_name"]);
localStorage.setItem("user_" + target, json["acct"]);
@ -386,3 +392,104 @@ function mainacct(){
localStorage.setItem("main", acct_id);
Materialize.toast("メインアカウントを設定しました。", 3000);
}
function colorpicker(key){
temp=
'<div onclick="coloradd('+key+',\'def\',\'def\')" class="pointer exc">なし</div>'+
'<div onclick="coloradd('+key+',\'f44336\',\'white\')" class="red white-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'e91e63\',\'white\')" class="pink white-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'9c27b0\',\'white\')" class="purple white-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'673ab7\',\'white\')" class="deep-purple white-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'3f51b5\',\'white\')" class="indigo white-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'2196f3\',\'white\')" class="blue white-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'03a9f4\',\'black\')" class="light-blue black-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'00bcd4\',\'black\')" class="cyan black-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'009688\',\'white\')" class="teal white-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'4caf50\',\'black\')" class="green black-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'8bc34a\',\'black\')" class="light-green black-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'cddc39\',\'black\')" class="lime black-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'ffeb3b\',\'black\')" class="yellow black-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'ffc107\',\'black\')" class="amber black-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'ff9800\',\'black\')" class="orange black-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'ff5722\',\'white\')" class="deep-orange white-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'795548\',\'white\')" class="brown white-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'9e9e9e\',\'white\')" class="grey white-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'607d8b\',\'white\')" class="blue-grey white-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'000000\',\'white\')" class="black white-text pointer"></div>'+
'<div onclick="coloradd('+key+',\'ffffff\',\'black\')" class="white black-text pointer"></div>';
$("#colorsel_"+key).html(temp);
}
function coloradd(key,bg,txt){
var col = localStorage.getItem("multi");
var o = JSON.parse(col);
var obj=o[key];
obj.background=bg;
obj.text=txt;
o[key]=obj;
var json = JSON.stringify(o);
localStorage.setItem("multi", json);
if(txt=="def"){
$("#acct_"+key).attr("style","")
}else{
$("#acct_"+key).css('background-color','#'+bg);
if(txt=="black"){
var bghex="000000";
var ichex="9e9e9e"
}else if(txt=="white"){
var bghex="ffffff";
var ichex="eeeeee"
}
$("#acct_"+key+" .nex").css('color','#'+ichex);
$("#acct_"+key).css('color','#'+bghex);
}
}
//入力時にハッシュタグと@をサジェスト
var timer = null;
var input = document.getElementById("url");
var prev_val = input.value;
var oldSuggest;
var suggest;
input.addEventListener("focus", function() {
$("#ins-suggest").html("");
window.clearInterval(timer);
timer = window.setInterval(function() {
var new_val = input.value;
if (prev_val != new_val) {
if (new_val.length > 3) {
var start = "https://instances.social/api/1.0/instances/search?q=" +
new_val;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer tC8F6xWGWBUwGScyNevYlx62iO6fdQ4oIK0ad68Oo7ZKB8GQdGpjW9TKxBnIh8grAhvd5rw3iyP9JPamoDpeLQdz62EToPJUW99hDx8rfuJfGdjQuimZPTbIOx0woA5M'
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
if (!json.error) {
var urls = "もしかして:";
Object.keys(json.instances).forEach(function(key) {
var url = json.instances[key];
urls = urls + ' <a onclick="login(\'' + url.name +
'\')" class="pointer">' + url.name + '</a> ';
});
$("#ins-suggest").html(urls);
}
});
}
oldSuggest = suggest;
prev_value = new_val;
}
}, 1000);
}, false);
input.addEventListener("blur", function() {
window.clearInterval(timer);
}, false);

View File

@ -49,8 +49,3 @@ function shot(){
})
})
}
$(window).load(function(){
setTimeout(function(){
shot();
},2000);
});

View File

@ -9,8 +9,7 @@ function mdCheck(){
$(".markdown").addClass("hide");
$(".anti-markdown").addClass("hide");
}else{
$(".markdown").removeClass("hide");
$(".anti-markdown").addClass("hide");
$(".anti-markdown").removeClass("hide");
}
if($(".markdown").hasClass("hide")){
localStorage.setItem("md","hide");
@ -38,6 +37,21 @@ function mdCheck(){
}else{
$("#textarea").attr("data-length", 500)
}
var multi = localStorage.getItem("multi");
if (multi) {
var obj = JSON.parse(multi);
if(obj[acct_id].background && obj[acct_id].background!="def" && obj[acct_id].text && obj[acct_id].text!="def"){
$("#toot-post-btn").removeClass("indigo");
$("#toot-post-btn").css("background-color","#"+obj[acct_id].background);
$("#toot-post-btn").css("color",obj[acct_id].text);
}else{
$("#toot-post-btn").css("background-color","");
$("#toot-post-btn").css("color","");
$("#toot-post-btn").addClass("indigo");
}
}
loadVis();
}
//BOXのトグルボタン
function mdToggle(){

View File

@ -6,10 +6,28 @@ function post() {
}
var str = $("#textarea").val();
var acct_id = $("#post-acct-sel").val();
$("#toot-post-btn").prop("disabled", true);
localStorage.setItem("last-use", acct_id);
todo("Posting");
var domain = localStorage.getItem("domain_" + acct_id);
if(domain=="theboss.tech"){
if(~str.indexOf("#")){
if(str.indexOf("#theboss_tech")=="-1"){
if(!confirm("デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。")){
return false;
}
}
}
}
if(domain=="dtp-mstdn.jp"){
if(~str.indexOf("#")){
if(str.indexOf("#dtp")=="-1"){
if(!confirm("デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。")){
return false;
}
}
}
}
$("#toot-post-btn").prop("disabled", true);
todo("Posting");
var at = localStorage.getItem(domain + "_at");
var start = "https://" + domain + "/api/v1/statuses";
var reply = $("#reply").val();
@ -80,16 +98,7 @@ function clear() {
$("#cw").removeClass("cw-avail");
$("#rec").text("いいえ");
$("#mec").text("なし");
var vist = localStorage.getItem("vis");
if (!vist) {
vis("public");
} else {
if (vist == "memory") {
localStorage.setItem("vis-memory", $("#vis").text());
} else {
vis(vist);
}
}
loadVis();
$("#nsfw").removeClass("yellow-text");
$("#nsfw").html("visibility_off");
$("#nsfw").removeClass("nsfw-avail");

View File

@ -37,16 +37,28 @@ function vis(set){
}
var vis=localStorage.getItem("vis");
if(vis=="memory"){
localStorage.setItem("vis-memory",set);
var acct_id = $("#post-acct-sel").val();
localStorage.setItem("vis-memory-"+acct_id,set);
}
}
function loadVis(){
var vist = localStorage.getItem("vis");
console.log(vist);
if (!vist) {
vis("public");
} else {
if (vist == "memory") {
var memory = localStorage.getItem("vis-memory");
var acct_id = $("#post-acct-sel").val();
var memory = localStorage.getItem("vis-memory-"+acct_id);
if (!memory) {
memory = "public";
}
vis(memory);
} else if(vist == "server") {
var acct_id = $("#post-acct-sel").val();
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
var memory = obj[acct_id]["vis"];
if (!memory) {
memory = "public";
}
@ -58,7 +70,7 @@ function loadVis(){
}
loadVis();
//コンテンワーニング
//コンテンワーニング
function cw(){
if($("#cw").hasClass("cw-avail")){
$("#cw-text").val();
@ -75,8 +87,23 @@ function cw(){
}
}
}
//TLでコンテンワーニングを表示トグル
//TLでコンテンワーニングを表示トグル
function cw_show(id){
$(".cw_hide_"+id).toggleClass("cw");
$(".cw-long-"+id).toggleClass("hide");
}
$(function() {
$('#cw-text').on('change', function(event) {
var acct_id = $("#post-acct-sel").val();
var domain = localStorage.getItem("domain_" + acct_id);
var cwlen=$('#cw-text').val().length;
if(idata[domain+"_letters"]){
$("#textarea").attr("data-length", idata[domain+"_letters"]-cwlen)
}else{
$("#textarea").attr("data-length", 500-cwlen)
}
});
});

View File

@ -210,10 +210,12 @@ function cbCopy(mode){
//本文のコピー
function staCopy(id){
var html=$("[toot-id="+id+"] .toot").html();
html = html.match(/^<p>(.+)<\/p>$/)[1];
html = html.replace(/^<p>(.+)<\/p>$/,"$1");
html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n");
console.log(html);
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
html=$.strip_tags(html);
if(execCopy(html)){
Materialize.toast("トゥート本文をコピーしました", 1500);
@ -222,14 +224,49 @@ function staCopy(id){
}
//魚拓
function shot(){
var id=$("#tootmodal").attr("data-id");
var w=$("#toot-this").width();
var h=$("#toot-this").height()+150;
var text=$("#toot-this").html();
localStorage.setItem("sc-text",text)
var title=$("#tootmodal").attr("data-id");
var off = $('#toot-this').offset();
var w=$("#toot-this").width()+50;
var h=$("#toot-this").height()+50;
var electron = require("electron");
const fs = require("fs");
const os = require('os')
const shell = electron.shell;
const path = require('path')
var ipc = electron.ipcRenderer;
ipc.send('screen', [w,h,id]);
let options = {
types: ['screen'],
thumbnailSize: {
width: window.parent.screen.width,
height: window.parent.screen.height
}
}
const desktopCapturer = electron.desktopCapturer;
desktopCapturer.getSources(options, function(error, sources) {
if (error) return console.log(error)
sources.forEach(function(source) {
if (source.name === 'Screen 1' || source.name === 'TheDesk') {
var durl=source.thumbnail.toDataURL();
var b64 = durl.match(
/data:image\/png;base64,(.+)/
);
const screenshotPath = path.join(os.tmpdir(), 'screenshot.png');
const savePath = path.join(os.tmpdir(), 'screenshot.png');
var ipc = electron.ipcRenderer;
ipc.send('shot', ['file://' + screenshotPath,w,h,b64[1],title,off.top+50,off.left]);
if($("#toot-this .img-parsed").length>0){
for(i=0;i<$("#toot-this .img-parsed").length;i++){
var url=$("#toot-this .img-parsed").eq(i).attr("data-url");
ipc.send('shot-img-dl', [url,title+"_img"+i+".png"]);
}
}
return;
const message = `Saved screenshot to: ${screenshotPath}`
//screenshotMsg.textContent = message
}
})
})
}
//翻訳
function trans(tar){

View File

@ -36,7 +36,7 @@ function mixtl(acct_id, tlid, type) {
var homearr=[];
var timeline = jsonL.concat(jsonH);
timeline.sort(function(a,b){
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;
if(date(a.created_at,"unix")<date(b.created_at,"unix")) return 1;
return 0;
});
@ -85,15 +85,15 @@ function mixre(acct_id, tlid, TLtype) {
websocketHome[wshid] = new WebSocket(startHome);
websocketLocal[wslid] = new WebSocket(startLocal);
websocketHome[wshid].onopen = function(mess) {
console.log("Connect Streaming API(Home)");
console.log("Connect Streaming API(Integrated:Home)");
$("#notice_icon_" + tlid).removeClass("red-text");
}
websocketLocal[wslid].onopen = function(mess) {
console.log("Connect Streaming API(Local)");
console.log("Connect Streaming API(Integrated:Local)");
$("#notice_icon_" + tlid).removeClass("red-text");
}
websocketLocal[wslid].onmessage = function(mess) {
console.log("Receive Streaming API:");
console.log("Receive Streaming API:(Integrated:Local)");
var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj);
@ -103,12 +103,14 @@ function mixre(acct_id, tlid, TLtype) {
$("[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) {
if (!$("#timeline_"+tlid+" [toot-id="+obj.id+"]").length) {
var pool = localStorage.getItem("pool_" + tlid);
if (pool) {
if (pool && templete) {
pool = templete + pool;
} else {
} else if (templete) {
pool = templete
}else{
pool="";
}
localStorage.setItem("pool_" + tlid, pool);
scrollck();
@ -118,7 +120,7 @@ function mixre(acct_id, tlid, TLtype) {
}}
}
websocketHome[wshid].onmessage = function(mess) {
console.log("Receive Streaming API:(Home)");
console.log("Receive Streaming API:(Integrated:Home)");
var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj);
@ -136,12 +138,14 @@ function mixre(acct_id, tlid, TLtype) {
var templete="";
}
}
if (!$("[toot-id="+obj.id+"]").length) {
if (!$("#timeline_"+tlid+" [toot-id="+obj.id+"]").length) {
var pool = localStorage.getItem("pool_" + tlid);
if (pool) {
if (pool && templete) {
pool = templete + pool;
} else {
} else if (templete) {
pool = templete
}else{
pool="";
}
localStorage.setItem("pool_" + tlid, pool);
scrollck();

View File

@ -135,7 +135,7 @@ function parse(obj, mix, acct_id, tlid, popup) {
var emoji = toot.account.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img src="' + emoji.url +
'" class="emoji-img" data-emoji="'+shortcode+'">';
'" class="emoji-img" data-emoji="'+shortcode+'" alt=" :'+shortcode+': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
@ -208,7 +208,7 @@ function parse(obj, mix, acct_id, tlid, popup) {
var emoji = toot.account.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img src="' + emoji.url +
'" class="emoji-img" data-emoji="'+shortcode+'">';
'" class="emoji-img" data-emoji="'+shortcode+'" alt=" :'+shortcode+': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});
@ -239,7 +239,7 @@ function parse(obj, mix, acct_id, tlid, popup) {
var emoji = toot.account.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img src="' + emoji.url +
'" class="emoji-img" data-emoji="'+shortcode+'">';
'" class="emoji-img" data-emoji="'+shortcode+'" alt=" :'+shortcode+': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});
@ -345,7 +345,7 @@ 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" data-emoji="'+shortcode+'">';
'" class="emoji-img" data-emoji="'+shortcode+'" alt=" :'+shortcode+': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
content = content.replace(regExp, emoji_url);
spoil = spoil.replace(regExp, emoji_url);
@ -623,7 +623,7 @@ function userparse(obj, auth, acct_id, tlid, popup) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img src="' + emoji.url +
'" class="emoji-img" data-emoji="'+shortcode+'">';
'" class="emoji-img" data-emoji="'+shortcode+'" alt=" :'+shortcode+': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});

View File

@ -44,6 +44,7 @@ function parseColumn() {
ckdb(key);
});
}
var acctlist=obj;
var xed=localStorage.getItem("xed");
if(xed){
xpand();
@ -88,12 +89,15 @@ function parseColumn() {
var txhex="ffffff";
var ichex="eeeeee"
}
insert=' style="background-color:#'+acct.background+'; color: #'+txhex+'" ';
insert='background-color:#'+acct.background+'; color: #'+txhex+'; ';
icnsert=' style="color: #'+ichex+'" ';
}
}
if(acctlist[acct.domain].background!="def"){
insert=insert+" border-bottom:medium solid #"+acctlist[acct.domain].background;
}
var html = '<div class="box" id="timeline_box_' + key + '_box" tlid="' + key +
'" data-acct="'+acct.domain+'"><div class="notice-box z-depth-2" id="menu_'+key+'"'+insert+'>'+
'" data-acct="'+acct.domain+'"><div class="notice-box z-depth-2" id="menu_'+key+'" style="'+insert+'">'+
'<div class="area-notice"><i class="material-icons waves-effect red-text" id="notice_icon_' + key + '"'+notf_attr+' style="font-size:40px; padding-top:25%;" onclick="goTop(' + key + ')" title="一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。"></i></div>'+
'<div class="area-notice_name"><span id="notice_' + key + '" class="tl-title"></span></div>'+
'<div class="area-a1"><a onclick="notfToggle(' + acct.domain + ',' + key +
@ -249,7 +253,8 @@ function coloradd(key,bg,txt){
var json = JSON.stringify(o);
localStorage.setItem("column", json);
if(txt=="def"){
$("#menu_"+key).attr("style","")
$("#menu_"+key).css("background-color","");
$("#menu_"+key).css("color","");
}else{
$("#menu_"+key).css('background-color','#'+bg);
if(txt=="black"){

View File

@ -193,23 +193,9 @@ ipc.on('update', function(e, x, y) {
return false;
}
})
ipc.on('screen', function(e, args) {
var window = new BrowserWindow({
width: args[0],
height: args[1],
"transparent": false, // ウィンドウの背景を透過
"frame": false, // 枠の無いウィンドウ
"resizable": true
});
window.loadURL('file://' + __dirname + '/screenshot.html?id='+args[2]);
window.setAlwaysOnTop(true);
window.setPosition(0, 0);
return "true"
})
//Web魚拓
ipc.on('shot', function(e, args) {
console.log(args[0]);
console.log("link:"+args[0]+" width:"+args[1]+" height:"+args[2]+" title:"+args[4]+" top:"+args[5]+" left:"+args[6]);
var platform=process.platform;
var bit=process.arch;
if(platform=="win32"){
@ -221,17 +207,21 @@ ipc.on('shot', function(e, args) {
}
Jimp.read(Buffer.from( args[3],'base64'), function (err, lenna) {
if (err) throw err;
lenna.crop( 0, 0, args[1], args[2] ).write(dir);
lenna.crop( args[6], args[5], args[1], args[2] ).write(dir);
});
shell.showItemInFolder(folder);
})
ipc.on('shot-img-dl', (e, args) => {
Jimp.read(args[0], function (err, lenna) {
if (err) throw err;
if(process.platform=="win32"){
var folder=app.getPath('home')+"\\Pictures\\TheDesk\\Screenshots\\";
}else if(process.platform=="linux" || process.platform=="darwin" ){
var folder=app.getPath('home')+"/Pictures/TheDesk/Screenshots/";
}
lenna.write(folder+args[1]);
});
});
})
//アプデDL
ipc.on('download-btn', (e, args) => {
var platform=process.platform;

View File

@ -76,21 +76,28 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.<br>
<h5>EmojiOne</h5>
<i class="fa fa-github"></i><a href="https://github.com/emojione/emojione" target="_blank">emojione/emojione</a><br>
<h6>EmojiOne Artwork</h6>
<ul>
<li>Applies to all PNG files found in the emojione-assets repo as well as any adaptations made.</li>
<li>Free license: <a href="https://www.emojione.com/developers/free-license" target="_blank">emojione.com/developers/free-license</a></li>
<li>Premium license: <a href="https://www.emojione.com/developers/premium-license" target="_blank">emojione.com/developers/premium-license</a></li>
</ul>
<h6>EmojiOne Non-Artwork</h6>
<ul>
<li>Applies to the Javascript, JSON, PHP, CSS, HTML files, and everything else not covered under the artwork license above, found in both the emojione and emojione-assets repos.</li>
<li>License: MIT</li>
<li>Complete Legal Terms: <a href="http://opensource.org/licenses/MIT" target="_blank">http://opensource.org/licenses/MIT</a></li>
</ul>
<h5>Twitter Emoji (Twemoji)</h5>
<i class="fa fa-github"></i><a href="https://github.com/twitter/twemoji" target="_blank">twitter/twemoji</a><br>
Copyright (c) 2018 Twitter, Inc and other contributors<br>
<br>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:<br>
<br>
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.<br>
<br>
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. <br>
<br>
<h5>Font Awesome</h5>
<i class="fa fa-github"></i><a href="https://github.com/FortAwesome/Font-Awesome" target="_blank">FortAwesome/Font-Awesome</a><br>
Font Awesome Free License<br>

View File

@ -1,6 +1,6 @@
{
"name": "TheDesk",
"version": "15.6.0",
"version": "15.7.0",
"description": "TheDesk on Mastodonはシンプルと多機能を両立したデスクトップ向けクライアントです",
"main": "main.js",
"scripts": {

View File

@ -150,7 +150,9 @@
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="direct" value="direct" />
<label for="direct">ダイレクト(Direct)</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="memory" value="memory" />
<label for="memory">前回の投稿設定を記憶する</label>
<label for="memory">前回の投稿設定を記憶する(インスタンスごとに記憶されます)</label>
<input class="with-gap" onchange="settings()" name="vis" type="radio" id="server" value="server" />
<label for="server">マストドンアカウント設定の既定値</label>
<br>
<h5>デフォルトでのボックスの挙動(起動時・トゥート後)</h5>
<input class="with-gap" onchange="settings()" name="box" type="radio" id="b_yes" value="yes" />
@ -287,7 +289,7 @@
<button class="btn waves-effect indigo" onclick="about()" style="width:100%; max-width:500px;"><i class="material-icons left">info</i>このソフトについて</button>
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">web</i>公式HP</a>
<a href="https://enty.jp/Cutls" class="btn waves-effect purple lighten-2" style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>支援(Enty)</a>
<a href="https://trello.com/b/FZtwd1xx" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>Trello(今後のToDo)</a>
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i class="material-icons left">list</i>ヘルプ/Docs(制作中)</a>
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2" style="width:100%; max-width:500px;"><i class="fa fa-github left"></i>GitHub</a>
<a href="index.html?mode=user&code=Cutls@kirishima.cloud" class="btn waves-effect blue lighten-2" style="width:100%; max-width:500px;"><img src="./img/desk_full.svg" class="left" width="25" style="padding-top:5px;">Developer: Cutls@kirishima.cloud</a>
<a class="btn waves-effect red lighten-2" href="https://osushi.love/Cutls_P" target="_blank" style="width:100%; max-width:500px;"><img src="./img/sushi.svg" class="left" width="25" style="padding-top:5px;">寿司を投げる</a>
@ -299,7 +301,7 @@
<a href="index.html?mode=user&code=Cutls@kirishima.cloud">@Cutls@kirishima.cloud</a>)
<br>
</span><br>
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>を応援しています。<br>
TheDeskおよびCutls Pは<a href="https://donken.org/">被災地支援のためのマストドン研究会</a>ログイン機能提供等の形で応援しています。<br>
タグタイムラインを開く:<a href="index.html?mode=tag&code=被災地支援のためのマストドン研究会">#被災地支援のためのマストドン研究会</a><br>
<script type="text/javascript" src="./js/common/about.js"></script>
<script type="text/javascript" src="./js/platform/end.js"></script>

View File

@ -1 +1 @@
{"warn":"これはGCPにアップして下さい","warn2":"これはGCPにアップして下さい","warn3":"これはGCPにアップして下さい","desk":"Mio (15.6.0)","date":"2018-06-12","detail":"機能たくさん。アプデ後のアプリ内リリースノートなどで。"}
{"warn":"これはGCPにアップして下さい","warn2":"これはGCPにアップして下さい","warn3":"これはGCPにアップして下さい","desk":"Mio (15.7.0)","date":"2018-06-17","detail":"機能たくさん。バグ修正多数。アプデ後のアプリ内リリースノートなどで。"}