diff --git a/README.md b/README.md index 5f5bc8ee..2f52bbaf 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ [![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk) -[![Server-up time](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com/) Mastodon/Misskey client for PC(Windows/Linux/macOS) オープンソースSNSマストドン/MisskeyのWindows/Linuxクライアント Download:[TheDesk](https://thedesk.top) @@ -57,7 +56,7 @@ Crowdinから翻訳に参加してみませんか?: https://translate.thedesk. * sumchecker(in package.json) * Ability to read unformated files!(install yourself) -## Contributors/コントリビューター +## Contributors/主なコントリビューター macOSビルダー @@ -67,6 +66,10 @@ Linuxビルダー * [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja) +iTunes NowPlayingにアルバムアートワークを付けてくれた人 + +* [kPherox](https://www.kr-kp.com/) + ## Build/ビルド Misskey(misskey.xyz) application token is not in cutls/TheDesk diff --git a/app/css/post.css b/app/css/post.css index 9190f245..ed1635da 100644 --- a/app/css/post.css +++ b/app/css/post.css @@ -68,6 +68,15 @@ #preview-field { display: none; } +.preview-img{ + width:50px; + max-height:100px; +} +.pi-wrap{ + display:inline-block; + width:50px; + max-height:100px; +} #default-emoji a{ color:white; margin-right:2px; diff --git a/app/css/tl.css b/app/css/tl.css index 23298bad..8b6934b9 100644 --- a/app/css/tl.css +++ b/app/css/tl.css @@ -108,10 +108,15 @@ iframe { .box { overflow: hidden; min-width: 300px; - height: 100vh; flex: 1; - border: thin solid gray; border-top:none; + display:flex; + flex-direction: column; +} +.boxIn{ + height:100%; + border: thin solid gray; + overflow: hidden; } .box .pin,#his-data .pin{ display:none; @@ -131,7 +136,11 @@ iframe { .faicon_FTL{ display:none; } -.tl-box{ height:calc(100% - 40px); overflow-y:scroll; overflow-x:hidden } +.tl-box{ + position:relative; + height:calc(100% - 40px); + overflow-y:scroll; + overflow-x:hidden } .additional { overflow-x: scroll; width: 100%; diff --git a/app/js/lang/lang.en.js b/app/js/lang/lang.en.js index 3565c150..a7fb96ce 100644 --- a/app/js/lang/lang.en.js +++ b/app/js/lang/lang.en.js @@ -45,6 +45,7 @@ var lang={ //post/img.js "lang_postimg_previewdis":"cannot preview", "lang_postimg_aftupload":"You cannot change accounts after uploading.", + "lang_postimg_delete":"Delete this image.", //post/post.js "lang_post_tagTL":"This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?", "lang_post_tagVis":"This toot(not 'public' toot) is not shown on this tag's TL.", @@ -122,6 +123,8 @@ var lang={ "lang_layout_webviewmode":"Prefer WebView", "lang_excluded":"Excluded type of notification", "lang_layout_excludingbt":"Show BT mode(OFF/Exclude BT/Only BT)", + "lang_layout_leftFold":"Stack to the left", + "lang_layout_leftUnfold":"Dock on the right", //ui/sort.js "lang_sort_gothis":"Go to this column", "lang_sort_remthis":"Delete this column", diff --git a/app/js/lang/lang.ja.js b/app/js/lang/lang.ja.js index 222928c2..6b35ed78 100644 --- a/app/js/lang/lang.ja.js +++ b/app/js/lang/lang.ja.js @@ -45,6 +45,7 @@ var lang={ //post/img.js "lang_postimg_previewdis":"プレビューできません。", "lang_postimg_aftupload":"アップロード後はアカウントを切り替えられません。", + "lang_postimg_delete":"この画像を削除します", //post/post.js "lang_post_tagTL":"デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。", "lang_post_tagVis":"公開範囲が「公開」以外だと、タグTLに表示されません。(一部インスタンスを除く)", @@ -122,6 +123,8 @@ var lang={ "lang_layout_webviewmode":"WebView優先", "lang_excluded":"除外する通知", "lang_layout_excludingbt":"BT表示(OFF/BT除外/BTのみ)", + "lang_layout_leftFold":"左へ重ねる", + "lang_layout_leftUnfold":"右へ出す", //ui/sort.js "lang_sort_gothis":"このカラムへ", "lang_sort_remthis":"このカラムを削除", diff --git a/app/js/login/manager.js b/app/js/login/manager.js index e4b9afb8..e9dd6776 100644 --- a/app/js/login/manager.js +++ b/app/js/login/manager.js @@ -335,7 +335,29 @@ function misskeyLogin(url) { httpreq.send(JSON.stringify({ name: "TheDesk(PC)", description: "Mastodon client for PC", - permission: ["read","write","follow"] + permission: [ + "account-read", + "account-write", + "account/read", + "account/write", + "drive-read", + "drive-write", + "favorite-read", + "favorite-write", + "favorites-read", + "following-read", + "following-write", + "messaging-read", + "messaging-write", + "note-read", + "note-write", + "notification-read", + "notification-write", + "reaction-read", + "reaction-write", + "vote-read", + "vote-write" + ] })); httpreq.onreadystatechange = function() { if (httpreq.readyState === 4) { diff --git a/app/js/platform/end.js b/app/js/platform/end.js index 41ef4583..ac852838 100644 --- a/app/js/platform/end.js +++ b/app/js/platform/end.js @@ -171,10 +171,10 @@ function opendev(){ */ } -var webview = document.getElementById('webview'); +var webviewDom = document.getElementById('webview'); const { shell } = require('electron'); -webview.addEventListener('new-window', function(e) { +webviewDom.addEventListener('new-window', function(e) { shell.openExternal(e.url); }); \ No newline at end of file diff --git a/app/js/post/img.js b/app/js/post/img.js index 0dcd41d2..e8ed2984 100644 --- a/app/js/post/img.js +++ b/app/js/post/img.js @@ -131,7 +131,7 @@ function media(b64, type, no) { console.log(json); var img = localStorage.getItem("img"); if (json.type.indexOf("image")!=-1) { - var html = ''; + var html = ''; $('#preview').append(html); } else { $('#preview').append(lang.lang_postimg_previewdis); @@ -156,6 +156,7 @@ function media(b64, type, no) { Materialize.toast(lang.lang_postimg_aftupload, 1000); $("#imgup").text(""); $("#imgsel").show(); + uploadnow=false; localStorage.removeItem("image"); } } @@ -222,4 +223,20 @@ function adobe(){ } ipc.on('adobeagree', function (event, arg) { localStorage.setItem("adobeagree",arg); - }); \ No newline at end of file + }); +function deleteImage(key){ + console.log(key); + if(!confirm(lang.lang_postimg_delete)){ + return false; + } + var media = $("#media").val(); + var arr=media.split(","); + for(var i=0;i" + accts); + $("#suggest").html(accts); $("#poll").addClass("hide") $("#emoji").addClass("hide") } else { diff --git a/app/js/post/use-txtbox.js b/app/js/post/use-txtbox.js index d382812b..b66d6a05 100644 --- a/app/js/post/use-txtbox.js +++ b/app/js/post/use-txtbox.js @@ -8,7 +8,9 @@ function re(id,ats_cm,acct_id,mode){ for(var i=0;i'+poll+''; } - //Reactions + //Reactions if(toot.reactionCounts){ if(toot.reactionCounts.like){ var like=toot.reactionCounts.like; diff --git a/app/js/ui/layout.js b/app/js/ui/layout.js index 64bf2a2f..3af085f5 100644 --- a/app/js/ui/layout.js +++ b/app/js/ui/layout.js @@ -72,7 +72,9 @@ function parseColumn() { if ($("#timeline-container").length) { $("#timeline-container").html(""); } - Object.keys(obj).forEach(function(key) { + var basekey=0; + for(var key=0;key'; + $("#timeline-container").append(basehtml); + var left_hold='view_agenda'+lang.lang_layout_leftFold+'
'; + }else{ + var left_hold='view_column'+lang.lang_layout_leftUnfold+'
'; + } + if(key===0){ + left_hold=''; + } + var html='
'; - $("#timeline-container").append(html); + '" class="tl '+acct.type+'-timeline " tlid="' + key + '" data-type="' + acct.type + '" data-acct="'+acct.domain+'">
'+lang.lang_layout_nodata +'
' + $('#timeline_box_' + basekey + '_parentBox').append(html); localStorage.removeItem("pool_" + key); if (acct.data) { var data = acct.data; @@ -200,7 +213,7 @@ function parseColumn() { catchCheck(key); voiceCheck(key); } - }); + } var box = localStorage.getItem("box"); if (box == "absolute") { setTimeout(show, 1000); @@ -408,7 +421,7 @@ function coloradd(key,bg,txt){ } } //禁断のTwitter -function webview(url,key,insert,icnsert,css){ +function webviewParse(url,key,insert,icnsert,css){ var html = '
'; return html; +} +function leftFoldSet(key){ + var multi = localStorage.getItem("column"); + var obj = JSON.parse(multi); + obj[key].left_fold=true; + var json = JSON.stringify(obj); + localStorage.setItem("column", json); + parseColumn(); +} +function leftFoldRemove(key){ + var multi = localStorage.getItem("column"); + var obj = JSON.parse(multi); + obj[key].left_fold=false; + var json = JSON.stringify(obj); + localStorage.setItem("column", json); + parseColumn(); } \ No newline at end of file diff --git a/app/js/ui/settings.js b/app/js/ui/settings.js index f0d846e6..baaf4589 100644 --- a/app/js/ui/settings.js +++ b/app/js/ui/settings.js @@ -402,7 +402,7 @@ function importSettings(){ localStorage.setItem("card_" + i,"true"); localStorage.removeItem("catch_" + i); } - location.href="language.html"; + location.href="index.html"; }else{ alert("Error.") } diff --git a/app/js/ui/spotify.js b/app/js/ui/spotify.js index d40f47fc..f54f80ac 100644 --- a/app/js/ui/spotify.js +++ b/app/js/ui/spotify.js @@ -63,6 +63,7 @@ function spotifyFlagSave(){ Materialize.toast(lang.lang_spotify_imgno, 3000); } } +var uploadnow=false; function nowplaying(mode){ if(mode=="spotify"){ var start = "https://thedesk.top/now-playing?at="+localStorage.getItem("spotify")+"&rt="+localStorage.getItem("spotify-refresh"); @@ -124,15 +125,25 @@ function nowplaying(mode){ var electron = require("electron"); var ipc = electron.ipcRenderer; ipc.send('itunes', ""); - ipc.on('itunes-np', function (event, arg) { + ipc.once('itunes-np', function (event, arg) { console.log(arg); var content=localStorage.getItem("np-temp"); if(!content || content=="" || content=="null"){ var content="#NowPlaying {song} / {album} / {artist}\n{url}"; } var flag=localStorage.getItem("artwork"); - if(flag && arg.path){ - media(arg.path,"image/png","new"); + var remote=electron.remote; + var platform=remote.process.platform; + if(platform=="win32"){ + if(!uploadnow && flag && arg.path){ + uploadnow=true; + media(arg.path,"image/png","new"); + } + }else if(platform=="darwin"){ + if(!uploadnow && flag && arg.artworks[0]){ + uploadnow=true; + ipc.send('bmp-image', [arg.artworks[0].path,0]); + } } var regExp = new RegExp("{song}", "g"); content = content.replace(regExp, arg.name); @@ -145,11 +156,11 @@ function nowplaying(mode){ var regExp = new RegExp("{composer}", "g"); content = content.replace(regExp, arg.composer); var regExp = new RegExp("{hz}", "g"); + content = content.replace(regExp, arg.sampleRate/1000+"kHz"); var regExp = new RegExp("{lyricist}", "g"); content = content.replace(regExp, ""); var regExp = new RegExp("{bpm}", "g"); content = content.replace(regExp, ""); - content = content.replace(regExp, arg.sampleRate/1000+"kHz"); var regExp = new RegExp("{bitRate}", "g"); content = content.replace(regExp, arg.bitRate+"kbps"); var regExp = new RegExp("{genre}", "g"); diff --git a/app/main.js b/app/main.js index ba30fc1c..dc169bbc 100644 --- a/app/main.js +++ b/app/main.js @@ -465,7 +465,7 @@ ipc.on('itunes', (e, args) => { if(platform=="darwin"){ const nowplaying = require("itunes-nowplaying-mac") nowplaying.getRawData().then(function (value) { - mainWindow.webContents.send('itunes-np', value); + mainWindow.webContents.send('itunes-np', value); }).catch(function (error) { // 非同期処理失敗。呼ばれない console.log(error); @@ -492,6 +492,7 @@ ipc.on('itunes', (e, args) => { } var value={ + win:true, name:myAIMP.getTitle(), artist:myAIMP.getArtist(), album:myAIMP.getAlbum(), diff --git a/app/package-lock.json b/app/package-lock.json index ab63ffc0..ed662863 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -1,6 +1,6 @@ { "name": "thedesk", - "version": "17.3.0", + "version": "18.0.3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1601,10 +1601,8 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "itunes-nowplaying-mac": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/itunes-nowplaying-mac/-/itunes-nowplaying-mac-0.2.3.tgz", - "integrity": "sha512-1n418TnV4BnpSP6IzuxVECgPYnlm/nUZIXsblvzFVu4+rxmswXPnz3xi8XUq0r28I9njTi3g6vmBFa5YFHb8TA==", - "optional": true + "version": "github:rinsuki/itunes-nowplaying-mac#faf0f53c39d5f895eab9afadbac762914693a1fd", + "from": "github:rinsuki/itunes-nowplaying-mac#pull/1/head" }, "jimp": { "version": "0.2.28", diff --git a/app/package.json b/app/package.json index 206f712c..9c3f6ea4 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "thedesk", - "version": "18.0.3", + "version": "18.1.0", "description": "TheDesk is a Mastodon client for PC.", "main": "main.js", "scripts": { @@ -30,6 +30,11 @@ "name": "ぽぷんじゃ", "url": "https://popon.pptdn.jp/@popn_ja", "email": "popn.ja@gmail.com" + }, + { + "name": "kPherox", + "url": "https://www.kr-kp.com/", + "email": "admin@mail.kr-kp.com" } ], "license": "GPL-3.0", @@ -43,8 +48,8 @@ "vue": "^2.6.9" }, "optionalDependencies": { - "itunes-nowplaying-mac": "^0.2.3", - "nowplaying-node": "^0.1.3" + "nowplaying-node": "^0.1.3", + "itunes-nowplaying-mac": "github:rinsuki/itunes-nowplaying-mac#pull/1/head" }, "build": { "productName": "TheDesk", @@ -61,11 +66,14 @@ ] }, "appx": { - "identityName":"53491Cutls.TheDesk", - "applicationId":"Cutls.TheDesk", - "publisherDisplayName":"Cutls", - "publisher":"CN=629757F5-A5EE-474F-9562-B304A89A9FD1", - "languages":["JA-JP","EN-US"] + "identityName": "53491Cutls.TheDesk", + "applicationId": "Cutls.TheDesk", + "publisherDisplayName": "Cutls", + "publisher": "CN=629757F5-A5EE-474F-9562-B304A89A9FD1", + "languages": [ + "JA-JP", + "EN-US" + ] }, "nsis": { "oneClick": false, @@ -83,12 +91,12 @@ "target": "dmg" }, "electronDownload": { - "version": "4.0.5" + "version": "4.0.6" }, - "electronVersion": "4.0.5" + "electronVersion": "4.0.6" }, "devDependencies": { - "electron": "^4.0.5", + "electron": "^4.0.6", "electron-packager": "^13.0.1", "electron-prebuilt": "^1.4.13", "electron-rebuild": "^1.8.4" diff --git a/app/view/en/index.html b/app/view/en/index.html index b5a163c8..751f154b 100644 --- a/app/view/en/index.html +++ b/app/view/en/index.html @@ -32,7 +32,7 @@