TheDesk Mio (ver.3)

This commit is contained in:
cutls
2018-05-20 15:17:10 +09:00
parent a379617427
commit de8f063aea
29 changed files with 591 additions and 93 deletions

View File

@@ -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 = "";
}

View File

@@ -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 + '&nbsp;<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);
}

View File

@@ -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{

View File

@@ -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();
}
}

View File

@@ -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

View File

@@ -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 +

View File

@@ -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();

View File

@@ -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();

View File

@@ -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") {

View File

@@ -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;
});

View File

@@ -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");