TheDesk Mio (ver.3)
This commit is contained in:
@@ -72,6 +72,10 @@ var idata={
|
||||
localStorage.setItem("instance", JSON.stringify(idata));
|
||||
|
||||
function ck() {
|
||||
var main = localStorage.getItem("main");
|
||||
if(!main){
|
||||
localStorage.setItem("main",0)
|
||||
}
|
||||
var domain = localStorage.getItem("domain_0");
|
||||
var at = localStorage.getItem(domain + "_at");
|
||||
//コード受信
|
||||
@@ -375,7 +379,11 @@ function multi() {
|
||||
var obj = JSON.parse(multi);
|
||||
}
|
||||
var templete;
|
||||
var last = localStorage.getItem("last-use");
|
||||
if(localStorage.getItem("mainuse")=="main"){
|
||||
var last = localStorage.getItem("main");
|
||||
}else{
|
||||
var last = localStorage.getItem("last-use");
|
||||
}
|
||||
var sel;
|
||||
console.log(obj.length)
|
||||
if(obj.length<1){
|
||||
@@ -393,11 +401,6 @@ function multi() {
|
||||
}else{
|
||||
$("#textarea").attr("data-length", 500)
|
||||
}
|
||||
if(domain=="knzk.me" || domain=="mstdn.y-zu.org"){
|
||||
$("#type-sel").append('<option value="dm" data-trans="dm" id="direct-add">ダイレクトメッセージ</option>');
|
||||
}else{
|
||||
$("#direct-add").remove();
|
||||
}
|
||||
var profimg=localStorage.getItem("prof_"+key);
|
||||
var domain=localStorage.getItem("domain_"+key);
|
||||
if(!profimg){
|
||||
@@ -410,6 +413,11 @@ function multi() {
|
||||
}else{
|
||||
$("#faicon-btn").hide();
|
||||
}
|
||||
if(domain=="imastodon.net"){
|
||||
trendTag();
|
||||
}else{
|
||||
$("#trendtag").html("");
|
||||
}
|
||||
} else {
|
||||
sel = "";
|
||||
}
|
||||
|
@@ -30,17 +30,19 @@ function load() {
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
var acct = obj[key];
|
||||
var list = key * 1 + 1;
|
||||
templete = '<div id="acct_' + key + '"><div class="col s1">' + list +
|
||||
'.</div><div class="col s2"><img src="' + acct.prof + '" width="40" height="40"></div><div class="text col s3">' +
|
||||
acct.name + ' <span class="gray">' + escapeHTML(acct.user) + '@' + acct.domain +
|
||||
'</span></div><div class="col s2"><button class="btn waves-effect disTar" onclick="data(\'' +
|
||||
templete = '<div id="acct_' + key + '" class="card"><div class="card-content white-text"><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(\'' +
|
||||
acct.domain +
|
||||
'\')">インスタンス情報</button></div><div class="col s2"><button class="btn waves-effect" onclick="refresh(' +
|
||||
'\')"><i class="material-icons">info</i>インスタンス情報</a><a class="waves-effect disTar pointer white-text" onclick="refresh(' +
|
||||
key +
|
||||
')">情報更新</button></div><div class="col s2"><button class="btn waves-effect red disTar" onclick="multiDel(' +
|
||||
key + ')">削除</button><br></div></div>';
|
||||
')"><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>';
|
||||
$("#acct-list").append(templete);
|
||||
});
|
||||
multisel();
|
||||
var acctN = localStorage.getItem("acct");
|
||||
if (!acctN) {
|
||||
localStorage.setItem("acct", 0);
|
||||
@@ -336,3 +338,51 @@ function refresh(target) {
|
||||
load();
|
||||
});
|
||||
}
|
||||
//アカウントを選択…を実装
|
||||
function multisel() {
|
||||
var multi = localStorage.getItem("multi");
|
||||
if (!multi) {
|
||||
var obj = [];
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("multi", json);
|
||||
} else {
|
||||
var obj = JSON.parse(multi);
|
||||
}
|
||||
var templete;
|
||||
var last = localStorage.getItem("main");
|
||||
var sel;
|
||||
console.log(obj.length)
|
||||
if(obj.length<1){
|
||||
$("#src-acct-sel").html('<option value="tootsearch">Tootsearch</option>');
|
||||
$("#add-acct-sel").html('<option value="noauth">認証せずに見る</option>');
|
||||
}else{
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
var acct = obj[key];
|
||||
var list = key * 1 + 1;
|
||||
if (key == last) {
|
||||
sel = "selected";
|
||||
mainb="(既定)"
|
||||
var domain = localStorage.getItem("domain_" + key);
|
||||
var profimg=localStorage.getItem("prof_"+key);
|
||||
var domain=localStorage.getItem("domain_"+key);
|
||||
if(!profimg){
|
||||
profimg="./img/missing.svg";
|
||||
}
|
||||
} else {
|
||||
sel = "";
|
||||
mainb=""
|
||||
}
|
||||
templete = '<option value="' + key + '" data-icon="' + acct.prof +
|
||||
'" class="left circle" ' + sel + '>' + acct.user + '@' + acct.domain +mainb+
|
||||
'</option>';
|
||||
$(".acct-sel").append(templete);
|
||||
|
||||
});
|
||||
}
|
||||
$('select').material_select('update');
|
||||
}
|
||||
function mainacct(){
|
||||
var acct_id = $("#main-acct-sel").val();
|
||||
localStorage.setItem("main", acct_id);
|
||||
Materialize.toast("メインアカウントを設定しました。", 3000);
|
||||
}
|
@@ -28,6 +28,11 @@ function mdCheck(){
|
||||
}else{
|
||||
$("#faicon-btn").hide();
|
||||
}
|
||||
if(domain=="imastodon.net"){
|
||||
trendTag();
|
||||
}else{
|
||||
$("#trendtag").html("");
|
||||
}
|
||||
if(idata[domain+"_letters"]){
|
||||
$("#textarea").attr("data-length", idata[domain+"_letters"])
|
||||
}else{
|
||||
|
@@ -1,8 +1,12 @@
|
||||
/*投稿系*/
|
||||
//投稿
|
||||
function post() {
|
||||
if($("#toot-post-btn").prop("disabled")){
|
||||
return
|
||||
}
|
||||
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);
|
||||
@@ -53,6 +57,7 @@ function post() {
|
||||
$("body").addClass("mini-post");
|
||||
$(".mini-btn").text("expand_less");
|
||||
}
|
||||
$("#toot-post-btn").prop("disabled", false);
|
||||
todc();
|
||||
clear();
|
||||
}
|
||||
@@ -95,4 +100,7 @@ function clear() {
|
||||
$("#post-acct-sel").prop("disabled", false);
|
||||
$('select').material_select();
|
||||
localStorage.removeItem("image");
|
||||
if(localStorage.getItem("mainuse")=="main"){
|
||||
multi();
|
||||
}
|
||||
}
|
@@ -37,7 +37,12 @@ function details(id, acct_id, tlid) {
|
||||
replyTL(json.in_reply_to_id, acct_id);
|
||||
}
|
||||
context(id, acct_id);
|
||||
beforeToot(id, acct_id);
|
||||
if(json.account.acct!=json.account.username){
|
||||
var dom=json.account.acct.replace(/.+@/g,'');
|
||||
}else{
|
||||
var dom=domain;
|
||||
}
|
||||
beforeToot(id, acct_id, dom);
|
||||
userToot(id, acct_id, json.account.id);
|
||||
faved(id, acct_id);
|
||||
rted(id, acct_id);
|
||||
@@ -99,8 +104,8 @@ function context(id, acct_id) {
|
||||
}
|
||||
|
||||
//前のトゥート(Back TL)
|
||||
function beforeToot(id, acct_id) {
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
function beforeToot(id, acct_id, domain) {
|
||||
//var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem(domain + "_at");
|
||||
var start = "https://" + domain +
|
||||
"/api/v1/timelines/public?local=true&max_id=" + id;
|
||||
@@ -108,7 +113,6 @@ function beforeToot(id, acct_id) {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
'Authorization': 'Bearer ' + at
|
||||
},
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
@@ -116,7 +120,7 @@ function beforeToot(id, acct_id) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
var templete = parse(json, '', acct_id);
|
||||
var templete = parse(json, 'noauth', acct_id);
|
||||
$("#toot-before").html(templete);
|
||||
jQuery("time.timeago").timeago();
|
||||
});
|
||||
@@ -262,6 +266,9 @@ function brws(){
|
||||
}
|
||||
//外部からトゥート開く
|
||||
function detEx(url,acct_id){
|
||||
if(acct_id=="main"){
|
||||
acct_id=localStorage.getItem("main");
|
||||
}
|
||||
var domain = localStorage.getItem("domain_"+acct_id);
|
||||
var at = localStorage.getItem(domain + "_at");
|
||||
var start = "https://" + domain + "/api/v1/search?resolve=true&q="+url
|
||||
|
@@ -105,8 +105,10 @@ function parse(obj, mix, acct_id, tlid, popup) {
|
||||
//認証なしTL
|
||||
if(mix=="noauth"){
|
||||
var noauth="hide";
|
||||
var antinoauth="";
|
||||
}else{
|
||||
var noauth="";
|
||||
var antinoauth="hide";
|
||||
}
|
||||
//マウスオーバーのみ
|
||||
var mouseover=localStorage.getItem("mouseover");
|
||||
@@ -512,32 +514,33 @@ function parse(obj, mix, acct_id, tlid, popup) {
|
||||
'</span>' +
|
||||
'' + mentions + tags + '</div>' +
|
||||
'<div class="area-vis"></div>'+
|
||||
'<div class="area-actions '+noauth+' '+mouseover+'" style="padding:0; margin:0; top:-20px; display:flex; justify-content:space-around; max-width:100%; ">' +
|
||||
'<div class="action '+disp["re"]+'"><a onclick="re(\'' + toot.id +
|
||||
'<div class="area-actions '+mouseover+'" style="padding:0; margin:0; top:-20px; display:flex; justify-content:space-around; max-width:100%; ">' +
|
||||
'<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 +
|
||||
'\',\'' + toot.account.acct + '\',' +
|
||||
acct_id + ',\''+visen+
|
||||
'\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="このトゥートに返信"><i class="fa fa-share"></i></a></div>' +
|
||||
'<div class="action '+can_rt+' '+disp["rt"]+'"><a onclick="rt(\'' + toot.id + '\',' + acct_id +
|
||||
'<div class="action '+can_rt+' '+disp["rt"]+' '+noauth+'"><a onclick="rt(\'' + toot.id + '\',' + acct_id +
|
||||
',\'' + tlid +
|
||||
'\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="このトゥートをブースト"><i class="text-darken-3 fa fa-retweet ' +
|
||||
if_rt + ' rt_' + toot.id + '"></i><span class="rt_ct">' + toot.reblogs_count +
|
||||
'</span></a></div>' +
|
||||
'<div class="action '+can_rt+' '+disp["qt"]+'"><a onclick="qt(\'' + toot.id + '\',' + acct_id +
|
||||
'<div class="action '+can_rt+' '+disp["qt"]+' '+noauth+'"><a onclick="qt(\'' + toot.id + '\',' + acct_id +
|
||||
',\'' + toot.account.acct +'\',\''+toot.url+
|
||||
'\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="このトゥートを引用"><i class="text-darken-3 fa fa-quote-right"></i></a></div>' +
|
||||
'<div class="action '+disp["fav"]+'"><a onclick="fav(\'' + toot.id + '\',' + acct_id +
|
||||
'<div class="action '+disp["fav"]+' '+noauth+'"><a onclick="fav(\'' + toot.id + '\',' + acct_id +
|
||||
',\'' + tlid +
|
||||
'\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="このトゥートをお気に入り登録"><i class="fa text-darken-3 fa-star' +
|
||||
if_fav + ' fav_' + toot.id + '"></i><span class="fav_ct">' + toot.favourites_count +
|
||||
'</a></span></div>' +
|
||||
'<div class="' + if_mine + ' action '+disp["del"]+'"><a onclick="del(\'' + toot.id + '\',' +
|
||||
'<div class="' + if_mine + ' action '+disp["del"]+' '+noauth+'"><a onclick="del(\'' + toot.id + '\',' +
|
||||
acct_id +
|
||||
')" 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"]+'"><a onclick="pin(\'' + toot.id + '\',' +
|
||||
'<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+
|
||||
'<div class="action ' + if_mine + '"><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"><a onclick="details(\'' + toot.id + '\',' + acct_id +
|
||||
'<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 +
|
||||
|
@@ -4,7 +4,8 @@ if(location.search){
|
||||
var mode=m[1];
|
||||
var codex=m[2];
|
||||
if(mode=="tag"){
|
||||
tl('tag',decodeURI(codex),0,'add');
|
||||
var acct_id=localStorage.getItem("main");
|
||||
tl('tag',decodeURI(codex),acct_id,'add');
|
||||
}
|
||||
}
|
||||
//よく使うタグ
|
||||
@@ -45,6 +46,7 @@ function tagRemove(key) {
|
||||
favTag();
|
||||
}
|
||||
function favTag(){
|
||||
$("#taglist").html("");
|
||||
var tagarr = localStorage.getItem("tag");
|
||||
if(!tagarr){
|
||||
var obj=[];
|
||||
@@ -58,10 +60,48 @@ function favTag(){
|
||||
'<a onclick="tagRemove(\'' + key + '\')" class="pointer" title="#' + tag + 'をよく使うタグから削除">Unpin</a></span> ';
|
||||
});
|
||||
if(obj.length>0){
|
||||
$("#suggest").append("My Tags:" + tags);
|
||||
$("#taglist").append("My Tags:" + tags);
|
||||
}else{
|
||||
$("#suggest").append("");
|
||||
$("#taglist").append("");
|
||||
}
|
||||
}
|
||||
function trendTag(){
|
||||
$("#trendtag").html("");
|
||||
var domain="imastodon.net"
|
||||
var at = localStorage.getItem(domain + "_at");
|
||||
var start = "https://" + domain + "/api/v1/trend_tags"
|
||||
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 tags="";
|
||||
json=json.score;
|
||||
Object.keys(json).forEach(function(tag) {
|
||||
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span> ';
|
||||
});
|
||||
$("#taglist").append('<span id="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' + tags+'</span>');
|
||||
trendintervalset()
|
||||
}else{
|
||||
$("#taglist").html("");
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function trendintervalset(){
|
||||
setTimeout(trendTag, 6000000);
|
||||
|
||||
|
||||
}
|
||||
function tagTL(a,b,c,d){
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
|
@@ -141,6 +141,12 @@ function settings() {
|
||||
}
|
||||
localStorage.setItem("mouseover", movd);
|
||||
|
||||
var maind = $("[name=main]:checked").val();
|
||||
var maint = $("[for=mn_"+maind+"]").text();
|
||||
if (maind != localStorage.getItem("mainuse")) {
|
||||
Materialize.toast("起動時・投稿時のアカウントを" + maint + "に設定しました。", 3000);
|
||||
}
|
||||
localStorage.setItem("mainuse", maind);
|
||||
}
|
||||
|
||||
//読み込み時の設定ロード
|
||||
@@ -274,6 +280,12 @@ function load() {
|
||||
var movt = "no";
|
||||
}
|
||||
$("#mov_" + movt).prop("checked", true);
|
||||
|
||||
var maint = localStorage.getItem("mainuse");
|
||||
if (!maint) {
|
||||
var maint = "remain";
|
||||
}
|
||||
$("#mn_" + maint).prop("checked", true);
|
||||
}
|
||||
//最初に読む
|
||||
load();
|
||||
|
@@ -25,7 +25,7 @@ function sortload(){
|
||||
}
|
||||
}
|
||||
var html='<li class="drag-content" data-id="'+key+'" data-flag="'+flag+'"'+insert+'><a onclick="goColumn(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムへ">forward</i></a>'+localStorage.getItem("user_" + acct.domain)+"@"+localStorage.getItem("domain_" + acct.domain)+" "+cap(acct.type, acct.data)+' TL <a onclick="removeColumn(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムへ">forward</i></a>'+localStorage.getItem("user_" + acct.domain)+"@"+localStorage.getItem("domain_" + acct.domain)+" "+cap(acct.type, acct.data)+' <a onclick="removeColumn(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムを削除">cancel</i></a></li>';
|
||||
$("#sort").append(html);
|
||||
});
|
||||
@@ -33,7 +33,7 @@ function sortload(){
|
||||
}
|
||||
|
||||
//TLのタイトル
|
||||
function cap(type, data) {
|
||||
function Scap(type, data) {
|
||||
if (type == "home") {
|
||||
return "Home"
|
||||
} else if (type == "local") {
|
||||
|
@@ -65,6 +65,10 @@ function nowplaying(mode){
|
||||
}).then(function(json) {
|
||||
console.log(json);
|
||||
var item=json.item;
|
||||
var img=item.album.images[0].url;
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.send('bmp-image', [img,0]);
|
||||
var content=localStorage.getItem("np-temp");
|
||||
if(!content || content==""){
|
||||
var content="#NowPlaying {song} / {album} / {artist}\n{url}";
|
||||
@@ -86,20 +90,16 @@ function nowplaying(mode){
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.send('itunes', "");
|
||||
ipc.on('itunesRes', function (event, arg) {
|
||||
ipc.on('itunes-np', function (event, arg) {
|
||||
|
||||
var content=localStorage.getItem("np-temp");
|
||||
if(!content || content==""){
|
||||
var content="#NowPlaying {song} / {album} / {artist}\n{url}";
|
||||
}
|
||||
var str_array=arg.artist.split('');//1文字ずつ配列に入れる
|
||||
var utf8Array=Encoding.convert(str_array, 'SJIS', 'AUTO');//UTF-8に変換
|
||||
console.log(utf8Array);
|
||||
var convert=Encoding.codeToString( utf8Array );
|
||||
console.log(convert);
|
||||
var regExp = new RegExp("{song}", "g");
|
||||
content = content.replace(regExp, arg.name);
|
||||
var regExp = new RegExp("{album}", "g");
|
||||
content = content.replace(regExp, arg.album);
|
||||
content = content.replace(regExp, arg.album.name);
|
||||
var regExp = new RegExp("{artist}", "g");
|
||||
content = content.replace(regExp, arg.artist);
|
||||
var regExp = new RegExp("{url}", "g");
|
||||
@@ -126,4 +126,11 @@ if(location.search){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
$("#npbtn").click(function() {
|
||||
nowplaying('spotify');
|
||||
});
|
||||
$("#npbtn").bind('contextmenu', function() {
|
||||
nowplaying('itunes');
|
||||
return false;
|
||||
});
|
@@ -6,7 +6,7 @@ if(location.search){
|
||||
var mode=m[1];
|
||||
var codex=m[2];
|
||||
if(mode=="user"){
|
||||
udgEx(codex,0);
|
||||
udgEx(codex,'main');
|
||||
}
|
||||
}
|
||||
function udgEx(user,acct_id){
|
||||
@@ -16,6 +16,9 @@ function udgEx(user,acct_id){
|
||||
if(acct_id=="selector"){
|
||||
acct_id = $("#user-acct-sel").val();
|
||||
}
|
||||
if(acct_id=="main"){
|
||||
acct_id = localStorage.getItem("main");
|
||||
}
|
||||
console.log(user);
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem(domain + "_at");
|
||||
|
Reference in New Issue
Block a user