Compare commits

...

133 Commits

Author SHA1 Message Date
Cutls
1387482db0 TheDesk Usamin (18.7.1) 2019-08-02 00:02:52 +09:00
Cutls
b7a86324dd Merge pull request #105 from cutls/dependabot/npm_and_yarn/app/readline-sync-1.4.10
Update readline-sync requirement from 1.4.9 to 1.4.10 in /app
2019-08-01 22:56:12 +09:00
Cutls
babc5a6424 Merge pull request #107 from cutls/dependabot/npm_and_yarn/app/electron-tw-6.0.0
Update electron requirement from ^5.0.4 to ^6.0.0 in /app
2019-08-01 22:55:31 +09:00
dependabot-preview[bot]
74a468383c Update electron requirement from ^5.0.4 to ^6.0.0 in /app
Updates the requirements on [electron](https://github.com/electron/electron) to permit the latest version.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v5.0.4...v6.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-31 20:26:05 +00:00
dependabot-preview[bot]
3a48f0ff0d Update readline-sync requirement from 1.4.9 to 1.4.10 in /app
Updates the requirements on [readline-sync](https://github.com/anseki/readline-sync) to permit the latest version.
- [Release notes](https://github.com/anseki/readline-sync/releases)
- [Commits](https://github.com/anseki/readline-sync/compare/1.4.9...1.4.10)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-29 20:25:25 +00:00
Cutls
e26363adf6 Fix: when open an image modal, disabled toot selector 2019-07-29 01:13:53 +09:00
Cutls
35d97d42c5 Fix: context func is pollted 2019-07-29 01:09:12 +09:00
Cutls
4fa7d07500 Improve: sorting 2019-07-29 00:52:12 +09:00
Cutls
15f428528b Add: video loop(on modal and Pleroma) and autoplay on modal 2019-07-29 00:42:52 +09:00
Cutls
7fa805fe3a Change: sort suggest 2019-07-29 00:42:17 +09:00
Cutls
fd9c97a126 Add: tag suggest with v2 2019-07-29 00:16:49 +09:00
Cutls
f081154804 init 2019-07-28 23:48:44 +09:00
Cutls
866affdf45 Add: mute by emoji(custom/default) 2019-07-28 23:47:50 +09:00
Cutls
30aee556f1 Fix: if account is null #102 2019-07-25 23:55:25 +09:00
Cutls
b12c18aa08 Add: NSFW warning when not blurhashed sensitive toots 2019-07-25 23:52:44 +09:00
Cutls
f17a47d088 Change: NSFW images on not blurhash supported instance 2019-07-25 23:20:38 +09:00
Cutls
d79f096749 Merge pull request #104 from cutls/dependabot/npm_and_yarn/app/electron-builder-tw-21.1.5
Update electron-builder requirement from ^20.44.4 to ^21.1.5 in /app
2019-07-25 23:16:23 +09:00
dependabot-preview[bot]
5b82b91c6a Update electron-builder requirement from ^20.44.4 to ^21.1.5 in /app
Updates the requirements on [electron-builder](https://github.com/electron-userland/electron-builder) to permit the latest version.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v20.44.4...v21.1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-24 20:25:27 +00:00
Cutls
4a6b87ac1c Fix: emoji-including URL 2019-07-15 00:56:19 +09:00
Cutls
1bea06354e TheDesk Usamin (18.7.0) 2019-07-13 00:01:16 +09:00
Cutls
5fbd5aaf10 Fix: layout 2019-07-13 00:01:09 +09:00
Cutls
0290a6d918 shortcut key desc 2019-07-13 00:00:26 +09:00
Cutls
2576c48441 Pleroma URL 2019-07-12 23:16:27 +09:00
Cutls
eb02dd2986 Fix: when failed to upload 2019-07-12 01:01:24 +09:00
Cutls
d92570fa3b Add: keyboard-control 2019-07-12 00:53:55 +09:00
Cutls
38c988d2a2 Fix: desc hidden 2019-07-10 22:48:36 +09:00
Cutls
0927282d41 Change: overflow of column name 2019-07-09 22:48:57 +09:00
Cutls
5ffd59619c TheDesk Usamin (18.6.7) 2019-07-09 00:35:33 +09:00
Cutls
a739926ad4 sub-button color 2019-07-09 00:35:20 +09:00
Cutls
e41c38f41d Change: remove get card API 2019-07-09 00:27:31 +09:00
Cutls
2de05b84aa Misskey streaming leak 2019-07-09 00:27:18 +09:00
Cutls
0e9bdef9ca Add: set main account on showOnTL 2019-07-06 23:16:41 +09:00
Cutls
8e70e005c1 TheDesk Usamin (18.6.6) 2019-07-02 00:37:58 +09:00
Cutls
3817dbc925 Some bugs about Vue 2019-07-02 00:32:28 +09:00
Cutls
63ec669c52 boost-btn 2019-07-02 00:32:06 +09:00
Cutls
afc5702796 boost-btn 2019-07-02 00:31:54 +09:00
Cutls
41ec66b58a Add theme: [渚の花嫁] 新田美波 2019-07-02 00:31:44 +09:00
Cutls
936d3ca7fc Change: flexible color of toot-btn 2019-07-02 00:31:08 +09:00
Cutls
f8b4b7b74d Change: unboostable toot btn(hidden to unvisible) 2019-07-02 00:26:41 +09:00
Cutls
bd865977b0 Remove: best-friends.chat from TheDesk support instance 2019-07-01 23:19:47 +09:00
Cutls
d056db5617 Do not ... on translate results #96 2019-07-01 21:46:00 +09:00
Cutls
7685677ada Merge branch 'master' of https://github.com/cutls/TheDesk 2019-07-01 21:40:46 +09:00
Cutls
eb0aa81492 Remove knzk.me from support instances 2019-07-01 21:40:28 +09:00
Cutls
dc52531f28 Merge pull request #99 from kPherox/update-kpherox-links
Update kPherox's links
2019-06-29 16:22:34 +09:00
kPherox
5a20034b9f Update kPherox's links 2019-06-29 16:11:52 +09:00
Cutls
5cd0ef0d8a Update README 2019-06-27 23:17:07 +09:00
Cutls
4daf47bb5f TheDesk Usamin (18.6.5) 2019-06-27 21:57:16 +09:00
Cutls
3e0dbd8433 Remove: colummn-deleting dialog 2019-06-26 00:52:15 +09:00
Cutls
fc4d3b24f6 Fix: column-deleteing and url-analytics bug 2019-06-26 00:51:49 +09:00
Cutls
3a9eab55a4 Fix: misskey streaming 2019-06-26 00:33:44 +09:00
Cutls
546b34275d Fix: setting bugs on Vue 2019-06-26 00:33:32 +09:00
Cutls
3ee4cf27d5 Good-bye native dialogs 2019-06-26 00:33:20 +09:00
Cutls
87da95b9a4 Fix: TheDesk nano 2019-06-25 23:26:15 +09:00
Cutls
3368e30e15 Fix: streaming bug 2019-06-25 23:26:01 +09:00
Cutls
f1ea5ad8f1 Fix: Notf TL bugs about Misskey 2019-06-25 23:16:36 +09:00
Cutls
fa2d5f8492 OAuth and something 2019-06-25 23:16:12 +09:00
Cutls
0f2c5de161 Use sweetalert 2019-06-25 23:15:52 +09:00
Cutls
b69937d4fd Sweetalert CSS for custom themes 2019-06-25 23:15:25 +09:00
Cutls
e82faacbb2 Change: keyboard shortcut 2019-06-24 23:10:44 +09:00
Cutls
2ab5c67545 For MS Store 2019-06-24 23:10:29 +09:00
Cutls
358d01b12e Change: audio wrap 2019-06-24 00:28:42 +09:00
Cutls
95460fabbb TheDesk Usamin (18.6.4) 2019-06-23 18:38:22 +09:00
Cutls
0fb882b3ad Fix: streaming 2019-06-23 18:24:55 +09:00
Cutls
3d0382d279 TheDesk Usamin (18.6.3) 2019-06-23 10:57:56 +09:00
Cutls
59d5aa4515 Add: audio player(chrome default) 2019-06-23 01:20:17 +09:00
Cutls
2dff9f9b17 TheDesk Usamin (18.6.2) 2019-06-23 01:06:07 +09:00
Cutls
03fded672e Add gitignore 2019-06-23 00:51:21 +09:00
Cutls
a21c1f5329 Internal 2019-06-23 00:51:11 +09:00
Cutls
37815ced63 Merge pull request #91 from cutls/dependabot/npm_and_yarn/app/electron-builder-20.44.4
Bump electron-builder from 20.43.0 to 20.44.4 in /app
2019-06-22 10:08:07 +09:00
Cutls
b7f9b8d668 Merge pull request #92 from cutls/dependabot/npm_and_yarn/app/sweetalert2-8.13.0
Bump sweetalert2 from 8.12.2 to 8.13.0 in /app
2019-06-22 10:07:57 +09:00
Cutls
f68af78099 Merge pull request #93 from cutls/dependabot/npm_and_yarn/app/materialize-css-1.0.0
Bump materialize-css from 1.0.0-rc.2 to 1.0.0 in /app
2019-06-22 10:07:43 +09:00
dependabot-preview[bot]
027abffa01 Bump materialize-css from 1.0.0-rc.2 to 1.0.0 in /app
Bumps [materialize-css](https://github.com/Dogfalo/materialize) from 1.0.0-rc.2 to 1.0.0.
- [Release notes](https://github.com/Dogfalo/materialize/releases)
- [Changelog](https://github.com/Dogfalo/materialize/blob/v1-dev/CHANGELOG.md)
- [Commits](https://github.com/Dogfalo/materialize/compare/1.0.0-rc.2...1.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-21 20:18:44 +00:00
dependabot-preview[bot]
5dfba4dd5e Bump sweetalert2 from 8.12.2 to 8.13.0 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 8.12.2 to 8.13.0.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v8.12.2...v8.13.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-21 20:18:16 +00:00
dependabot-preview[bot]
d0ae7e9cf9 Bump electron-builder from 20.43.0 to 20.44.4 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 20.43.0 to 20.44.4.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v20.43.0...v20.44.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-21 20:17:44 +00:00
Cutls
5a57e984de Introduce: SweetAlert 2019-06-22 01:06:32 +09:00
Cutls
473f4d7c24 Move: jQuery and Materialize 2019-06-22 00:22:45 +09:00
Cutls
35bfea2dbd Fix: update tool 2019-06-21 23:24:28 +09:00
Cutls
62cb30cb5b Merge branch 'master' of https://github.com/cutls/TheDesk 2019-06-21 23:18:08 +09:00
Cutls
9d2eb6f18b Fix: moreLoading 2019-06-21 23:17:56 +09:00
Cutls
d5cd57c26d Merge pull request #88 from cutls/dependabot/npm_and_yarn/app/electron-5.0.4
Bump electron from 5.0.1 to 5.0.4 in /app
2019-06-17 00:34:27 +09:00
Cutls
37695735e0 TheDesk Usamin (18.6.1) 2019-06-16 22:00:31 +09:00
Cutls
c15625c063 Fix: wordmute/emp 2019-06-16 21:52:41 +09:00
Cutls
cd65bd4c2a Fix: bugs about new(?) Materialize 2019-06-16 20:35:15 +09:00
Cutls
fc3fead235 Fix: font of textarea 2019-06-16 20:34:57 +09:00
Cutls
2e00282560 Update README 2019-06-16 20:34:41 +09:00
Cutls
54d740e861 Change: #86 open in browser on acct prof page 2019-06-16 02:05:27 +09:00
Cutls
478a849e8d Fix: error about RAM 2019-06-16 01:34:49 +09:00
Cutls
82c5b35d07 TweetDeck 2019-06-16 01:18:40 +09:00
dependabot-preview[bot]
6cdd4cba9e Bump electron from 5.0.1 to 5.0.4 in /app
Bumps [electron](https://github.com/electron/electron) from 5.0.1 to 5.0.4.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v5.0.1...v5.0.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-15 16:10:18 +00:00
Cutls
dda9469874 TheDesk Usamin (18.6.0) - fix 2019-06-16 01:08:10 +09:00
Cutls
334fbdab3f TheDesk Usamin (18.6.0) 2019-06-15 23:07:18 +09:00
Cutls
a5f8e34ee6 Fix: 'about' preload #86 2019-06-15 18:52:28 +09:00
Cutls
eba54d0906 Change: some node integration on rend-proc #86 2019-06-15 02:30:29 +09:00
Cutls
070c40a958 Remove: node on update.html #86 2019-06-15 02:23:41 +09:00
Cutls
8d308cae5e Remove: Adobe photo editor 2019-06-15 02:17:28 +09:00
Cutls
848e9fcf99 Change: language.js reload #86 2019-06-15 02:12:55 +09:00
Cutls
d146776b17 Remove: node on spotify/tips/showOnTL.js #86 2019-06-15 02:10:11 +09:00
Cutls
7da16a7428 Remove: node on setting/system.js #86 2019-06-15 02:01:38 +09:00
Cutls
7b46145114 Remove: node on ui/img/layout.js #86 2019-06-15 01:32:59 +09:00
Cutls
725f0f789a Remove: node on notification/parse.js #86 2019-06-15 01:25:51 +09:00
Cutls
772a5438aa Remove: node on details/misskeyparse.js #86 2019-06-15 01:20:12 +09:00
Cutls
3c276b329b Remove: node on post.js #86 2019-06-15 01:15:45 +09:00
Cutls
e2cde71831 Remove: node in firest/img(post).js #86 2019-06-15 01:10:32 +09:00
Cutls
861ee3250d Remove: node in manager.js #86 2019-06-15 01:05:53 +09:00
Cutls
5672ccfa37 Add: login auth open url #86 2019-06-15 01:01:07 +09:00
Cutls
65e691cda8 Add: install source dialog #86 2019-06-15 00:54:44 +09:00
Cutls
56cca8b529 Change: mainWindow to event.sender on IPC #86 2019-06-15 00:51:41 +09:00
Cutls
367f2f656e Add: getPlatform #86 2019-06-14 23:25:27 +09:00
Cutls
7f806bd155 Add: sendSinmpleIpc for 'about' #86 2019-06-14 23:21:08 +09:00
Cutls
a70444e3c7 Introduce: preload and postMessage #86 2019-06-14 23:17:16 +09:00
Cutls
1a72033571 return 2019-06-14 00:59:33 +09:00
Cutls
a475407c27 try 2019-06-14 00:54:22 +09:00
Cutls
b602cd92a9 try 2019-06-14 00:54:08 +09:00
Cutls
2878a4a524 Fix beta 2019-06-14 00:53:19 +09:00
Cutls
8b1ac63343 Introducing: Materialize 1.0.0 2019-06-07 01:11:04 +09:00
Cutls
8d1012c9fb Merge branch 'master' of https://github.com/cutls/TheDesk 2019-06-06 23:42:15 +09:00
Cutls
62f2654358 Fix: Notice "ended" when poll has been ended without your vote 2019-06-06 23:42:02 +09:00
Cutls
e7feb4b2c5 Merge pull request #84 from cutls/dependabot/npm_and_yarn/app/electron-builder-20.43.0
Bump electron-builder from 20.41.0 to 20.43.0 in /app
2019-06-05 23:55:30 +09:00
dependabot-preview[bot]
dcc62b32a2 Bump electron-builder from 20.41.0 to 20.43.0 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 20.41.0 to 20.43.0.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v20.41.0...v20.43.0)
2019-06-04 20:25:43 +00:00
Cutls
26eecd11b6 Fix package 2019-06-04 23:31:39 +09:00
Cutls
8d388bbd4b update and construct script 2019-06-04 23:01:04 +09:00
Cutls
409635b00c Fix: hide filter btns on coll notf pane 2019-06-04 22:41:04 +09:00
Cutls
17a71ddbf6 Fix: Exclude notification 2019-06-04 22:37:03 +09:00
Cutls
d2a86af0e2 Change month logic and English 2019-06-04 22:29:47 +09:00
Cutls
f23dc928b2 WIP: Now Usamin (18.5.1) 2019-06-04 01:26:00 +09:00
Cutls
68e11dc222 WIP support me 2019-06-04 01:01:14 +09:00
Cutls
075c3ef9ca Merge branch 'master' of https://github.com/cutls/TheDesk 2019-06-03 23:39:27 +09:00
Cutls
6b004a3992 Fix visibility on Misskey #83 2019-06-03 23:38:58 +09:00
Cutls
3cf198538a Merge pull request #82 from cutls/dependabot/npm_and_yarn/app/electron-builder-20.41.0
Bump electron-builder from 20.40.2 to 20.41.0 in /app
2019-06-03 01:42:00 +09:00
Cutls
612400944e Fix: Pleroma hashtags unshown 2019-05-29 23:24:50 +09:00
Cutls
5f22d2427e Fix: Pleroma image unshown 2019-05-29 23:13:38 +09:00
Cutls
2692967b7d Fix: emojis select buttons on white-themes 2019-05-29 00:42:06 +09:00
dependabot-preview[bot]
2ed85ab978 Bump electron-builder from 20.40.2 to 20.41.0 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 20.40.2 to 20.41.0.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v20.40.2...v20.41.0)
2019-05-27 23:31:23 +00:00
100 changed files with 4036 additions and 27295 deletions

4
.gitignore vendored
View File

@@ -3,8 +3,7 @@
*.7z
*.exe
TheDesk-*
app/build
build
build/*
app/.DS_Store
.DS_Store
.vs/*
@@ -13,3 +12,4 @@ enq.md
app/.tkn
app/node_modules
app/js/login/tkn.js
app/package-lock.json

View File

@@ -6,7 +6,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)
[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
[![Download](https://flat.badgen.net/github/assets-dl/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント[日本語はこちら](README_ja.md)
@@ -44,7 +43,7 @@ The default sounds of notifications is provided [Creative Commons BY](https://cr
Crowdin project is available! Visit: https://translate.thedesk.top
## Requirement
## Requirement and development
* Electron 4.2 or above(install yourself)
* electron-dl(in package.json)
@@ -57,6 +56,10 @@ Crowdin project is available! Visit: https://translate.thedesk.top
* sumchecker(in package.json)
* Ability to read unformated files!(install yourself)
### Run on developer mode
`npm run dev` on `app` folder.
## Contributors
Build for macOS
@@ -69,7 +72,7 @@ Build for Linux
Fellow coder
* [kPherox](https://www.kr-kp.com/)
* [kPherox](https://pl.kpherox.dev/kPherox)
## Build

View File

@@ -6,7 +6,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)
[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
[![Download](https://flat.badgen.net/github/assets-dl/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント
@@ -57,6 +56,10 @@ Crowdinから翻訳に参加してみませんか: https://translate.thedesk.
* sumchecker(in package.json)
* Ability to read unformated files!(自分で入れて)
### デベロッパーモード
`npm run dev``app`フォルダ内で実行
## 主なコントリビューター
macOSビルダー
@@ -69,7 +72,7 @@ Linuxビルダー
iTunes NowPlayingにアルバムアートワークを付けてくれた人
* [kPherox](https://www.kr-kp.com/)
* [kPherox](https://pl.kpherox.dev/kPherox)
## ビルド

View File

@@ -4,7 +4,7 @@
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="./css/materialize.css" type="text/css" rel="stylesheet">
<link href="./node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href="./css/themes.css" type="text/css" rel="stylesheet">
<link href="./css/master.css" type="text/css" rel="stylesheet">
@@ -75,27 +75,27 @@
</head>
<body class="center " style="overflow:hidden">
<script type="text/javascript" src="./js/common/jquery.js"></script>
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
<script type="text/javascript" src="./js/common/materialize.js"></script>
<img src="./img/desk.png" style="max-width:70%;">
<script type="text/javascript" src="./node_modules/materialize-css/dist/js/materialize.js"></script>
<img src="./img/desk.png" style="max-width:62%;">
<h5>TheDesk</h5>
<div class='container'>
<div class='area-name1'>Display version</div>
<div class='area-data1' id="now"></div>
<div class='area-name2'>Internal version</div>
<div class='area-data2' id="ver"></div>
<div class='area-name3'>Chromium</div>
<div class='area-data3' id="chrome"></div>
<div class='area-name4'>Electron</div>
<div class='area-data4' id="electron"></div>
<div class='area-name5'>Node.js</div>
<div class='area-data5' id="node"></div>
<div class="container">
<div class="area-name1">Display version</div>
<div class="area-data1" id="now"></div>
<div class="area-name2">Internal version</div>
<div class="area-data2" id="ver"></div>
<div class="area-name3">Chromium</div>
<div class="area-data3" id="chrome"></div>
<div class="area-name4">Electron</div>
<div class="area-data4" id="electron"></div>
<div class="area-name5">Node.js</div>
<div class="area-data5" id="node"></div>
</div>
<div class="cp">Copyright &copy; TheDesk 2018<br>
Main developer(author): <a href="https://cutls.com/@Cutls" target="_blank">Cutls P</a><br>
Thanks:<a href="https://minohdon.jp/@toneji" target="_blank">toneji</a>/<a
href="https://popon.pptdn.jp/@popn_ja" target="_blank">popn_ja</a>/<a href="https://pawoo.net/@kPherox"
href="https://popon.pptdn.jp/@popn_ja" target="_blank">popn_ja</a>/<a href="https://pl.kpherox.dev/kPherox"
target="_blank">kPherox</a> and all users
<img draggable="false" style="width:0.8rem;top: 1px;margin-left: 1px;position: relative;" alt="❤️"
title=":heart:" src="https://twemoji.maxcdn.com/2/72x72/2764.png">
@@ -104,13 +104,11 @@
class="material-icons left">close</i>Close</button>
<script type="text/javascript" src="./js/ui/theme.js"></script>
<script>
var about = JSON.parse(localStorage.getItem("about"));
$("#now").text(localStorage.getItem("ver"));
var electron = require("electron");
var remote = electron.remote;
const shell = electron.shell;
$("#node").text(remote.process.version);
$("#chrome").text(remote.process.versions.chrome);
$("#electron").text(remote.process.versions.electron);
$("#node").text(about[0]);
$("#chrome").text(about[1]);
$("#electron").text(about[2]);
if (location.search) {
var m = location.search.match(/\?ver=([a-zA-Z-0-9.]+)/);
var ver = m[1];
@@ -118,7 +116,7 @@
}
$(document).on('click', 'a', e => {
var url = $(e.target).attr('href');
shell.openExternal(url);
postMessage(["openUrl", url], "*")
return false;
});
</script>

View File

@@ -1,267 +0,0 @@
<!doctype html>
<html lang="ja">
<head>
<title>Adobe Photo Editor - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="./css/materialize.css" type="text/css" rel="stylesheet">
<link href="./css/themes.css" type="text/css" rel="stylesheet">
<link href="./css/master.css" type="text/css" rel="stylesheet">
<link href="./css/auth.css" type="text/css" rel="stylesheet">
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href='./css/tl.css' rel='stylesheet' type='text/css'>
<link href='./css/userdata.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<style>
#cb-drag {
margin-bottom: 8px;
padding: 24px 0;
text-align: center;
}
#cb-drag p {
font-weight: bold;
text-align: center;
}
#cb-file {
cursor: pointer;
}
#cb-display {
margin-bottom: 0;
}
#cb-display p {
margin-top: 8px;
margin-bottom: 0;
line-height: 1.4;
}
.cb-div {
padding: 16px;
margin-bottom: 8px;
}
.cb-image {
cursor: pointer;
}
</style>
<meta charset="utf-8">
</head>
<body id="mainView">
<script type="text/javascript" src="./js/common/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
<script type="text/javascript" src="./js/common/materialize.js"></script>
<script type="text/javascript" src="./js/ui/tips.js"></script>
<script type="text/javascript" src="./js/common/time.js"></script>
<script type="text/javascript" src="./js/common/modal.js"></script>
<div>
<div id="cb-drag">
<p>ここに画像ファイルをドラッグし、画像をクリックしてください。</p>
<input type="file" id="cb-file">
</div>
<div id="cb-display"></div>
</div>
<script type="text/javascript" src="https://dme0ih8comzn4.cloudfront.net/imaging/v2/editor.js"></script>
<script type="text/javascript">
var dragAndDrop = (function (window, document) {
"use strict";
var drag = document.getElementById("mainView");
var disp = document.getElementById("cb-display");
var file = document.getElementById("cb-file");
function makeView(data) {
var div, img, customEvent;
var metaData = "<p>■ファイル名: <b>" + data.name + "</b><br>■容量: <b>" + data.size + "</b>バイト</p>";
div = document.createElement("div");
div.setAttribute("class", "cb-div");
img = document.createElement("img");
img.src = data.url;
img.setAttribute("class", "cb-image");
img.style.maxWidth = "100%";
img.style.height = "auto";
div.appendChild(img);
img.insertAdjacentHTML("afterend", metaData);
disp.appendChild(div);
customEvent = document.createEvent("HTMLEvents");
customEvent.initEvent("makeView", true, false);
div.dispatchEvent(customEvent);
}
function readImage(e) {
var f = (e.dataTransfer) ? e.dataTransfer.files : e.target.files;
for (var i = 0, l = f.length; i < l; i++) {
var reader = new FileReader();
reader.onload = (function (f) {
var imageData = {};
return function (evt) {
if (f.type === "image/gif" || f.type === "image/png" || f.type === "image/jpeg") {
imageData.type = f.type;
imageData.name = f.name;
imageData.size = f.size;
imageData.date = f.lastModifiedDate.toLocaleDateString();
imageData.url = evt.target.result;
makeView(imageData);
} else {
return;
}
};
})(f[i]);
reader.readAsDataURL(f[i]);
}
}
function dragFiles() {
drag.addEventListener("drop", function (e) {
e.stopPropagation();
e.preventDefault();
readImage(e);
}, false);
drag.addEventListener("dragover", function (e) {
e.stopPropagation();
e.preventDefault();
}, false);
}
function uploadFiles() {
file.addEventListener("change", function (e) {
readImage(e);
}, false);
}
return {
init: function () {
dragFiles();
uploadFiles();
}
};
})(this, this.document);
var photoEditor = (function (window, document) {
"use strict";
var featherEditor = new Aviary.Feather({
apiKey: "ffee425017ab44b18ce95dab98a5cdc1",
onSave: function (imageID, newURL) {
var img1 = document.getElementById(imageID);
img1.src = newURL;
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('bmp-image', [newURL, 0]);
window.close();
}
});
function clearImage() {
this.parentNode.style.display = "none";
}
function launchEditor(id, src) {
featherEditor.launch({
image: id,
url: src
});
return false;
}
function editPhoto() {
var id = this.getAttribute("id");
var src = this.getAttribute("src");
launchEditor(id, src);
}
function makeButton() {
var button = document.createElement("button");
button.setAttribute("style",
"width: 64px;"
+ " line-height: 24px;"
+ " background-color: #37474F;"
+ " color: #fff;"
+ " border: none;"
+ " cursor: pointer;"
+ " border-radius: 2px;"
+ " font-size: 14px;"
+ " position: absolute;"
+ " text-align: center;"
+ " top: 16px;"
+ " right: 8px;"
+ " padding: 0;"
+ " z-index: 1000;"
);
button.innerHTML = "削除";
return button;
}
function listener() {
var disp = document.getElementById("cb-display");
disp.addEventListener("makeView", function () {
var image = document.querySelectorAll(".cb-image");
var button = [];
for (var i = 0, l = image.length; i < l; i++) {
button[i] = makeButton();
image[i].setAttribute("id", "cb-image_" + i);
image[i].parentNode.style.position = "relative";
image[i].parentNode.appendChild(button[i]);
button[i].addEventListener("click", clearImage, false);
image[i].addEventListener("click", editPhoto, false);
}
}, false);
}
return {
init: function () {
listener();
}
};
})(this, this.document);
dragAndDrop.init();
photoEditor.init();
</script>
<script type="text/javascript" src="./js/ui/theme.js"></script>
<script type="text/javascript" src="./js/platform/end.js"></script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

View File

@@ -10,9 +10,6 @@ body {
background-color: var(--bg);
color: var(--color);
}
body {
border: thin solid gray;
}
.btn {
margin: 5px;
text-transform: none;
@@ -50,6 +47,7 @@ option {
max-height: 100vh;
position: fixed;
z-index: 9;
top: 0 !important;
}
#videomodal,
#tootmodal {
@@ -75,6 +73,9 @@ option {
min-width: 0 !important;
margin-left: 5px !important;
}
.unvisible{
opacity: 0;
}
.bbcode-pulse-loadings,
.bbcode-pulse-loading,
.fa-pulse {
@@ -303,6 +304,9 @@ blockquote:before,
.tabs {
background-color: var(--subcolor);
}
.collapsible-header:focus {
background-color: var(--subcolor);
}
.modal-footer {
background-color: var(--modalfooter) !important;
}
@@ -396,7 +400,8 @@ blockquote:before,
text-align: center;
width: calc(100% + 10px);
border-radius: 5px;
background-color: var(--bg);
background-color: var(--box);
filter: brightness(80%);
margin-left: -5px;
margin-right: -5px;
margin-top: -5px;
@@ -412,6 +417,45 @@ blockquote:before,
justify-content: center;
align-items: center;
}
#support-btm {
position: fixed;
bottom: -300px;
width: 100vw;
background-color: var(--box);
z-index: 9999;
padding: 10px;
display: grid;
grid-template-columns: 3fr 1fr 1fr;
grid-template-rows: 1fr 36px;
grid-template-areas: "note middle right" "note close close";
}
#support-btm-en,
#support-btm-ja {
grid-area: note;
}
#support-btm-middle {
grid-area: middle;
}
#support-btm-right {
grid-area: right;
}
#support-btm-close {
grid-area: close;
}
.select-wrapper .dropdown-content {
width: 250px !important;
}
input, textarea {
color: var(--color);
font-size: 1rem !important;
font-family: inherit;
}
.swal2-popup{
background-color: var(--notfbox) !important;
}
.swal2-title, .swal2-content{
color: var(--color) !important;
}
/*スクロールバー*/
::-webkit-scrollbar {

9595
app/css/materialize.css vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -12,6 +12,10 @@
padding: 5px;
border-radius: 5px;
}
textarea {
min-height: 100px !important;
font-family: inherit;
}
.cancel {
font-size: 0.5rem;
@@ -78,7 +82,7 @@
max-height: 100px;
}
#default-emoji a {
color: white;
color: var(--color);
margin-right: 2px;
}
.character-counter {
@@ -120,7 +124,9 @@
overflow-y: scroll;
top: 90px;
}
#posttgl,#toot-post-btn {
background-color: var(--accentbtn);
}
/*mini*/
.mini-post .mize {
display: none !important;

View File

@@ -14,6 +14,9 @@
--active: #e6ee9c;
--postbox: white;
--modalfooter: #fafafa;
--accentbtn: #009688;
--selected: #c0c0c0;
--selectedWithShare: #b2babd;
}
#imagemodal {
background: url("../img/pixel.white.svg");
@@ -34,6 +37,9 @@
--active: #757575;
--postbox: #424242;
--modalfooter: #212121;
--accentbtn: #3f51b5;
--selected: #3f3f3f;
--selectedWithShare: #003a30;
}
.blacktheme #imagemodal {
background: url("../img/pixel.svg");
@@ -54,6 +60,9 @@
--active: #757575;
--postbox: #1a237e;
--modalfooter: #031833;
--accentbtn: #00acc1;
--selected: #214f8a;
--selectedWithShare: #003a30;
}
.indigotheme #imagemodal {
background: url("../img/pixel.svg");
@@ -74,6 +83,9 @@
--active: #757575;
--postbox: #4e342e;
--modalfooter: #261411;
--accentbtn: #827717;
--selected: #6d352b;
--selectedWithShare: #003a30;
}
.browntheme #imagemodal {
background: url("../img/pixel.svg");
@@ -86,7 +98,7 @@
--modal: #81c784;
--subcolor: #a5d6a7;
--box: #81c784;
--sidebar: #81c784;
--sidebar: #c5e1a5;
--shared: #ffcc80;
--notfbox: #a5d6a7;
--emphasized: #9e9d24;
@@ -94,7 +106,33 @@
--active: #e6ee9c;
--postbox: #a5d6a7;
--modalfooter: #81c784;
--accentbtn: #33691e;
--selected: #78c17a;
--selectedWithShare: #caa266;
}
.greentheme #imagemodal {
background: url("../img/pixel.white.svg");
}
.bluetheme {
--bg: #c9e1ec;
--drag: rgba(255, 255, 255, 0.8);
--color: black;
--beforehover: #757575;
--modal: #b2ebf2;
--subcolor: #90caf9;
--box: #90caf9;
--sidebar: #b6e6f5;
--shared: #e0ffe4;
--notfbox: #90caf9;
--emphasized: #c5e1a5;
--his-data: rgba(255, 255, 255, 0.9);
--active: #b39ddb;
--postbox: #dff1ff;
--modalfooter: #2196f3;
--accentbtn: #2f7bb7;
--selected: #9dcade;
--selectedWithShare: #c1dac4;
}
.bluetheme #imagemodal {
background: url("../img/pixel.white.svg");
}

View File

@@ -96,6 +96,7 @@
}
iframe {
max-width: 100%;
max-height: 300px;
}
@media screen and (max-width: 600px) {
.mobile #timeline-container {
@@ -157,6 +158,7 @@ iframe {
height: 100%;
border: thin solid gray;
overflow: hidden;
border-top: none;
}
.box .pin,
#his-data .pin {
@@ -425,6 +427,9 @@ p:not(:last-child) {
.area-notice_name {
grid-area: notice_name;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.area-notice_acct {
@@ -523,7 +528,7 @@ p:not(:last-child) {
content: "...";
}
.toot a:not(.mention) span:last-of-type {
display: none;
/*display: none;*/
}
.tl-box .via-hide {
display: none;
@@ -581,6 +586,7 @@ p:not(:last-child) {
display: block;
margin-right: 1px;
float: left;
overflow: hidden;
}
.nsfw-media {
position: absolute;
@@ -594,6 +600,18 @@ p:not(:last-child) {
width: 100%;
height: 100%;
}
.shared.selectedToot{
background-color: var(--selectedWithShare);
}
.selectedToot{
background-color: var(--selected);
}
audio{
height: 2rem;
}
.translate{
white-space: normal;
}
@keyframes jump {
0% {
transform: translateY(0);

View File

@@ -87,10 +87,10 @@
#his-plus-action .btn {
width: 170px;
}
.custom-tabs {
.tabs {
display: flex;
}
.custom-tabs .custom-tab a {
.tabs .tab a {
padding: 8px 12px;
}
#his-des .mention {

View File

@@ -1,6 +1,4 @@
//このソフトについて
function about() {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('about', 'go');
postMessage(["sendSinmpleIpc", "about"], "*")
}

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,5 @@
selectedColumn = 0
selectedToot = 0
$(function ($) {
//キーボードショートカット
$(window).keydown(function (e) {
@@ -20,7 +22,6 @@ $(function ($) {
return false;
}
}
}
//Ctrl+Enter:投稿
if (event.metaKey || event.ctrlKey && wv) {
@@ -36,14 +37,6 @@ $(function ($) {
return false;
}
}
//Shift+Space:Markdownゼロ幅スペース
if (event.shiftKey) {
if (e.keyCode === 32) {
brInsert("");
return false;
}
}
//Esc:消す
if (e.keyCode === 27 && wv) {
hide();
@@ -54,14 +47,6 @@ $(function ($) {
location.href = "index.html";
return false;
}
//Ctrl+R:ランキング
if ((event.metaKey || event.ctrlKey) && wv) {
if (e.keyCode === 82) {
if (localStorage.getItem("kirishima")) {
window.open("https://astarte.thedesk.top");
}
}
}
//Ctrl+Sift+C:全消し
if (((event.metaKey || event.ctrlKey) && event.shiftKey) && wv) {
if (e.keyCode === 67) {
@@ -135,7 +120,7 @@ $(function ($) {
}
}
//Ctrl+Sift+P:プロフ
if ((event.ctrlKey) && event.shiftKey) {
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 80) {
profShow()
return false;
@@ -149,30 +134,82 @@ $(function ($) {
return false;
}
}
//矢印:選択
if (e.code == "ArrowLeft") {
//left
if ($("#imagemodal").hasClass("open")) {
imgCont('next');
return false;
}
if (selectedColumn > 0) {
selectedColumn--
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowUp") {
//up
if ($("#imagemodal").hasClass("open")) {
return false;
}
if (selectedToot > 0) {
selectedToot--
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowRight") {
//right
if ($("#imagemodal").hasClass("open")) {
imgCont('prev');
return false;
}
if (selectedColumn < $(".tl-box").length - 1) {
selectedColumn++
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowDown") {
//down
if ($("#imagemodal").hasClass("open")) {
return false;
}
selectedToot++
tootSelector(selectedColumn, selectedToot)
return false;
}
//Ctrl+U:0,0選択
if (event.ctrlKey || event.metaKey) {
if (e.keyCode === 85) {
selectedToot = 0
selectedColumn = 0
tootSelector(0, 0)
return false;
}
}
//選択時
if (e.keyCode == 70) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
fav(id, acct_id, false)
return false;
}
if (e.keyCode == 66) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
rt(id, acct_id, false)
return false;
}
if (e.keyCode == 82) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
var ats_cm = $('.selectedToot .rep-btn').attr("data-men")
var mode = $('.selectedToot .rep-btn').attr("data-visen")
re(id, ats_cm, acct_id, mode)
return false;
}
}
//textareaフォーカス時
if (hasFocus2 && wv) {
if (event.metaKey || event.ctrlKey) {
//Ctrl+B:太字
if (e.keyCode === 66) {
tagsel('b');
return false;
}
//Ctrl+I:斜字
if (e.keyCode === 73) {
tagsel('i');
return false;
}
//Ctrl+U:下線
if (e.keyCode === 85) {
tagsel('u');
return false;
}
//Ctrl+S:取り消し線
if (e.keyCode === 83) {
tagsel('s');
return false;
}
//C+S+(No):ワンクリ
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode >= 49 && e.keyCode <= 51) {
@@ -183,22 +220,28 @@ $(function ($) {
}
}
}
//イメージビューワー切り替え
if (e.keyCode === 37 && wv) {
if ($("#imagemodal").hasClass("open")) {
imgCont('prev');
return false;
}
}
if (e.keyCode === 39 && wv) {
if ($("#imagemodal").hasClass("open")) {
imgCont('next');
return false;
}
}
});
//クリアボタン
$("#clear").click(function () {
clear();
});
});
});
//選択する
function tootSelector(column, toot) {
$('.cvo').removeClass("selectedToot")
$('#timeline_' + column + ' .cvo').eq(toot).addClass("selectedToot")
var scr = $('.tl-box[tlid=' + column + ']').scrollTop()
var elem = $('.selectedToot').offset().top
var top = elem - $('.tl-box').height() + scr
if (top > 0) {
top = top + $('.selectedToot').height()
if (top > scr) {
$('.tl-box[tlid=' + column + ']').animate({ scrollTop: top })
}
} else if (elem < 0) {
var to = scr + elem - $('.selectedToot').height()
if (to < scr) {
$('.tl-box[tlid=' + column + ']').animate({ scrollTop: to })
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1,8 +1,17 @@
//モーダル・ドロップダウンの各種設定
$(document).ready(function () {
// the "href" attribute of the modal trigger must specify the modal ID that wants to be triggered
$('.modal').modal();
$('.dropdown-button').dropdown({
$('.modal').modal({
inDuration: 300,
outDuration: 225,
constrainWidth: false, // Does not change width of dropdown to that of the activator
hover: false, // Activate on hover
gutter: 0, // Spacing from edge
belowOrigin: false, // Displays dropdown below the button
alignment: 'left', // Displays dropdown with edge aligned to the left of button
stopPropagation: false
});
$('.dropdown-trigger').dropdown({
inDuration: 300,
outDuration: 225,
constrainWidth: false, // Does not change width of dropdown to that of the activator
@@ -13,5 +22,5 @@ $(document).ready(function () {
stopPropagation: false // Stops event propagation
}
);
$('.collapsible').collapsible();
});

View File

@@ -1,8 +1,22 @@
//バージョンチェッカー
function verck(ver) {
console.log("%c Welcome😊", "color: red;font-size:200%;")
if (localStorage.getItem("ver") != ver) {
var date = new Date();
var show = false
if (localStorage.getItem("ver") != ver && localStorage.getItem("winstore")) {
//ちょっと削除とリンク解析の都合上アレ(s)
//対象外のアプデ:storageが20の最初まで"Usamin (18.6.5)"
if (!localStorage.getItem("usamin_18_6_5_flag")) {
localStorage.setItem("usamin_18_6_5_flag", true)
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
for (var i = 0; i < obj.length; i++) {
localStorage.removeItem("card_" + i);
}
}
//ちょっと削除とリンク解析の都合上アレ(e)
localStorage.setItem("ver", ver);
show = true
console.log("%c Thank you for your update🎉", "color: red;font-size:200%;");
$(document).ready(function () {
$('#releasenote').modal('open');
@@ -19,71 +33,33 @@ function verck(ver) {
} else {
$("#release-en").show();
}
});
}
var electron = require("electron");
var remote = electron.remote;
var dialog = remote.dialog;
var platform = remote.process.platform;
console.log("Your platform:"+remote.process.platform)
if (platform == "win32") {
const options = {
type: 'info',
title: "Select your platform",
message: lang.lang_version_platform,
buttons: [lang.lang_no, lang.lang_yesno]
}
if (!localStorage.getItem("winstore")) {
dialog.showMessageBox(options, function (arg) {
if (arg == 1) {
localStorage.setItem("winstore", "winstore")
} else {
localStorage.setItem("winstore", "localinstall")
}
});
}
} else if (platform == "linux") {
if (localStorage.getItem("winstore") == "unix") {
localStorage.removeItem("winstore")
}
if (!localStorage.getItem("winstore")) {
const options = {
type: 'info',
title: "Select your platform",
message: lang.lang_version_platform_linux,
buttons: [lang.lang_no, lang.lang_yesno]
if (!show) {
console.log(show)
if (date.getMonth() + 1 >= localStorage.getItem("showSupportMe") || !localStorage.getItem("showSupportMe")) {
if (date.getMonth() == 11) {
var nextmonth = 1
} else {
var nextmonth = date.getMonth() + 2
}
dialog.showMessageBox(options, function (arg) {
if (arg == 1) {
localStorage.setItem("winstore", "snapcraft")
} else {
localStorage.setItem("winstore", "localinstall")
}
});
}
} else if (platform == "darwin") {
if (localStorage.getItem("winstore") == "unix") {
localStorage.removeItem("winstore")
}
if (!localStorage.getItem("winstore")) {
const options = {
type: 'info',
title: "Select your platform",
message: lang.lang_version_platform_mac,
buttons: [lang.lang_no, lang.lang_yesno]
if (lang.language != "ja") {
$("#support-btm-ja").addClass("hide");
$("#support-btm-en").removeClass("hide");
}
dialog.showMessageBox(options, function (arg) {
if (arg == 1) {
localStorage.setItem("winstore", "brewcask")
} else {
localStorage.setItem("winstore", "localinstall")
}
});
localStorage.setItem("showSupportMe", nextmonth)
$("#support-btm").removeClass("hide")
$("#support-btm").animate({
'bottom': '0'
}, {
'duration': 300
});
}
} else {
localStorage.setItem("winstore", "unix")
}
var platform = localStorage.getItem("platform");
console.log("Your platform:" + platform)
if (!localStorage.getItem("winstore")) {
storeDialog(platform, ver)
}
if (localStorage.getItem("winstore") == "brewcask" || localStorage.getItem("winstore") == "snapcraft" || localStorage.getItem("winstore") == "winstore") {
var winstore = true;
@@ -109,9 +85,7 @@ function verck(ver) {
}).then(function (mess) {
console.table(mess);
if (mess) {
var electron = require("electron");
var remote = electron.remote;
var platform = remote.process.platform;
var platform = localStorage.getItem("platform");
if (platform == "darwin") {
var newest = mess.desk_mac;
} else {
@@ -126,15 +100,13 @@ function verck(ver) {
localStorage.removeItem("instance")
if (localStorage.getItem("new-ver-skip")) {
if (localStorage.getItem("next-ver") != newest) {
var ipc = electron.ipcRenderer;
ipc.send('update', "true");
postMessage(["sendSinmpleIpc", "update"], "*")
} else {
console.warn(lang.lang_version_skipver);
todo(lang.lang_version_skipver);
}
} else {
var ipc = electron.ipcRenderer;
ipc.send('update', "true");
postMessage(["sendSinmpleIpc", "update"], "*")
}
}
}
@@ -167,28 +139,28 @@ function verck(ver) {
} else {
var toot = "";
}
if (obj.Ver != "") {
if (obj.Ver == ver) {
if (obj.ver != "") {
if (obj.ver == ver) {
show = true;
} else {
show = false;
}
}
if (obj.Domain != "") {
if (obj.domain != "") {
var multi = localStorage.getItem("multi");
if (multi) {
show = false;
var accts = JSON.parse(multi);
Object.keys(accts).forEach(function (key) {
var acct = accts[key];
if (acct.domain == obj.Domain) {
if (acct.domain == obj.domain) {
show = true;
}
});
}
}
if (show) {
Materialize.toast(escapeHTML(obj.Text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', 86400);
M.toast({ html: escapeHTML(obj.text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', displayLength: 86400 })
}
}
@@ -235,7 +207,7 @@ function infowebsocket() {
}
}
if (show) {
Materialize.toast(escapeHTML(obj.text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', 86400);
M.toast({ html: escapeHTML(obj.Text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', displayLength: 86400 })
}
} else {
$("#persons").text(obj.text);
@@ -272,4 +244,59 @@ function openRN() {
} else {
$("#release-en").show();
}
}
function closeSupport() {
$("#support-btm").animate({
'bottom': '-300px'
}, {
'duration': 300,
'complete': function () {
$("#support-btm").addClass("hide")
}
});
}
function storeDialog(platform, ver) {
if (platform == "win32") {
var mes = lang.lang_version_platform;
} else if (platform == "linux") {
var mes = lang.lang_version_platform_linux;
} else if (platform == "darwin") {
var mes = lang.lang_version_platform_mac;
}
Swal.fire({
title: "Select your platform",
text: mes,
type: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#3085d6',
confirmButtonText: lang.lang_no,
cancelButtonText: lang.lang_yesno
}).then((result) => {
//逆にしてる
if (!result.value) {
localStorage.setItem("winstore", "winstore")
} else {
localStorage.setItem("winstore", "localinstall")
}
localStorage.setItem("ver", ver);
show = true
console.log("%c Thank you for your update🎉", "color: red;font-size:200%;");
$(document).ready(function () {
$('#releasenote').modal('open');
verp = ver.replace('(', '');
verp = verp.replace('.', '-');
verp = verp.replace('.', '-');
verp = verp.replace('[', '-');
verp = verp.replace(']', '');
verp = verp.replace(')', '');
verp = verp.replace(' ', '_');
console.log("%c " + verp, "color: red;font-size:200%;");
if (lang.language == "ja") {
$("#release-" + verp).show();
} else {
$("#release-en").show();
}
});
})
}

View File

@@ -21,9 +21,9 @@ var lang = {
//common/version.js
"lang_version_usever": "No update is found({{ver}})",
"lang_version_skipver": "Update was ignored.",
"lang_version_platform": "Was this software installed at Microsoft Store? When select 'yes', any update was ignored.",
"lang_version_platform_linux": "Was this software installed at Snapcraft(snapd)? When select 'yes', any update was ignored.",
"lang_version_platform_mac": "Was this software installed at Homebrew Cask? When select 'yes', any update was ignored.",
"lang_version_platform": "Do you want auto-updates?(users installed on Microsoft Store select 'No')",
"lang_version_platform_linux": "Do you want auto-updates?(users installed on Snapcraft select 'No')",
"lang_version_platform_mac": "Do you want auto-updates?(Homebrew Cask users select 'No')",
//login
//login/login.js
"lang_login_noauth": "Show TL of unlogined accounts",
@@ -37,6 +37,7 @@ var lang = {
"lang_manager_def": "Default",
"lang_manager_none": "None",
"lang_manager_godev": "Open DevCenter of Misskey. We show also an official documents to refer.",
"lang_manager_logout": "Logout",
//post/bb-md.js
"lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
//post/emoji.js
@@ -46,6 +47,7 @@ var lang = {
//post/img.js
"lang_postimg_previewdis": "cannot preview",
"lang_postimg_aftupload": "You cannot change accounts after uploading.",
"lang_postimg_failupload": "Failed",
"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?",
@@ -64,6 +66,7 @@ var lang = {
"lang_status_unblock": "Unblock",
"lang_status_mute": "Mute",
"lang_status_unmute": "Unmute",
"lang_status_redraftTitle": "Delete & redraft",
"lang_status_redraft": "Continue to delete & redraft? You lose statuses of this toot. This fanction may contain some bugs. Images of this toot will be deleted on older than Mastodon 2.4.1.",
"lang_status_emphas": "'s toots are emphasized. Please reload after this action.",
"lang_status_unemphas": "'s toots are not emphasized. Please reload after this action.",
@@ -109,6 +112,8 @@ var lang = {
//tl/tl.js
"lang_tl_media": "Media",
"lang_tl_reconnect": "Reconnect to streaming API",
//ui/img.js
"lang_img_DLDone": "Downloaded:",
//ui/layout.js
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account",
@@ -127,6 +132,8 @@ var lang = {
"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",
"lang_layout_deleteColumn":"Delete this column",
"lang_layout_deleteColumnDesc":"Delete this column",
//ui/sort.js
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",

View File

@@ -21,9 +21,9 @@ var lang = {
//common/version.js
"lang_version_usever": "お使いのバージョン{{ver}}は最新です。",
"lang_version_skipver": "アップデートはスキップされました。",
"lang_version_platform": "このソフトウェアはMicrosoft Storeからダウンロードされましたか(「はい」を選択すると次回からアップデート通知を無視します。)",
"lang_version_platform_linux": "このソフトウェアはSnapcraft(snapd)からインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
"lang_version_platform_mac": "このソフトウェアはHomebrew Caskからインストールしましたか(「はい」を選択すると次回からアップデート通知を無視します。)",
"lang_version_platform": "このソフトウェアはMicrosoft Storeからダウンロードされましたか通常はホームページからインストールするため「いいえ」を選んでください。「はい」を選ぶとMicrosoft Storeからアップデートが提供され、アップデートの通知を出しません。",
"lang_version_platform_linux": "このソフトウェアはSnapcraft(snapd)からインストールしましたか?通常はホームページからインストールするため「いいえ」を選んでください。「はい」を選ぶとSnapcraftからアップデートが提供され、アップデートの通知を出しません。",
"lang_version_platform_mac": "このソフトウェアはHomebrew Caskからインストールしましたか通常はホームページからインストールするため「いいえ」を選んでください。「はい」を選ぶとアップデート通知を出しません。",
//login
//login/login.js
"lang_login_noauth": "認証せずに見る",
@@ -37,6 +37,7 @@ var lang = {
"lang_manager_def": "既定",
"lang_manager_none": "なし",
"lang_manager_godev": "MisskeyのDevセンターに移動します。同時に開かれるドキュメントを参考にログインしてください。",
"lang_manager_logout": "ログアウト",
//post/bb-md.js
"lang_bbmd_misskey": "TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。",
//post/emoji.js
@@ -46,6 +47,7 @@ var lang = {
//post/img.js
"lang_postimg_previewdis": "プレビューできません。",
"lang_postimg_aftupload": "アップロード後はアカウントを切り替えられません。",
"lang_postimg_failupload": "アップロードに失敗しました。",
"lang_postimg_delete": "この画像を削除します",
//post/post.js
"lang_post_tagTL": "デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
@@ -64,6 +66,7 @@ var lang = {
"lang_status_unblock": "ブロック解除",
"lang_status_mute": "ミュート",
"lang_status_unmute": "ミュート解除",
"lang_status_redraftTitle": "削除して再編集",
"lang_status_redraft": "削除して再編集しますか?そのトゥートの全てのデータがリセットされます。この機能はベータ版です。画像は~v2.4.1で破棄されます。",
"lang_status_emphas": "を強調します。リロードしてください。",
"lang_status_unemphas": "を強調解除します。リロードしてください。",
@@ -129,6 +132,8 @@ var lang = {
"lang_layout_excludingbt": "BT表示(OFF/BT除外/BTのみ)",
"lang_layout_leftFold": "左へ重ねる",
"lang_layout_leftUnfold": "右へ出す",
"lang_layout_deleteColumn": "カラム削除",
"lang_layout_deleteColumnDesc": "カラムを削除しますか?",
//ui/sort.js
"lang_sort_gothis": "このカラムへ",
"lang_sort_remthis": "このカラムを削除",
@@ -184,8 +189,8 @@ var lang = {
"lang_parse_det": "詳細(メインアカウント経由)",
"lang_parse_redraft": "このトゥートを削除して再編集",
"lang_parse_followed": "フォローされました。",
"lang_parse_clientop": "クライアント処理",
"lang_parse_clienttxt": "に対する処理を選択してください。",
"lang_parse_clientop": "クライアント操作",
"lang_parse_clienttxt": " に対する処理を選択してください。",
"lang_parse_clientno": "何もしない",
"lang_parse_clientemp": "強調表示/解除",
"lang_parse_clientmute": "ミュート",
@@ -197,7 +202,7 @@ var lang = {
"lang_parse_thread": "会話を表示",
"lang_parse_unknown": "添付ファイル",
"lang_parse_nsfw": "閲覧注意",
"lang_parse_notffilter":"このユーザーの通知のみを表示",
"lang_parse_notffilter": "このユーザーの通知のみを表示",
//misskey
"lang_misskeyparse_renote": "再投稿",
"lang_misskeyparse_renoteqt": "引用",

View File

@@ -13,12 +13,6 @@ var idata = {
"minohdon.jp_bbcode": "disabled",
"minohdon.jp_markdown": "disabled",
"minohdon.jp_glitch": "disabled",
"knzk.me": "instance",
"knzk.me_name": "Knzk",
"knzk.me_letters": "5000",
"knzk.me_bbcode": "disabled",
"knzk.me_markdown": "disabled",
"knzk.me_glitch": "disabled",
"mastodos.com": "instance",
"mastodos.com_name": "マストどす",
"mastodos.com_letters": "500",
@@ -90,16 +84,16 @@ var idata = {
"dtp-mstdn.jp_bbcode": "disabled",
"dtp-mstdn.jp_markdown": "disabled",
"dtp-mstdn.jp_glitch": "disabled",
"misskey.xyz": "misskey",
"misskey.xyz_name": "misskey.xyz",
"misskey.xyz_letters": "1000",
"misskey.xyz_bbcode": "disabled",
"misskey.xyz_markdown": "enabled",
"misskey.xyz_public": "Global",
"misskey.xyz_post": "Post",
"misskey.xyz_fav": " reacted your post.",
"misskey.xyz_bt": " reposted your post.",
"misskey.dev": "misskey",
"misskey.io": "misskey",
"misskey.io_name": "misskey.io",
"misskey.io_letters": "1000",
"misskey.io_bbcode": "disabled",
"misskey.io_markdown": "enabled",
"misskey.io_public": "Global",
"misskey.io_post": "Post",
"misskey.io_fav": " reacted your post.",
"misskey.io_bt": " reposted your post.",
"misskey.dev": "misskey.dev",
"misskey.dev_name": "misskey.dev",
"misskey.dev_letters": "1024",
"misskey.dev_bbcode": "disabled",
@@ -114,13 +108,7 @@ var idata = {
"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",
"precure.ml_glitch": "disabled"
};
localStorage.setItem("instance", JSON.stringify(idata));

View File

@@ -26,6 +26,8 @@ function ck() {
}
var multi = localStorage.getItem("multi");
if (!multi || multi == "[]") {
var date = new Date();
localStorage.setItem("showSupportMe", date.getMonth() + 2)
location.href = "acct.html?mode=first&code=true"
} else {
var obj = JSON.parse(multi);
@@ -38,7 +40,7 @@ function ck() {
if (obj[0].domain) {
$("#tl").show();
ticker();
multiSelector();
multiSelector(false);
verck(ver);
$("#something-wrong img").attr("src", "../../img/thinkingdesk.png")
}
@@ -77,15 +79,11 @@ function login(url) {
localStorage.setItem("client_secret", json["client_secret"]);
$("#auth").show();
$("#masara").hide();
const { shell } = require('electron');
shell.openExternal(auth);
postMessage(["openUrl", auth], "*")
if ($('#linux:checked').val() == "on") {
} else {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('quit', 'go');
postMessage(["sendSinmpleIpc", "quit"], "*")
}
}
}
@@ -164,8 +162,7 @@ function getdata() {
}).then(function (json) {
if (json.error) {
console.error("Error:" + json.error);
Materialize.toast(lang.lang_fatalerroroccured + "Error:" + json.error,
5000);
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 })
return;
}
var avatar = json["avatar"];
@@ -212,8 +209,7 @@ function getdataAdv(domain, at) {
}).then(function (json) {
if (json.error) {
console.error("Error:" + json.error);
Materialize.toast(lang.lang_fatalerroroccured + "Error:" + json.error,
5000);
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 })
return;
}
var avatar = json["avatar"];
@@ -271,8 +267,7 @@ function refresh(target, loadskip) {
}).then(function (json) {
if (json.error) {
console.error("Error:" + json.error);
Materialize.toast(lang.lang_fatalerroroccured + "Error:" + json.error,
5000);
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 })
return;
}
var avatar = json["avatar"];
@@ -408,7 +403,7 @@ function ckdb(acct_id) {
}
//アカウントを選択…を実装
function multiSelector() {
function multiSelector(parseC) {
var multi = localStorage.getItem("multi");
if (!multi) {
var obj = [];
@@ -494,8 +489,10 @@ function multiSelector() {
$("#src-acct-sel").append('<option value="tootsearch">Tootsearch</option>');
$("#add-acct-sel").append('<option value="noauth">' + lang.lang_login_noauth + '</option><option value="webview">Twitter</option>');
}
$('select').material_select('update');
parseColumn(true);
$('select').formSelect();
if(!parseC){
parseColumn(true);
}
}
//バージョンエンコ

View File

@@ -146,114 +146,136 @@ function multiDel(target) {
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
//削除確認ダイアログ
if (confirm(obj[target]["user"] + "@" + obj[target]["domain"] + lang.lang_manager_confirm)) {
Object.keys(obj).forEach(function (key) {
var nk = key - 1;
//公開範囲(差分のみ)
if (key >= target) {
var oldvis = localStorage.getItem("vis-memory-" + key);
if (oldvis) {
localStorage.setItem("vis-memory-" + nk, oldvis);
Swal.fire({
title: lang.lang_manager_logout,
text: obj[target]["user"] + "@" + obj[target]["domain"] + lang.lang_manager_confirm,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
Object.keys(obj).forEach(function (key) {
var nk = key - 1;
//公開範囲(差分のみ)
if (key >= target) {
var oldvis = localStorage.getItem("vis-memory-" + key);
if (oldvis) {
localStorage.setItem("vis-memory-" + nk, oldvis);
}
}
//独自ロケール
localStorage.removeItem("home_" + key);
localStorage.removeItem("local_" + key);
localStorage.removeItem("public_" + key);
localStorage.removeItem("notification_" + key);
//アクセストークンとドメイン、プロフ(差分)
if (key > target) {
var olddom = localStorage.getItem("domain_" + key);
localStorage.setItem("domain_" + nk, olddom);
var oldat = localStorage.getItem("acct_" + key + "_at");
localStorage.setItem("acct_" + nk + "_at", oldat);
localStorage.setItem("name_" + nk, localStorage.getItem("name_" + key));
localStorage.setItem("user_" + target, localStorage.getItem("user_" + key));
localStorage.setItem("user-id_" + target, localStorage.getItem("user-id_" + key));
localStorage.setItem("prof_" + target, localStorage.getItem("prof_" + key));
}
}
//独自ロケール
localStorage.removeItem("home_" + key);
localStorage.removeItem("local_" + key);
localStorage.removeItem("public_" + key);
localStorage.removeItem("notification_" + key);
//アクセストークンとドメイン、プロフ(差分)
if (key > target) {
var olddom = localStorage.getItem("domain_" + key);
localStorage.setItem("domain_" + nk, olddom);
var oldat = localStorage.getItem("acct_" + key + "_at");
localStorage.setItem("acct_" + nk + "_at", oldat);
localStorage.setItem("name_" + nk, localStorage.getItem("name_" + key));
localStorage.setItem("user_" + target, localStorage.getItem("user_" + key));
localStorage.setItem("user-id_" + target, localStorage.getItem("user-id_" + key));
localStorage.setItem("prof_" + target, localStorage.getItem("prof_" + key));
}
});
//とりあえず消す
obj.splice(target, 1);
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
load();
//カラムデータコンフリクト
var col = localStorage.getItem("column");
var oldcols = JSON.parse(col);
var newcols = [];
Object.keys(oldcols).forEach(function (key) {
var nk = key - 1;
var oldcol = oldcols[key];
if (target < oldcol.domain) {
var newdom = oldcol.domain - 1;
} else {
var newdom = oldcol.domain;
}
var type = oldcol.type;
//消した垢のコラムじゃないときコピー
if (target != oldcol.domain) {
var add = {
domain: newdom,
type: type
};
newcols.push(add);
}
});
var json = JSON.stringify(newcols);
localStorage.setItem("column", json);
});
//とりあえず消す
obj.splice(target, 1);
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
load();
//カラムデータコンフリクト
var col = localStorage.getItem("column");
var oldcols = JSON.parse(col);
var newcols = [];
Object.keys(oldcols).forEach(function (key) {
var nk = key - 1;
var oldcol = oldcols[key];
if (target < oldcol.domain) {
var newdom = oldcol.domain - 1;
} else {
var newdom = oldcol.domain;
}
var type = oldcol.type;
//消した垢のコラムじゃないときコピー
if (target != oldcol.domain) {
var add = {
domain: newdom,
type: type
};
newcols.push(add);
}
});
var json = JSON.stringify(newcols);
localStorage.setItem("column", json);
}
}
})
}
function multiDel2(target) {
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
if (confirm(obj[target]["user"] + "@" + obj[target]["domain"] + lang.lang_manager_confirm)) {
obj.splice(target, 1);
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
Object.keys(obj).forEach(function (key) {
if (key >= target) {
var oldvis = localStorage.getItem("vis-memory-" + key);
if (oldvis) {
var nk = key - 1;
localStorage.setItem("vis-memory-" + nk, oldvis);
}
}
localStorage.removeItem("home_" + key);
localStorage.removeItem("local_" + key);
localStorage.removeItem("public_" + key);
localStorage.removeItem("notification_" + key);
refresh(key);
});
var col = localStorage.getItem("column");
if (!col) {
var obj = [{
domain: 0,
type: 'local'
}];
localStorage.setItem("card_0", "true");
Swal.fire({
title: lang.lang_manager_logout,
text: obj[target]["user"] + "@" + obj[target]["domain"] + lang.lang_manager_confirm,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
obj.splice(target, 1);
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
} else {
var cobj = JSON.parse(col);
}
Object.keys(cobj).forEach(function (key) {
var column = cobj[key];
if (column.domain > target) {
var nk = key - 1;
column.domain = nk;
cobj[key] = column;
} else if (column.domain == target) {
localStorage.removeItem("card_" + tlid);
cobj.splice(key, 1);
localStorage.setItem("multi", json);
Object.keys(obj).forEach(function (key) {
if (key >= target) {
var oldvis = localStorage.getItem("vis-memory-" + key);
if (oldvis) {
var nk = key - 1;
localStorage.setItem("vis-memory-" + nk, oldvis);
}
}
localStorage.removeItem("home_" + key);
localStorage.removeItem("local_" + key);
localStorage.removeItem("public_" + key);
localStorage.removeItem("notification_" + key);
refresh(key);
});
var col = localStorage.getItem("column");
if (!col) {
var obj = [{
domain: 0,
type: 'local'
}];
localStorage.setItem("card_0", "true");
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
} else {
var cobj = JSON.parse(col);
}
});
var json = JSON.stringify(column);
localStorage.setItem("column", json);
load();
}
Object.keys(cobj).forEach(function (key) {
var column = cobj[key];
if (column.domain > target) {
var nk = key - 1;
column.domain = nk;
cobj[key] = column;
} else if (column.domain == target) {
localStorage.removeItem("card_" + tlid);
cobj.splice(key, 1);
}
});
var json = JSON.stringify(column);
localStorage.setItem("column", json);
load();
}
})
}
//サポートインスタンス
@@ -282,7 +304,7 @@ function login(url) {
return;
}
if ($('#linux:checked').val() == "on") {
var red = "https://thedesk.top/hello.html"
var red = "urn:ietf:wg:oauth:2.0:oob"
} else {
var red = 'thedesk://manager';
}
@@ -310,15 +332,9 @@ function login(url) {
localStorage.setItem("client_secret", json["client_secret"]);
$("#auth").show();
$("#add").hide();
const {
shell
} = require('electron');
shell.openExternal(auth);
var electron = require("electron");
var ipc = electron.ipcRenderer;
postMessage(["openUrl", auth], "*")
if ($('#linux:checked').val() == "on") { } else {
ipc.send('quit', 'go');
postMessage(["sendSinmpleIpc", "quit"], "*")
}
}
}
@@ -407,16 +423,13 @@ function misskeyAuth(url, mkc) {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
const {
shell
} = require('electron');
var token = json.token;
$("#auth").show();
$("#code").val(token);
$("#add").hide();
$("#misskey").prop("checked", false);
localStorage.setItem("domain_tmp", url);
shell.openExternal(json.url);
postMessage(["openUrl", json.url], "*")
}
}
}
@@ -495,7 +508,7 @@ function code(code) {
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
grant_type: "authorization_code",
redirect_uri: "https://thedesk.top/hello.html",
redirect_uri: "urn:ietf:wg:oauth:2.0:oob",
client_id: id,
client_secret: secret,
code: code
@@ -530,8 +543,7 @@ function getdata(domain, at) {
}).then(function (json) {
if (json.error) {
console.error("Error:" + json.error);
Materialize.toast(lang.lang_fatalerroroccured + "Error:" + escapeHTML(json.error),
5000);
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 })
return;
}
var avatar = json["avatar"];
@@ -595,8 +607,7 @@ function refresh(target) {
}).then(function (json) {
if (json.error) {
console.error("Error:" + json.error);
Materialize.toast(lang.lang_fatalerroroccured + "Error:" + json.error,
5000);
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 })
return;
}
var avatar = json["avatar"];
@@ -704,12 +715,12 @@ function multisel() {
});
}
$('select').material_select('update');
$('select').formSelect();
}
function mainacct() {
var acct_id = $("#main-acct-sel").val();
localStorage.setItem("main", acct_id);
Materialize.toast(lang.lang_manager_mainAcct, 3000);
M.toast({ html: lang.lang_manager_mainAcct, displayLength: 3000 })
}
function colorpicker(key) {
temp =

View File

@@ -10,16 +10,20 @@ $(document).on('click', 'a', e => {
if (url) {
urls = url.match(/https?:\/\/(.+)/);
//トゥートのURLぽかったら
toot = url.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
toot = url.match(/https:\/\/([^+_]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
if(!toot){
//Pleroma対策
toot = url.match(/https:\/\/([^+_]+)\/users\/([a-zA-Z0-9_]+)\/statuses\/([0-9]+)/);
}
//タグのURLぽかったら
var tags = [];
tags = url.match(
/https:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
/https:\/\/([^+_]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
);
//メンションっぽかったら
var ats = [];
ats = url.match(
/https:\/\/([-a-zA-Z0-9.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/
/https:\/\/([^+_]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/
);
if (toot) {
if (toot[1]) {
@@ -47,11 +51,7 @@ $(document).on('click', 'a', e => {
udgEx(ats[2] + "@" + ats[1], "main");
return false
} else {
const {
shell
} = require('electron');
shell.openExternal(url);
postMessage(["openUrl", url], "*")
}
@@ -60,12 +60,11 @@ $(document).on('click', 'a', e => {
//hrefがhttp/httpsならブラウザで
if (urls) {
if (urls[0]) {
const { shell } = require('electron');
if (~url.indexOf("thedeks.top")) {
//alert("If you recieve this alert, let the developer(Cutls@kirishima.cloud) know it with a screenshot.");
url = "https://thedesk.top";
}
shell.openExternal(url);
postMessage(["openUrl", url], "*")
} else {
location.href = url;
@@ -88,12 +87,6 @@ function execCopy(string) {
var result = document.execCommand('copy');
return result;
}
//Nano
function nano() {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('nano', "");
}
function progshow(e) {
if (e.lengthComputable) {
var percent = e.loaded / e.total;
@@ -106,30 +99,6 @@ function progshow(e) {
}
}
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.on('reload', function (event, arg) {
location.reload();
})
ipc.on('mess', function (event, arg) {
if (arg == "unzip") {
if (lang == "ja") {
$("body").text("アップデートを展開中です。");
} else {
$("body").text("Unzipping...");
}
}
})
//Native Notf
ipc.on('shownotf', function (event, args) {
if (args["type"] == "toot") {
details(id, acct_id)
} else if (args["type"] == "userdata") {
udg(user, acct_id)
}
})
function opendev() {
var webview = document.getElementById("webview");
webview.openDevTools();
@@ -139,14 +108,6 @@ function opendev() {
});
*/
}
var webviewDom = document.getElementById('webview');
const {
shell
} = require('electron');
webviewDom.addEventListener('new-window', function (e) {
shell.openExternal(e.url);
});
function playSound() {
window.AudioContext = window.AudioContext || window.webkitAudioContext;
context = new AudioContext();
@@ -162,4 +123,51 @@ function playSound() {
volumeControl.connect(context.destination);
volumeControl.gain.value = 0.8
source.start(0);
}
function nano() {
postMessage(["nano", null], "*")
}
onmessage = function (e) {
if (e.data[0] == "details") {
details(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "udg") {
udg(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "media") {
media(e.data[1][0], e.data[1][1], e.data[1][2])
} else if (e.data[0] == "post") {
post("pass")
} else if (e.data[0] == "toastSaved") {
M.toast({ html: lang.lang_img_DLDone + e.data[1][0] + '<button class="btn-flat toast-action" onclick="openFinder(\'' + e.data[1][1] + '\')">Show</button>', displayLength: 5000 })
} else if (e.data[0] == "parseColumn") {
parseColumn()
} else if (e.data[0] == "exportSettingsCore") {
exportSettingsCore()
} else if (e.data[0] == "fontList") {
fontList(e.data[1])
} else if (e.data[0] == "customSoundSave") {
customSoundSave(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "ctLoadCore") {
ctLoadCore(e.data[1])
} else if (e.data[0] == "ctLoad") {
ctLoad()
} else if (e.data[0] == "customConnect") {
customConnect(e.data[1])
} else if (e.data[0] == "clearCustomImport") {
clearCustomImport()
} else if (e.data[0] == "npCore") {
npCore(e.data[1]);
} else if (e.data[0] == "renderMem") {
renderMem(e.data[1][0], e.data[1][1], e.data[1][2])
} else if (e.data[0] == "updateProg") {
updateProg(e.data[1]);
} else if (e.data[0] == "updateMess") {
updateMess(e.data[1]);
} else if (e.data[0] == "renderAbout") {
renderAbout(e.data[1]);
} else if (e.data[0] == "alert") {
Swal.fire({
type: 'info',
title: e.data[1]
})
}
}

View File

@@ -1,3 +1 @@
//jQuery読む
window.jQuery = window.$ = require('./js/common/jquery.js');
var Hammer = require('./js/common/hammer.min.js');

View File

@@ -1,6 +1,3 @@
//jQuery読む
window.jQuery = window.$ = require('../../js/common/jquery.js');
var Hammer = require('../../js/common/hammer.min.js');
$.strip_tags = function (str, allowed) {
if (!str) {
return "";
@@ -89,27 +86,7 @@ function formattimeutc(date) {
}
return escapeHTML(str);
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('custom-css-request', "");
ipc.on('custom-css-response', function (event, arg) {
if (arg == "") { return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type", "text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
ipc.on('theme-css-response', function (event, arg) {
if (arg == "") { return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type", "text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
postMessage(["sendSinmpleIpc", "custom-css-request"], "*")
function makeCID() {
return randomStr(8) + "-" + randomStr(4) + "-" + randomStr(4) + "-" + randomStr(4) + "-" + randomStr(12);
}
@@ -193,4 +170,29 @@ $.mb_substr = function (str, begin, end) {
}
return ret;
};
//ソートするやつ
function object_array_sort(data, key, order, fn) {
var num_a = -1;
var num_b = 1;
if (order === 'asc') {
num_a = 1;
num_b = -1;
}
data = data.sort(function (a, b) {
var x = a[key];
var y = b[key];
if (x > y) return num_a;
if (x < y) return num_b;
return 0;
});
var arrObj = {};
for (var i = 0; i < data.length; i++) {
arrObj[data[i]['family']] = data[i];
}
data = [];
for (var key in arrObj) {
data.push(arrObj[key]);
}
fn(data);
}
localStorage.removeItem("errors");

173
app/js/platform/preload.js Normal file
View File

@@ -0,0 +1,173 @@
var electron = require("electron");
const shell = electron.shell;
var ipc = electron.ipcRenderer;
onmessage = function (e) {
if (e.data[0] == "openUrl") {
urls = e.data[1].match(/https?:\/\/(.+)/);
if (urls) {
shell.openExternal(e.data[1]);
}
} else if (e.data[0] == "sendSinmpleIpc") {
ipc.send(e.data[1], "")
} else if (e.data[0] == "dialogStore") {
ipc.send("dialogStore", e.data[1])
} else if (e.data[0] == "bmpImage") {
ipc.send('bmp-image', e.data[1]);
} else if (e.data[0] == "dialogCW") {
ipc.send("dialogCW", e.data[1])
} else if (e.data[0] == "nativeNotf") {
console.log(e.data[1])
ipc.send('native-notf', e.data[1]);
} else if (e.data[0] == "dialogClient") {
ipc.send("dialogClient", e.data[1])
} else if (e.data[0] == "generalDL") {
ipc.send('general-dl', e.data[1]);
} else if (e.data[0] == "openFinder") {
ipc.send('open-finder', e.data[1]);
} else if (e.data[0] == "columnDel") {
ipc.send('column-del', e.data[1]);
} else if (e.data[0] == "lang") {
ipc.send('lang', e.data[1]);
} else if (e.data[0] == "exportSettings") {
ipc.send('exportSettings', e.data[1]);
} else if (e.data[0] == "importSettings") {
ipc.send('importSettings', e.data[1]);
} else if (e.data[0] == "customSound") {
ipc.send('customSound', e.data[1]);
} else if (e.data[0] == "themeJsonDelete") {
ipc.send('theme-json-delete', e.data[1]);
} else if (e.data[0] == "themeJsonCreate") {
ipc.send('theme-json-create', e.data[1]);
} else if (e.data[0] == "themeJsonRequest") {
ipc.send('theme-json-request', e.data[1]);
} else if (e.data[0] == "ha") {
ipc.send('ha', e.data[1]);
} else if (e.data[0] == "aboutData") {
ipc.send('aboutData', "");
} else if (e.data[0] == "itunes") {
console.log("NowPlaying" + ipc.listenerCount('itunes-np'))
if (ipc.listenerCount('itunes-np') > 1) {
return false;
} else {
ipc.send("itunes", e.data[1])
}
} else if (e.data[0] == "themeCSSRequest") {
ipc.send('theme-css-request', e.data[1]);
} else if (e.data[0] == "downloadButton") {
ipc.send('download-btn', e.data[1]);
} else if (e.data[0] == "nano") {
ipc.send('nano', null);
}
}
//version.js
ipc.send("getPlatform", "")
ipc.on('platform', function (event, args) {
localStorage.setItem("platform", args[0])
localStorage.setItem("bit", args[1])
localStorage.setItem("about", JSON.stringify([args[2], args[3], args[4]]))
})
ipc.on('reload', function (event, arg) {
location.reload();
})
//Native Notf
ipc.on('shownotf', function (event, args) {
if (args["type"] == "toot") {
postMessage(["details", [id, acct_id]], "*")
} else if (args["type"] == "userdata") {
postMessage(["udg", [user, acct_id]], "*")
}
})
//first.js
ipc.on('custom-css-response', function (event, arg) {
if (arg == "") { return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type", "text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
ipc.on('theme-css-response', function (event, arg) {
if (arg == "") { return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type", "text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
//img.js
ipc.on('bmp-img-comp', function (event, b64) {
postMessage(["media", [b64[0], "image/png", b64[1]]], "*")
});
//ui,img.js
ipc.on('general-dl-prog', function (event, arg) {
console.log("Progress: " + arg);
})
ipc.on('general-dl-message', function (event, arg) {
var argC = arg.replace(/\\/g, "\\\\") + "\\\\.";
console.log("saved")
postMessage(["toastSaved", [arg, argC]], "*")
})
//setting.js
ipc.on('langres', function (event, arg) {
location.href = "../" + lang + "/setting.html"
});
ipc.on('exportSettingsFile', function (event, savedFiles) {
var exp = exportSettingsCore()
ipc.send('export', [savedFiles, JSON.stringify(exp)]);
postMessage(["alert", "Done"], "*")
//cards
//lang
});
ipc.on('config', function (event, arg) {
postMessage(["importSettingsCore", arg], "*")
});
ipc.on('savefolder', function (event, arg) {
localStorage.setItem("savefolder", arg);
});
ipc.on('font-list', function (event, arg) {
postMessage(["fontList", arg], "*")
});
ipc.on('customSoundRender', function (event, args) {
postMessage(["customSoundSave", [args[0], args[1]]], "*")
});
ipc.on('theme-json-list-response', function (event, args) {
postMessage(["ctLoadCore", args], "*")
});
ipc.on('theme-json-delete-complete', function (event, args) {
postMessage(["ctLoad", ""], "*")
});
ipc.on('theme-json-response', function (event, args) {
postMessage(["customConnect", args], "*")
});
ipc.on('theme-json-create-complete', function (event, args) {
postMessage(["clearCustomImport", ""], "*")
postMessage(["ctLoad", ""], "*")
});
//spotify.js
ipc.once('itunes-np', function (event, arg) {
postMessage(["npCore", arg], "*")
})
//tips.js
ipc.on('memory', function (event, arg) {
var use = arg[0];
var cpu = arg[1];
var total = arg[2]
postMessage(["renderMem", [use, cpu, total]], "*")
})
//update.html
ipc.on('prog', function (event, arg) {
postMessage(["updateProg", arg], "*")
})
ipc.on('mess', function (event, arg) {
postMessage(["updateMess", arg], "*")
})
var webviewDom = document.getElementById('webview');
if (webviewDom) {
webviewDom.addEventListener('new-window', function (e) {
shell.openExternal(e.url);
});
}

533
app/js/platform/punycode.js Normal file
View File

@@ -0,0 +1,533 @@
/*! https://mths.be/punycode v1.4.1 by @mathias */
;(function(root) {
/** Detect free variables */
var freeExports = typeof exports == 'object' && exports &&
!exports.nodeType && exports;
var freeModule = typeof module == 'object' && module &&
!module.nodeType && module;
var freeGlobal = typeof global == 'object' && global;
if (
freeGlobal.global === freeGlobal ||
freeGlobal.window === freeGlobal ||
freeGlobal.self === freeGlobal
) {
root = freeGlobal;
}
/**
* The `punycode` object.
* @name punycode
* @type Object
*/
var punycode,
/** Highest positive signed 32-bit float value */
maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
/** Bootstring parameters */
base = 36,
tMin = 1,
tMax = 26,
skew = 38,
damp = 700,
initialBias = 72,
initialN = 128, // 0x80
delimiter = '-', // '\x2D'
/** Regular expressions */
regexPunycode = /^xn--/,
regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
/** Error messages */
errors = {
'overflow': 'Overflow: input needs wider integers to process',
'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
'invalid-input': 'Invalid input'
},
/** Convenience shortcuts */
baseMinusTMin = base - tMin,
floor = Math.floor,
stringFromCharCode = String.fromCharCode,
/** Temporary variable */
key;
/*--------------------------------------------------------------------------*/
/**
* A generic error utility function.
* @private
* @param {String} type The error type.
* @returns {Error} Throws a `RangeError` with the applicable error message.
*/
function error(type) {
throw new RangeError(errors[type]);
}
/**
* A generic `Array#map` utility function.
* @private
* @param {Array} array The array to iterate over.
* @param {Function} callback The function that gets called for every array
* item.
* @returns {Array} A new array of values returned by the callback function.
*/
function map(array, fn) {
var length = array.length;
var result = [];
while (length--) {
result[length] = fn(array[length]);
}
return result;
}
/**
* A simple `Array#map`-like wrapper to work with domain name strings or email
* addresses.
* @private
* @param {String} domain The domain name or email address.
* @param {Function} callback The function that gets called for every
* character.
* @returns {Array} A new string of characters returned by the callback
* function.
*/
function mapDomain(string, fn) {
var parts = string.split('@');
var result = '';
if (parts.length > 1) {
// In email addresses, only the domain name should be punycoded. Leave
// the local part (i.e. everything up to `@`) intact.
result = parts[0] + '@';
string = parts[1];
}
// Avoid `split(regex)` for IE8 compatibility. See #17.
string = string.replace(regexSeparators, '\x2E');
var labels = string.split('.');
var encoded = map(labels, fn).join('.');
return result + encoded;
}
/**
* Creates an array containing the numeric code points of each Unicode
* character in the string. While JavaScript uses UCS-2 internally,
* this function will convert a pair of surrogate halves (each of which
* UCS-2 exposes as separate characters) into a single code point,
* matching UTF-16.
* @see `punycode.ucs2.encode`
* @see <https://mathiasbynens.be/notes/javascript-encoding>
* @memberOf punycode.ucs2
* @name decode
* @param {String} string The Unicode input string (UCS-2).
* @returns {Array} The new array of code points.
*/
function ucs2decode(string) {
var output = [],
counter = 0,
length = string.length,
value,
extra;
while (counter < length) {
value = string.charCodeAt(counter++);
if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
// high surrogate, and there is a next character
extra = string.charCodeAt(counter++);
if ((extra & 0xFC00) == 0xDC00) { // low surrogate
output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
} else {
// unmatched surrogate; only append this code unit, in case the next
// code unit is the high surrogate of a surrogate pair
output.push(value);
counter--;
}
} else {
output.push(value);
}
}
return output;
}
/**
* Creates a string based on an array of numeric code points.
* @see `punycode.ucs2.decode`
* @memberOf punycode.ucs2
* @name encode
* @param {Array} codePoints The array of numeric code points.
* @returns {String} The new Unicode string (UCS-2).
*/
function ucs2encode(array) {
return map(array, function(value) {
var output = '';
if (value > 0xFFFF) {
value -= 0x10000;
output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
value = 0xDC00 | value & 0x3FF;
}
output += stringFromCharCode(value);
return output;
}).join('');
}
/**
* Converts a basic code point into a digit/integer.
* @see `digitToBasic()`
* @private
* @param {Number} codePoint The basic numeric code point value.
* @returns {Number} The numeric value of a basic code point (for use in
* representing integers) in the range `0` to `base - 1`, or `base` if
* the code point does not represent a value.
*/
function basicToDigit(codePoint) {
if (codePoint - 48 < 10) {
return codePoint - 22;
}
if (codePoint - 65 < 26) {
return codePoint - 65;
}
if (codePoint - 97 < 26) {
return codePoint - 97;
}
return base;
}
/**
* Converts a digit/integer into a basic code point.
* @see `basicToDigit()`
* @private
* @param {Number} digit The numeric value of a basic code point.
* @returns {Number} The basic code point whose value (when used for
* representing integers) is `digit`, which needs to be in the range
* `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
* used; else, the lowercase form is used. The behavior is undefined
* if `flag` is non-zero and `digit` has no uppercase form.
*/
function digitToBasic(digit, flag) {
// 0..25 map to ASCII a..z or A..Z
// 26..35 map to ASCII 0..9
return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
}
/**
* Bias adaptation function as per section 3.4 of RFC 3492.
* https://tools.ietf.org/html/rfc3492#section-3.4
* @private
*/
function adapt(delta, numPoints, firstTime) {
var k = 0;
delta = firstTime ? floor(delta / damp) : delta >> 1;
delta += floor(delta / numPoints);
for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
delta = floor(delta / baseMinusTMin);
}
return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
}
/**
* Converts a Punycode string of ASCII-only symbols to a string of Unicode
* symbols.
* @memberOf punycode
* @param {String} input The Punycode string of ASCII-only symbols.
* @returns {String} The resulting string of Unicode symbols.
*/
function decode(input) {
// Don't use UCS-2
var output = [],
inputLength = input.length,
out,
i = 0,
n = initialN,
bias = initialBias,
basic,
j,
index,
oldi,
w,
k,
digit,
t,
/** Cached calculation results */
baseMinusT;
// Handle the basic code points: let `basic` be the number of input code
// points before the last delimiter, or `0` if there is none, then copy
// the first basic code points to the output.
basic = input.lastIndexOf(delimiter);
if (basic < 0) {
basic = 0;
}
for (j = 0; j < basic; ++j) {
// if it's not a basic code point
if (input.charCodeAt(j) >= 0x80) {
error('not-basic');
}
output.push(input.charCodeAt(j));
}
// Main decoding loop: start just after the last delimiter if any basic code
// points were copied; start at the beginning otherwise.
for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
// `index` is the index of the next character to be consumed.
// Decode a generalized variable-length integer into `delta`,
// which gets added to `i`. The overflow checking is easier
// if we increase `i` as we go, then subtract off its starting
// value at the end to obtain `delta`.
for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
if (index >= inputLength) {
error('invalid-input');
}
digit = basicToDigit(input.charCodeAt(index++));
if (digit >= base || digit > floor((maxInt - i) / w)) {
error('overflow');
}
i += digit * w;
t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
if (digit < t) {
break;
}
baseMinusT = base - t;
if (w > floor(maxInt / baseMinusT)) {
error('overflow');
}
w *= baseMinusT;
}
out = output.length + 1;
bias = adapt(i - oldi, out, oldi == 0);
// `i` was supposed to wrap around from `out` to `0`,
// incrementing `n` each time, so we'll fix that now:
if (floor(i / out) > maxInt - n) {
error('overflow');
}
n += floor(i / out);
i %= out;
// Insert `n` at position `i` of the output
output.splice(i++, 0, n);
}
return ucs2encode(output);
}
/**
* Converts a string of Unicode symbols (e.g. a domain name label) to a
* Punycode string of ASCII-only symbols.
* @memberOf punycode
* @param {String} input The string of Unicode symbols.
* @returns {String} The resulting Punycode string of ASCII-only symbols.
*/
function encode(input) {
var n,
delta,
handledCPCount,
basicLength,
bias,
j,
m,
q,
k,
t,
currentValue,
output = [],
/** `inputLength` will hold the number of code points in `input`. */
inputLength,
/** Cached calculation results */
handledCPCountPlusOne,
baseMinusT,
qMinusT;
// Convert the input in UCS-2 to Unicode
input = ucs2decode(input);
// Cache the length
inputLength = input.length;
// Initialize the state
n = initialN;
delta = 0;
bias = initialBias;
// Handle the basic code points
for (j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue < 0x80) {
output.push(stringFromCharCode(currentValue));
}
}
handledCPCount = basicLength = output.length;
// `handledCPCount` is the number of code points that have been handled;
// `basicLength` is the number of basic code points.
// Finish the basic string - if it is not empty - with a delimiter
if (basicLength) {
output.push(delimiter);
}
// Main encoding loop:
while (handledCPCount < inputLength) {
// All non-basic code points < n have been handled already. Find the next
// larger one:
for (m = maxInt, j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue >= n && currentValue < m) {
m = currentValue;
}
}
// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
// but guard against overflow
handledCPCountPlusOne = handledCPCount + 1;
if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
error('overflow');
}
delta += (m - n) * handledCPCountPlusOne;
n = m;
for (j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue < n && ++delta > maxInt) {
error('overflow');
}
if (currentValue == n) {
// Represent delta as a generalized variable-length integer
for (q = delta, k = base; /* no condition */; k += base) {
t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
if (q < t) {
break;
}
qMinusT = q - t;
baseMinusT = base - t;
output.push(
stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
);
q = floor(qMinusT / baseMinusT);
}
output.push(stringFromCharCode(digitToBasic(q, 0)));
bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
delta = 0;
++handledCPCount;
}
}
++delta;
++n;
}
return output.join('');
}
/**
* Converts a Punycode string representing a domain name or an email address
* to Unicode. Only the Punycoded parts of the input will be converted, i.e.
* it doesn't matter if you call it on a string that has already been
* converted to Unicode.
* @memberOf punycode
* @param {String} input The Punycoded domain name or email address to
* convert to Unicode.
* @returns {String} The Unicode representation of the given Punycode
* string.
*/
function toUnicode(input) {
return mapDomain(input, function(string) {
return regexPunycode.test(string)
? decode(string.slice(4).toLowerCase())
: string;
});
}
/**
* Converts a Unicode string representing a domain name or an email address to
* Punycode. Only the non-ASCII parts of the domain name will be converted,
* i.e. it doesn't matter if you call it with a domain that's already in
* ASCII.
* @memberOf punycode
* @param {String} input The domain name or email address to convert, as a
* Unicode string.
* @returns {String} The Punycode representation of the given domain name or
* email address.
*/
function toASCII(input) {
return mapDomain(input, function(string) {
return regexNonASCII.test(string)
? 'xn--' + encode(string)
: string;
});
}
/*--------------------------------------------------------------------------*/
/** Define the public API */
punycode = {
/**
* A string representing the current Punycode.js version number.
* @memberOf punycode
* @type String
*/
'version': '1.4.1',
/**
* An object of methods to convert from JavaScript's internal character
* representation (UCS-2) to Unicode code points, and back.
* @see <https://mathiasbynens.be/notes/javascript-encoding>
* @memberOf punycode
* @type Object
*/
'ucs2': {
'decode': ucs2decode,
'encode': ucs2encode
},
'decode': decode,
'encode': encode,
'toASCII': toASCII,
'toUnicode': toUnicode
};
/** Expose `punycode` */
// Some AMD build optimizers, like r.js, check for specific condition patterns
// like the following:
if (
typeof define == 'function' &&
typeof define.amd == 'object' &&
define.amd
) {
define('punycode', function() {
return punycode;
});
} else if (freeExports && freeModule) {
if (module.exports == freeExports) {
// in Node.js, io.js, or RingoJS v0.8.0+
freeModule.exports = punycode;
} else {
// in Narwhal or RingoJS v0.7.0-
for (key in punycode) {
punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
}
}
} else {
// in Rhino or a web browser
root.punycode = punycode;
}
}(this));

View File

@@ -1,51 +0,0 @@
var electron = require("electron");
const fs = require("fs");
const os = require('os')
const shell = electron.shell;
const path = require('path')
function shot() {
//screenshotMsg.textContent = 'Gathering screens...'
$(window).height
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 (location.search) {
var m = location.search.match(/\?id=([a-zA-Z-0-9]+)/);
var title = m[1];
} else {
var title = "screenshot";
}
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;
var h = $(window).height() - 150;
var w = $(window).width();
ipc.send('shot', ['file://' + screenshotPath, w, h, b64[1], title]);
if ($(".img-parsed").length > 0) {
for (i = 0; i < $(".img-parsed").length; i++) {
var url = $(".img-parsed").eq(i).attr("data-url");
ipc.send('shot-img-dl', [url, title + "_img" + i + ".png"]);
}
}
window.close();
return;
const message = `Saved screenshot to: ${screenshotPath}`
//screenshotMsg.textContent = message
}
})
})
}

View File

@@ -40,7 +40,7 @@ function mdCheck() {
$("#trendtag").html("");
}
if (localStorage.getItem("mode_" + domain) == "misskey") {
Materialize.toast(lang.lang_bbmd_misskey, 5000);
M.toast({ html: lang.lang_bbmd_misskey, displayLength: 5000 })
}
if (idata[domain + "_letters"]) {
$("#textarea").attr("data-length", idata[domain + "_letters"])

View File

@@ -191,7 +191,7 @@ function emojiInsert(code, del) {
$("#textarea").val(newt);
//emoji();
} else {
var regExp = new RegExp(del, "g");
var regExp = new RegExp(del.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
var now = now.replace(regExp, "");
$("#textarea").val(now + brank + code);
}

View File

@@ -40,9 +40,7 @@ function pimg(files) {
for (i = 0; i < files.length; i++) {
var dot = files[i].path.match(/\.(.+)$/)[1];
if (dot == "bmp" || dot == "BMP") {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('bmp-image', [files[i].path, i]);
postMessage(["bmpImage", [files[i].path, i]], "*")
todo(lang.lang_progress);
} else {
@@ -50,18 +48,13 @@ function pimg(files) {
}
}
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.on('bmp-img-comp', function (event, b64) {
media(b64[0], "image/png", b64[1]);
});
//ドラッグ・アンド・ドロップを終了
function closedrop() {
$("#drag").css('display', 'none');
}
//ファイル選択
function fileselect() {
ipc.send('file-select', "");
postMessage(["sendSinmpleIpc", "file-select"], "*")
}
//ファイル読み込み
@@ -127,6 +120,16 @@ function media(b64, type, no) {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
if (!json.id) {
todc();
$("#imgup").text("");
$(".toot-btn-group").prop("disabled", false);
$("#post-acct-sel").prop("disabled", false);
$('select').formSelect();
$("#imgsel").show();
M.toast({ html: lang.lang_postimg_failupload, displayLength: 5000 })
return false
}
var img = localStorage.getItem("img");
if (json.type.indexOf("image") != -1) {
var html = '<img src="' + json[previewer] + '" class="preview-img pointer" data-media="' + json["id"] + '" onclick="deleteImage(\'' + json["id"] + '\')" title="' + lang.lang_postimg_delete + '">';
@@ -149,9 +152,9 @@ function media(b64, type, no) {
}
todc();
$(".toot-btn-group").prop("disabled", false);
$('select').material_select();
$('select').formSelect();
$("#mec").text(lang.lang_there);
Materialize.toast(lang.lang_postimg_aftupload, 1000);
M.toast({ html: lang.lang_postimg_aftupload, displayLength: 1000 })
$("#imgup").text("");
$("#imgsel").show();
localStorage.removeItem("image");
@@ -211,26 +214,28 @@ element.addEventListener("paste", function (e) {
// 画像以外がペーストされたときのために、元に戻しておく
});
//Adobeフォトエディタ
function adobe() {
var agree = localStorage.getItem("adobeagree");
ipc.send('adobe', agree);
}
ipc.on('adobeagree', function (event, arg) {
localStorage.setItem("adobeagree", arg);
});
function deleteImage(key) {
if (!confirm(lang.lang_postimg_delete)) {
return false;
}
var media = $("#media").val();
var arr = media.split(",");
for (var i = 0; i < media.length; i++) {
if (arr[i] == key) {
arr.splice(i, 1);
break;
Swal.fire({
title: lang.lang_postimg_delete,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
var media = $("#media").val();
var arr = media.split(",");
for (var i = 0; i < media.length; i++) {
if (arr[i] == key) {
arr.splice(i, 1);
break;
}
}
$("#media").val(arr.join(","));
$('#preview [data-media=' + key + ']').remove();
}
}
$("#media").val(arr.join(","));
$('#preview [data-media=' + key + ']').remove();
})
}

View File

@@ -31,7 +31,7 @@ function renoteqt(id, acct_id) {
$("#rec").text("Renote");
$("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true);
$('select').material_select();
$('select').formSelect();
$("#textarea").attr("placeholder", lang.lang_misskeyparse_qt);
$("#textarea").focus();
}
@@ -43,7 +43,7 @@ function misskeyreply(id, acct_id) {
$("#rec").text("Renote");
$("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true);
$('select').material_select();
$('select').formSelect();
$("#textarea").attr("placeholder", lang.lang_misskeyparse_qt);
$("#textarea").focus();
}
@@ -102,7 +102,7 @@ function reactioncustom(acct_id, id) {
$("#unreact").hide();
$("#addreact").removeClass("hide");
$("#post-acct-sel").val(acct_id);
$('select').material_select();
$('select').formSelect();
localStorage.setItem("nohide", true);
show()
emojiToggle(true)

View File

@@ -17,55 +17,41 @@ function post(mode, postvis) {
var acct_id = $("#post-acct-sel").val();
localStorage.setItem("last-use", acct_id);
var domain = localStorage.getItem("domain_" + acct_id);
if (domain == "theboss.tech") {
if (~str.indexOf("#")) {
if (str.indexOf("#theboss_tech") == "-1") {
if (!confirm(lang.lang_post_tagTL)) {
return false;
}
}
}
}
if (domain == "dtp-mstdn.jp") {
if (~str.indexOf("#")) {
if (str.indexOf("#dtp") == "-1") {
if (!confirm(lang.lang_post_tagTL)) {
return false;
}
}
}
}
if (!localStorage.getItem("cw_sentence")) {
var cw_sent = 500;
} else {
var cw_sent = localStorage.getItem("cw_sentence");
}
if (!localStorage.getItem("cw_letters")) {
var cw_ltres = 500;
var cw_ltres = 7000;
} else {
var cw_ltres = localStorage.getItem("cw_letters");
}
if (domain != "kirishima.cloud") {
if (mode != "pass" && !$("#cw").hasClass("cw-avail") && (str.length > cw_sent || (str.split("\n").length - 1) > cw_ltres)) {
var electron = require("electron");
var remote = electron.remote;
var dialog = remote.dialog;
var plus = str.replace(/\n/g, "").slice(0, 10) + "...";
const options = {
type: 'info',
Swal.fire({
title: lang.lang_post_cwtitle,
message: lang.lang_post_cwtxt + plus,
buttons: [lang.lang_post_btn1, lang.lang_post_btn2, lang.lang_post_btn3]
}
dialog.showMessageBox(options, function (arg) {
if (arg === 1) {
text: lang.lang_post_cwtxt + plus,
type: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#3085d6',
confirmButtonText: lang.lang_post_btn2,
cancelButtonText: lang.lang_post_btn3,
showCloseButton: true,
focusConfirm: false,
}).then((result) => {
if (result.dismiss == "cancel") {
//btn3:sonomama
post("pass")
} else if (result.value) {
//btn2:auto-CW
$("#cw-text").show();
$("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail");
$("#cw-text").val(plus);
post("pass");
} else if (arg === 2) {
post("pass");
post("pass")
}
})
return false;
@@ -104,22 +90,11 @@ function post(mode, postvis) {
} else {
var vis = $("#vis").text();
}
if (vis != "inherit" && vis != "local") {
toot.visibility = vis;
} else if (vis == "local") {
toot.status = str + "👁️";
}
//ここに非公開・未収載タグについてwarn
if (domain != "kirishima.cloud" && domain != "imastodon.net") {
if (~str.indexOf("#")) {
if (vis == "local" || vis == "unlisted" || vis == "direct" || vis == "private") {
if (!confirm(lang.lang_post_tagVis)) {
return false;
}
}
}
}
if ($("#cw").hasClass("cw-avail")) {
var spo = $("#cw-text").val();
cw();
@@ -218,9 +193,9 @@ function misskeyPost() {
}
var vis = $("#vis").text();
if (vis == "unlisted") {
vis == "home"
vis = "home"
} else if (vis == "direct") {
vis == "specified";
vis = "specified";
toot.visibleUserIds = str.match(/@([a-zA-Z0-9_@.-]+)(\s|$)/g).join('').split("@");
}
if (vis != "inherit") {
@@ -306,7 +281,7 @@ function clear() {
if (localStorage.getItem("mainuse") == "main") {
$("#post-acct-sel").val(localStorage.getItem("main"));
}
$('select').material_select();
$('select').formSelect();
$("#left-side").show();
$("#default-emoji").show();
$("#unreact").show();

View File

@@ -45,7 +45,10 @@ function vis(set) {
var acct_id = $("#post-acct-sel").val();
localStorage.setItem("vis-memory-" + acct_id, set);
}
$('.dropdown-button').dropdown('close');
var ins = M.Dropdown.getInstance($('#dropdown1'))
if(ins){
ins.close();
}
}
function loadVis() {
var vist = localStorage.getItem("vis");

View File

@@ -43,7 +43,7 @@ function fav(id, acct_id, remote) {
$(".fav_" + id).addClass("yellow-text");
}
} else {
Materialize.toast(lang.lang_status_favWarn, 1000);
M.toast({ html: lang.lang_status_favWarn, displayLength: 1000 })
}
}
}
@@ -84,13 +84,13 @@ function rt(id, acct_id, remote) {
if ($("[toot-id=" + id + "]").hasClass("rted")) {
$("[toot-id=" + id + "]").removeClass("rted");
$(".rt_" + id).removeClass("teal-text");
$(".rt_" + id).removeClass("light-blue-text");
} else {
$("[toot-id=" + id + "]").addClass("rted");
$(".rt_" + id).addClass("teal-text");
$(".rt_" + id).addClass("light-blue-text");
}
} else {
Materialize.toast(lang.lang_status_btWarn, 1000);
M.toast({ html: lang.lang_status_btWarn, displayLength: 1000 })
}
}
}
@@ -183,7 +183,7 @@ function block(acct_id) {
}
//ミュート
function mute(acct_id) {
function muteDo(acct_id) {
if (!acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
@@ -253,39 +253,50 @@ function del(id, acct_id) {
}
//redraft
function redraft(id, acct_id) {
if (confirm(lang.lang_status_redraft)) {
show();
del(id, acct_id);
$("#post-acct-sel").prop("disabled", true);
var medias = $("[toot-id=" + id + "]").attr("data-medias");
var vismode = $("[toot-id=" + id + "] .vis-data").attr("data-vis");
vis(vismode);
$("#media").val(medias);
var ct = medias.split(",").length;
$("[toot-id=" + id + "] img.toot-img").each(function (i, elem) {
if (i < ct) {
var url = $(elem).attr("src");
console.log("Play back image data:" + url);
$('#preview').append('<img src="' + url + '" style="width:50px; max-height:100px;">');
Swal.fire({
title: lang.lang_status_redraftTitle,
text: lang.lang_status_redraft,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
show();
del(id, acct_id);
$("#post-acct-sel").prop("disabled", true);
var medias = $("[toot-id=" + id + "]").attr("data-medias");
var vismode = $("[toot-id=" + id + "] .vis-data").attr("data-vis");
vis(vismode);
$("#media").val(medias);
var ct = medias.split(",").length;
$("[toot-id=" + id + "] img.toot-img").each(function (i, elem) {
if (i < ct) {
var url = $(elem).attr("src");
console.log("Play back image data:" + url);
$('#preview').append('<img src="' + url + '" style="width:50px; max-height:100px;">');
}
});
var html = $("[toot-id=" + id + "] .toot").html();
html = html.replace(/^<p>(.+)<\/p>$/, "$1");
html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n");
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
html = $.strip_tags(html);
localStorage.setItem("nohide", true);
show();
$("#textarea").val(html);
var cwtxt = $("[toot-id=" + id + "] .cw_text").html();
if (cwtxt != "") {
cwtxt = $.strip_tags(cwtxt);
cw();
$("#cw-text").val(cwtxt);
}
});
var html = $("[toot-id=" + id + "] .toot").html();
html = html.replace(/^<p>(.+)<\/p>$/, "$1");
html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n");
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
html = $.strip_tags(html);
localStorage.setItem("nohide", true);
show();
$("#textarea").val(html);
var cwtxt = $("[toot-id=" + id + "] .cw_text").html();
if (cwtxt != "") {
cwtxt = $.strip_tags(cwtxt);
cw();
$("#cw-text").val(cwtxt);
}
}
})
}
//ピン留め
function pin(id, acct_id) {
@@ -373,7 +384,7 @@ function empUser() {
if (!obj) {
var obj = [];
obj.push(id);
Materialize.toast(id + lang.lang_status_emphas, 4000);
M.toast({ html: id + lang.lang_status_emphas, displayLength: 4000 })
} else {
var can;
Object.keys(obj).forEach(function (key) {
@@ -383,7 +394,7 @@ function empUser() {
} else {
can = true;
obj.splice(key, 1);
Materialize.toast(id + lang.lang_status_unemphas, 4000);
M.toast({ html: id + lang.lang_status_unemphas, displayLength: 4000 })
}
});
}
@@ -425,7 +436,7 @@ function pinUser() {
//URLコピー
function tootUriCopy(url) {
execCopy(url);
Materialize.toast(lang.lang_details_url, 1500);
M.toast({ html: lang.lang_details_url, displayLength: 1500 })
}
//他のアカウントで…

View File

@@ -66,7 +66,7 @@ input.addEventListener("focus", function () {
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
suggest = "https://" + domain + "/api/v1/search?q=" + q
suggest = "https://" + domain + "/api/v2/search?q=" + q
if (suggest != oldSuggest) {
console.log("Try to get suggest at " + suggest)
fetch(suggest, {
@@ -81,18 +81,43 @@ input.addEventListener("focus", function () {
todo(error);
console.error(error);
}).then(function (json) {
console.log(["Search", json]);
//ハッシュタグ
if (json.hashtags[0] && tag) {
if (tag[1]) {
var tags = "";
var tags = [];
Object.keys(json.hashtags).forEach(function (key4) {
var tag = json.hashtags[key4];
if (tag != q) {
tags = tags + '<a onclick="tagInsert(\'#' + tag + '\',\'#' + q +
'\')" class="pointer">#' + tag + '</a><br>';
var his = tag.history;
var uses = his[0].uses * 1 + his[1].uses * 1 + his[2].uses * 1 + his[3].uses * 1 + his[4].uses * 1 + his[5].uses * 1 + his[6].uses * 1;
tagHTML = '<br><a onclick="tagInsert(\'#' + escapeHTML(tag.name) + '\',\'#' + q + '\')" class="pointer">#' +
escapeHTML(tag.name) + '</a>&nbsp;' + uses + 'toot(s)'
var item = {
"uses": uses,
"html": tagHTML
}
tags.push(item)
});
var num_a = -1;
var num_b = 1;
tags = tags.sort(function (a, b) {
var x = a["uses"];
var y = b["uses"];
if (x > y) return num_a;
if (x < y) return num_b;
return 0;
});
var ins = ""
var nev = false
Object.keys(tags).forEach(function (key7) {
ins = ins + tags[key7].html
if (key7 <= 0 && !nev) {
ins = ins + '<br>'
nev = true
}
});
$("#suggest").html(ins);
$("#right-side").show()
$("#suggest").html("Tags:<br>" + tags);
$("#poll").addClass("hide")
$("#emoji").addClass("hide")
}
@@ -131,7 +156,7 @@ function tagInsert(code, del) {
var selin = $("#textarea").prop('selectionStart');
if (!del) {
} else {
var regExp = new RegExp(del, "g");
var regExp = new RegExp(del.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
var now = now.replace(regExp, "");
selin = selin - del.length;
}

View File

@@ -15,7 +15,7 @@ function re(id, ats_cm, acct_id, mode) {
$("#rec").text(lang.lang_yesno);
$("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true);
$('select').material_select();
$('select').formSelect();
$("#textarea").attr("placeholder", lang.lang_usetxtbox_reply);
$("#textarea").focus();
var profimg = localStorage.getItem("prof_" + acct_id);
@@ -60,5 +60,5 @@ function qt(id, acct_id, at, url) {
}
$("#textarea").focus();
$("#post-acct-sel").val(acct_id);
$('select').material_select();
$('select').formSelect();
}

View File

@@ -155,7 +155,7 @@ function additionalIndv(tlid, acct_id, id) {
});
} else {
var id = $("[toot-id=" + id + "] .toot a").parents('.cvo').attr("toot-id");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/card";
var start = "https://" + domain + "/api/v1/statuses/" + id;
fetch(start, {
method: 'GET',
headers: {
@@ -169,6 +169,7 @@ function additionalIndv(tlid, acct_id, id) {
todo(error);
console.error(error);
}).then(function (json) {
json = json.card;
//このリンク鳥やんけ、ってとき
if (json.provider_name == "Twitter") {
if (json.image) {

View File

@@ -82,7 +82,7 @@ function details(id, acct_id, tlid, mode) {
} else {
$("#tootmodal").attr("data-user", scn);
}
context(id, acct_id);
getContext(id, acct_id);
var dom = null;
if (!local) {
dom = scn.replace(/.+@/g, '');
@@ -99,7 +99,9 @@ function details(id, acct_id, tlid, mode) {
if ($("#toot-this div").hasClass("cvo")) {
$("#toot-this").removeClass("cvo");
} else {
$("#toot-this").addClass("cvo");
if(!$("#toot-this .cvo").hasClass("cvo")){
$("#toot-this").addClass("cvo");
}
}
if (!$("#activator").hasClass("active")) {
$('#det-col').collapsible('open', 4);
@@ -125,14 +127,7 @@ function replyTL(id, acct_id) {
})
}
} else {
var start = "https://" + domain + "/api/v1/statuses/" + id;
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}
return false
}
fetch(start, i).then(function (response) {
return response.json();
@@ -155,27 +150,13 @@ function replyTL(id, acct_id) {
if (json[rep]) {
replyTL(json[rep][0], acct_id);
}
} else {
var templete = parse([json], '', acct_id, "", "", mute);
if (templete != "") {
$("#toot-reply .no-data").hide();
}
$("#toot-reply").prepend(templete);
$("#toot-reply .hide").html(lang.lang_details_filtered);
$("#toot-reply .by_filter").css("display", "block");
$("#toot-reply .by_filter").removeClass("hide");
jQuery("time.timeago").timeago();
var rep = "in_reply_to_id";
if (json[rep]) {
replyTL(json[rep], acct_id);
}
}
});
}
//コンテクストってなんですか
function context(id, acct_id) {
function getContext(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
@@ -228,6 +209,14 @@ function context(id, acct_id) {
$("#toot-after .hide").html(lang.lang_details_filtered);
$("#toot-after .by_filter").css("display", "block");
$("#toot-after .by_filter").removeClass("hide");
var templete = parse(json.ancestors, '', acct_id, "", "", mute);
if (templete != "") {
$("#toot-reply .no-data").hide();
}
$("#toot-reply").prepend(templete);
$("#toot-reply .hide").html(lang.lang_details_filtered);
$("#toot-reply .by_filter").css("display", "block");
$("#toot-reply .by_filter").removeClass("hide");
jQuery("time.timeago").timeago();
}
@@ -466,10 +455,10 @@ function cbCopy(mode) {
if (mode == "emb") {
var emb = '<iframe src="' + url + '/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"></iframe><script src="https://' + domain + '/embed.js" async="async"></script>';
execCopy(emb)
Materialize.toast(lang.lang_details_embed, 1500);
M.toast({ html: lang.lang_details_embed, displayLength: 1500 })
} else {
if (execCopy(url)) {
Materialize.toast(lang.lang_details_url, 1500);
M.toast({ html: lang.lang_details_url, displayLength: 1500 })
}
}
@@ -485,7 +474,7 @@ function staCopy(id) {
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
html = $.strip_tags(html);
if (execCopy(html)) {
Materialize.toast(lang.lang_details_txt, 1500);
M.toast({ html: lang.lang_details_txt, displayLength: 1500 })
}
}
@@ -513,17 +502,13 @@ function trans(tar, to) {
todo(error);
console.error(error);
}).then(function (text) {
$("#toot-this .additional").html('<span class="gray">' + text.text + '</span>');
$("#toot-this .additional").html('<span class="gray translate">' + text.text + '</span>');
});
}
//ブラウザで開く
function brws() {
var url = $("#tootmodal").attr("data-url");
const {
shell
} = require('electron');
shell.openExternal(url);
postMessage(["openUrl", url], "*")
}
//外部からトゥート開く
function detEx(url, acct_id) {
@@ -546,11 +531,7 @@ function detEx(url, acct_id) {
console.error(error);
}).then(function (json) {
if (!json.statuses) {
const {
shell
} = require('electron');
shell.openExternal(url);
postMessage(["openUrl", url], "*")
} else {
var id = json.statuses[0].id;
$(".loadp").text($(".loadp").attr("href"));

View File

@@ -370,7 +370,7 @@ function filterUpdateInternal(json, type) {
var text = $(elem).find('.toot').html();
Object.keys(home).forEach(function (key8) {
var word = home[key8];
var regExp = new RegExp(word, "g");
var regExp = new RegExp(word.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
if ($.strip_tags(text).match(regExp)) {
$("[toot-id=" + id + "]").addClass("hide");
}
@@ -386,33 +386,34 @@ function filterUpdateInternal(json, type) {
*/
//通知フィルター
function exclude(key) {
localStorage.setItem("exclude-" + key, "")
var excludetxt = localStorage.getItem("exclude-" + key);
if ($('#exc-reply-' + key + ':checked').val()) {
excludetxt = "?exclude_types[]=mention"
}
if ($('#exc-fav-' + key + ':checked').val()) {
if (!excludetxt || excludetxt !="") {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=favourite"
} else {
excludetxt = "?exclude_types[]=favourite"
}
}
if ($('#exc-bt-' + key + ':checked').val()) {
if (!excludetxt || excludetxt !="") {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=reblog"
} else {
excludetxt = "?exclude_types[]=reblog"
}
}
if ($('#exc-follow-' + key + ':checked').val()) {
if (!excludetxt || excludetxt !="") {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=follow"
} else {
excludetxt = "?exclude_types[]=follow"
}
}
if ($('#exc-poll-' + key + ':checked').val()) {
if (!excludetxt || excludetxt !="") {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=poll"
} else {
excludetxt = "?exclude_types[]=poll"
@@ -445,9 +446,9 @@ function resetNotfFilter(tlid){
localStorage.setItem("exclude-" + tlid, "")
parseColumn();
}
function notfFilter(id,tlid){
function notfFilter(id,tlid,acct_id){
var excludetxt = localStorage.getItem("exclude-" + tlid);
if (!excludetxt || excludetxt !="") {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&account_id="+id
} else {
excludetxt = "?account_id="+id

View File

@@ -50,14 +50,18 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
native = "yes";
}
//クライアント強調
var emp = localStorage.getItem("client_emp");
if (emp) {
var emp = JSON.parse(emp);
var empCli = localStorage.getItem("client_emp");
if (empCli) {
var empCli = JSON.parse(empCli);
} else {
var empCli = [];
}
//クライアントミュート
var mute = localStorage.getItem("client_mute");
if (mute) {
var mute = JSON.parse(mute);
var muteCli = localStorage.getItem("client_mute");
if (muteCli) {
var muteCli = JSON.parse(muteCli);
} else {
var muteCli = [];
}
//ユーザー強調
var useremp = localStorage.getItem("user_emp");
@@ -65,17 +69,19 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var useremp = JSON.parse(useremp);
}
//ワード強調
var wordemp = localStorage.getItem("word_emp");
if (wordemp) {
var wordemp = JSON.parse(wordemp);
var wordempList = localStorage.getItem("word_emp");
if (wordempList) {
var wordempList = JSON.parse(wordempList);
}
//ワードミュート
var wordmute = localStorage.getItem("word_mute");
if (wordmute) {
var wordmute = JSON.parse(wordmute);
wordmute = wordmute.concat(mutefilter);
var wordmuteList = localStorage.getItem("word_mute");
if (wordmuteList) {
var wordmuteList = JSON.parse(wordmuteList);
if (wordmuteList) {
wordmuteList = wordmuteList.concat(mutefilter);
}
} else {
wordmute = mutefilter;
wordmuteList = mutefilter;
}
//Ticker
var tickerck = localStorage.getItem("ticker_ok");
@@ -254,12 +260,10 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}
var domain = localStorage.getItem("domain_" + acct_id);
if (popup > 0) {
Materialize.toast("[" + domain + "]" + escapeHTMLtemp(toot.user.name) + what, popup * 1000);
M.toast({ html: "[" + domain + "]" + escapeHTMLtemp(toot.user.name) + what, displayLength: popup * 1000 })
}
if (native == "yes") {
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var os = localStorage.getItem("platform");
var options = {
body: toot.user.name + "(" + toot.user.username + ")" + what + "\n\n" + $.strip_tagstemp(toot.note.text),
icon: toot.user.avatarUrl
@@ -267,14 +271,15 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
ipc.send('native-notf', [
var nativeNotfOpt = [
'TheDesk:' + domain,
toot.user.name + "(" + toot.user.username + ")" + what + "\n\n" + $.strip_tagstemp(toot.note.text),
toot.user.avatarUrl,
"toot",
acct_id,
toot.note.id
]);
]
postMessage(["nativeNotf", nativeNotfOpt], "*")
}
}
if (localStorage.getItem("hasNotfC_" + acct_id) != "true") {
@@ -350,16 +355,16 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
viashow = "via-hide";
}
//強調チェック
Object.keys(emp).forEach(function (key6) {
var cli = emp[key6];
if (cli == via) {
Object.keys(empCli).forEach(function (key6) {
var empCliList = empCli[key6];
if (empCliList == via) {
boostback = "emphasized";
}
});
//ミュートチェック
Object.keys(mute).forEach(function (key7) {
var cli = mute[key7];
if (cli == via) {
Object.keys(muteCli).forEach(function (key7) {
var muteCliList = muteCli[key7];
if (muteCliList == via) {
boostback = "hide";
}
});
@@ -496,6 +501,10 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
'" data-type="video" class="img-parsed"><video src="' +
purl + '" class="' + sense +
' toot-img pointer" style="max-width:100%;"></a></span>';
} else if (media.type.indexOf("audio") !== -1) {
viewer = viewer + '<audio src="' +
purl + '" class="' + sense +
' toot-img pointer" style="width:100%;" controls></span>';
} else {
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',' +
acct_id + ')" id="' + id + '-image-' + key2 + '" data-url="' + url +
@@ -572,7 +581,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var rt_app = "";
/*
if (toot.reblogged) {
var if_rt = "teal-text";
var if_rt = "light-blue-text";
var rt_app = "rted";
} else {
var if_rt = "";
@@ -582,16 +591,16 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
//アバター
var avatar = toot.user.avatarUrl;
//ワードミュート
if (wordmute) {
Object.keys(wordmute).forEach(function (key8) {
var worde = wordmute[key8];
if (wordmuteList) {
Object.keys(wordmuteList).forEach(function (key8) {
var worde = wordmuteList[key8];
if (worde) {
if (worde.tag) {
var word = worde.tag;
var wordList = worde.tag;
} else {
var word = worde
var wordList = worde
}
var regExp = new RegExp(word, "g");
var regExp = new RegExp(wordList.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
if ($.strip_tagstemp(content).match(regExp)) {
boostback = "hide by_filter";
}
@@ -599,13 +608,13 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
});
}
//ワード強調
if (wordemp) {
Object.keys(wordemp).forEach(function (key9) {
var word = wordemp[key9];
if (word) {
var word = word.tag;
var regExp = new RegExp(word, "g");
content = content.replace(regExp, '<span class="emp">' + word + "</span>");
if (wordempList) {
Object.keys(wordempList).forEach(function (key9) {
var wordList = wordempList[key9];
if (wordList) {
var wordList = wordList.tag;
var regExp = new RegExp(wordList.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
content = content.replace(regExp, '<span class="emp">' + wordList + "</span>");
}
});
}
@@ -823,10 +832,10 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
'<div class="action ' + disp["re"] + ' ' + noauth + '"><a onclick="misskeyreply(\'' + toot.id +
'\',\'' + acct_id + '\',' +
acct_id + ',\'' + visen +
'\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_replyto + '"><i class="fas fa-share"></i></a></div>' +
'\')" class="waves-effect waves-dark btn-flat rep-btn" style="padding:0" title="' + lang.lang_parse_replyto + '"><i class="fas fa-share"></i></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["rt"] + ' ' + noauth + '"><a onclick="renote(\'' + toot.id + '\',' + acct_id +
',\'' + tlid +
'\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_misskeyparse_renote + '"><i class="text-darken-3 fas fa-retweet ' +
'\')" class="waves-effect waves-dark btn-flat bt-btn" style="padding:0" title="' + lang.lang_misskeyparse_renote + '"><i class="text-darken-3 fas fa-retweet ' +
if_rt + ' rt_' + toot.id + '"></i><span class="rt_ct"></span></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["qt"] + ' ' + noauth + '"><a onclick="renoteqt(\'' + toot.id + '\',' + acct_id +
',\'misskey.xyz\',\'misskey.xyz\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_misskeyparse_renoteqt + '"><i class="text-darken-3 fas fa-quote-right"></i></a></div>' +
@@ -893,7 +902,7 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) {
}
var memory = localStorage.getItem("notice-mem");
if (popup >= 0 && obj.length < 5 && notftext != memory) {
Materialize.toast(escapeHTMLtemp(toot.name) + ":" + ftxt, popup * 1000);
M.toast({ html: escapeHTMLtemp(toot.name) + ":" + ftxt, displayLength: popup * 1000 })
$(".notf-icon_" + tlid).addClass("red-text");
localStorage.setItem("notice-mem", notftext);
notftext = "";
@@ -902,9 +911,7 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) {
native = "yes";
}
if (native == "yes") {
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var os = localStorage.getItem("platform");
var options = {
body: toot.display_name + "(" + toot.acct + ")" + ftxt,
icon: toot.avatar
@@ -913,14 +920,15 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) {
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
ipc.send('native-notf', [
var nativeNotfOpt = [
'TheDesk:' + domain,
toot.display_name + "(" + toot.acct + ")" + ftxt,
toot.avatar,
"userdata",
acct_id,
toot.id
]);
]
postMessage(["nativeNotf", nativeNotfOpt], "*")
}
}
}
@@ -967,15 +975,11 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) {
function goGoogle(id) {
var val = $("#srcbox_" + id).val();
var url = "https://google.com/search?q=" + val;
const {
shell
} = require('electron');
shell.openExternal(url);
postMessage(["openUrl", url], "*")
}
var misskeyws = []
var misskeywsstate = []
function connectMisskey(acct_id) {
function connectMisskey(acct_id, re) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "wss://" + domain +
@@ -994,10 +998,9 @@ function connectMisskey(acct_id) {
console.log([domain + ":Receive Streaming API:", data]);
var data = JSON.parse(mess.data)
var obj = data.body.body
var mute = [];
if (data.body.id.indexOf("notf:") !== -1) {
var obj = JSON.parse(mess.data).body;
console.log(obj);
var popup = localStorage.getItem("popup");
if (!popup) {
popup = 0;
@@ -1059,13 +1062,17 @@ function connectMisskey(acct_id) {
console.error("Error closing " + tlid);
console.error(error);
misskeywsstate[wsid] = false
connectMisskey(acct_id)
if(!re){
connectMisskey(acct_id, true)
}
return false;
};
misskeyws[wsid].onclose = function () {
console.warn("Closing " + tlid);
misskeywsstate[wsid] = false
connectMisskey(acct_id)
if(!re){
connectMisskey(acct_id, true)
}
return false;
};

View File

@@ -43,15 +43,15 @@ function mixtl(acct_id, tlid, type, delc, voice) {
timeline.splice(20);
}
var templete = "";
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "mix");
} else {
var mute = [];
}
Object.keys(timeline).forEach(function (key) {
var pkey = key * 1 + 1;
if (pkey < timeline.length) {
if (date(timeline[key].created_at, "unix") != date(timeline[pkey].created_at, "unix")) {
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "mix");
} else {
var mute = [];
}
if (type == "integrated") {
templete = templete + parse([timeline[key]], '', acct_id, tlid, "", mute, "mix");
} else if (type == "plus") {

View File

@@ -58,9 +58,7 @@ function notfColumn(acct_id, tlid, sys) {
if (key > 14) {
ct = "15+";
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var os = localStorage.getItem("platform");
var options = {
body: ct + lang.lang_notf_new,
icon: localStorage.getItem("prof_" + acct_id)
@@ -68,7 +66,8 @@ function notfColumn(acct_id, tlid, sys) {
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
ipc.send('native-notf', ['TheDesk:' + domain, ct + lang.lang_notf_new, localStorage.getItem("prof_" + acct_id)]);
var nativeNotfOpt=['TheDesk:' + domain, ct + lang.lang_notf_new, localStorage.getItem("prof_" + acct_id)]
postMessage(["nativeNotf", nativeNotfOpt], "*")
}
}
@@ -164,9 +163,7 @@ function notfCommon(acct_id, tlid, sys) {
if (key > 14) {
ct = "15+";
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var os = localStorage.getItem("platform");
var options = {
body: ct + lang.lang_notf_new,
icon: localStorage.getItem("prof_" + acct_id)
@@ -174,7 +171,8 @@ function notfCommon(acct_id, tlid, sys) {
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
ipc.send('native-notf', ['TheDesk:' + domain, ct + lang.lang_notf_new, localStorage.getItem("prof_" + acct_id)]);
var nativeNotfOpt=['TheDesk:' + domain, ct + lang.lang_notf_new, localStorage.getItem("prof_" + acct_id)]
postMessage(["nativeNotf", nativeNotfOpt], "*")
}
}

View File

@@ -52,14 +52,14 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
native = "yes";
}
//クライアント強調
var emp = localStorage.getItem("client_emp");
if (emp) {
var emp = JSON.parse(emp);
var empCli = localStorage.getItem("client_emp");
if (empCli) {
var empCli = JSON.parse(empCli);
}
//クライアントミュート
var mute = localStorage.getItem("client_mute");
if (mute) {
var mute = JSON.parse(mute);
var muteCli = localStorage.getItem("client_mute");
if (muteCli) {
var muteCli = JSON.parse(muteCli);
}
//ユーザー強調
var useremp = localStorage.getItem("user_emp");
@@ -67,17 +67,19 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var useremp = JSON.parse(useremp);
}
//ワード強調
var wordemp = localStorage.getItem("word_emp");
if (wordemp) {
var wordemp = JSON.parse(wordemp);
var wordempList = localStorage.getItem("word_emp");
if (wordempList) {
var wordempList = JSON.parse(wordempList);
}
//ワードミュート
var wordmute = localStorage.getItem("word_mute");
if (wordmute) {
var wordmute = JSON.parse(wordmute);
wordmute = wordmute.concat(mutefilter);
var wordmuteList = localStorage.getItem("word_mute");
if (wordmuteList) {
var wordmuteList = JSON.parse(wordmuteList);
if (wordmuteList) {
wordmuteList = wordmuteList.concat(mutefilter);
}
} else {
wordmute = mutefilter;
wordmuteList = mutefilter;
}
//Ticker
var tickerck = localStorage.getItem("ticker_ok");
@@ -235,10 +237,15 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var what = lang.lang_parse_polled;
var icon = "fa-tasks purple-text";
}
var noticetext = '<i class="fas fa-filter pointer big-text" onclick="notfFilter(\'' + toot.account.id +
'\',\'' + tlid + '\');" title="' + lang.lang_parse_notffilter + '"></i><span class="cbadge cbadge-hover"title="' + date(toot.created_at,
'absolute') + '(' + lang.lang_parse_notftime + ')"><i class="far fa-clock"></i>' + date(toot.created_at,
datetype) +
if (tlid == "notf") {
var notfFilHide = "hide"
} else {
var notfFilHide = ""
}
var noticetext = '<i class="fas fa-filter pointer big-text ' + notfFilHide + '" onclick="notfFilter(\'' + toot.account.id +
'\',\'' + tlid + '\');" title="' + lang.lang_parse_notffilter + '"></i><span class="cbadge cbadge-hover"title="' + date(toot.created_at,
'absolute') + '(' + lang.lang_parse_notftime + ')"><i class="far fa-clock"></i>' + date(toot.created_at,
datetype) +
'</span><i class="big-text fas ' + icon + '"></i><a onclick="udg(\'' + toot.account.id +
'\',\'' + acct_id + '\')" class="pointer grey-text">' + dis_name +
"(@" + toot.account.acct +
@@ -279,7 +286,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var domain = localStorage.getItem("domain_" + acct_id);
if (popup > 0) {
Materialize.toast("[" + domain + "]" + escapeHTML(toot.account.display_name) + what, popup * 1000);
M.toast({ html: "[" + domain + "]" + escapeHTML(toot.account.display_name) + what, displayLength: popup * 1000 })
}
//通知音
if (sound == "c1") {
@@ -299,9 +306,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
request.send();
}
if (native == "yes") {
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var os = localStorage.getItem("platform");
var options = {
body: toot.account.display_name + "(" + toot.account.acct + ")" + what + "\n\n" + $.strip_tags(toot.status.content),
icon: toot.account.avatar
@@ -309,14 +314,15 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
ipc.send('native-notf', [
var nativeNotfOpt = [
'TheDesk:' + domain,
toot.account.display_name + "(" + toot.account.acct + ")" + what + "\n\n" + $.strip_tags(toot.status.content),
toot.account.avatar,
"toot",
acct_id,
toot.status.id
]);
]
postMessage(["nativeNotf", nativeNotfOpt], "*")
}
}
if (localStorage.getItem("hasNotfC_" + acct_id) != "true") {
@@ -426,20 +432,24 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
viashow = "hide";
} else {
var via = escapeHTML(toot.application.name);
//強調チェック
Object.keys(emp).forEach(function (key6) {
var cli = emp[key6];
if (cli == via) {
boostback = "emphasized";
}
});
//ミュートチェック
Object.keys(mute).forEach(function (key7) {
var cli = mute[key7];
if (cli == via) {
boostback = "hide";
}
});
if (empCli) {
//強調チェック
Object.keys(empCli).forEach(function (key6) {
var empCliList = empCli[key6];
if (empCliList == via) {
boostback = "emphasized";
}
});
}
if (muteCli) {
//ミュートチェック
Object.keys(muteCli).forEach(function (key7) {
var muteCliList = muteCli[key7];
if (muteCliList == via) {
boostback = "hide";
}
});
}
}
if (mix == "pinned") {
boostback = "emphasized";
@@ -471,8 +481,25 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
}
var urls = $.strip_tags(content).replace(/\n/g, " ").match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/
/https?:\/\/([^+_]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/
);
urlsck = content.match(/(https?):\/\/([^<>]*?)\/([^"]*)/g)
if (urlsck) {
for (var urlct = 0; urlct < urlsck.length; urlct++) {
var urlindv = urlsck[urlct]
urlCont = urlindv.match(/(https?):\/\/([^a-zA-Z0-9.-]*?)\.(.+?)\/([^"]*)/)
if (urlCont) {
urlindv = urlindv.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&")
var encoded = encodeURI(urlCont[4])
var punycoded = "xn--" + punycode.encode(urlCont[2])
var eUrl = urlCont[1] + "://" + punycoded + "." + urlCont[3] + "/" + encoded
var regExp = new RegExp('href="' + urlindv + '"', "g")
content = content.replace(regExp, 'href="' + eUrl + '"')
}
}
}
if (urls) {
var analyze = '<a onclick="additionalIndv(\'' + tlid + '\',' + acct_id +
',\'' + id + '\')" class="add-show pointer">' + lang.lang_parse_url + '</a><br>';
@@ -489,6 +516,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
if (toot.poll.voted) {
var myvote = lang.lang_parse_voted;
var result_hide = "";
} else if (toot.poll.expired) {
var myvote = lang.lang_parse_endedvote;
var result_hide = "";
} else {
var myvote = '<a onclick="voteMastodon(\'' + acct_id + '\',\'' + toot.poll.id + '\')" class="votebtn">' + lang.lang_parse_vote + '</a><br>';
if (choices[0].votes_count === 0 || choices[0].votes_count > 0) {
@@ -496,11 +526,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
var result_hide = "hide";
}
if (toot.poll.expired) {
var ended = lang.lang_parse_endedvote;
} else {
var ended = date(toot.poll.expires_at, datetype);
}
var ended = date(toot.poll.expires_at, datetype);
Object.keys(choices).forEach(function (keyc) {
var choice = choices[keyc];
if (!toot.poll.voted && !toot.poll.expired) {
@@ -516,60 +542,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
'"><i class="far fa-calendar-times"></i>' +
ended + '</span></div>';
}
if (toot.emojis) {
var emojick = toot.emojis[0];
} else {
var emojick = false;
}
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" 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);
poll = poll.replace(regExp, emoji_url);
});
}
//ニコフレ絵文字
if (toot.profile_emojis) {
var nicoemojick = toot.profile_emojis[0];
} else {
var nicoemojick = false;
}
//絵文字があれば(nico)
if (nicoemojick) {
Object.keys(toot.profile_emojis).forEach(function (keynico) {
var emoji = toot.profile_emojis[keynico];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" 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);
poll = poll.replace(regExp, emoji_url);
});
}
//デフォ絵文字
content = twemoji.parse(content);
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (spoil) {
spoil = twemoji.parse(spoil);
}
if (noticetext) {
noticetext = twemoji.parse(noticetext);
}
if (notice) {
notice = twemoji.parse(notice);
}
if (poll) {
poll = twemoji.parse(poll);
}
var mediack = toot.media_attachments[0];
//メディアがあれば
var media_ids = "";
@@ -585,8 +558,8 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
if (toot.sensitive && nsfw) {
var sense = "sensitive"
var blur = media.blurhash
nsfwmes = '<div class="nsfw-media">' + lang.lang_parse_nsfw + '</div>'
if (blur) {
nsfwmes = '<div class="nsfw-media">' + lang.lang_parse_nsfw + '</div>'
purl = parseBlur(blur)
var sense = ""
}
@@ -594,17 +567,18 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var sense = ""
var blur = null
}
if (media.pleroma) {
if (media.pleroma.mime_type.indexOf("video") !== -1) {
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',' +
acct_id + ')" id="' + id + '-image-' + key2 + '" data-url="' + url +
'" data-type="video" class="img-parsed"><video src="' +
purl + '" class="' + sense +
' toot-img pointer" style="max-width:100%;"></a></span>';
}
if (media.pleroma && media.pleroma.mime_type.indexOf("video") !== -1) {
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',' +
acct_id + ')" id="' + id + '-image-' + key2 + '" data-url="' + url +
'" data-type="video" class="img-parsed"><video src="' +
purl + '" class="' + sense +
' toot-img pointer" style="max-width:100%;" loop="true"></a></span>';
} else {
if (media.type == "unknown") {
viewer = viewer + '<a href="' + media.remote_url + '" title="' + media.remote_url + '">[' + lang.lang_parse_unknown + ']</a> '
} else if (media.type == "audio") {
viewer = viewer + '<audio src="' +
url + '" class="pointer" style="width:100%;" controls></span>';
} else {
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',\'' +
acct_id + '\')" id="' + id + '-image-' + key2 + '" data-url="' + url +
@@ -682,11 +656,11 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
} else if (visen == "private") {
var vis =
'<i class="text-darken-3 material-icons orange-text vis-data pointer" title="' + lang.lang_parse_private + '(' + lang.lang_parse_clickcopy + ')" data-vis="private" onclick="staCopy(\'' + id + '\')" style="font-size:1rem;">lock</i>';
var can_rt = "hide";
var can_rt = "unvisible";
} else if (visen == "direct") {
var vis =
'<i class="text-darken-3 material-icons red-text vis-data pointer" title="' + lang.lang_parse_direct + '(' + lang.lang_parse_clickcopy + ')" data-vis="direct" onclick="staCopy(\'' + id + '\')" style="font-size:1rem;">mail</i>';
var can_rt = "hide";
var can_rt = "unvisible";
}
if (toot.account.acct == localStorage.getItem("user_" + acct_id)) {
var if_mine = "";
@@ -703,7 +677,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var fav_app = "";
}
if (toot.reblogged) {
var if_rt = "teal-text";
var if_rt = "light-blue-text";
var rt_app = "rted";
} else {
var if_rt = "";
@@ -711,7 +685,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
if (toot.pinned) {
var if_pin = "blue-text";
var pin_app = "pinned";
var pin_app = "pinnedToot";
} else {
var if_pin = "";
var pin_app = "";
@@ -723,16 +697,16 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var avatar = toot.account.avatar_static;
}
//ワードミュート
if (wordmute) {
Object.keys(wordmute).forEach(function (key8) {
var worde = wordmute[key8];
if (wordmuteList) {
Object.keys(wordmuteList).forEach(function (key8) {
var worde = wordmuteList[key8];
if (worde) {
if (worde.tag) {
var word = worde.tag;
var wordList = worde.tag;
} else {
var word = worde
var wordList = worde
}
var regExp = new RegExp(word, "g");
var regExp = new RegExp(wordList.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
if ($.strip_tags(content).match(regExp)) {
boostback = "hide by_filter";
}
@@ -740,19 +714,73 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
});
}
//ワード強調
if (wordemp) {
Object.keys(wordemp).forEach(function (key9) {
var word = wordemp[key9];
if (word) {
var word = word.tag;
var regExp = new RegExp(word, "g");
content = content.replace(regExp, '<span class="emp">' + word + "</span>");
if (wordempList) {
Object.keys(wordempList).forEach(function (key9) {
var wordList = wordempList[key9];
if (wordList) {
var wordList = wordList.tag;
var regExp = new RegExp(wordList.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
content = content.replace(regExp, '<span class="emp">' + wordList + "</span>");
}
});
}
if (toot.emojis) {
var emojick = toot.emojis[0];
} else {
var emojick = false;
}
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" 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);
poll = poll.replace(regExp, emoji_url);
});
}
//ニコフレ絵文字
if (toot.profile_emojis) {
var nicoemojick = toot.profile_emojis[0];
} else {
var nicoemojick = false;
}
//絵文字があれば(nico)
if (nicoemojick) {
Object.keys(toot.profile_emojis).forEach(function (keynico) {
var emoji = toot.profile_emojis[keynico];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" 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);
poll = poll.replace(regExp, emoji_url);
});
}
//デフォ絵文字
content = twemoji.parse(content);
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (spoil) {
spoil = twemoji.parse(spoil);
}
if (noticetext) {
noticetext = twemoji.parse(noticetext);
}
if (notice) {
notice = twemoji.parse(notice);
}
if (poll) {
poll = twemoji.parse(poll);
}
//日本語じゃない
if (toot.language != lang.language && toot.language) {
var trans = '<div class="action pin"><a onclick="trans(\'' + toot.language + '\',\'' + lang.language + '\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_trans + '"><i class="material-icons">g_translate</i></a></div>';
var trans = '<div class="action pin"><a onclick="trans(\'' + toot.language + '\',\'' + lang.language + '\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_trans + '"><i class="material-icons">g_translate</i></a></div>';
} else {
var trans = "";
}
@@ -836,11 +864,11 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
'<div class="action ' + disp["re"] + ' ' + noauth + '"><a onclick="re(\'' + toot.id +
'\',\'' + to_mention + '\',' +
acct_id + ',\'' + visen +
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_replyto + '"><i class="fas fa-share"></i><span class="rep_ct">' + replyct +
'\')" class="waves-effect waves-dark btn-flat actct rep-btn" data-men="' + to_mention + '" data-visen="' + visen + '" style="padding:0" title="' + lang.lang_parse_replyto + '"><i class="fas fa-share"></i><span class="rep_ct">' + replyct +
'</a></span></a></div>' +
'<div class="action ' + can_rt + ' ' + disp["rt"] + ' ' + noauth + '"><a onclick="rt(\'' + toot.id + '\',' + acct_id +
',\'' + tlid +
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_bt + '"><i class="fas fa-retweet ' +
'\')" class="waves-effect waves-dark btn-flat actct bt-btn" style="padding:0" title="' + lang.lang_parse_bt + '"><i class="fas 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"] + ' ' + noauth + ' ' + qtClass + '"><a onclick="qt(\'' + toot.id + '\',' + acct_id +
@@ -848,22 +876,21 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_quote + '"><i class="text-darken-3 fas fa-quote-right"></i></a></div>' +
'<div class="action ' + disp["fav"] + ' ' + noauth + '"><a onclick="fav(\'' + toot.id + '\',' + acct_id +
',\'' + tlid +
'\')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_fav + '"><i class="fas text-darken-3 fa-star' +
'\')" class="waves-effect waves-dark btn-flat actct fav-btn" style="padding:0" title="' + lang.lang_parse_fav + '"><i class="fas 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"] + ' ' + noauth + '"><a onclick="del(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_del + '"><i class="fas fa-trash"></i></a></div>' +
')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_del + '"><i class="fas fa-trash"></i></a></div>' +
'<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="' + lang.lang_parse_pin + '"><i class="fas fa-map-pin pin_' + toot.id + ' ' + if_pin + '"></i></a></div>'
')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_pin + '"><i class="fas fa-map-pin pin_' + toot.id + ' ' + if_pin + '"></i></a></div>'
+ '<div class="' + if_mine + ' action ' + disp["red"] + ' ' + noauth + '"><a onclick="redraft(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_redraft + '"><i class="material-icons">redo</i></a></div>' + trans +
'<span class="cbadge viabadge waves-effect ' + viashow + ' ' + mine_via + '" onclick="client(\'' + $.strip_tags(via) + '\')" title="via ' + $.strip_tags(via) + '">via ' +
')" class="waves-effect waves-dark btn-flat actct" style="padding:0" title="' + lang.lang_parse_redraft + '"><i class="material-icons">redo</i></a></div>' + trans +
'</div><div class="area-side ' + mouseover + '"><span class="cbadge viabadge waves-effect ' + viashow + ' ' + mine_via + '" style="max-width:60px;" onclick="client(\'' + $.strip_tags(via) + '\')" title="via ' + $.strip_tags(via) + '">' +
via +
'</span>' +
'</div><div class="area-side ' + mouseover + '"><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>' +
'</span>' + '<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 + '\',\'normal\')" class="waves-effect waves-dark btn-flat details ' + dmHide + '" style="padding:0"><i class="text-darken-3 material-icons">more_vert</i></a></div>' +
'</div></div>' +
@@ -887,120 +914,122 @@ function userparse(obj, auth, acct_id, tlid, popup) {
var datetype = localStorage.getItem("datetype");
Object.keys(obj).forEach(function (key) {
var toot = obj[key];
console.log(["Parsing", toot])
if (!toot.username) {
var raw = toot;
toot = toot.account;
var notf = true;
} else {
var notf = false;
}
if (toot.locked) {
var locked = ' <i class="fas fa-lock red-text"></i>';
} else {
var locked = "";
}
if (auth == "request") {
var authhtml = '<i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'authorize\',' + acct_id + ')" title="Accept">person_add</i> <i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'reject\',' + acct_id + ')" title="Reject">person_add_disabled</i>';
} else {
var authhtml = "";
}
var ftxt = lang.lang_parse_followed;
if (!locale && localStorage.getItem("followlocale_" + acct_id)) {
ftxt = localStorage.getItem("followlocale_" + acct_id);
}
if (popup > 0 || popup == -1 || notf) {
var notftext = ftxt + '<br>';
} else {
var notftext = "";
}
var memory = localStorage.getItem("notice-mem");
if (popup >= 0 && obj.length < 5 && notftext != memory) {
Materialize.toast(escapeHTML(toot.display_name) + ":" + ftxt, popup * 1000);
$(".notf-icon_" + tlid).addClass("red-text");
localStorage.setItem("notice-mem", notftext);
notftext = "";
var native = localStorage.getItem("nativenotf");
if (!native) {
native = "yes";
if (toot) {
console.log(["Parsing", toot])
if (!toot.username) {
var raw = toot;
toot = toot.account;
var notf = true;
} else {
var notf = false;
}
if (native == "yes") {
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var options = {
body: toot.display_name + "(" + toot.acct + ")" + ftxt,
icon: toot.avatar
};
var domain = localStorage.getItem("domain_" + acct_id);
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
ipc.send('native-notf', [
'TheDesk:' + domain,
toot.display_name + "(" + toot.acct + ")" + ftxt,
toot.avatar,
"userdata",
acct_id,
toot.id
]);
if (toot.locked) {
var locked = ' <i class="fas fa-lock red-text"></i>';
} else {
var locked = "";
}
if (auth == "request") {
var authhtml = '<i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'authorize\',' + acct_id + ')" title="Accept">person_add</i> <i class="material-icons gray pointer" onclick="request(\'' +
toot.id + '\',\'reject\',' + acct_id + ')" title="Reject">person_add_disabled</i>';
} else {
var authhtml = "";
}
var ftxt = lang.lang_parse_followed;
if (!locale && localStorage.getItem("followlocale_" + acct_id)) {
ftxt = localStorage.getItem("followlocale_" + acct_id);
}
if (popup > 0 || popup == -1 || notf) {
var notftext = ftxt + '<br>';
} else {
var notftext = "";
}
var memory = localStorage.getItem("notice-mem");
if (popup >= 0 && obj.length < 5 && notftext != memory) {
M.toast({ html: escapeHTML(toot.display_name) + ":" + ftxt, displayLength: popup * 1000 })
$(".notf-icon_" + tlid).addClass("red-text");
localStorage.setItem("notice-mem", notftext);
notftext = "";
var native = localStorage.getItem("nativenotf");
if (!native) {
native = "yes";
}
if (native == "yes") {
var os = localStorage.getItem("platform");
var options = {
body: toot.display_name + "(" + toot.acct + ")" + ftxt,
icon: toot.avatar
};
var domain = localStorage.getItem("domain_" + acct_id);
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
var nativeNotfOpt = [
'TheDesk:' + domain,
toot.display_name + "(" + toot.acct + ")" + ftxt,
toot.avatar,
"userdata",
acct_id,
toot.id
]
postMessage(["nativeNotf", nativeNotfOpt], "*")
}
}
}
}
if (toot.display_name) {
var dis_name = escapeHTML(toot.display_name);
} else {
var dis_name = toot.username;
}
//ネイティブ通知
if (toot.display_name) {
var dis_name = escapeHTML(toot.display_name);
} else {
var dis_name = toot.username;
}
//ネイティブ通知
if (toot.emojis) {
var actemojick = toot.emojis[0];
} else {
var actemojick = false;
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});
}
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (toot.avatar) {
var avatar = toot.avatar;
} else {
var avatar = "../../img/missing.svg";
if (toot.emojis) {
var actemojick = toot.emojis[0];
} else {
var actemojick = false;
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img draggable="false" src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});
}
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (toot.avatar) {
var avatar = toot.avatar;
} else {
var avatar = "../../img/missing.svg";
}
templete = templete +
'<div class="cvo" style="padding-top:5px;" user-id="' + toot.id + '"><div class="area-notice">' +
notftext +
'</div><div class="area-icon"><a onclick="udg(\'' + toot.id + '\',' +
acct_id + ');" user="' + toot.acct + '" class="udg">' +
'<img draggable="false" src="' + avatar + '" width="40" class="prof-img" user="' + toot
.acct + '"></a></div>' +
'<div class="area-display_name"><div class="flex-name"><span class="user">' +
dis_name + '</span>' +
'<span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"> @' +
toot.acct + locked + '</span>' +
'</div>' +
'</div>' +
'<div style="justify-content:space-around" class="area-toot"> <div class="cbadge" style="width:100px;">Follows:' +
toot.following_count +
'</div><div class="cbadge" style="width:100px;">Followers:' + toot.followers_count +
'</div>' + authhtml +
'</div>' +
'</div>' +
'</div>';
}
templete = templete +
'<div class="cvo" style="padding-top:5px;" user-id="' + toot.id + '"><div class="area-notice">' +
notftext +
'</div><div class="area-icon"><a onclick="udg(\'' + toot.id + '\',' +
acct_id + ');" user="' + toot.acct + '" class="udg">' +
'<img draggable="false" src="' + avatar + '" width="40" class="prof-img" user="' + toot
.acct + '"></a></div>' +
'<div class="area-display_name"><div class="flex-name"><span class="user">' +
dis_name + '</span>' +
'<span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"> @' +
toot.acct + locked + '</span>' +
'</div>' +
'</div>' +
'<div style="justify-content:space-around" class="area-toot"> <div class="cbadge" style="width:100px;">Follows:' +
toot.following_count +
'</div><div class="cbadge" style="width:100px;">Followers:' + toot.followers_count +
'</div>' + authhtml +
'</div>' +
'</div>' +
'</div>';
});
return templete;
@@ -1009,23 +1038,26 @@ function userparse(obj, auth, acct_id, tlid, popup) {
function client(name) {
if (name != "Unknown") {
//聞く
var electron = require("electron");
var remote = electron.remote;
var dialog = remote.dialog;
const options = {
type: 'info',
Swal.fire({
title: lang.lang_parse_clientop,
message: name + lang.lang_parse_clienttxt,
buttons: [lang.lang_parse_clientno, lang.lang_parse_clientemp, lang.lang_parse_clientmute]
}
dialog.showMessageBox(options, function (arg) {
if (arg === 1) {
text: name + lang.lang_parse_clienttxt,
type: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#3085d6',
confirmButtonText: lang.lang_parse_clientmute,
cancelButtonText: lang.lang_parse_clientemp,
showCloseButton: true,
focusConfirm: false,
}).then((result) => {
if (result.dismiss == "cancel") {
//Emp
var cli = localStorage.getItem("client_emp");
var obj = JSON.parse(cli);
if (!obj) {
var obj = [];
obj.push(name);
Materialize.toast(escapeHTML(name) + lang.lang_status_emphas, 2000);
M.toast({ html: escapeHTML(name) + lang.lang_status_emphas, displayLength: 2000 })
} else {
var can;
Object.keys(obj).forEach(function (key) {
@@ -1035,19 +1067,21 @@ function client(name) {
} else {
can = true;
obj.splice(key, 1);
Materialize.toast(escapeHTML(name) + lang.lang_status_unemphas, 2000);
M.toast({ html: escapeHTML(name) + lang.lang_status_unemphas, displayLength: 2000 })
}
});
if (!can) {
obj.push(name);
Materialize.toast(escapeHTML(name) + lang.lang_status_emphas, 2000);
M.toast({ html: escapeHTML(name) + lang.lang_status_emphas, displayLength: 2000 })
} else {
}
var json = JSON.stringify(obj);
localStorage.setItem("client_emp", json);
parseColumn()
}
var json = JSON.stringify(obj);
localStorage.setItem("client_emp", json);
} else if (arg === 2) {
} else if (result.value) {
//Mute
var cli = localStorage.getItem("client_mute");
var obj = JSON.parse(cli);
if (!obj) {
@@ -1056,12 +1090,9 @@ function client(name) {
obj.push(name);
var json = JSON.stringify(obj);
localStorage.setItem("client_mute", json);
Materialize.toast(escapeHTML(name) + lang.lang_parse_mute, 2000);
} else {
return;
M.toast({ html: escapeHTML(name) + lang.lang_parse_mute, displayLength: 2000 })
parseColumn()
}
parseColumn();
})
}
}

View File

@@ -90,7 +90,7 @@ function voiceSettings() {
localStorage.setItem("voice_speed", $("#voicespeed").val() / 10);
localStorage.setItem("voice_pitch", $("#voicepitch").val() / 50);
localStorage.setItem("voice_vol", $("#voicevol").val() / 100);
Materialize.toast(lang.lang_speech_refresh, 3000);
M.toast({ html: lang.lang_speech_refresh, displayLength: 3000 })
}
function voiceSettingLoad() {
var speed = localStorage.getItem("voice_speed");

View File

@@ -54,7 +54,7 @@ function src(mode) {
tags = tags + '<a onclick="tl(\'tag\',\'' + tag + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag) + '</a><br> ';
} else {
tags = tags + graphDraw(tag);
tags = tags + graphDraw(tag, acct_id);
}
});
@@ -63,12 +63,12 @@ function src(mode) {
//トゥート
if (json.statuses[0]) {
var templete = parse(json.statuses, '', acct_id);
$("#src-contents").append("Mentions<br>" + templete);
$("#src-contents").append("<br>Mentions<br>" + templete);
}
//アカウント
if (json.accounts[0]) {
var templete = userparse(json.accounts, '', acct_id);
$("#src-contents").append("Accounts<br>" + templete);
$("#src-contents").append("<br>Accounts<br>" + templete);
}
jQuery("time.timeago").timeago();
});
@@ -164,7 +164,7 @@ function moreTs(tlid, q) {
jQuery("time.timeago").timeago();
});
}
function graphDraw(tag) {
function graphDraw(tag, acct_id) {
var tags = "";
var his = tag.history;
var max = Math.max.apply(null, [his[0].uses, his[1].uses, his[2].uses, his[3].uses, his[4].uses, his[5].uses, his[6].uses]);
@@ -177,12 +177,12 @@ function graphDraw(tag) {
var zero = 50 - (his[0].uses / max * 50);
if (max === 0) {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toot(s)&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
} else {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'<g><path d="M0,' + six + ' L10,' + five + ' 20,' + four + ' 30,' + three + ' 40,' + two + ' 50,' + one + ' 60,' + zero + '" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>' +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toot&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
}

View File

@@ -120,10 +120,10 @@ function autoToot(tag) {
var nowPT = localStorage.getItem("stable")
if (nowPT == tag) {
localStorage.removeItem("stable");
Materialize.toast(lang.lang_tags_unrealtime, 3000);
M.toast({ html: lang.lang_tags_unrealtime, displayLength: 3000 })
} else {
localStorage.setItem("stable", tag);
Materialize.toast(lang.lang_tags_tagwarn.replace("{{tag}}", tag).replace("{{tag}}", tag), 3000);
M.toast({ html: lang.lang_tags_tagwarn.replace("{{tag}}", tag).replace("{{tag}}", tag), displayLength: 3000 })
brInsert('#' + tag + " ")
}
favTag();

View File

@@ -425,6 +425,11 @@ function moreload(type, tlid) {
todo(error);
console.error(error);
}).then(function (json) {
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), type);
} else {
var mute = [];
}
if (misskey) {
var templete = misskeyParse(json, '', acct_id, tlid, "", mute);
} else {
@@ -816,6 +821,7 @@ function reconnector(tlid, type, acct_id, data, mode) {
}
reload(type, '', acct_id, tlid, data, mute, "", voice, mode);
}
Materialize.toast(lang.lang_tl_reconnect, 2000);
M.toast({ html: lang.lang_tl_reconnect, displayLength: 2000 })
}
strAliveInt()

View File

@@ -271,22 +271,14 @@ function detFromImg() {
//画像保存
function dlImg() {
var url = $("#imgmodal").attr("src");
var electron = require("electron");
var ipc = electron.ipcRenderer;
if (localStorage.getItem("savefolder")) {
var save = localStorage.getItem("savefolder");
} else {
var save = "";
}
ipc.send('general-dl', [url, save, false]);
ipc.on('general-dl-prog', function (event, arg) {
console.log("Progress: " + arg);
})
ipc.on('general-dl-message', function (event, arg) {
var argC = arg.replace(/\\/g, "\\\\") + "\\\\.";
Materialize.toast(lang.lang_img_DLDone + arg + '<button class="btn-flat toast-action" onclick="openFinder(\'' + argC + '\')">Show</button>', 5000);
})
postMessage(["generalDL", [url, save, false]], "*")
}
function openFinder(dir) {
ipc.send('open-finder', dir);
postMessage(["openFinder", dir], "*")
}

View File

@@ -55,7 +55,7 @@ function parseColumn(dontclose) {
var domain = localStorage.getItem("domain_" + key);
if (localStorage.getItem("mode_" + domain) == "misskey") {
localStorage.removeItem("misskey_wss_" + key)
connectMisskey(key)
connectMisskey(key, false)
}
});
}
@@ -164,16 +164,16 @@ function parseColumn(dontclose) {
var animecss = "";
}
if (acct.type == "notf") {
var exclude = lang.lang_excluded + ':<br><input type="checkbox" class="filled-in" id="exc-reply-' + key + '" ' + excludeCk(key, "mention") + ' /><label for="exc-reply-' + key + '" class="exc-chb"><i class="fas fa-share exc-icons"></i></label> ' +
'<input type="checkbox" class="filled-in" id="exc-fav-' + key + '" ' + excludeCk(key, "favourite") + ' /><label for="exc-fav-' + key + '" class="exc-chb"><i class="fas fa-star exc-icons"></i></label> ' +
'<input type="checkbox" class="filled-in" id="exc-bt-' + key + '" ' + excludeCk(key, "reblog") + ' /><label for="exc-bt-' + key + '" class="exc-chb" ><i class="fas fa-retweet exc-icons"></i></label> ' +
'<input type="checkbox" class="filled-in" id="exc-follow-' + key + '" ' + excludeCk(key, "follow") + ' /><label for="exc-follow-' + key + '" class="exc-chb" ><i class="fas fa-users exc-icons"></i></label> ' +
'<input type="checkbox" class="filled-in" id="exc-poll-' + key + '" ' + excludeCk(key, "poll") + ' /><label for="exc-poll-' + key + '" class="exc-chb" ><i class="fas fa-tasks exc-icons"></i></label> ' +
var exclude = lang.lang_excluded + ':<br><label><input type="checkbox" class="filled-in" id="exc-reply-' + key + '" ' + excludeCk(key, "mention") + ' /><span><i class="fas fa-share exc-icons"></i></span></label> ' +
'<label><input type="checkbox" class="filled-in" id="exc-fav-' + key + '" ' + excludeCk(key, "favourite") + ' /><span><i class="fas fa-star exc-icons"></i></span></label> ' +
'<label><input type="checkbox" class="filled-in" id="exc-bt-' + key + '" ' + excludeCk(key, "reblog") + ' /><span><i class="fas fa-retweet exc-icons"></i></span></label> ' +
'<label><input type="checkbox" class="filled-in" id="exc-follow-' + key + '" ' + excludeCk(key, "follow") + ' /><span><i class="fas fa-users exc-icons"></i></span></label> ' +
'<label><input type="checkbox" class="filled-in" id="exc-poll-' + key + '" ' + excludeCk(key, "poll") + ' /><span><i class="fas fa-tasks exc-icons"></i></span></label> ' +
'<button class="btn waves-effect" style="width:60px; padding:0;" onclick="exclude(' + key + ')">Filter</button>';
if(checkNotfFilter(key)){
exclude=exclude+'<button class="btn red waves-effect" style="width:60px; padding:0;" onclick="resetNotfFilter(' + key + ')">Clear all</button>'
}
exclude=exclude+"<br>";
if (checkNotfFilter(key)) {
exclude = exclude + '<button class="btn red waves-effect" style="width:60px; padding:0;" onclick="resetNotfFilter(' + key + ')">Clear all</button>'
}
exclude = exclude + "<br>";
} else if (acct.type == "home") {
var exclude = '<a onclick="ebtToggle(' + key +
')" class="setting nex"><i class="fas fa-retweet waves-effect nex" title="' + lang.lang_layout_excludingbt + '" style="font-size:24px"></i><span id="sta-bt-' +
@@ -308,7 +308,7 @@ function secvis(set) {
//カラム追加
function addColumn() {
var acct = $("#add-acct-sel").val();
if(acct != "webview" && acct != "noauth"){
if (acct != "webview" && acct != "noauth") {
localStorage.setItem("last-use", acct);
}
var type = $("#type-sel").val();
@@ -364,26 +364,28 @@ function addselCk() {
function removeColumn(tlid) {
$("#sort-box").addClass("hide");
$("#sort-box").removeClass("show");
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
//聞く
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('column-del', "");
ipc.on('column-del-reply', function (event, arg) {
if (arg === 1) {
localStorage.removeItem("card_" + tlid);
Swal.fire({
title: lang.lang_layout_deleteColumn,
text: lang.lang_layout_deleteColumnDesc,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
obj.splice(tlid, 1);
for (var i = 0; i < obj.length; i++) {
localStorage.setItem("card_" + i, "true");
localStorage.removeItem("catch_" + i);
}
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
parseColumn();
sortload()
parseColumn()
sortLoad()
}
})
$("#sort-box").removeClass("hide");
$("#sort-box").addClass("show");
});
}
//設定トグル
@@ -470,7 +472,7 @@ function webviewParse(url, key, insert, icnsert, css) {
'" style="' + css + '"><div class="notice-box z-depth-2" id="menu_' + key + '" style="' + insert + '">' +
'<div class="area-notice"><i class="fab fa-twitter waves-effect" id="notice_icon_' + key + '" style="font-size:40px; padding-top:25%;"></i></div>' +
'<div class="area-notice_name tl-title">WebView(' + url + ')</div>' +
'<div class="area-sta"><input type="checkbox" id="webviewsel" value="true" class="filled-in"><label for="webviewsel">' + lang.lang_layout_webviewmode + '</label></div>' +
'<div class="area-sta"></div>' +
'<div class="area-a2"><a onclick="removeColumn(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_delthis + '"' + icnsert + '>cancel</i></a></div>' +
'<div class="area-a3"><a onclick="setToggle(' + key +
@@ -479,7 +481,6 @@ function webviewParse(url, key, insert, icnsert, css) {
'"></div><div class="column-hide notf-indv-box" id="util-box_' + key +
'" style="padding:5px;">' + lang.lang_layout_headercolor + '<br><div id="picker_' + key + '" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '" style="width:100%;height:100%;"><div id="timeline_' + key +
'" class="tl" tlid="' + key + '" data-type="webview" style="width:100%;height:100%;"><webview src="' + url + '" style="width:100%;height:100%;" id="webview" preload="./js/platform/twitter.js"></webview></div></div></div>';
return html;
}
function unstreamingTL(type, key, basekey, insert, icnsert, left_fold, css, animecss, q) {
@@ -528,4 +529,4 @@ function leftFoldRemove(key) {
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
parseColumn();
}
}

View File

@@ -51,6 +51,5 @@ $(function () {
});
});
function help() {
const { shell } = require('electron');
shell.openExternal("https://docs.thedesk.top");
postMessage(["openUrl", "https://docs.thedesk.top"], "*")
}

View File

@@ -39,6 +39,7 @@ function show() {
$('#post-box').css("left", left + "px")
$('#post-box').css("top", top + "px")
$('#post-box').fadeIn();
$('#textarea').characterCounter();
}
$(function () {
@@ -69,7 +70,6 @@ if (location.search) {
var mode = m[1];
var codex = m[2];
if (mode == "share") {
console.log(codex);
$('textarea').focus();
$("#textarea").val(decodeURI(codex));
show();
@@ -83,15 +83,20 @@ $('#posttgl').click(function (e) {
} else {
hide();
}
$('.cvo').removeClass("selectedToot")
selectedColumn = 0
selectedToot = 0
});
$("#timeline-container,#group").click(function (e) {
if (localStorage.getItem("box") != "absolute") {
if ($('#post-box').hasClass("appear") && !localStorage.getItem("nohide")) {
hide();
}
}
$('.cvo').removeClass("selectedToot")
selectedColumn = 0
selectedToot = 0
localStorage.removeItem("nohide")
});
$('#textarea,#cw-text').focusout(function (e) {
@@ -100,4 +105,7 @@ $('#textarea,#cw-text').focusout(function (e) {
localStorage.removeItem("nohide")
}
//setTimeout(remove, 100);
$('.cvo').removeClass("selectedToot")
selectedColumn = 0
selectedToot = 0
});

View File

@@ -5,7 +5,7 @@ var envView = new Vue({
methods: {
complete: function (i, val) {
var ls = envView.config[i].storage;
Materialize.toast("Complete", 3000);
M.toast({ html: 'Complete', displayLength: 3000 })
if (!val) {
var id = envView.config[i].id;
var val = $("#" + id).val()
@@ -23,13 +23,22 @@ var tlView = new Vue({
data: { config: tlConstruction },
methods: {
complete: function (i, val) {
var ls = tlView.config[i].storage;
if (!val) {
var id = tlView.config[i].id;
var val = $("#" + id).val()
var ls = tlView.config[i];
if (val) {
localStorage.setItem(ls.storage, val)
} else {
if (!ls.data) {
ls = [ls]
} else {
ls = ls.data
}
for (var j = 0; j < ls.length; j++) {
M.toast({ html: 'Complete', displayLength: 3000 })
var id = ls[j].id;
var val = $("#" + id).val()
localStorage.setItem(ls[j].storage, val)
}
}
Materialize.toast("Complete", 3000);
localStorage.setItem(ls, val)
return true
}
}
@@ -39,13 +48,22 @@ var postView = new Vue({
data: { config: postConstruction, kirishima: localStorage.getItem('kirishima') },
methods: {
complete: function (i, val) {
var ls = postView.config[i].storage;
Materialize.toast("Complete", 3000);
if (!val) {
var id = postView.config[i].id;
var val = $("#" + id).val()
var ls = postView.config[i];
if (val) {
localStorage.setItem(ls.storage, val)
} else {
if (!ls.data) {
ls = [ls]
} else {
ls = ls.data
}
for (var j = 0; j < ls.length; j++) {
M.toast({ html: 'Complete', displayLength: 3000 })
var id = ls[j].id;
var val = $("#" + id).val()
localStorage.setItem(ls[j].storage, val)
}
}
localStorage.setItem(ls, val)
return true
}
}
@@ -62,7 +80,7 @@ function settings() {
$("#" + theme).prop("checked", true);
} else {
if (cd != localStorage.getItem("theme")) {
Materialize.toast(lang.lang_setting_theme.replace("{{set}}", ct), 3000);
M.toast({ html: lang.lang_setting_theme.replace("{{set}}", ct), displayLength: 3000 })
}
//テーマはこの場で設定
themes(cd);
@@ -71,14 +89,14 @@ function settings() {
var fontd = $("#font").val();
if (fontd) {
if (fontd != localStorage.getItem("font")) {
Materialize.toast(lang.lang_setting_font.replace("{{set}}", fontd), 3000);
M.toast({ html: lang.lang_setting_font.replace("{{set}}", ct), displayLength: 3000 })
}
localStorage.setItem("font", fontd);
themes();
} else {
if (localStorage.getItem("font")) {
localStorage.removeItem("font");
Materialize.toast(lang.lang_setting_font.replace("{{set}}", lang.lang_setting_default), 3000);
M.toast({ html: lang.lang_setting_font.replace("{{set}}", ct), displayLength: 3000 })
themes();
}
}
@@ -96,15 +114,31 @@ function load() {
var max = tlView.config.length;
for (var i = 0; i < max; i++) {
var ls = tlView.config[i].storage;
if (localStorage.getItem(ls)) {
tlView.config[i].setValue = localStorage.getItem(ls)
if (ls) {
if (localStorage.getItem(ls)) {
tlView.config[i].setValue = localStorage.getItem(ls)
}
} else {
ls = tlView.config[i].data
for (var j = 0; j < ls.length; j++) {
if(localStorage.getItem(tlView.config[i].data[j].storage)){
tlView.config[i].data[j].setValue = localStorage.getItem(tlView.config[i].data[j].storage)
}
}
}
}
var max = postView.config.length;
for (var i = 0; i < max; i++) {
var ls = postView.config[i].storage;
if (localStorage.getItem(ls)) {
postView.config[i].setValue = localStorage.getItem(ls)
if (ls) {
if (localStorage.getItem(ls)) {
postView.config[i].setValue = localStorage.getItem(ls)
}
} else {
ls = postView.config[i].data
for (var j = 0; j < ls.length; j++) {
postView.config[i].data[j].setValue = localStorage.getItem(ls[j].storage)
}
}
}
if (localStorage.getItem("imas")) {
@@ -165,12 +199,13 @@ function cliMuteDel(key) {
function wordmute() {
var word = localStorage.getItem("word_mute");
var obj = JSON.parse(word);
$('#wordmute').material_chip({
if (!obj) { obj = [] }
$('#wordmute').chips({
data: obj,
});
}
function wordmuteSave() {
var word = $('#wordmute').material_chip('data');
var word = M.Chips.getInstance($("#wordmute")).chipsData;
var json = JSON.stringify(word);
localStorage.setItem("word_mute", json);
}
@@ -178,19 +213,18 @@ function wordmuteSave() {
function wordemp() {
var word = localStorage.getItem("word_emp");
var obj = JSON.parse(word);
$('#wordemp').material_chip({
if (!obj) { obj = [] }
$('#wordemp').chips({
data: obj,
});
}
function wordempSave() {
var word = $('#wordemp').material_chip('data');
var word = M.Chips.getInstance($("#wordemp")).chipsData;
var json = JSON.stringify(word);
localStorage.setItem("word_emp", json);
}
function notftest() {
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var os = localStorage.getItem("platform");
var options = {
body: lang.lang_setting_notftest + '(' + lang.lang_setting_notftestprof + ')',
icon: localStorage.getItem("prof_0")
@@ -198,14 +232,15 @@ function notftest() {
if (os == "darwin") {
var n = new Notification('TheDesk' + lang.lang_setting_notftest, options);
} else {
ipc.send('native-notf', ['TheDesk' + lang.lang_setting_notftest, lang.lang_setting_notftest + '(' + lang.lang_setting_notftestprof + ')', localStorage.getItem('prof_0'), "", ""]);
var nativeNotfOpt = ['TheDesk' + lang.lang_setting_notftest, lang.lang_setting_notftest + '(' + lang.lang_setting_notftestprof + ')', localStorage.getItem('prof_0'), "", ""]
postMessage(["nativeNotf", nativeNotfOpt], "*")
}
}
function oks(no) {
var txt = $("#oks-" + no).val();
localStorage.setItem("oks-" + no, txt);
Materialize.toast(lang.lang_setting_ksref, 3000);
M.toast({ html: lang.lang_setting_ksref, displayLength: 3000 })
}
function oksload() {
if (localStorage.getItem("oks-1")) { $("#oks-1").val(localStorage.getItem("oks-1")) }
@@ -213,228 +248,204 @@ function oksload() {
if (localStorage.getItem("oks-3")) { $("#oks-3").val(localStorage.getItem("oks-3")) }
}
function changelang(lang) {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('lang', lang);
ipc.on('langres', function (event, arg) {
location.href = "../" + lang + "/setting.html"
});
postMessage(["lang", lang], "*")
}
function exportSettings() {
if (!confirm(lang.lang_setting_exportwarn)) {
return false;
Swal.fire({
title: lang.lang_setting_exportwarn,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
postMessage(["exportSettings", ""], "*")
}
})
}
function exportSettingsCore() {
var exp = {};
//Accounts
var multi = localStorage.getItem("multi");
var acct = JSON.parse(multi);
exp.accts = acct;
//Columns
var multi = localStorage.getItem("column");
var column = JSON.parse(multi);
exp.columns = column;
//Themes
var config = {};
config.theme = localStorage.getItem("theme");
//Other configs
var max = envView.config.length;
for (var i = 0; i < max; i++) {
var ls = envView.config[i].storage;
config[ls] = localStorage.getItem(ls)
}
var electron = require("electron");
var remote = electron.remote;
var dialog = remote.dialog;
var ipc = electron.ipcRenderer;
dialog.showSaveDialog(null, {
title: 'Export',
properties: ['openFile', 'createDirectory'],
defaultPath: "export.thedeskconfigv2"
}, (savedFiles) => {
if (!savedFiles) {
return false;
}
var exp = {};
//Accounts
var multi = localStorage.getItem("multi");
var acct = JSON.parse(multi);
exp.accts = acct;
//Columns
var multi = localStorage.getItem("column");
var column = JSON.parse(multi);
exp.columns = column;
//Themes
var config = {};
config.theme = localStorage.getItem("theme");
//Other configs
var max = envView.config.length;
for (var i = 0; i < max; i++) {
var ls = envView.config[i].storage;
config[ls] = localStorage.getItem(ls)
}
var max = tlView.config.length;
for (var i = 0; i < max; i++) {
var ls = tlView.config[i].storage;
config[ls] = localStorage.getItem(ls)
}
var max = postView.config.length;
for (var i = 0; i < max; i++) {
var ls = postView.config[i].storage;
config[ls] = localStorage.getItem(ls)
}
//Font
config.font = localStorage.getItem("font");
exp.config = config;
//keysc
exp.ksc = [
localStorage.getItem("oks-1"),
localStorage.getItem("oks-2"),
localStorage.getItem("oks-3")
];
//climu
var cli = localStorage.getItem("client_mute");
var climu = JSON.parse(cli);
exp.clientMute = climu;
//wordmu
var wdm = localStorage.getItem("word_mute");
var wordmu = JSON.parse(wdm);
exp.wordMute = wordmu;
//spotify
exp.spotifyArtwork = localStorage.getItem("artwork")
var content = localStorage.getItem("np-temp");
if (content || content == "" || content == "null") {
exp.spotifyTemplete = content;
} else {
exp.spotifyTemplete = null;
}
//tags
var tagarr = localStorage.getItem("tag");
var favtag = JSON.parse(tagarr);
exp.favoriteTags = favtag;
ipc.send('export', [savedFiles, JSON.stringify(exp)]);
alert("Done.")
//cards
//lang
});
var max = tlView.config.length;
for (var i = 0; i < max; i++) {
var ls = tlView.config[i].storage;
config[ls] = localStorage.getItem(ls)
}
var max = postView.config.length;
for (var i = 0; i < max; i++) {
var ls = postView.config[i].storage;
config[ls] = localStorage.getItem(ls)
}
//Font
config.font = localStorage.getItem("font");
exp.config = config;
//keysc
exp.ksc = [
localStorage.getItem("oks-1"),
localStorage.getItem("oks-2"),
localStorage.getItem("oks-3")
];
//climu
var cli = localStorage.getItem("client_mute");
var climu = JSON.parse(cli);
exp.clientMute = climu;
//wordmu
var wdm = localStorage.getItem("word_mute");
var wordmu = JSON.parse(wdm);
exp.wordMute = wordmu;
//spotify
exp.spotifyArtwork = localStorage.getItem("artwork")
var content = localStorage.getItem("np-temp");
if (content || content == "" || content == "null") {
exp.spotifyTemplete = content;
} else {
exp.spotifyTemplete = null;
}
//tags
var tagarr = localStorage.getItem("tag");
var favtag = JSON.parse(tagarr);
exp.favoriteTags = favtag;
return exp;
}
function importSettings() {
if (!confirm(lang.lang_setting_importwarn)) {
return false;
}
var electron = require("electron");
var remote = electron.remote;
var dialog = remote.dialog;
var ipc = electron.ipcRenderer;
dialog.showOpenDialog(null, {
title: 'Import',
properties: ['openFile'],
filters: [
{ name: 'TheDesk Config', extensions: ['thedeskconfig', 'thedeskconfigv2'] },
]
}, (fileNames) => {
if (!fileNames) {
return false;
Swal.fire({
title: lang.lang_setting_importwarn,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
postMessage(["importSettings", ""], "*")
}
ipc.send('import', fileNames[0]);
ipc.on('config', function (event, arg) {
var obj = JSON.parse(arg);
if (obj) {
localStorage.clear();
localStorage.setItem("multi", JSON.stringify(obj.accts));
for (var key = 0; key < obj.accts.length; key++) {
var acct = obj.accts[key];
localStorage.setItem("name_" + key, acct.name);
localStorage.setItem("user_" + key, acct.user);
localStorage.setItem("user-id_" + key, acct.id);
localStorage.setItem("prof_" + key, acct.prof);
localStorage.setItem("domain_" + key, acct.domain);
localStorage.setItem("acct_" + key + "_at", acct.at);
})
}
function importSettingsCore(arg) {
var obj = JSON.parse(arg);
if (obj) {
localStorage.clear();
localStorage.setItem("multi", JSON.stringify(obj.accts));
for (var key = 0; key < obj.accts.length; key++) {
var acct = obj.accts[key];
localStorage.setItem("name_" + key, acct.name);
localStorage.setItem("user_" + key, acct.user);
localStorage.setItem("user-id_" + key, acct.id);
localStorage.setItem("prof_" + key, acct.prof);
localStorage.setItem("domain_" + key, acct.domain);
localStorage.setItem("acct_" + key + "_at", acct.at);
}
localStorage.setItem("column", JSON.stringify(obj.columns));
if (obj.config) {
//Version 2
var max = envView.config.length;
for (var i = 0; i < max; i++) {
var ls = envView.config[i].storage;
if (obj.config[ls]) {
localStorage.setItem(ls, obj.config[ls])
}
localStorage.setItem("column", JSON.stringify(obj.columns));
if (obj.config) {
//Version 2
var max = envView.config.length;
for (var i = 0; i < max; i++) {
var ls = envView.config[i].storage;
if (obj.config[ls]) {
localStorage.setItem(ls, obj.config[ls])
}
}
var max = tlView.config.length;
for (var i = 0; i < max; i++) {
var ls = tlView.config[i].storage;
if (obj.config[ls]) {
localStorage.setItem(ls, obj.config[ls])
}
}
var max = postView.config.length;
for (var i = 0; i < max; i++) {
var ls = postView.config[i].storage;
if (obj.config[ls]) {
localStorage.setItem(ls, obj.config[ls])
}
}
} else {
//Version 1
localStorage.setItem("theme", obj.theme);
if (obj.width) {
localStorage.setItem("width", obj.width);
}
if (obj.font) {
localStorage.setItem("font", obj.font);
}
if (obj.size) {
localStorage.setItem("size", obj.size);
}
themes(obj.theme);
if (obj.imgheight) {
localStorage.setItem("img-height", obj.imgheight);
}
localStorage.setItem("mainuse", obj.mainuse);
if (obj.cw) {
localStorage.setItem("cwtext", obj.cw);
}
localStorage.setItem("vis", obj.vis);
//End
}
if (obj.ksc[0]) {
localStorage.setItem("oks-1", obj.ksc[0]);
}
if (obj.ksc[1]) {
localStorage.setItem("oks-2", obj.ksc[1]);
}
if (obj.ksc[2]) {
localStorage.setItem("oks-3", obj.ksc[2]);
}
if (obj.clientMute) {
localStorage.setItem("client_mute", JSON.stringify(obj.clientMute));
}
if (obj.wordMute) {
localStorage.setItem("word_mute", JSON.stringify(obj.wordMute));
}
if (obj.favoriteTags) {
localStorage.setItem("tag", JSON.stringify(obj.favoriteTags));
}
localStorage.setItem("np-temp", obj.spotifyTemplete);
for (var i = 0; i < obj.columns.length; i++) {
localStorage.setItem("card_" + i, "true");
localStorage.removeItem("catch_" + i);
}
location.href = "index.html";
} else {
alert("Error.")
}
var max = tlView.config.length;
for (var i = 0; i < max; i++) {
var ls = tlView.config[i].storage;
if (obj.config[ls]) {
localStorage.setItem(ls, obj.config[ls])
}
}
var max = postView.config.length;
for (var i = 0; i < max; i++) {
var ls = postView.config[i].storage;
if (obj.config[ls]) {
localStorage.setItem(ls, obj.config[ls])
}
}
} else {
//Version 1
localStorage.setItem("theme", obj.theme);
if (obj.width) {
localStorage.setItem("width", obj.width);
}
if (obj.font) {
localStorage.setItem("font", obj.font);
}
if (obj.size) {
localStorage.setItem("size", obj.size);
}
themes(obj.theme);
if (obj.imgheight) {
localStorage.setItem("img-height", obj.imgheight);
}
localStorage.setItem("mainuse", obj.mainuse);
if (obj.cw) {
localStorage.setItem("cwtext", obj.cw);
}
localStorage.setItem("vis", obj.vis);
//End
}
if (obj.ksc[0]) {
localStorage.setItem("oks-1", obj.ksc[0]);
}
if (obj.ksc[1]) {
localStorage.setItem("oks-2", obj.ksc[1]);
}
if (obj.ksc[2]) {
localStorage.setItem("oks-3", obj.ksc[2]);
}
if (obj.clientMute) {
localStorage.setItem("client_mute", JSON.stringify(obj.clientMute));
}
if (obj.wordMute) {
localStorage.setItem("word_mute", JSON.stringify(obj.wordMute));
}
if (obj.favoriteTags) {
localStorage.setItem("tag", JSON.stringify(obj.favoriteTags));
}
localStorage.setItem("np-temp", obj.spotifyTemplete);
for (var i = 0; i < obj.columns.length; i++) {
localStorage.setItem("card_" + i, "true");
localStorage.removeItem("catch_" + i);
}
location.href = "index.html";
} else {
Swal.fire({
type: 'error',
title: 'Error'
})
//cards
//lang
});
}
}
function savefolder() {
var electron = require("electron");
var remote = electron.remote;
var dialog = remote.dialog;
dialog.showOpenDialog(null, {
title: 'Save folder',
properties: ['openDirectory'],
}, (fileNames) => {
localStorage.setItem("savefolder", fileNames[0]);
});
postMessage(["sendSinmpleIpc", "savefolder"], "*")
}
function font() {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('fonts', []);
ipc.on('font-list', function (event, arg) {
$("#fonts").removeClass("hide");
for (var i = 0; i < arg.length; i++) {
var font = arg[i];
$("#fonts").append('<div class="font pointer" style="font-family:' + font.family + '" onclick="insertFont(\'' + font.family + '\')">' + font.family + "</div>")
}
});
postMessage(["sendSinmpleIpc", "fonts"], "*")
}
function fontList(arg) {
$("#fonts").removeClass("hide");
for (var i = 0; i < arg.length; i++) {
var font = arg[i];
$("#fonts").append('<div class="font pointer" style="font-family:' + font.family + '" onclick="insertFont(\'' + font.family + '\')">' + font.family + "</div>")
}
}
function insertFont(name) {
$("#font").val(name);
@@ -520,7 +531,7 @@ function customComp() {
pickerDefine(1, "fff");
pickerDefine(2, "fff");
pickerDefine(3, "fff");
ipc.send('theme-json-create', JSON.stringify(json));
postMessage(["themeJsonCreate", JSON.stringify(json)], "*")
}
function deleteIt() {
var id = $("#custom-sel-sel").val();
@@ -540,28 +551,25 @@ function deleteIt() {
pickerDefine(1, "fff");
pickerDefine(2, "fff");
pickerDefine(3, "fff");
ipc.on('theme-json-delete-complete', function (event, args) {
ctLoad()
});
ipc.send('theme-json-delete', id);
postMessage(["themeJsonDelete", id], "*")
}
function ctLoad() {
ipc.send('theme-json-list', "");
ipc.on('theme-json-list-response', function (event, args) {
var templete = "";
Object.keys(args).forEach(function (key) {
var theme = args[key];
var themeid = theme.id
templete = templete + '<option value="' + themeid + '">' + theme.name + '</option>';
});
if (args[0]) {
localStorage.setItem("customtheme-id", args[0].id)
}
$("#custom-sel-sel").html(templete);
templete = '<option value="add_new">' + $("#edit-selector").attr("data-add") + '</option>' + templete;
$("#custom-edit-sel").html(templete);
$('select').material_select('update');
postMessage(["sendSinmpleIpc", "theme-json-list"], "*")
}
function ctLoadCore(args) {
var templete = "";
Object.keys(args).forEach(function (key) {
var theme = args[key];
var themeid = theme.id
templete = templete + '<option value="' + themeid + '">' + theme.name + '</option>';
});
if (args[0]) {
localStorage.setItem("customtheme-id", args[0].id)
}
$("#custom-sel-sel").html(templete);
templete = '<option value="add_new">' + $("#edit-selector").attr("data-add") + '</option>' + templete;
$("#custom-edit-sel").html(templete);
$('select').formSelect();
}
function customSel() {
var id = $("#custom-sel-sel").val();
@@ -589,66 +597,58 @@ function custom() {
$("#delTheme").addClass("disabled")
} else {
$("#delTheme").removeClass("disabled")
ipc.send('theme-json-request', id);
ipc.on('theme-json-response', function (event, args) {
$("#custom_name").val(args.name);
$("#custom_desc").val(args.desc);
$("#" + args.base).prop("checked", true);
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
pickerDefine(0, rgbToHex(args.vars.primary))
$("#color-picker0_value").val(args.vars.primary);
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
pickerDefine(1, rgbToHex(args.vars.secondary))
$("#color-picker1_value").val(args.vars.secondary);
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker2_value").val(args.vars.text);
pickerDefine(2, rgbToHex(args.vars.text))
if (args.props) {
if (args.props.TheDeskAccent) {
var accent = args.props.TheDeskAccent;
} else {
var accent = args.vars.secondary;
}
} else {
var accent = args.vars.secondary;
}
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
pickerDefine(3, rgbToHex(accent))
$("#custom_json").val(JSON.stringify(args));
});
postMessage(["themeJsonRequest", id], "*")
}
}
function customConnect(args) {
$("#custom_name").val(args.name);
$("#custom_desc").val(args.desc);
$("#" + args.base).prop("checked", true);
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
pickerDefine(0, rgbToHex(args.vars.primary))
$("#color-picker0_value").val(args.vars.primary);
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
pickerDefine(1, rgbToHex(args.vars.secondary))
$("#color-picker1_value").val(args.vars.secondary);
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker2_value").val(args.vars.text);
pickerDefine(2, rgbToHex(args.vars.text))
if (args.props) {
if (args.props.TheDeskAccent) {
var accent = args.props.TheDeskAccent;
} else {
var accent = args.vars.secondary;
}
} else {
var accent = args.vars.secondary;
}
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
pickerDefine(3, rgbToHex(accent))
$("#custom_json").val(JSON.stringify(args));
}
function customImp() {
var json = $("#custom_import").val();
if (JSON5.parse(json)) {
ipc.send('theme-json-create', json);
postMessage(["themeJsonCreate", json], "*")
} else {
alert("Error")
Swal.fire({
type: 'error',
title: 'Error'
})
}
}
function hardwareAcceleration(had) {
ipc.send('ha', had);
}
ipc.on('theme-json-create-complete', function (event, args) {
function clearCustomImport() {
$("#custom_import").val("");
ctLoad()
});
}
function hardwareAcceleration(had) {
postMessage(["ha", had], "*")
}
function customSound(key) {
var electron = require("electron");
var remote = electron.remote;
var dialog = remote.dialog;
dialog.showOpenDialog(null, {
title: 'Custom sound',
properties: ['openFile'],
filters: [
{ name: 'Audio', extensions: ['mp3', 'aac', 'wav', 'flac', 'm4a'] },
{ name: 'All', extensions: ['*'] },
]
}, (fileNames) => {
localStorage.setItem("custom" + key, fileNames[0]);
$("#c1-file").text(fileNames[0])
});
postMessage(["customSound", key], "*")
}
function customSoundSave(key, file) {
localStorage.setItem("custom" + key, file);
$("#c1-file").text(file)
}
window.onload = function () {
//最初に読む

View File

@@ -1,953 +0,0 @@
//設定(setting.html)で読む
var envView = new Vue({
el: '#env-view',
data: {config:envConstruction,value:envValue},
method: {
settings: function (index) {
return true
}
}
});
//設定ボタン押した。
function settings() {
var dd = $("[name=time]:checked").val();
var dt = $("[for="+dd+"]").text();
if (dd != localStorage.getItem("datetype")) {
Materialize.toast(lang.lang_setting_time.replace("{{set}}" ,dt), 3000);
}
localStorage.setItem("datetype", dd);
var cd = $("[name=theme]:checked").val();
var ct = $("[for="+cd+"]").html();
if(cd=="custom" && !$("#custom-sel-sel").val()){
var theme = localStorage.getItem("theme");
if (!theme) {
var theme = "white";
}
$("#" + theme).prop("checked", true);
}else{
if (cd != localStorage.getItem("theme")) {
Materialize.toast(lang.lang_setting_theme.replace("{{set}}" ,ct), 3000);
}
//テーマはこの場で設定
themes(cd);
localStorage.setItem("theme", cd);
}
var nd = $("[name=nsfw]:checked").val();
var nt = $("[for=n_"+nd+"]").text();
if (nd != localStorage.getItem("nsfw")) {
Materialize.toast(lang.lang_setting_nsfw.replace("{{set}}" ,nt), 3000);
}
localStorage.setItem("nsfw", nd);
var cwd = $("[name=cw]:checked").val();
var cwt = $("[for=c_"+cwd+"]").text();
if (cwd != localStorage.getItem("cw")) {
Materialize.toast(lang.lang_setting_cw.replace("{{set}}" ,cwt), 3000);
}
localStorage.setItem("cw", cwd);
var cwtd = $("#cw-text").val();
if (cwtd != localStorage.getItem("cw-text")) {
Materialize.toast(lang.lang_setting_cwtext.replace("{{set}}" ,cwtd), 3000);
}
localStorage.setItem("cw-text", cwtd);
var cwsd = $("[name=cws]:checked").val();
var cwst = $("[for=cws_"+cwsd+"]").text();
if (cwsd != localStorage.getItem("always-cw")) {
Materialize.toast(lang.lang_setting_cws.replace("{{set}}" ,cwst), 3000);
}
localStorage.setItem("always-cw", cwsd);
var rpd = $("[name=rp]:checked").val();
var rpt = $("[for=c_"+cwd+"]").text();
if (rpd != localStorage.getItem("replyct")) {
Materialize.toast(lang.lang_setting_rp.replace("{{set}}" ,rpt), 3000);
}
localStorage.setItem("replyct", rpd);
var visd = $("[name=vis]:checked").val();
var vist = $("[for="+visd+"]").text();
if (visd != localStorage.getItem("vis")) {
Materialize.toast(lang.lang_setting_vis.replace("{{set}}" ,vist), 3000);
}
localStorage.setItem("vis", visd);
var popd = $("#popup").val();
if (popd > 0 && popd != localStorage.getItem("popup")) {
Materialize.toast(lang.lang_setting_popup.replace("{{set}}" ,popd+lang.lang_setting_s), 3000);
} else if (popd != localStorage.getItem("popup")) {
Materialize.toast(lang.lang_setting_popup.replace("{{set}}" ,lang.lang_setting_off), 3000);
}
localStorage.setItem("popup", popd);
var gifd = $("[name=gif]:checked").val();
var gift = $("[for=g_"+gifd+"]").text();
if (gifd != localStorage.getItem("gif")) {
Materialize.toast(lang.lang_setting_gif.replace("{{set}}" ,gift), 3000);
}
localStorage.setItem("gif", gifd);
var sentd = $("#sentence").val();
var ltrd = $("#letters").val();
if (sentd != localStorage.getItem("sentence") || ltrd != localStorage.getItem("letters")) {
Materialize.toast(lang.lang_setting_selt.replace("{{set1}}" ,sentd).replace("{{set2}}" ,ltrd), 3000);
}
localStorage.setItem("sentence", sentd);
localStorage.setItem("letters", ltrd);
var csentd = $("#cw_sentence").val();
var cltrd = $("#cw_letters").val();
if (csentd != localStorage.getItem("cw_sentence") || cltrd != localStorage.getItem("cw_letters")) {
Materialize.toast(lang.lang_setting_autocw.replace("{{set1}}" ,csentd).replace("{{set2}}" ,cltrd), 3000);
}
localStorage.setItem("cw_sentence", csentd);
localStorage.setItem("cw_letters", cltrd);
var widthd = $("#width").val();
if (widthd != localStorage.getItem("width")) {
Materialize.toast(lang.lang_setting_width.replace("{{set}}" ,widthd), 3000);
}
localStorage.setItem("width", widthd);
var fwidthd = $("#fixwidth").val();
if (fwidthd != localStorage.getItem("fixwidth")) {
Materialize.toast(lang.lang_setting_fixwidth.replace("{{set}}" ,fwidthd), 3000);
}
localStorage.setItem("fixwidth", fwidthd);
var imgd = $("[name=img]:checked").val();
var imgt = $("[for=i_"+imgd+"]").text();
if (imgd != localStorage.getItem("img")) {
Materialize.toast(lang.lang_setting_img.replace("{{set}}" ,imgt), 3000);
}
localStorage.setItem("img", imgd);
var fontd = $("#font").val();
if(fontd){
if (fontd != localStorage.getItem("font")) {
Materialize.toast(lang.lang_setting_font.replace("{{set}}" ,fontd), 3000);
}
localStorage.setItem("font", fontd);
themes();
}else{
if(localStorage.getItem("font")){
localStorage.removeItem("font");
Materialize.toast(lang.lang_setting_font.replace("{{set}}" ,lang.lang_setting_default), 3000);
themes();
}
}
var sized = $("#size").val();
if (sized != localStorage.getItem("size")) {
Materialize.toast(lang.lang_setting_size.replace("{{set}}" ,sized), 3000);
}
localStorage.setItem("size", sized);
var heid = $("#img-height").val();
if (heid != localStorage.getItem("img-height")) {
Materialize.toast(lang.lang_setting_imgheight.replace("{{set}}" ,heid), 3000);
}
localStorage.setItem("img-height", heid);
var tckrd = $("[name=ticker]:checked").val();
var tckrt = $("[for=ticker_"+tckrd+"]").text();
if (tckrd != localStorage.getItem("ticker_ok")) {
Materialize.toast(lang.lang_setting_ticker.replace("{{set}}" ,tckrt), 3000);
}
localStorage.setItem("ticker_ok", tckrd);
var animed = $("[name=anime]:checked").val();
var animet = $("[for=anime_"+animed+"]").text();
if (animed != localStorage.getItem("animation")) {
Materialize.toast(lang.lang_setting_animation.replace("{{set}}" ,animet), 3000);
}
localStorage.setItem("animation", animed);
var boxd = $("[name=box]:checked").val();
var boxt = $("[for=bx_"+boxd+"]").text();
if (boxd != localStorage.getItem("box")) {
Materialize.toast(lang.lang_setting_boxConfirm.replace("{{set}}" ,boxt), 3000);
}
localStorage.setItem("box", boxd);
var tagd = $("[name=tag]:checked").val();
var tagt = $("[for=t_"+tagd+"]").text();
if (tagd != localStorage.getItem("tag-range")) {
Materialize.toast(lang.lang_setting_tag.replace("{{set}}" ,tagt), 3000);
}
localStorage.setItem("tag-range", tagd);
var uld = $("[name=ul]:checked").val();
var ult = $("[for=ul_"+uld+"]").text();
if (uld != localStorage.getItem("locale")) {
Materialize.toast(lang.lang_setting_ul.replace("{{set}}" ,ult), 3000);
}
localStorage.setItem("locale", uld);
var ntd = $("[name=notf]:checked").val();
var ntt = $("[for=ntf_"+ntd+"]").text();
if (ntd != localStorage.getItem("nativenotf")) {
Materialize.toast(lang.lang_setting_notf.replace("{{set}}" ,ntt), 3000);
}
localStorage.setItem("nativenotf", ntd);
var qtd = $("[name=quote]:checked").val();
var qtt = $("[for=q_"+qtd+"]").text();
if (qtd != localStorage.getItem("quote")) {
Materialize.toast(lang.lang_setting_quote.replace("{{set}}" ,qtt), 3000);
}
localStorage.setItem("quote", qtd);
var viad = $("[name=via]:checked").val();
var viat = $("[for=via_"+viad+"]").text();
if (viad != localStorage.getItem("viashow")) {
Materialize.toast(lang.lang_setting_via.replace("{{set}}" ,viat), 3000);
}
localStorage.setItem("viashow", viad);
var notfmd = $("[name=notfm]:checked").val();
var notfmt = $("[for=notfm_"+notfmd+"]").text();
if (notfmd != localStorage.getItem("setasread")) {
Materialize.toast(lang.lang_setting_setasread.replace("{{set}}" ,notfmt), 3000);
}
localStorage.setItem("setasread", notfmd);
var movd = $("[name=mov]:checked").val();
var movt = $("[for=mov_"+movd+"]").text();
if (movd != localStorage.getItem("mouseover")) {
Materialize.toast(lang.lang_setting_mov.replace("{{set}}" ,movt), 3000);
}
localStorage.setItem("mouseover", movd);
var maind = $("[name=main]:checked").val();
var maint = $("[for=mn_"+maind+"]").text();
if (maind != localStorage.getItem("mainuse")) {
Materialize.toast(lang.lang_setting_main.replace("{{set}}" ,maint), 3000);
}
localStorage.setItem("mainuse", maind);
var secd = $("[name=sec]:checked").val();
var sect = $("[for=sec-"+secd+"]").text();
if (secd != localStorage.getItem("sec")) {
Materialize.toast(lang.lang_setting_sec.replace("{{set}}" ,sect), 3000);
}
localStorage.setItem("sec", secd);
}
//読み込み時の設定ロード
function load() {
if(localStorage.getItem("imas")){
$(".imas").removeClass("hide");
}
if(localStorage.getItem("kirishima")){
$(".kirishima").removeClass("hide");
}
var prof = localStorage.getItem("prof");
$("#my-prof").attr("src", prof);
var datetype = localStorage.getItem("datetype");
if (!datetype) {
var datetype = "absolute";
}
$("#" + datetype).prop("checked", true);
var theme = localStorage.getItem("theme");
if (!theme) {
var theme = "white";
}
$("#" + theme).prop("checked", true);
var ha = localStorage.getItem("ha");
if (!ha) {
var ha = "false";
}
$("#ha_" + ha).prop("checked", true);
var nsfw = localStorage.getItem("nsfw");
if (!nsfw) {
var nsfw = "yes";
}
$("#n_" + nsfw).prop("checked", true);
var cw = localStorage.getItem("cw");
if (!cw) {
var cw = "yes";
}
$("#c_" + cw).prop("checked", true);
var cws = localStorage.getItem("always-cw");
if (!cws) {
var cws = "no";
}
$("#cws_" + cws).prop("checked", true);
var popup = localStorage.getItem("popup");
if (!popup) {
var popup = "0";
}
$("#popup").val(popup);
var box = localStorage.getItem("box");
if (!box) {
var box = "no";
}
if(box=="absolute"){
var box = "abs";
}
$("#bx_" + box).prop("checked", true);
var gif = localStorage.getItem("gif");
if (!gif) {
var gif = "yes";
}
$("#g_" + gif).prop("checked", true);
var sent = localStorage.getItem("sentence");
if (!sent) {
var sent = "500";
}
$("#sentence").val(sent);
var ltrs = localStorage.getItem("letters");
if (!ltrs) {
var ltrs = "500";
}
$("#letters").val(ltrs);
var csent = localStorage.getItem("cw_sentence");
if (!csent) {
var csent = "500";
}
$("#cw_sentence").val(csent);
var cltrs = localStorage.getItem("cw_letters");
if (!cltrs) {
var cltrs = "500";
}
$("#cw_letters").val(cltrs);
var width = localStorage.getItem("width");
if (!width) {
var width = "300";
}
$("#width").val(width);
var fwidth = localStorage.getItem("fixwidth");
if (!fwidth) {
var fwidth = "300";
}
$("#fixwidth").val(fwidth);
var cwt = localStorage.getItem("cw-text");
if (!cwt) {
var cwt = "";
}
$("#cw-text").val(cwt);
var cws = localStorage.getItem("always-cw");
if (!cws) {
var cws = "no";
}
$("#cws_" + cws).prop("checked", true);
var rps = localStorage.getItem("replyct");
if (!rps) {
var rps = "hidden";
}
$("#rp_" + rps).prop("checked", true);
var vis = localStorage.getItem("vis");
if (!vis) {
var vis = "public";
}
$("#" + vis).prop("checked", true);
var img = localStorage.getItem("img");
if (!img) {
var img = "no-act";
}
$("#i_" + img).prop("checked", true);
var font = localStorage.getItem("font");
if (!font) {
var font = "";
}
$("#font").val(font);
var size = localStorage.getItem("size");
if (!size) {
var size = "13";
}
$("#size").val(size);
var imh = localStorage.getItem("img-height");
if (!imh) {
var imh = "200";
}
$("#img-height").val(imh);
var ticker = localStorage.getItem("ticker_ok");
if (!ticker) {
var ticker = "no";
}
$("#ticker_" + ticker).prop("checked", true);
var animation = localStorage.getItem("animation");
if (!animation) {
var animation = "yes";
}
$("#anime_" + animation).prop("checked", true);
var tag = localStorage.getItem("tag-range");
if (!tag) {
var tag = "all";
}
$("#t_" + tag).prop("checked", true);
var box = localStorage.getItem("box");
if (!box) {
var box = "yes";
}
$("#bx_" + box).prop("checked", true);
var uld = localStorage.getItem("locale");
if (!uld) {
var uld = "yes";
}
$("#ul_" + uld).prop("checked", true);
var nnd = localStorage.getItem("nativenotf");
if (!nnd) {
var nnd = "yes";
}
$("#ntf_" + nnd).prop("checked", true);
var qt = localStorage.getItem("quote");
if (!qt) {
var qt = "simple";
}
$("#q_" + qt).prop("checked", true);
var viat = localStorage.getItem("viashow");
if (!viat) {
var viat = "hide";
}
$("#via_" + viat).prop("checked", true);
var movt = localStorage.getItem("mouseover");
if (!movt) {
var movt = "no";
}
$("#mov_" + movt).prop("checked", true);
var notfmt = localStorage.getItem("setasread");
if (!notfmt) {
var notfmt = "yes";
}
$("#notfm_" + notfmt).prop("checked", true);
var maint = localStorage.getItem("mainuse");
if (!maint) {
var maint = "remain";
}
$("#mn_" + maint).prop("checked", true);
var sect = localStorage.getItem("sec");
if (!sect) {
var sect = "nothing";
}
$("#sec-" + sect).prop("checked", true);
}
function climute(){
//クライアントミュート
var cli = localStorage.getItem("client_mute");
var obj = JSON.parse(cli);
if(!obj){
$("#mute-cli").html(lang.lang_setting_nomuting);
}else{
if(!obj[0]){
$("#mute-cli").html(lang.lang_setting_nomuting);
return;
}
var templete;
Object.keys(obj).forEach(function(key) {
var cli = obj[key];
var list = key * 1 + 1;
templete = '<div class="acct" id="acct_' + key + '">' + list +
'.' +
cli + '<button class="btn waves-effect red disTar" onclick="cliMuteDel(' +
key + ')">'+lang.lang_del+'</button><br></div>';
$("#mute-cli").append(templete);
});
}
}
function cliMuteDel(key){
var cli = localStorage.getItem("client_mute");
var obj = JSON.parse(cli);
obj.splice(key, 1);
var json = JSON.stringify(obj);
localStorage.setItem("client_mute", json);
mute();
}
function wordmute(){
var word = localStorage.getItem("word_mute");
var obj = JSON.parse(word);
$('#wordmute').material_chip({
data: obj,
});
}
function wordmuteSave(){
var word=$('#wordmute').material_chip('data');
var json = JSON.stringify(word);
localStorage.setItem("word_mute", json);
}
function wordemp(){
var word = localStorage.getItem("word_emp");
var obj = JSON.parse(word);
$('#wordemp').material_chip({
data: obj,
});
}
function wordempSave(){
var word=$('#wordemp').material_chip('data');
var json = JSON.stringify(word);
localStorage.setItem("word_emp", json);
}
function notftest(){
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var options = {
body: lang.lang_setting_notftest+'('+lang.lang_setting_notftestprof+')',
icon: localStorage.getItem("prof_0")
};
if(os=="darwin"){
var n = new Notification('TheDesk'+lang.lang_setting_notftest, options);
}else{
ipc.send('native-notf', ['TheDesk'+lang.lang_setting_notftest,lang.lang_setting_notftest+'('+lang.lang_setting_notftestprof+')',localStorage.getItem('prof_0'),"",""]);
}
}
function oks(no){
var txt=$("#oks-"+no).val();
localStorage.setItem("oks-"+no, txt);
Materialize.toast(lang.lang_setting_ksref, 3000);
}
function oksload(){
if(localStorage.getItem("oks-1")){$("#oks-1").val(localStorage.getItem("oks-1"))}
if(localStorage.getItem("oks-2")){$("#oks-2").val(localStorage.getItem("oks-2"))}
if(localStorage.getItem("oks-3")){$("#oks-3").val(localStorage.getItem("oks-3"))}
}
function changelang(lang){
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('lang',lang);
ipc.on('langres', function (event, arg) {
location.href="../"+lang+"/setting.html"
});
}
function exportSettings(){
if(!confirm(lang.lang_setting_exportwarn)){
return false;
}
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
var ipc = electron.ipcRenderer;
dialog.showSaveDialog(null, {
title: 'Export',
properties: ['openFile', 'createDirectory'],
defaultPath: "export.thedeskconfig"
}, (savedFiles) => {
console.log(savedFiles);
if(!savedFiles){
return false;
}
var exp={};
//Accounts
var multi = localStorage.getItem("multi");
var acct = JSON.parse(multi);
exp.accts=acct;
//Columns
var multi = localStorage.getItem("column");
var column = JSON.parse(multi);
exp.columns=column;
//Themes
exp.theme=localStorage.getItem("theme");
//Min width
exp.minwidth=localStorage.getItem("width");
//Font
exp.font=localStorage.getItem("font");
exp.size=localStorage.getItem("size");
//Img height
exp.imgheight=localStorage.getItem("img-height");
//Main
exp.mainuse=localStorage.getItem("mainuse");
//CW text
exp.cw=localStorage.getItem("cw-text");
//vis
exp.vis=localStorage.getItem("vis");
//keysc
exp.ksc=[
localStorage.getItem("oks-1"),
localStorage.getItem("oks-2"),
localStorage.getItem("oks-3")
];
//climu
var cli = localStorage.getItem("client_mute");
var climu = JSON.parse(cli);
exp.clientMute=climu;
//wordmu
var wdm = localStorage.getItem("word_mute");
var wordmu = JSON.parse(wdm);
exp.wordMute=wordmu;
//spotify
exp.spotifyArtwork=localStorage.getItem("artwork")
var content=localStorage.getItem("np-temp");
if(content || content=="" || content=="null"){
exp.spotifyTemplete=content;
}else{
exp.spotifyTemplete=null;
}
//tags
var tagarr = localStorage.getItem("tag");
var favtag = JSON.parse(tagarr);
exp.favoriteTags=favtag;
console.log(exp);
ipc.send('export', [savedFiles,JSON.stringify(exp)]);
alert("Done.")
//cards
//lang
});
}
function importSettings(){
if(!confirm(lang.lang_setting_importwarn)){
return false;
}
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
var ipc = electron.ipcRenderer;
dialog.showOpenDialog(null, {
title: 'Import',
properties: ['openFile'],
filters: [
{name: 'TheDesk Config', extensions: ['thedeskconfig']},
]
}, (fileNames) => {
console.log(fileNames);
if(!fileNames){
return false;
}
ipc.send('import', fileNames[0]);
ipc.on('config', function (event, arg) {
var obj = JSON.parse(arg);
if(obj){
localStorage.clear();
localStorage.setItem("multi",JSON.stringify(obj.accts));
for(var key=0;key<obj.accts.length;key++){
var acct=obj.accts[key];
localStorage.setItem("name_" + key, acct.name);
localStorage.setItem("user_" + key, acct.user);
localStorage.setItem("user-id_" + key, acct.id);
localStorage.setItem("prof_" + key, acct.prof);
localStorage.setItem("domain_" + key, acct.domain);
localStorage.setItem("acct_"+ key + "_at", acct.at);
}
localStorage.setItem("column",JSON.stringify(obj.columns));
localStorage.setItem("theme",obj.theme);
if(obj.width){
console.log(obj.width)
localStorage.setItem("width",obj.width);
}
if(obj.font){
localStorage.setItem("font",obj.font);
}
if(obj.size){
localStorage.setItem("size",obj.size);
}
themes(obj.theme);
if(obj.imgheight){
localStorage.setItem("img-height",obj.imgheight);
}
localStorage.setItem("mainuse",obj.mainuse);
if(obj.cw){
localStorage.setItem("cwtext",obj.cw);
}
localStorage.setItem("vis",obj.vis);
if(obj.ksc[0]){
localStorage.setItem("oks-1",obj.ksc[0]);
}
if(obj.ksc[1]){
localStorage.setItem("oks-2",obj.ksc[1]);
}
if(obj.ksc[2]){
localStorage.setItem("oks-3",obj.ksc[2]);
}
if(obj.clientMute){
localStorage.setItem("client_mute",JSON.stringify(obj.clientMute));
}
if(obj.wordMute){
localStorage.setItem("word_mute",JSON.stringify(obj.wordMute));
}
if(obj.favoriteTags){
localStorage.setItem("tag",JSON.stringify(obj.favoriteTags));
}
localStorage.setItem("np-temp",obj.spotifyTemplete);
for(var i=0;i<obj.columns.length;i++){
localStorage.setItem("card_" + i,"true");
localStorage.removeItem("catch_" + i);
}
location.href="language.html";
}else{
alert("Error.")
}
})
//cards
//lang
});
}
function savefolder(){
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
dialog.showOpenDialog(null, {
title: 'Save folder',
properties: ['openDirectory'],
}, (fileNames) => {
localStorage.setItem("savefolder",fileNames[0]);
});
}
function font(){
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('fonts', []);
ipc.on('font-list', function (event, arg) {
$("#fonts").removeClass("hide");
for( var i=0; i<arg.length; i++) {
var font=arg[i];
$("#fonts").append('<div class="font pointer" style="font-family:'+font.family+'" onclick="insertFont(\''+font.family+'\')">'+font.family+"</div>")
}
});
}
function insertFont(name){
$("#font").val(name);
}
$(".color-picker").each(function(i, elem) {
pickerDefine(i,"fff");
});
function pickerDefine(i,color){
var pickr = new Pickr({
el: '#color-picker'+i,
default: color,
showAlways: true,
appendToBody: true,
closeWithKey: 'Escape',
comparison: false,
components: {
preview: true, // Left side color comparison
opacity: false, // Opacity slider
hue: true, // Hue slider
interaction: {
rgba: false, // rgba option (red green blue and alpha)
input: true, // input / output element
}
},
strings: {
save: 'Save', // Default for save button
clear: 'Clear' // Default for clear button
}
});
pickr.on('change', (...args) => {
var rgb='rgb('+args[0].toRGBA()[0]+','+args[0].toRGBA()[1]+','+args[0].toRGBA()[2]+')';
$("#color-picker"+i+"_value").val(rgb)
});
}
function customComp(){
var nameC=$("#custom_name").val();
if(!nameC){return false;}
var descC=$("#custom_desc").val();
var primaryC=$("#color-picker0_value").val();
if(!primaryC){primaryC="rgb(255,255,255)"}
var secondaryC=$("#color-picker1_value").val();
if(!secondaryC){secondaryC="rgb(255,255,255)"}
var textC=$("#color-picker2_value").val();
if(!textC){textC="rgb(255,255,255)"}
var accentC=$("#color-picker3_value").val();
if(!accentC){accentC="rgb(255,255,255)"}
var multi = localStorage.getItem("multi");
var my=JSON.parse(multi)[0].name;
var id=$("#custom-edit-sel").val();
if(id=="add_new"){
id=makeCID();
}
var json={
"name": nameC,
"author": my,
"desc": descC,
"base": $("[name=direction]:checked").val(),
"vars": {
"primary": primaryC,
"secondary": secondaryC,
"text": textC
},
"props": {
"TheDeskAccent": accentC
},
"id": id
}
$("#custom_json").val(JSON.stringify(json));
themes();
$("#custom_name").val("");
$("#custom_desc").val("");
$("#dark").prop("checked", true);
$("#custom_json").val("");
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
$("#color-picker0_value").val("");
$("#color-picker1_value").val("");
$("#color-picker2_value").val("");
$("#color-picker3_value").val("");
pickerDefine(0,"fff");
pickerDefine(1,"fff");
pickerDefine(2,"fff");
pickerDefine(3,"fff");
ipc.send('theme-json-create', JSON.stringify(json));
}
function deleteIt(){
var id=$("#custom-sel-sel").val();
$("#custom_name").val("");
$("#custom_desc").val("");
$("#dark").prop("checked", true);
$("#custom_json").val("");
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
$("#color-picker0_value").val("");
$("#color-picker1_value").val("");
$("#color-picker2_value").val("");
$("#color-picker3_value").val("");
pickerDefine(0,"fff");
pickerDefine(1,"fff");
pickerDefine(2,"fff");
pickerDefine(3,"fff");
ipc.on('theme-json-delete-complete', function (event, args) {
ctLoad()
});
ipc.send('theme-json-delete', id);
}
function ctLoad(){
ipc.send('theme-json-list', "");
ipc.on('theme-json-list-response', function (event, args) {
console.log(args);
var templete="";
Object.keys(args).forEach(function(key) {
var theme = args[key];
var themeid=theme.id
templete = templete+'<option value="'+themeid+'">' + theme.name +'</option>';
});
if(args[0]){
localStorage.setItem("customtheme-id",args[0].id)
}
$("#custom-sel-sel").html(templete);
templete='<option value="add_new">'+$("#edit-selector").attr("data-add")+'</option>'+templete;
$("#custom-edit-sel").html(templete);
$('select').material_select('update');
});
}
function customSel(){
var id=$("#custom-sel-sel").val();
localStorage.setItem("customtheme-id",id)
}
function custom(){
var id=$("#custom-edit-sel").val();
if(id=="add_new"){
$("#custom_name").val("");
$("#custom_desc").val("");
$("#dark").prop("checked", true);
$("#custom_json").val("");
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
$("#color-picker0_value").val("");
$("#color-picker1_value").val("");
$("#color-picker2_value").val("");
$("#color-picker3_value").val("");
pickerDefine(0,"fff");
pickerDefine(1,"fff");
pickerDefine(2,"fff");
pickerDefine(3,"fff");
$("#delTheme").addClass("disabled")
}else{
$("#delTheme").removeClass("disabled")
ipc.send('theme-json-request', id);
ipc.on('theme-json-response', function (event, args) {
console.log(args);
$("#custom_name").val(args.name);
$("#custom_desc").val(args.desc);
$("#"+args.base).prop("checked", true);
$("#color-picker0-wrap").html('<div class="color-picker" id="color-picker0"></div>')
pickerDefine(0,rgbToHex(args.vars.primary))
$("#color-picker0_value").val(args.vars.primary);
$("#color-picker1-wrap").html('<div class="color-picker" id="color-picker1"></div>')
pickerDefine(1,rgbToHex(args.vars.secondary))
$("#color-picker1_value").val(args.vars.secondary);
$("#color-picker2-wrap").html('<div class="color-picker" id="color-picker2"></div>')
$("#color-picker2_value").val(args.vars.text);
pickerDefine(2,rgbToHex(args.vars.text))
if(args.props){
if(args.props.TheDeskAccent){
var accent=args.props.TheDeskAccent;
}else{
var accent=args.vars.secondary;
}
}else{
var accent=args.vars.secondary;
}
$("#color-picker3-wrap").html('<div class="color-picker" id="color-picker3"></div>')
pickerDefine(3,rgbToHex(accent))
$("#custom_json").val(JSON.stringify(args));
});
}
}
function customImp(){
var json=$("#custom_import").val();
if(JSON5.parse(json)){
ipc.send('theme-json-create', json);
}else{
alert("Error")
}
}
function hardwareAcceleration(){
var had = $("[name=ha]:checked").val();
localStorage.setItem("ha", had);
console.log("ha");
ipc.send('ha', had);
}
ipc.on('theme-json-create-complete', function (event, args) {
$("#custom_import").val("");
ctLoad()
});
//最初に読む
load();
climute();
wordmute();
wordemp();
checkSpotify();
voiceSettingLoad();
oksload();
npprovider();
ctLoad()

View File

@@ -103,7 +103,7 @@ function sort() {
var json = JSON.stringify(newobj);
localStorage.setItem("column", json);
$("#sort").html("");
Materialize.toast("Sorted", 3000);
M.toast({ html: "Sorted", displayLength: 3000 })
sortload();
parseColumn();
sortMenu()

View File

@@ -1,21 +1,13 @@
function spotifyConnect() {
var auth = "https://accounts.spotify.com/authorize?client_id=0f18e54abe0b4aedb4591e353d3aff69&redirect_uri=https://thedesk.top/spotify-connect&response_type=code&scope=user-read-currently-playing";
const {
shell
} = require('electron');
var electron = require("electron");
var remote = electron.remote;
var platform = remote.process.platform;
var platform = localStorage.getItem("platform");
if (platform == "win32") {
shell.openExternal(auth);
var ipc = electron.ipcRenderer;
ipc.send('quit', 'go');
postMessage(["openUrl", auth], "*")
postMessage(["sendSinmpleIpc", "quit"], "*")
} else {
auth = auth + "&state=code";
$("#spotify-code-show").removeClass("hide");
shell.openExternal(auth);
postMessage(["openUrl", auth], "*")
}
@@ -57,10 +49,10 @@ function spotifyFlagSave() {
var awk = $("[name=awk]:checked").val();
if (awk == "yes") {
localStorage.setItem("artwork", "yes");
Materialize.toast(lang.lang_spotify_img, 3000);
M.toast({ html: lang.lang_spotify_img, displayLength: 3000 })
} else {
localStorage.removeItem("artwork");
Materialize.toast(lang.lang_spotify_imgno, 3000);
M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 })
}
}
function nowplaying(mode) {
@@ -85,11 +77,9 @@ function nowplaying(mode) {
}
var item = json.item;
var img = item.album.images[0].url;
var electron = require("electron");
var ipc = electron.ipcRenderer;
var flag = localStorage.getItem("artwork");
if (flag) {
ipc.send('bmp-image', [img, 0]);
postMessage(["bmpImage", [img, 0]], "*")
}
var content = localStorage.getItem("np-temp");
if (!content || content == "" || content == "null") {
@@ -118,67 +108,62 @@ function nowplaying(mode) {
$("#textarea").val(content);
});
} else {
alert(lang.lang_spotify_acct);
Swal.fire({
type: 'info',
title: lang.lang_spotify_acct
})
}
} else if (mode == "itunes") {
var electron = require("electron");
var ipc = electron.ipcRenderer;
if (ipc.listenerCount('itunes-np') > 0) {
return false;
}
ipc.send('itunes', "");
ipc.once('itunes-np', function (event, arg) {
if (arg.cmd) {
console.error(arg);
return;
}
console.table(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");
var remote = electron.remote;
var platform = remote.process.platform;
if (platform == "win32") {
if (flag && arg.path) {
media(arg.path, "image/png", "new");
}
} else if (platform == "darwin") {
if (flag && arg.existsArtwork) {
media(arg.artworks[0].data, "image/png", "new");
}
}
var regExp = new RegExp("{song}", "g");
content = content.replace(regExp, arg.name);
var regExp = new RegExp("{album}", "g");
content = content.replace(regExp, arg.album);
var regExp = new RegExp("{artist}", "g");
content = content.replace(regExp, arg.artist);
var regExp = new RegExp("{url}", "g");
content = content.replace(regExp, "");
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, "");
var regExp = new RegExp("{bitRate}", "g");
content = content.replace(regExp, arg.bitRate + "kbps");
var regExp = new RegExp("{genre}", "g");
content = content.replace(regExp, arg.genre);
$("#textarea").val(content);
})
postMessage(["itunes", ""], "*")
}
}
function npCore(arg) {
if (arg.cmd) {
console.error(arg);
return;
}
console.table(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");
var platform = localStorage.getItem("platform");
if (platform == "win32") {
if (flag && arg.path) {
media(arg.path, "image/png", "new");
}
} else if (platform == "darwin") {
if (flag && arg.existsArtwork) {
media(arg.artworks[0].data, "image/png", "new");
}
}
var regExp = new RegExp("{song}", "g");
content = content.replace(regExp, arg.name);
var regExp = new RegExp("{album}", "g");
content = content.replace(regExp, arg.album);
var regExp = new RegExp("{artist}", "g");
content = content.replace(regExp, arg.artist);
var regExp = new RegExp("{url}", "g");
content = content.replace(regExp, "");
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, "");
var regExp = new RegExp("{bitRate}", "g");
content = content.replace(regExp, arg.bitRate + "kbps");
var regExp = new RegExp("{genre}", "g");
content = content.replace(regExp, arg.genre);
$("#textarea").val(content);
}
function spotifySave() {
var temp = $("#np-temp").val();
localStorage.setItem("np-temp", temp);
Materialize.toast(lang.lang_spotify_np, 3000);
M.toast({ html: lang.lang_spotify_np, displayLength: 3000 })
}
function npprovider() {
var provd = $("[name=npp]:checked").val();
@@ -191,12 +176,11 @@ function npprovider() {
}
} else {
if (provd != localStorage.getItem("np_provider")) {
Materialize.toast(lang.lang_setting_npprovide.replace("{{set}}", provd), 3000);
M.toast({ html: lang.lang_setting_npprovide.replace("{{set}}", provd), displayLength: 3000 })
}
localStorage.setItem("np_provider", provd);
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('itunes', ["set", provd]);
postMessage(["itunes", ["set", provd]], "*")
}
}
if (location.search) {

View File

@@ -21,7 +21,7 @@ function themes(theme) {
}
if (theme == "custom") {
if (localStorage.getItem("customtheme-id")) {
ipc.send('theme-css-request', localStorage.getItem("customtheme-id"));
postMessage(["themeCSSRequest", localStorage.getItem("customtheme-id")], "*")
}
}
}

View File

@@ -20,9 +20,7 @@ function bottomReverse() {
}
}
function tips(mode) {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('endmem', "");
postMessage(["sendSinmpleIpc", "endmem"], "*")
clearInterval(clockint);
clearInterval(spotStart);
if (mode == "ver") {
@@ -50,15 +48,10 @@ function tips(mode) {
}
//メモリ
function startmem() {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('startmem', "");
ipc.on('memory', function (event, arg) {
var use = arg[0];
var cpu = arg[1];
var total = arg[2]
$("#tips-text").html(escapeHTML(cpu) + "<br>Memory:" + Math.floor(use / 1024 / 1024 / 102.4) / 10 + "/" + Math.floor(total / 1024 / 1024 / 102.4) / 10 + "GB(" + Math.floor(use / total * 100) + "%)")
})
postMessage(["sendSinmpleIpc", "startmem"], "*")
}
function renderMem(use, cpu, total){
$("#tips-text").html(escapeHTML(cpu) + "<br>Memory:" + Math.floor(use / 1024 / 1024 / 102.4) / 10 + "/" + Math.floor(total / 1024 / 1024 / 102.4) / 10 + "GB(" + Math.floor(use / total * 100) + "%)")
}
//トレンドタグ
function trendTagonTip() {
@@ -140,7 +133,10 @@ function spotifytips() {
spotint = setInterval(spotStart, 1000);
});
} else {
alert(lang.lang_spotify_acct);
Swal.fire({
type: 'info',
title: lang.lang_spotify_acct
})
}
}
function spotStart() {

View File

@@ -40,9 +40,7 @@ function udgEx(user, acct_id) {
var id = json.accounts[0].id;
udg(id, acct_id);
} else {
var url = "https://" + user.split('@')[1] + "/@" + user.split('@')[0];
const { shell } = require('electron');
shell.openExternal(url);
postMessage(["openUrl", url], "*")
}
});
return true;
@@ -81,9 +79,8 @@ function udg(user, acct_id) {
}
//moved設定時
if (json.moved) {
Materialize.toast(
lang.lang_showontl_movetxt + '<button class="btn-flat toast-action" onclick="udg(\'' +
json.moved.id + '\',\'' + acct_id + '\')">' + lang.lang_showontl_movebtn + '</button>', 4000)
M.toast({ html: lang.lang_showontl_movetxt + '<button class="btn-flat toast-action" onclick="udg(\'' +
json.moved.id + '\',\'' + acct_id + '\')">' + lang.lang_showontl_movebtn + '</button>', displayLength: 4000 })
}
$('#his-data').modal('open');
$('#his-data').attr("user-id", user);
@@ -196,6 +193,9 @@ function udg(user, acct_id) {
$("#his-emp-btn").hide();
$(".only-my-data").show();
$(".only-his-data").hide();
if(localStorage.getItem("main")==acct_id){
$("#his-main-acct").hide();
}
} else {
relations(user, acct_id);
$(".only-my-data").hide();
@@ -296,6 +296,9 @@ function misskeyUdg(user, acct_id) {
$("#his-emp-btn").hide();
$(".only-my-data").show();
$(".only-his-data").hide();
if(localStorage.getItem("main")==acct_id){
$("#his-main-acct").hide();
}
} else {
if (json.isFollowing) {
//自分がフォローしている
@@ -354,7 +357,6 @@ function relations(user, acct_id) {
console.error(error);
}).then(function (json) {
var json = json[0];
console.log(json);
if (json.following) {
//自分がフォローしている
$("#his-data").addClass("following");
@@ -409,9 +411,14 @@ function relations(user, acct_id) {
});
}
function profbrws() {
const { shell } = require('electron');
var url = $("#his-openin").attr("data-href")
shell.openExternal(url);
postMessage(["openUrl", url], "*")
}
function setMain() {
var acct_id = $("#his-data").attr("use-acct")
localStorage.setItem("main", acct_id);
multiSelector(true)
M.toast({ html: lang.lang_manager_mainAcct, displayLength: 3000 })
}
//オールリセット
function hisclose() {
@@ -468,11 +475,12 @@ function reset() {
$("#his-openin").attr("data-href", "");
$("#his-float-timeline").show();
$("#his-float-blocked").hide();
$("#his-main-acct").show();
$("#his-proof-prof").html("")
}
$('#my-data-nav .custom-tab').on('click', function () {
$('#my-data-nav .tab').on('click', function () {
var target = $(this).find("a").attr("go");
$("#my-data-nav .custom-tab").removeClass("active-back");
$("#my-data-nav .tab").removeClass("active-back");
$(this).addClass("active-back");
$(target).show();
$(".tab-content:not(" + target + ")").hide();

View File

@@ -1,4 +1,4 @@
var dirname = __dirname;
var dir = 'file://' + __dirname;
var base = dir + '/view/';
// Electronのモジュール
@@ -18,6 +18,27 @@ const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
// メインウィンドウはGCされないようにグローバル宣言
let mainWindow;
if (process.argv.indexOf("--dev") === -1) {
var packaged = true;
} else {
var packaged = false;
console.log(
"||\\\\\\ \n"+
"|||| \\\\\\\\ \n"+
"|||| \\\\\\\\ \n"+
"|||| Am I a \\\\\\\\ \n"+
"|||| cat? ^ ^ \\\\\\\\\\ _____ _ ____ _ \n"+
"|||| (.-.) \\\\\\\\\\ |_ _| |__ ___| _ \\ ___ ___| | __\n"+
"|||| ___> ) ||||| | | | '_ \\ / _ \\ | | |/ _ \\/ __| |/ /\n"+
"|||| < _ _) ////// | | | | | | __/ |_| | __/\__ \\ < \n"+
"|||| |_||_| ///// |_| |_| |_|\\___|____/ \\___||___/_|\\_\\ \n"+
"|||| ///// \n"+
"|||| /////\n"+
"|||| /////\n"+
"||||//////"
)
console.log("Welcome!")
}
var info_path = join(app.getPath("userData"), "window-size.json");
var max_info_path = join(app.getPath("userData"), "max-window-size.json");
var lang_path = join(app.getPath("userData"), "language");
@@ -25,9 +46,9 @@ var ha_path = join(app.getPath("userData"), "hardwareAcceleration");
try {
fs.readFileSync(ha_path, 'utf8');
app.disableHardwareAcceleration()
console.log("disabled: HA");
if(!packaged) console.log("disabled: Hardware Acceleration");
} catch{
console.log("enabled: HA");
if(!packaged) console.log("enabled: Hardware Acceleration");
}
var window_size;
try {
@@ -74,7 +95,6 @@ app.on('activate', function () {
function createWindow() {
if (isFile(lang_path)) {
console.log("exist");
var lang = fs.readFileSync(lang_path, 'utf8');
} else {
var langs = app.getLocale();
@@ -88,17 +108,41 @@ function createWindow() {
fs.writeFileSync(lang_path, lang);
});
}
console.log(app.getLocale());
console.log("launch:" + lang);
if(!packaged) console.log("your lang:" + app.getLocale());
if(!packaged) console.log("launch:" + lang);
// メイン画面の表示。ウィンドウの幅、高さを指定できる
var platform = process.platform;
var bit = process.arch;
if (platform == "linux") {
var arg = { webPreferences: { webviewTag: true, nodeIntegration: true }, width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, icon: __dirname + '/desk.png' }
var arg = {
webPreferences: {
webviewTag: true,
nodeIntegration: false,
contextIsolation: true,
preload: join(__dirname, "js", "platform", "preload.js")
},
width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, icon: __dirname + '/desk.png'
}
} else if (platform == "win32") {
var arg = {webPreferences: { webviewTag: true, nodeIntegration: true }, width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, simpleFullscreen: true }
var arg = {
webPreferences: {
webviewTag: true,
nodeIntegration: false,
contextIsolation: true,
preload: join(__dirname, "js", "platform", "preload.js")
},
width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, simpleFullscreen: true
}
} else if (platform == "darwin") {
var arg = { webPreferences: { webviewTag: true, nodeIntegration: true }, width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, simpleFullscreen: true }
var arg = {
webPreferences: {
webviewTag: true,
nodeIntegration: false,
contextIsolation: true,
preload: join(__dirname, "js", "platform", "preload.js")
},
width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, simpleFullscreen: true
}
}
mainWindow = new BrowserWindow(arg);
electron.session.defaultSession.clearCache(() => { })
@@ -149,19 +193,17 @@ function createWindow() {
var platform = process.platform;
var bit = process.arch;
if (platform == "darwin") {
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang, mainWindow, false, dir)));
}
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang, mainWindow, packaged, dir)));
//CSS
css.css(mainWindow);
//アップデータとダウンロード
dl.dl(mainWindow, lang_path, base);
dl.dl(mainWindow, lang_path, base, dirname);
//画像選択と画像処理
img.img(mainWindow, dir);
//NowPlaying
np.TheDeskNowPlaying(mainWindow);
//その他system
systemFunc.system(mainWindow, dir, lang);
systemFunc.system(mainWindow, dir, lang, dirname);
}
// Electronの初期化完了後に実行
app.on('ready', createWindow);

View File

@@ -10,7 +10,7 @@ function css(mainWindow) {
ipc.on('custom-css-create', function (e, arg) {
fs.writeFileSync(customcss, arg);
mainWindow.webContents.send('custom-css-create-complete', "");
e.sender.webContents.send('custom-css-create-complete', "");
})
ipc.on('custom-css-request', function (e, arg) {
try {
@@ -18,29 +18,29 @@ function css(mainWindow) {
} catch (e) {
var css = "";
}
mainWindow.webContents.send('custom-css-response', css);
e.sender.webContents.send('custom-css-response', css);
})
ipc.on('theme-json-create', function (e, arg) {
var themecss = join(app.getPath("userData"), JSON5.parse(arg)["id"] +
".thedesktheme");
fs.writeFileSync(themecss, JSON.stringify(JSON5.parse(arg)));
if (JSON5.parse(arg)["id"]) {
mainWindow.webContents.send('theme-json-create-complete', "");
e.sender.webContents.send('theme-json-create-complete', "");
} else {
mainWindow.webContents.send('theme-json-create-complete', "error");
e.sender.webContents.send('theme-json-create-complete', "error");
}
})
ipc.on('theme-json-delete', function (e, arg) {
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
console.log(themecss);
fs.unlink(themecss, function (err) {
mainWindow.webContents.send('theme-json-delete-complete', "");
e.sender.webContents.send('theme-json-delete-complete', "");
});
})
ipc.on('theme-json-request', function (e, arg) {
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
mainWindow.webContents.send('theme-json-response', json);
e.sender.webContents.send('theme-json-response', json);
})
ipc.on('theme-css-request', function (e, arg) {
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
@@ -53,9 +53,13 @@ function css(mainWindow) {
if (json.base == "light") {
var drag = "rgba(255, 255, 255, 0.8)";
var beforehover = "#757575";
var selected = "#3f3f3f"
var selectedWithShare = "#b2babd"
} else {
var drag = "rgba(0, 0, 0, 0.8)";
var beforehover = "#9e9e9e";
var selected = "#c0c0c0"
var selectedWithShare = "#003a30"
}
if (json.props) {
if (json.props.TheDeskAccent) {
@@ -75,8 +79,8 @@ function css(mainWindow) {
secondary +
";--active:" + primary + ";--postbox:" + primary + ";--modalfooter:" +
primary +
";}.blacktheme #imagemodal{background: url(\"../img/pixel.svg\");}";
mainWindow.webContents.send('theme-css-response', css);
";--accentbtn:" + primary + ";--selected:" + selected + ";--selectedWithShare:" + selectedWithShare + "}.customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
e.sender.webContents.send('theme-css-response', css);
} catch (e) {
var css = "";
}
@@ -98,7 +102,7 @@ function css(mainWindow) {
id: json.id
})
}
mainWindow.webContents.send('theme-json-list-response', themes);
e.sender.webContents.send('theme-json-list-response', themes);
});
})
}

View File

@@ -1,4 +1,4 @@
function dl(mainWindow, lang_path, base) {
function dl(mainWindow, lang_path, base, dirname) {
const electron = require("electron");
const shell = electron.shell;
const fs = require("fs");
@@ -16,15 +16,18 @@ function dl(mainWindow, lang_path, base) {
if (platform != "others") {
updatewin = new BrowserWindow({
webPreferences: {
nodeIntegration:true
webviewTag: false,
nodeIntegration: false,
contextIsolation: true,
preload: join(dirname,"js", "platform", "preload.js")
},
width: 600,
height: 400,
"transparent": false, // ウィンドウの背景を透過
"frame": false, // 枠の無いウィンドウ
"resizable": false,
"modal": true
"resizable": false
});
//updatewin.openDevTools()
var lang = fs.readFileSync(lang_path, 'utf8');
updatewin.loadURL(base + lang + '/update.html');
@@ -35,7 +38,25 @@ function dl(mainWindow, lang_path, base) {
})
//アプデDL
ipc.on('download-btn', (e, args) => {
function dl(url, file, dir, e) {
e.sender.webContents.send('mess', "ダウンロードを開始します。");
const opts = {
directory: dir,
openFolderWhenDone: true,
onProgress: function (event) {
e.sender.webContents.send('prog', event);
},
saveAs: false
};
download(updatewin,
url, opts)
.then(dl => {
e.sender.webContents.send('mess', "ダウンロードが完了しました。");
app.quit();
})
.catch(console.error);
}
var platform = process.platform;
var bit = process.arch;
dialog.showSaveDialog(null, {
@@ -55,7 +76,7 @@ function dl(mainWindow, lang_path, base) {
if (isExistFile(savedFiles)) {
fs.unlinkSync(savedFiles);
}
dl(args[0], args[1], m[1]);
dl(args[0], args[1], m[1], e);
});
});
@@ -68,27 +89,8 @@ function dl(mainWindow, lang_path, base) {
}
}
function dl(url, file, dir) {
updatewin.webContents.send('mess', "ダウンロードを開始します。");
const opts = {
directory: dir,
openFolderWhenDone: true,
onProgress: function (e) {
updatewin.webContents.send('prog', e);
},
saveAs: false
};
download(updatewin,
url, opts)
.then(dl => {
updatewin.webContents.send('mess', "ダウンロードが完了しました。");
app.quit();
})
.catch(console.error);
}
ipc.on('general-dl', (e, args) => {
ipc.on('general-dl', (event, args) => {
var name = "";
var platform = process.platform;
@@ -107,14 +109,14 @@ function dl(mainWindow, lang_path, base) {
filename: name,
openFolderWhenDone: false,
onProgress: function (e) {
mainWindow.webContents.send('general-dl-prog', e);
event.sender.webContents.send('general-dl-prog', e);
},
saveAs: false
};
download(BrowserWindow.getFocusedWindow(),
args[0], opts)
.then(dl => {
mainWindow.webContents.send('general-dl-message', dir);
event.sender.webContents.send('general-dl-message', dir);
})
.catch(console.error);
});

View File

@@ -24,48 +24,17 @@ function img(mainWindow, dir) {
for (var i = 0; i < fileNames.length; i++) {
var path = fileNames[i];
var bin = fs.readFileSync(path, 'base64');
mainWindow.webContents.send('bmp-img-comp', [bin, 'new']);
e.sender.webContents.send('bmp-img-comp', [bin, 'new']);
}
});
});
ipc.on('adobe', (e, arg) => {
if (!arg) {
const options = {
type: 'info',
title: 'Adobeフォトエディタ',
message: "「許可」または「永続的に許可」をクリックするとTheDeskとAdobeで情報を共有します。\n次のウィンドウを開いている時以外は一切提供しません。",
buttons: ['拒否', '許可', '永続的に許可']
}
dialog.showMessageBox(options, function (index) {
if (index === 2) {
mainWindow.webContents.send('adobeagree', "true");
}
if (index > 0) {
adobeWindow();
}
})
} else {
adobeWindow();
}
});
function adobeWindow() {
var window = new BrowserWindow({
webPreferences: {
nodeIntegration:true
},
width: 1000,
height: 750
});
window.loadURL(dir + '/adobe.html');
}
ipc.on('bmp-image', (e, args) => {
var m = args[0].match(/(.+)\\(.+)\.(.+)$/);
Jimp.read(args[0], function (err, lenna) {
if (err) throw err;
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
mainWindow.webContents.send('bmp-img-comp', [src, args[1]]);
e.sender.webContents.send('bmp-img-comp', [src, args[1]]);
});
});

View File

@@ -65,6 +65,28 @@ function templete(lang, mainWindow, packaged, dir) {
"en": "Close"
}
}
if(packaged){
var ifDev = [
{
label: dict.reload[lang],
accelerator: 'CmdOrCtrl+R',
click: function () { mainWindow.reload(); }
}
]
}else{
var ifDev = [
{
label: 'Toggle Developer Tools',
accelerator: 'Alt+Command+I',
click: function () { if (!packaged) { mainWindow.toggleDevTools(); } }
},
{
label: dict.reload[lang],
accelerator: 'CmdOrCtrl+R',
click: function () { mainWindow.reload(); }
}
]
}
const menu = [{
label: dict.application[lang],
submenu: [
@@ -73,7 +95,10 @@ function templete(lang, mainWindow, packaged, dir) {
var ver = app.getVersion()
var window = new BrowserWindow({
webPreferences: {
nodeIntegration:true
webviewTag: false,
nodeIntegration: false,
contextIsolation: true,
preload: "../js/platform/preload.js"
},
width: 300, height: 460,
"transparent": false, // ウィンドウの背景を透過
@@ -100,18 +125,7 @@ function templete(lang, mainWindow, packaged, dir) {
]
}, {
label: dict.view[lang],
submenu: [
{
label: 'Toggle Developer Tools',
accelerator: 'Alt+Command+I',
click: function () { if (!packaged) { mainWindow.toggleDevTools(); } }
},
{
label: dict.reload[lang],
accelerator: 'CmdOrCtrl+R',
click: function () { mainWindow.webContents.send('reload', " "); }
}
]
submenu: ifDev
},
{
label: dict.window[lang],
@@ -132,33 +146,5 @@ function templete(lang, mainWindow, packaged, dir) {
];
return menu;
}
function delsel(lang) {
const dict = {
"delete": {
"ja": "カラム削除",
"en": "Delete this column"
},
"mess": {
"ja": "カラムを削除しますか?(すべてのカラムのリンク解析がOFFになります。)",
"en": "Delete this column(URL analyzes of all windows will be disabled.)"
},
"yes": {
"ja": "はい",
"en": "Yes"
},
"no": {
"ja": "いいえ",
"en": "No"
}
}
const options = {
type: 'info',
title: dict.delete[lang],
message: dict.mess[lang],
buttons: [dict.no[lang], dict.yes[lang]]
}
return options;
}
exports.template = templete;
exports.delsel = delsel;
exports.template = templete;

View File

@@ -28,11 +28,11 @@ function np(mainWindow) {
try {
const nowplaying = require("itunes-nowplaying-mac");
const value = await nowplaying.getRawData();
mainWindow.webContents.send('itunes-np', value);
e.sender.webContents.send('itunes-np', value);
} catch (error) {
// エラーを返す
console.error(error);
mainWindow.webContents.send('itunes-np', error);
e.sender.webContents.send('itunes-np', error);
}
} else {
var { NowPlaying, PlayerName } = require("nowplaying-node");
@@ -62,7 +62,7 @@ function np(mainWindow) {
album: myAIMP.getAlbum(),
path: bin
}
mainWindow.webContents.send('itunes-np', value);
e.sender.webContents.send('itunes-np', value);
}
}

View File

@@ -1,4 +1,4 @@
function system(mainWindow, dir, lang) {
function system(mainWindow, dir, lang, dirname) {
const electron = require("electron");
const app = electron.app;
const join = require('path').join;
@@ -40,13 +40,68 @@ function system(mainWindow, dir, lang) {
});
}
});
//プラットフォーム
ipc.on('getPlatform', function (e, arg) {
e.sender.webContents.send('platform', [process.platform, process.arch, process.version, process.versions.chrome, process.versions.electron]);
})
//言語
ipc.on('lang', function (e, arg) {
console.log("set:" + arg);
fs.writeFileSync(lang_path, arg);
mainWindow.webContents.send('langres', "");
e.sender.webContents.send('langres', "");
})
//エクスポートのダイアログ
ipc.on('exportSettings', function (e, args) {
dialog.showSaveDialog(null, {
title: 'Export',
properties: ['openFile', 'createDirectory'],
defaultPath: "export.thedeskconfigv2"
}, (savedFiles) => {
if (!savedFiles) {
return false;
}
e.sender.webContents.send('exportSettingsFile', savedFiles);
})
})
//インポートのダイアログ
ipc.on('importSettings', function (e, args) {
dialog.showOpenDialog(null, {
title: 'Import',
properties: ['openFile'],
filters: [
{ name: 'TheDesk Config', extensions: ['thedeskconfig', 'thedeskconfigv2'] },
]
}, (fileNames) => {
if (!fileNames) {
return false;
}
e.sender.webContents.send('config', fs.readFileSync(arg, 'utf8'));
})
})
//保存フォルダのダイアログ
ipc.on('savefolder', function (e, args) {
dialog.showOpenDialog(null, {
title: 'Save folder',
properties: ['openDirectory'],
}, (fileNames) => {
e.sender.webContents.send('savefolder', fileNames[0]);
});
})
//カスタムサウンドのダイアログ
ipc.on('customSound', function (e, arg) {
dialog.showOpenDialog(null, {
title: 'Custom sound',
properties: ['openFile'],
filters: [
{ name: 'Audio', extensions: ['mp3', 'aac', 'wav', 'flac', 'm4a'] },
{ name: 'All', extensions: ['*'] },
]
}, (fileNames) => {
e.sender.webContents.send('customSoundRender', [arg, fileNames[0]]);
});
})
//ハードウェアアクセラレーションの無効化
ipc.on('ha', function (e, arg) {
@@ -60,20 +115,17 @@ function system(mainWindow, dir, lang) {
})
ipc.on('quit', (e, args) => {
app.quit();
});
ipc.on('about', (e, args) => {
about();
});
function about() {
var ver = app.getVersion()
var window = new BrowserWindow({
webPreferences: {
nodeIntegration:true
webviewTag: false,
nodeIntegration: false
},
width: 300,
height: 480,
@@ -84,14 +136,6 @@ function system(mainWindow, dir, lang) {
window.loadURL(dir + '/about.html?ver=' + ver);
return "true"
}
ipc.on('column-del', (e, args) => {
console.log(lang);
var options = language.delsel(lang)
dialog.showMessageBox(options, function (index) {
mainWindow.webContents.send('column-del-reply', index);
})
});
ipc.on('nano', function (e, x, y) {
var nano_info_path = join(app.getPath("userData"),
@@ -104,7 +148,10 @@ function system(mainWindow, dir, lang) {
}
var nanowindow = new BrowserWindow({
webPreferences: {
nodeIntegration:true
webviewTag: false,
nodeIntegration: false,
contextIsolation: true,
preload: join(dirname,"js", "platform", "preload.js")
},
width: 350,
height: 200,
@@ -121,29 +168,27 @@ function system(mainWindow, dir, lang) {
});
return true;
})
var cbTimer1;
ipc.on('startmem', (e, arg) => {
event = e.sender
cbTimer1 = setInterval(mems, 1000);
});
function mems() {
var mem = os.totalmem() - os.freemem();
if (mainWindow) {
event.webContents.send('memory', [mem, os.cpus()[0].model, os.totalmem()]);
}
}
ipc.on('endmem', (e, arg) => {
if (cbTimer1) {
clearInterval(cbTimer1);
}
});
function mems() {
var mem = os.totalmem() - os.freemem();
if (mainWindow) {
mainWindow.webContents.send('memory', [mem, os.cpus()[0].model, os.totalmem()]);
}
}
ipc.on('export', (e, args) => {
fs.writeFileSync(args[0], args[1]);
});
ipc.on('import', (e, arg) => {
mainWindow.webContents.send('config', fs.readFileSync(arg, 'utf8'));
});
//フォント
function object_array_sort(data, key, order, fn) {
//デフォは降順(DESC)
@@ -180,7 +225,7 @@ function system(mainWindow, dir, lang) {
const fm = require('font-manager');
var fonts = fm.getAvailableFontsSync();
object_array_sort(fonts, 'family', 'asc', function (fonts_sorted) {
mainWindow.webContents.send('font-list', fonts_sorted);
e.sender.webContents.send('font-list', fonts_sorted);
});
});
}

View File

@@ -99,10 +99,8 @@
</head>
<body>
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
<script>
//jQuery読む
window.jQuery = window.$ = require('./js/common/jquery.js');
var Hammer = require('./js/common/hammer.min.js');
$.strip_tags = function (str, allowed) {
if (!str) {
return "";

3718
app/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,13 @@
{
"name": "thedesk",
"version": "18.5.0",
"version": "18.7.1",
"description": "TheDesk is a Mastodon client for PC.",
"repository": "https://github.com/cutls/TheDesk",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"construct": "cd view/make && node make",
"dev": "electron ./ --dev",
"dist": "build --linux snap",
"build:js": "node build.js",
"build": "electron-builder",
@@ -41,7 +43,7 @@
},
{
"name": "kPherox",
"url": "https://pawoo.net/@kPherox",
"url": "https://pl.kpherox.dev/kPherox",
"email": "admin@mail.kr-kp.com"
}
],
@@ -49,9 +51,12 @@
"dependencies": {
"electron-dl": "^1.14.0",
"jimp": "^0.6.4",
"jquery": "^3.4.1",
"json5": "^2.1.0",
"materialize-css": "^1.0.0",
"node-notifier": "^5.4.0",
"sumchecker": "^3.0.0",
"sweetalert2": "^8.13.0",
"vue": "^2.6.10"
},
"optionalDependencies": {
@@ -60,8 +65,9 @@
"font-manager": "^0.3.0"
},
"devDependencies": {
"electron": "^5.0.1",
"electron-builder": "^20.40.2"
"electron": "^6.0.0",
"electron-builder": "^21.1.5",
"readline-sync": "1.4.10"
},
"build": {
"productName": "TheDesk",
@@ -98,7 +104,8 @@
"linux": {
"icon": "build/icons",
"target": [
"zip"
"zip",
"snap"
],
"category": "Network"
},
@@ -109,8 +116,8 @@
]
},
"electronDownload": {
"version": "5.0.1"
"version": "5.0.4"
},
"electronVersion": "5.0.1"
"electronVersion": "5.0.4"
}
}

View File

@@ -4,7 +4,7 @@
<head>
<title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
@@ -74,10 +74,11 @@
</head>
<body id="mainView">
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.en.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script>
var misskeytoken = false;
</script>
@@ -99,10 +100,15 @@
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
<div id="ins-suggest"></div>
Uncheck it to skip pasiting code.(login to Mastodon on Windows or macOS) (Recommended: pcheck)<br>
<input type="checkbox" class="filled-in" id="linux" />
<label for="linux">Code setup</label><br>
<input type="checkbox" class="filled-in" id="misskey" />
<label for="misskey">Login as Misskey</label><br>
<label>
<input type="checkbox" class="filled-in" id="linux" />
<span>Code setup</span>
</label>
<br>
<label>
<input type="checkbox" class="filled-in" id="misskey" />
<span>Login as Misskey</span>
</label><br>
<button class="btn waves-effect" onclick="instance()">Login</button><br>
</div>
<div class="col s4">

View File

@@ -4,7 +4,7 @@
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
@@ -25,9 +25,9 @@
</head>
<body>
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.en.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/blurhash.js"></script>
@@ -35,8 +35,10 @@
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
<script>
var ver = "Usamin (18.5.0)";
var ver = "Usamin (18.7.1)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@@ -161,15 +163,15 @@
<div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between">
<i class="waves-effect gray material-icons" id="nsfw" title="Mark media as sensitive"
onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons purple-text dropdown-button"
data-activates='dropdown1' id="vis-icon">public</i>
<i class="waves-effect gray material-icons purple-text dropdown-trigger" data-target="dropdown1"
id="vis-icon">public</i>
<a class="waves-effect gray" id="cw" onclick="cw()" title="Hide text behind warning">CW</a>
<span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray"
onclick="fileselect()" title="Attach..">photo_library</i></span></span>
<i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn"
title="Emojis">tag_faces</i>
<i class="waves-effect gray material-icons dropdown-button"
data-activates='dropdown2'>more_vert</i>
<i class="waves-effect gray material-icons dropdown-trigger"
data-target="dropdown2">more_vert</i>
<i class="material-icons nex gray waves-effect" title="Clear toot box(Ctrl+Shit+C)"
data-trans-title="post_box_clear" id="clear">clear</i>
</div>
@@ -190,7 +192,7 @@
</div>
</div>
<!-- 公開範囲 Dropdown Structure -->
<ul id='dropdown1' class='dropdown-content'>
<ul id="dropdown1" class="dropdown-content">
<li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">Adjust status privacy
</li>
<li>
@@ -213,10 +215,7 @@
</li>
</ul>
<!-- その他 Dropdown Structure -->
<ul id='dropdown2' class='dropdown-content'>
<li>
<a onclick="adobe()">Adobe Photo Editor</a>
</li>
<ul id="dropdown2" class="dropdown-content">
<li>
<a onclick="nowplaying('spotify');">NowPlaying(Spotify)</a>
</li>
@@ -236,9 +235,9 @@
<!--END hidden area-->
</div>
<div id="toot-btn-field">
<button class="btn waves-effect indigo unmize toot-btn-group" onclick="post()"
<button class="btn waves-effect unmize toot-btn-group" onclick="post()"
id="toot-post-btn">Toot</button>
<button class="btn waves-effect indigo darken-3 unmize hide toot-btn-group" onclick="sec()"
<button class="btn waves-effect darken-3 unmize hide toot-btn-group" onclick="sec()"
id="toot-sec-btn"><i class="material-icons" id="toot-sec-icon"
title="Secondary Toot">lock_open</i></button>
</div>
@@ -311,10 +310,14 @@
<input type="text" class="mastodon-choice" placeholder="Choice2">
<input type="text" class="mastodon-choice" placeholder="Choice3">
<input type="text" class="mastodon-choice" placeholder="Choice4">
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
<label for="poll-multiple">Multiple select</label><br>
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
<label for="poll-until">Hide 'votes' count until people vote it.</label><br>
<label>
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
<span>Multiple select</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
<span>Hide 'votes' count until people vote it.</span>
</label>
<input type="number" style="width:50px" id="days_poll" placeholder="d" value="0">day(s)
<input type="number" style="width:50px" id="hours_poll" placeholder="h" value="0">hour(s)
<input type="number" style="width:50px" id="mins_poll" placeholder="m" value="6">minute(s)
@@ -325,7 +328,7 @@
<!-- Modal Structure Tootdata-->
<div id="tootmodal" class="modal modal-fixed-footer">
<div class="modal-content">
<ul class="collapsible" data-collapsible="accordion" id="det-col">
<ul class="collapsible" id="det-col">
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">people_outline</i>Local TL after this toot)
@@ -463,7 +466,9 @@
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data"
id="his-end-btn" onclick="pinUser()">Feature on profile</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin"
onclick="profbrws()">Open in browser</a><br>
onclick="profbrws()">Open in browser</a>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-my-data" id="his-main-acct"
onclick="setMain()" style="width: calc(100% - 10px)">Set it an main account</a><br>
</div><br>
<div id="his-matching-list">
Get people resembling this user.<br>
@@ -474,46 +479,46 @@
</div>
<div class="his-float" id="his-float-timeline">
<div id="my-data-nav">
<ul class="custom-tabs transparent">
<li class="custom-tab col my-data-width active-back column-first">
<ul class="tabs transparent">
<li class="tab col my-data-width active-back column-first">
<a go="#his-tl" title="Timeline"><i class="material-icons">timeline</i></a>
</li>
<li class="custom-tab col my-data-width">
<li class="tab col my-data-width">
<a go="#his-follow-list" title="Follow"><i class="material-icons">people</i></a>
</li>
<li class="custom-tab col my-data-width">
<li class="tab col my-data-width">
<a go="#his-follower-list" title="Follower"><i
class="material-icons">people</i></a>
</li>
<li class="custom-tab col my-data-width only-his-data">
<li class="tab col my-data-width only-his-data">
<a go="#his-action" title="Cross-account"><i
class="material-icons">account_box</i></a>
</li>
<li class="custom-tab col my-data-width only-his-data">
<li class="tab col my-data-width only-his-data">
<a go="#his-list" title="List"><i class="material-icons">list</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-fav-list" title="Favourite"><i class="material-icons">star</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-blocking-list" title="Blocks"><i class="material-icons">block</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-blocking-list" title="Blocks"><i
class="material-icons">voice_over_off</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-domain-list" title="Domain block"><i
class="material-icons">language</i><i class="material-icons">block</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-prof-list" title="Edit profile"><i class="material-icons">create</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-request-list" title="Follow requests"><i
class="material-icons">how_to_reg</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-follow-recom-list" title="Suggest"><i
class="material-icons">recent_actors</i></a>
</li>
@@ -621,7 +626,7 @@
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn"
onclick="follow()">Follow</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn"
onclick="mute()">Mute</a>
onclick="muteDo()">Mute</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn"
onclick="block()">Block</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">Close</a>
@@ -662,7 +667,7 @@
<!-- Modal Structure Video-->
<div id="videomodal" class="modal modal-fixed-footer">
<div class="modal-content">
<video src="" id="video" style="max-width:100%; max-height:100%;" controls>
<video src="" id="video" style="max-width:100%; max-height:100%;" controls loop="true" autoplay="true">
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
@@ -675,26 +680,21 @@
<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-Usamin_18-5-0" class="release-do" style="display:none; ">
<div id="release-Usamin_18-7-1" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv Fanboxでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Usamin (18.5.0)</h5>
macOSでのアップデータについて修正<br>
本来不要なところにフォロリク許可画面が出るようになっていたのを修正。<br>
不明なメディアに対するリンクを表示します<br>
PleromaでのVideoの挙動について修正しました<br>
Patreonでの支援を開始しました。<br>
アスタルテの新しいBBCodeに対応しました<br>
タイムライン下の方が切れてしまう不具合修正。<br>
通知をユーザーごとにフィルターする機能(最新のMastodonのみ)<br>
Electron 5.0.1になりました<br>
<br>
<h5>ThinkingDeskラベル</h5>
<img src="../../img/thinkingdesk.png" style="width:100px;" draggable="false"><br>
手作りマットラベル。貼ってはがせる。300円なのでポイントの余りでどうぞ。<br>
<a href="https://item.mercari.com/jp/m822743330" target="_blank">メルカリ</a>へ。
<h5>Release Note Usamin (18.7.1)</h5>
Electron 6.0.0<br>
画像ビューアーを開いているときに画像を矢印キーで切り替えられないバグを修正。<br>
コンテキストを上手く取得できないバグを修正<br>
タグサジェストがパワーアップ<br>
動画が自動再生(モーダル表示時)、ループ(モーダル, Pleroma, MisskeyのTL上)する<br>
絵文字(カスタム絵文字/Twemoji)をミュートワードに追加できるように<br>
絵文字が入ったURLに関する不具合修正。<br>
blurhash非対応インスタンスでのNSFW画像のblurを改修<br>
Pleroma等でアカウント情報が無い時があるため、それに関して修正<br>
</div>
<div id="release-en" style="display:none">
<h5>Let's make it native!</h5>
@@ -707,8 +707,8 @@
href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
Support on Pixiv FANBOX
</a>
<a class="btn-share btn waves-effect waves-light red darken-2"
href="https://www.patreon.com/cutls" target="_blank">
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls"
target="_blank">
Support on Patreon
</a>
<a class="btn-share btn waves-effect waves-light blue"
@@ -881,20 +881,34 @@
<input type="hidden" id="filter-edit-id">
<input type="text" style="width:150px" id="filter-add-word" placeholder="Filtering words"><br>
Filter contexts<br>
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
<label for="home_filter">Home</label>
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
<label for="local_filter">Local</label>
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
<label for="notf_filter">Notifications</label>
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
<label for="conv_filter">Conversations</label><br>
<label>
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
<span>Home</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
<span>Local</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
<span>Notifications</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
<span>Conversations</span>
</label>
Options<br>
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
<label for="wholeword_filter">Whole word</label><br>
<label>
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
<span>Whole word</span>
</label>
<br>
<span class="sml">Nice for Latin language</span><br>
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
<label for="except_filter">Drop instead of hide</label><br>
<label>
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
<span>Drop instead of hide</span>
</label>
<br>
<span class="sml">Filtered toots will disappear irreversibly, even if filter is later removed</span><br>
Expire after<span class="sml">Unset or "0" means "Never"<b>This value may contain some error</b></span><br><br>
<input type="number" style="width:50px" id="days_filter" placeholder="d" value="0">day(s)
@@ -937,7 +951,7 @@
<div id="bottom" class="reverse">
<div class="leftside reverse">
<div id="dambox">
<button id="posttgl" class="btn waves-effect indigo"
<button id="posttgl" class="btn waves-effect"
style="width: 100%;height: 2.5rem;line-height: 0;margin: 0;">
<i class="material-icons"
style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;">edit</i>Toot
@@ -990,6 +1004,56 @@
</div>
</div>
</div>
<!--Support me-->
<div id="support-btm" class="z-depth-4 hide">
<div id="support-btm-ja">
<h5>ご支援いただけませんか?</h5>
(これは支援の有無に関わらず定期的に出ます。)<br>
あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。<br>
乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。<br>
<br>
あなたはMastodon, MisskeyクライアントにTheDeskを選びました。これは奇跡的なことです。今考えればブラウザからアクセスした方が良かったのではと感じることかと存じます。<br>
それでも、あなたはTheDeskを使っています。<br>
TheDeskは2018年1月13日に最初のバージョンが出ました。それから圧倒的な機能数でゴリ押しするクライアントになっています。<br>
新機能に追従を図るためのモチベーションもさることながら、安全対策上TheDeskは開発者の緊急メッセージを表示できる機能が備わっており、開発者が送信ボタンを押すとすべてのTheDeskユーザーに通知が行くようになっています。<br>
かつてこれによってバグ報告を行い、使用を自粛していただくこともありました。<br>
そのような機能を実装するために、Mastodonなどのインスタンスを運営するのと同じく有料のサーバーを運用しています。<br>
<b>全てのユーザーが安心してTheDeskを使っていただける環境のため</b>にも、ぜひご支援をご検討ください。<br>
<b>TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!</b>
</div>
<div id="support-btm-en" class="hide">
<h5>Support me</h5>
It may disturb your Mastodon life, but your support is required to keep TheDesk awesome!<br>
<b>TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!</b>
</div>
<div id="support-btm-middle">
<h5>Monthly</h5>
<a class="btn-share btn waves-effect waves-light red lighten-2"
href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
Support on Pixiv FANBOX
</a>
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls"
target="_blank">
Support on Patreon
</a>
</div>
<div id="support-btm-right">
<h5>Once</h5>
<a class="btn-share btn waves-effect waves-light blue"
href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
Amazon Wish List
</a>
<br>
Give me Amazon Gift Card:<a href="mailto:web-pro@cutls.com"
target="_blank">web-pro@cutls.com</a><br>
Kyash<br>
<img src="../../img/kyash.png" width="100"><br>
</div>
<div id="support-btm-close">
<button class="btn waves-effect" style="width:100%;" onclick="closeSupport()"
id="add-filter-btn">Close</button>
</div>
</div>
<!--左下メッセージ-->
<div id="message">
</div>

View File

@@ -842,13 +842,6 @@ SOFTWARE.<br>
<h5>itunes-nowplaying-mac</h5>
<i class="fa fa-github"></i><a href="https://github.com/rinsuki/itunes-nowplaying-mac" target="_blank">rinsuki/itunes-nowplaying-mac</a><br>
MIT LICENSE
<h5>Adobe Creative SDK</h5>
Please visit:
<a href="http://wwwimages.adobe.com/www.adobe.com/content/dam/acom/jp/legal/servicetou/Creative_SDK_API_and_Developer_Additional_TOU-ja_JP-20140602_1513.pdf" target="_blank">
This file
<i class="material-icons">
picture_as_pdf
</i></a>
<h5>Google Fonts</h5>
<ul>
<li>Open Sans:<a target="_blank" href="http://www.apache.org/licenses/LICENSE-2.0"> Apache License, Version 2.0 </a></li>

View File

@@ -11,7 +11,7 @@
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
@@ -30,13 +30,14 @@
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.en.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="../../node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<h4>Preferences</h4>
<ul class="collapsible" data-collapsible="accordion">
@@ -57,15 +58,17 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">Notification test</a><br></template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label v-bind:for="item.id+check.value">{{check.text}}</label>
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
@@ -104,18 +107,36 @@
</div>
<div class="collapsible-body">
<h4>Select theme</h4>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<label for="black">Black</label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<label for="white">White</label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
<label for="custom">Custom</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<span>Black</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<span>White</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo"
value="indigo" />
<span>Indigo<span class="imas hide">(エンドレスナイト)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<span>Brown<span class="imas hide">(ビタースイート・タイム)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<span>Green<span class="imas hide">(ユースフルロマンス)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="blue" value="blue" />
<span>Blue<span class="imas hide">(渚の花嫁)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom"
value="custom" />
<span>custom</span>
</label>
<div style="width:300px" id="sel-selector">
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
</div>
@@ -131,10 +152,16 @@
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
placeholder="About this theme..."></textarea></div>
<h5>Color scheme</h5>
<input class="with-gap" name="direction" type="radio" id="dark" value="dark" checked="true" />
<label for="dark">Dark</label>
<input class="with-gap" name="direction" type="radio" id="light" value="light" />
<label for="light">Light</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="dark" value="dark"
checked="true" />
<span>Dark</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="light"
value="light" />
<span>Light</span>
</label>
<div id="pickers">
<div>
<h5>Primary</h5>Background of components
@@ -167,12 +194,12 @@
</div>
<button class="btn-large waves-effect" onclick="customComp()">Change</button>&nbsp;<button
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">Delete</button><br><br>
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
<input type="text" style="width:300px;height:40px;" id="custom_json" class="materialize-textarea"
placeholder="JSON style" readonly><br>
Share this code with other TheDesk. Do not share this code with MiAS.
<h4>Import of custom themes</h4>
Get more themes on <a href="https://assets.msky.cafe/" target="_blank">MiAS</a><br>
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea"
<input type="text" style="width:300px;height:40px;" id="custom_import" class="materialize-textarea"
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">Import</button><br>
</li>
@@ -185,13 +212,15 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label v-bind:for="item.id+check.value">{{check.text}}</label>
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
@@ -230,14 +259,15 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label v-bind:for="item.id+check.value">{{check.text}}</label>
<label><input class="with-gap" v-on:click="complete(i,check.value)"
v-model="item.setValue" type="radio" v-bind:id="item.id+check.value"
v-bind:value="check.value" />
<span>{{check.text}}</span></label>
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template>
</template>
@@ -273,7 +303,6 @@
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">Save</button><br><br>
</div>
</li>
<li>
@@ -305,20 +334,38 @@
<div class="collapsible-body">
<h5>NowPlaying Provider(Windows)</h5>
macOS and Linux are not supported. AIMP and iTunes were checked by developer. <br>CAD:foobar2000, MusicBee,J. River Media Center, Media Jukebox<br>WLM:Last.fm Client, TTPlayer, OpenPandora, Zune.<br> For foobar2000, <a href="http://poiru.github.com/foo-cad/">foo_cad plugin</a> is required. And MusicBee requires CAD.<br>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<label for="aimp">AIMP</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
<label for="itunes">iTunes</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
<label for="npmm">MediaMonkey</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
<label for="winamp">Winamp</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
<label for="wmp">WMP</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
<label for="wlm">WLM</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
<label for="cad">CAD</label><br><br>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<span>AIMP</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes"
value="ITUNES" />
<span>iTunes</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm"
value="MEDIAMONKEY" />
<span>MediaMonkey</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp"
value="WINAMP" />
<span>Winamp</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
<span>WMP</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
<span>WLM</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
<span>CAD</span>
</label>
<br><br>
Click <i class="material-icons" style="font-size:24px;">music_note</i>icon to NowPlaying<br>
<h5>Account Connection</h5>
TheDesk save your data on thedesk.top server.<br>
@@ -330,19 +377,26 @@
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
class="fa fa-spotify left"></i>Disconnect</a>
<h5>Edit a template</h5>
<br>
<h5>@@templateedit@@</h5>
@@templateeditwarn@@<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br>
Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify<br>
macOS:{song}:Song name/{album}:Album name/{artist}:Artist name/composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre}<br>
Windows:{song}:Song name/{album}:Album name/{artist}:Artist name<br>
@@template1@@<br>
@@template2@@<br>
@@template3@@<br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">Save</button>
<h5>Attach an Artwork of Spotify</h5>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
<label for="awk_yes">Yes</label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
<label for="awk_no">No</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes"
value="yes" />
<span>Yes</span>
</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no"
value="no" />
<span>No</span>
</label>
<br>
</div>
</li>
@@ -384,6 +438,7 @@
<li>Ctrl+Enter+Shift:Post(secondary toot)</li>
<li>Alt+Enter:Secondary Toot Button</li>
<li>Ctrl+E:Make all notifications read</li>
<li>Ctrl+U:Select the top & left(No.1 column) toot</li>
<li>Esc:Hide toot box</li>
<li>F5:Super Reload</li>
<li>Ctrl+Shift+C:Clear toot box</li>
@@ -397,13 +452,15 @@
以下Markdownに対応したインスタンスのみ。
<br>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
<li>Shift+Enter:全角スペースを入れて改行</li>
<li>Shift+Space:ゼロ幅スペース</li>
以下アスタルテにログインしている場合のみ
<br>
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
When a toot is selected:
<li>F:Favourite this toot</li>
<li>B:Boost this toot</li>
<li>R:Reply to this toot</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('Delete all data. You cannot undo. Continue?')){ localStorage.clear(); location.href='index.html'; }"><i
@@ -439,6 +496,7 @@
</span><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/modal.js"></script>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script>

View File

@@ -3,7 +3,7 @@
<head>
<title>Update - TheDesk</title>
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<meta charset="utf-8">
@@ -76,9 +76,9 @@
font-size: 200%;
}
</style>
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<i class="material-icons pointer waves-effect" onclick="about();">info</i>
<i class="material-icons pointer waves-effect" onclick="skipper();">clear</i>
<!--a href="update.html">Reload</a-->
@@ -135,9 +135,6 @@
$("#skipper").toggleClass("show");
}
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
//var shell = electron.shell;
verck();
function update(sel) {
$("#box").toggleClass("show");
@@ -145,8 +142,7 @@
$("#dlnow").toggleClass("hide");
$("#dlnow").toggleClass("show");
$("#prog").text("");
var remote = electron.remote;
var bit = process.arch;
var bit = localStorage.getItem("bit");
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET',
@@ -186,26 +182,25 @@
shell.openExternal(url);
return false;
}
ipc.send('download-btn', [url, file]);
postMessage(["downloadButton", [url, file]], "*")
});
}
function quit() {
ipc.send('quit', 'go');
postMessage(["sendSinmpleIpc", "quit"], "*")
}
ipc.on('prog', function (event, arg) {
function updateProg(arg) {
console.log(arg);
$(".determinate").css("width",arg*100+"%");
$(".determinate").css("width", arg * 100 + "%");
$("#prog").text(Math.floor(arg * 100) + "%");
})
ipc.on('mess', function (event, arg) {
}
function updateMess(arg) {
console.log(arg);
$("#prog").text(arg);
})
}
function verck() {
var remote = electron.remote;
var platform = remote.process.platform;
var bit = process.arch;
var platform = localStorage.getItem("platform");
var bit = localStorage.getItem("bit");
if (platform == "win32") {
$('.windows').removeClass("hide")
} else if (platform == "linux") {

View File

@@ -4,7 +4,7 @@
<head>
<title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
@@ -74,10 +74,11 @@
</head>
<body id="mainView">
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.ja.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script>
var misskeytoken = false;
</script>
@@ -99,10 +100,15 @@
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
<div id="ins-suggest"></div>
チェックを外すとコード貼り付けをスキップできます。(<u>Mastodon</u>にWindowsやmacOSからログインする場合)失敗する場合はチェックを入れてください。<br>
<input type="checkbox" class="filled-in" id="linux" />
<label for="linux">コードセットアップ</label><br>
<input type="checkbox" class="filled-in" id="misskey" />
<label for="misskey">Misskeyとしてログイン</label><br>
<label>
<input type="checkbox" class="filled-in" id="linux" />
<span>コードセットアップ</span>
</label>
<br>
<label>
<input type="checkbox" class="filled-in" id="misskey" />
<span>Misskeyとしてログイン</span>
</label><br>
<button class="btn waves-effect" onclick="instance()">Login</button><br>
</div>
<div class="col s4">

View File

@@ -4,7 +4,7 @@
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
@@ -25,9 +25,9 @@
</head>
<body>
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.ja.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/blurhash.js"></script>
@@ -35,8 +35,10 @@
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
<script>
var ver = "Usamin (18.5.0)";
var ver = "Usamin (18.7.1)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@@ -161,15 +163,15 @@
<div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between">
<i class="waves-effect gray material-icons" id="nsfw" title="画像に制限を付与"
onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons purple-text dropdown-button"
data-activates='dropdown1' id="vis-icon">public</i>
<i class="waves-effect gray material-icons purple-text dropdown-trigger" data-target="dropdown1"
id="vis-icon">public</i>
<a class="waves-effect gray" id="cw" onclick="cw()" title="コンテンツワーニング(トゥートを表示する前にメッセージで隠す)">CW</a>
<span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray"
onclick="fileselect()" title="ファイルを選択">photo_library</i></span></span>
<i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn"
title="絵文字を挿入">tag_faces</i>
<i class="waves-effect gray material-icons dropdown-button"
data-activates='dropdown2'>more_vert</i>
<i class="waves-effect gray material-icons dropdown-trigger"
data-target="dropdown2">more_vert</i>
<i class="material-icons nex gray waves-effect" title="トゥートボックスのクリア(Ctrl+Shit+C)"
data-trans-title="post_box_clear" id="clear">clear</i>
</div>
@@ -190,7 +192,7 @@
</div>
</div>
<!-- 公開範囲 Dropdown Structure -->
<ul id='dropdown1' class='dropdown-content'>
<ul id="dropdown1" class="dropdown-content">
<li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">公開範囲指定
</li>
<li>
@@ -213,10 +215,7 @@
</li>
</ul>
<!-- その他 Dropdown Structure -->
<ul id='dropdown2' class='dropdown-content'>
<li>
<a onclick="adobe()">Adobeフォトエディタ</a>
</li>
<ul id="dropdown2" class="dropdown-content">
<li>
<a onclick="nowplaying('spotify');">NowPlaying(Spotify)</a>
</li>
@@ -236,9 +235,9 @@
<!--END hidden area-->
</div>
<div id="toot-btn-field">
<button class="btn waves-effect indigo unmize toot-btn-group" onclick="post()"
<button class="btn waves-effect unmize toot-btn-group" onclick="post()"
id="toot-post-btn">トゥート</button>
<button class="btn waves-effect indigo darken-3 unmize hide toot-btn-group" onclick="sec()"
<button class="btn waves-effect darken-3 unmize hide toot-btn-group" onclick="sec()"
id="toot-sec-btn"><i class="material-icons" id="toot-sec-icon"
title="セカンダリートゥート">lock_open</i></button>
</div>
@@ -311,10 +310,14 @@
<input type="text" class="mastodon-choice" placeholder="選択肢2">
<input type="text" class="mastodon-choice" placeholder="選択肢3">
<input type="text" class="mastodon-choice" placeholder="選択肢4">
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
<label for="poll-multiple">複数選択を許可</label><br>
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
<label for="poll-until">投票するまで票数を隠す</label><br>
<label>
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
<span>複数選択を許可</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
<span>投票するまで票数を隠す</span>
</label>
<input type="number" style="width:50px" id="days_poll" placeholder="d" value="0">
<input type="number" style="width:50px" id="hours_poll" placeholder="h" value="0">時間
<input type="number" style="width:50px" id="mins_poll" placeholder="m" value="6">
@@ -325,7 +328,7 @@
<!-- Modal Structure Tootdata-->
<div id="tootmodal" class="modal modal-fixed-footer">
<div class="modal-content">
<ul class="collapsible" data-collapsible="accordion" id="det-col">
<ul class="collapsible" id="det-col">
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">people_outline</i>これより後のLocal TL(言及確認)
@@ -463,7 +466,9 @@
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data"
id="his-end-btn" onclick="pinUser()">紹介する</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin"
onclick="profbrws()">ブラウザで開く</a><br>
onclick="profbrws()">ブラウザで開く</a>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-my-data" id="his-main-acct"
onclick="setMain()" style="width: calc(100% - 10px)">メインアカウントに設定</a><br>
</div><br>
<div id="his-matching-list">
似ているユーザーを取得できます。<br>
@@ -474,46 +479,46 @@
</div>
<div class="his-float" id="his-float-timeline">
<div id="my-data-nav">
<ul class="custom-tabs transparent">
<li class="custom-tab col my-data-width active-back column-first">
<ul class="tabs transparent">
<li class="tab col my-data-width active-back column-first">
<a go="#his-tl" title="タイムライン"><i class="material-icons">timeline</i></a>
</li>
<li class="custom-tab col my-data-width">
<li class="tab col my-data-width">
<a go="#his-follow-list" title="フォロー"><i class="material-icons">people</i></a>
</li>
<li class="custom-tab col my-data-width">
<li class="tab col my-data-width">
<a go="#his-follower-list" title="フォロワー"><i
class="material-icons">people</i></a>
</li>
<li class="custom-tab col my-data-width only-his-data">
<li class="tab col my-data-width only-his-data">
<a go="#his-action" title="他のアカウントで操作"><i
class="material-icons">account_box</i></a>
</li>
<li class="custom-tab col my-data-width only-his-data">
<li class="tab col my-data-width only-his-data">
<a go="#his-list" title="リスト"><i class="material-icons">list</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-fav-list" title="お気に入り登録"><i class="material-icons">star</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-blocking-list" title="ブロック"><i class="material-icons">block</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-blocking-list" title="ブロック"><i
class="material-icons">voice_over_off</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-domain-list" title="ドメインブロック"><i
class="material-icons">language</i><i class="material-icons">block</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-prof-list" title="プロフィール編集"><i class="material-icons">create</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-request-list" title="フォローリクエスト"><i
class="material-icons">how_to_reg</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-follow-recom-list" title="おすすめ"><i
class="material-icons">recent_actors</i></a>
</li>
@@ -621,7 +626,7 @@
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn"
onclick="follow()">フォロー</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn"
onclick="mute()">ミュート</a>
onclick="muteDo()">ミュート</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn"
onclick="block()">ブロック</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">Close</a>
@@ -662,7 +667,7 @@
<!-- Modal Structure Video-->
<div id="videomodal" class="modal modal-fixed-footer">
<div class="modal-content">
<video src="" id="video" style="max-width:100%; max-height:100%;" controls>
<video src="" id="video" style="max-width:100%; max-height:100%;" controls loop="true" autoplay="true">
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
@@ -675,26 +680,21 @@
<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-Usamin_18-5-0" class="release-do" style="display:none; ">
<div id="release-Usamin_18-7-1" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv Fanboxでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Usamin (18.5.0)</h5>
macOSでのアップデータについて修正<br>
本来不要なところにフォロリク許可画面が出るようになっていたのを修正。<br>
不明なメディアに対するリンクを表示します<br>
PleromaでのVideoの挙動について修正しました<br>
Patreonでの支援を開始しました。<br>
アスタルテの新しいBBCodeに対応しました<br>
タイムライン下の方が切れてしまう不具合修正。<br>
通知をユーザーごとにフィルターする機能(最新のMastodonのみ)<br>
Electron 5.0.1になりました<br>
<br>
<h5>ThinkingDeskラベル</h5>
<img src="../../img/thinkingdesk.png" style="width:100px;" draggable="false"><br>
手作りマットラベル。貼ってはがせる。300円なのでポイントの余りでどうぞ。<br>
<a href="https://item.mercari.com/jp/m822743330" target="_blank">メルカリ</a>へ。
<h5>Release Note Usamin (18.7.1)</h5>
Electron 6.0.0<br>
画像ビューアーを開いているときに画像を矢印キーで切り替えられないバグを修正。<br>
コンテキストを上手く取得できないバグを修正<br>
タグサジェストがパワーアップ<br>
動画が自動再生(モーダル表示時)、ループ(モーダル, Pleroma, MisskeyのTL上)する<br>
絵文字(カスタム絵文字/Twemoji)をミュートワードに追加できるように<br>
絵文字が入ったURLに関する不具合修正。<br>
blurhash非対応インスタンスでのNSFW画像のblurを改修<br>
Pleroma等でアカウント情報が無い時があるため、それに関して修正<br>
</div>
<div id="release-en" style="display:none">
<h5>Let's make it native!</h5>
@@ -707,8 +707,8 @@
href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
Pixiv FANBOXで支援
</a>
<a class="btn-share btn waves-effect waves-light red darken-2"
href="https://www.patreon.com/cutls" target="_blank">
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls"
target="_blank">
Patreonで支援
</a>
<a class="btn-share btn waves-effect waves-light blue"
@@ -881,20 +881,34 @@
<input type="hidden" id="filter-edit-id">
<input type="text" style="width:150px" id="filter-add-word" placeholder="フィルターワード"><br>
適応範囲<br>
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
<label for="home_filter">ホーム</label>
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
<label for="local_filter">ローカル</label>
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
<label for="notf_filter">通知</label>
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
<label for="conv_filter">会話</label><br>
<label>
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
<span>ホーム</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
<span>ローカル</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
<span>通知</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
<span>会話</span>
</label>
オプション<br>
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
<label for="wholeword_filter">単語マッチ</label><br>
<label>
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
<span>単語マッチ</span>
</label>
<br>
<span class="sml">非ラテン系の文字列では「単語マッチ」は推奨されません。</span><br>
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
<label for="except_filter">除外</label><br>
<label>
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
<span>除外</span>
</label>
<br>
<span class="sml">「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。</span><br>
有効期限(あと)<span class="sml">未指定(または0分)で「無期限」になります。<b>仕様上数値の正確性を保証できません。</b></span><br><br>
<input type="number" style="width:50px" id="days_filter" placeholder="d" value="0">
@@ -937,7 +951,7 @@
<div id="bottom" class="reverse">
<div class="leftside reverse">
<div id="dambox">
<button id="posttgl" class="btn waves-effect indigo"
<button id="posttgl" class="btn waves-effect"
style="width: 100%;height: 2.5rem;line-height: 0;margin: 0;">
<i class="material-icons"
style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;">edit</i>トゥート
@@ -990,6 +1004,56 @@
</div>
</div>
</div>
<!--Support me-->
<div id="support-btm" class="z-depth-4 hide">
<div id="support-btm-ja">
<h5>ご支援いただけませんか?</h5>
(これは支援の有無に関わらず定期的に出ます。)<br>
あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。<br>
乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。<br>
<br>
あなたはMastodon, MisskeyクライアントにTheDeskを選びました。これは奇跡的なことです。今考えればブラウザからアクセスした方が良かったのではと感じることかと存じます。<br>
それでも、あなたはTheDeskを使っています。<br>
TheDeskは2018年1月13日に最初のバージョンが出ました。それから圧倒的な機能数でゴリ押しするクライアントになっています。<br>
新機能に追従を図るためのモチベーションもさることながら、安全対策上TheDeskは開発者の緊急メッセージを表示できる機能が備わっており、開発者が送信ボタンを押すとすべてのTheDeskユーザーに通知が行くようになっています。<br>
かつてこれによってバグ報告を行い、使用を自粛していただくこともありました。<br>
そのような機能を実装するために、Mastodonなどのインスタンスを運営するのと同じく有料のサーバーを運用しています。<br>
<b>全てのユーザーが安心してTheDeskを使っていただける環境のため</b>にも、ぜひご支援をご検討ください。<br>
<b>TheDeskは営利目的ではないため、有料機能や広告は一切ありません。<br>皆様のあたたかいご支援のもとで製作されています。</b>
</div>
<div id="support-btm-en" class="hide">
<h5>Support me</h5>
It may disturb your Mastodon life, but your support is required to keep TheDesk awesome!<br>
<b>TheDeskは営利目的ではないため、有料機能や広告は一切ありません。<br>皆様のあたたかいご支援のもとで製作されています。</b>
</div>
<div id="support-btm-middle">
<h5>月額支援(大歓迎)</h5>
<a class="btn-share btn waves-effect waves-light red lighten-2"
href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
Pixiv FANBOXで支援
</a>
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls"
target="_blank">
Patreonで支援
</a>
</div>
<div id="support-btm-right">
<h5>一度限りの支援(もちろん歓迎)</h5>
<a class="btn-share btn waves-effect waves-light blue"
href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
Amazonほしいものリスト
</a>
<br>
<a href="mailto:web-pro@cutls.com"
target="_blank">web-pro@cutls.com</a>にAmazonギフトカードを送る<br>
Kyash<br>
<img src="../../img/kyash.png" width="100"><br>
</div>
<div id="support-btm-close">
<button class="btn waves-effect" style="width:100%;" onclick="closeSupport()"
id="add-filter-btn">Close</button>
</div>
</div>
<!--左下メッセージ-->
<div id="message">
</div>

View File

@@ -841,13 +841,6 @@ SOFTWARE.<br>
<h5>itunes-nowplaying-mac</h5>
<i class="fa fa-github"></i><a href="https://github.com/rinsuki/itunes-nowplaying-mac" target="_blank">rinsuki/itunes-nowplaying-mac</a><br>
MIT LICENSE
<h5>Adobe Creative SDK</h5>
Please visit:
<a href="http://wwwimages.adobe.com/www.adobe.com/content/dam/acom/jp/legal/servicetou/Creative_SDK_API_and_Developer_Additional_TOU-ja_JP-20140602_1513.pdf" target="_blank">
This file
<i class="material-icons">
picture_as_pdf
</i></a>
<h5>Google Fonts</h5>
<ul>
<li>Open Sans:<a target="_blank" href="http://www.apache.org/licenses/LICENSE-2.0"> Apache License, Version 2.0 </a></li>

View File

@@ -11,7 +11,7 @@
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
-->
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
@@ -30,13 +30,14 @@
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.ja.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="../../node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<h4>設定</h4>
<ul class="collapsible" data-collapsible="accordion">
@@ -57,15 +58,17 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">通知テスト</a><br></template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label v-bind:for="item.id+check.value">{{check.text}}</label>
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
@@ -104,18 +107,36 @@
</div>
<div class="collapsible-body">
<h4>テーマの選択</h4>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<label for="black">Black</label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<label for="white">White</label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
<label for="custom">Custom</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<span>Black</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<span>White</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo"
value="indigo" />
<span>Indigo<span class="imas hide">(エンドレスナイト)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<span>Brown<span class="imas hide">(ビタースイート・タイム)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<span>Green<span class="imas hide">(ユースフルロマンス)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="blue" value="blue" />
<span>Blue<span class="imas hide">(渚の花嫁)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom"
value="custom" />
<span>custom</span>
</label>
<div style="width:300px" id="sel-selector">
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
</div>
@@ -131,10 +152,16 @@
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
placeholder="説明..."></textarea></div>
<h5>色の系統</h5>
<input class="with-gap" name="direction" type="radio" id="dark" value="dark" checked="true" />
<label for="dark">Dark</label>
<input class="with-gap" name="direction" type="radio" id="light" value="light" />
<label for="light">Light</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="dark" value="dark"
checked="true" />
<span>Dark</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="light"
value="light" />
<span>Light</span>
</label>
<div id="pickers">
<div>
<h5>Primary</h5>補助要素に使われる背景色
@@ -167,12 +194,12 @@
</div>
<button class="btn-large waves-effect" onclick="customComp()">変更</button>&nbsp;<button
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">削除</button><br><br>
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
<input type="text" style="width:300px;height:40px;" id="custom_json" class="materialize-textarea"
placeholder="JSON style" readonly><br>
このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。詳細:<a href="https://thedesk.top/mias.html" target="_blank">テーマ互換性</a>
<h4>カスタムテーマのインポート</h4>
<a href="https://assets.msky.cafe/" target="_blank">MiAS</a>上の80を超えるテーマを張り付けることもできます。<br>
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea"
<input type="text" style="width:300px;height:40px;" id="custom_import" class="materialize-textarea"
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">インポート</button><br>
</li>
@@ -185,13 +212,15 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label v-bind:for="item.id+check.value">{{check.text}}</label>
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
@@ -230,14 +259,15 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label v-bind:for="item.id+check.value">{{check.text}}</label>
<label><input class="with-gap" v-on:click="complete(i,check.value)"
v-model="item.setValue" type="radio" v-bind:id="item.id+check.value"
v-bind:value="check.value" />
<span>{{check.text}}</span></label>
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template>
</template>
@@ -273,7 +303,6 @@
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">設定</button><br><br>
</div>
</li>
<li>
@@ -305,20 +334,38 @@
<div class="collapsible-body">
<h5>NowPlayingのソース(Windows)</h5>
macOSやLinuxでは動作しません。AIMPとiTunes以外未検証です。<br>foobar2000, MusicBee,J. River Media Center, Media JukeboxはCADを、Last.fm Client, TTPlayer, OpenPandora, ZuneはWLMを選んでください。<br>ただし、foobar2000は<a href="http://poiru.github.com/foo-cad/">foo_cad plugin</a>が必要です。MusicBeeもCADを有効にする必要があります。<br>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<label for="aimp">AIMP</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
<label for="itunes">iTunes</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
<label for="npmm">MediaMonkey</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
<label for="winamp">Winamp</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
<label for="wmp">WMP</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
<label for="wlm">WLM</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
<label for="cad">CAD</label><br><br>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<span>AIMP</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes"
value="ITUNES" />
<span>iTunes</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm"
value="MEDIAMONKEY" />
<span>MediaMonkey</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp"
value="WINAMP" />
<span>Winamp</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
<span>WMP</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
<span>WLM</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
<span>CAD</span>
</label>
<br><br>
<i class="material-icons" style="font-size:24px;">music_note</i>ボタンから簡単にNowPlayingができます。<br>
<h5>アカウントの連携</h5>
APIの性質上thedesk.topへアクセスします。<br>
@@ -330,19 +377,26 @@
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
class="fa fa-spotify left"></i>切断</a>
<h5>テンプレートの編集</h5>
以下を編集してテンプレートを変更できます。<br>
<h5>@@templateedit@@</h5>
@@templateeditwarn@@<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br>
Spotify:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/{url}:各曲のSpotifyのURL<br>
macOS:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/作曲家{composer}/サンプルレート{hz}/ビットレート{bitRate}/ジャンル{genre}<br>
Windows:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名<br>
@@template1@@<br>
@@template2@@<br>
@@template3@@<br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">設定</button>
<h5>アルバムアートワークを添付する(Spotify/Windows)</h5>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
<label for="awk_yes">はい</label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
<label for="awk_no">いえ</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes"
value="yes" />
<span></span>
</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no"
value="no" />
<span>いいえ</span>
</label>
<br>
</div>
</li>
@@ -384,6 +438,7 @@
<li>Ctrl+Enter+Shift:投稿(セカンダリートゥート)</li>
<li>Alt+Enter:セカンダリートゥートボタン</li>
<li>Ctrl+E:全ての通知を既読にする</li>
<li>Ctrl+U:一番上の一番左のトゥートを選択</li>
<li>Esc:投稿パネルを消す</li>
<li>F5:スーパーリロード</li>
<li>Ctrl+Shift+C:入力内容を消す</li>
@@ -397,13 +452,15 @@
以下Markdownに対応したインスタンスのみ。
<br>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
<li>Shift+Enter:全角スペースを入れて改行</li>
<li>Shift+Space:ゼロ幅スペース</li>
以下アスタルテにログインしている場合のみ
<br>
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
選択時
<li>F:お気に入り登録</li>
<li>B:ブースト</li>
<li>R:返信</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('全てのデータを削除します。この操作は取り消せません。')){ localStorage.clear(); location.href='index.html'; }"><i
@@ -439,6 +496,7 @@
</span><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/modal.js"></script>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script>

View File

@@ -3,7 +3,7 @@
<head>
<title>Update - TheDesk</title>
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<meta charset="utf-8">
@@ -76,9 +76,9 @@
font-size: 200%;
}
</style>
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<i class="material-icons pointer waves-effect" onclick="about();">info</i>
<i class="material-icons pointer waves-effect" onclick="skipper();">clear</i>
<!--a href="update.html">Reload</a-->
@@ -135,9 +135,6 @@
$("#skipper").toggleClass("show");
}
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
//var shell = electron.shell;
verck();
function update(sel) {
$("#box").toggleClass("show");
@@ -145,8 +142,7 @@
$("#dlnow").toggleClass("hide");
$("#dlnow").toggleClass("show");
$("#prog").text("");
var remote = electron.remote;
var bit = process.arch;
var bit = localStorage.getItem("bit");
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET',
@@ -186,26 +182,25 @@
shell.openExternal(url);
return false;
}
ipc.send('download-btn', [url, file]);
postMessage(["downloadButton", [url, file]], "*")
});
}
function quit() {
ipc.send('quit', 'go');
postMessage(["sendSinmpleIpc", "quit"], "*")
}
ipc.on('prog', function (event, arg) {
function updateProg(arg) {
console.log(arg);
$(".determinate").css("width",arg*100+"%");
$(".determinate").css("width", arg * 100 + "%");
$("#prog").text(Math.floor(arg * 100) + "%");
})
ipc.on('mess', function (event, arg) {
}
function updateMess(arg) {
console.log(arg);
$("#prog").text(arg);
})
}
function verck() {
var remote = electron.remote;
var platform = remote.process.platform;
var bit = process.arch;
var platform = localStorage.getItem("platform");
var bit = localStorage.getItem("bit");
if (platform == "win32") {
$('.windows').removeClass("hide")
} else if (platform == "linux") {

View File

@@ -4,7 +4,7 @@
<head>
<title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
@@ -74,10 +74,11 @@
</head>
<body id="mainView">
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.@@lang@@.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script>
var misskeytoken = false;
</script>
@@ -99,10 +100,15 @@
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
<div id="ins-suggest"></div>
@@codesetupwarn@@<br>
<input type="checkbox" class="filled-in" id="linux" />
<label for="linux">@@codesetup@@</label><br>
<input type="checkbox" class="filled-in" id="misskey" />
<label for="misskey">@@thisismisskey@@</label><br>
<label>
<input type="checkbox" class="filled-in" id="linux" />
<span>@@codesetup@@</span>
</label>
<br>
<label>
<input type="checkbox" class="filled-in" id="misskey" />
<span>@@thisismisskey@@</span>
</label><br>
<button class="btn waves-effect" onclick="instance()">Login</button><br>
</div>
<div class="col s4">

View File

@@ -4,7 +4,7 @@
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
@@ -25,9 +25,9 @@
</head>
<body>
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.@@lang@@.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/blurhash.js"></script>
@@ -35,6 +35,8 @@
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
<script>
var ver = "@@versionLetter@@";
//betaを入れるとバージョンチェックしない
@@ -161,15 +163,15 @@
<div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between">
<i class="waves-effect gray material-icons" id="nsfw" title="@@nsfwDes@@"
onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons purple-text dropdown-button"
data-activates='dropdown1' id="vis-icon">public</i>
<i class="waves-effect gray material-icons purple-text dropdown-trigger" data-target="dropdown1"
id="vis-icon">public</i>
<a class="waves-effect gray" id="cw" onclick="cw()" title="@@cwDes@@">CW</a>
<span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray"
onclick="fileselect()" title="@@selfile@@">photo_library</i></span></span>
<i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn"
title="@@insertEmoji@@">tag_faces</i>
<i class="waves-effect gray material-icons dropdown-button"
data-activates='dropdown2'>more_vert</i>
<i class="waves-effect gray material-icons dropdown-trigger"
data-target="dropdown2">more_vert</i>
<i class="material-icons nex gray waves-effect" title="@@clearToot@@(Ctrl+Shit+C)"
data-trans-title="post_box_clear" id="clear">clear</i>
</div>
@@ -190,7 +192,7 @@
</div>
</div>
<!-- 公開範囲 Dropdown Structure -->
<ul id='dropdown1' class='dropdown-content'>
<ul id="dropdown1" class="dropdown-content">
<li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">@@selectVis@@
</li>
<li>
@@ -213,10 +215,7 @@
</li>
</ul>
<!-- その他 Dropdown Structure -->
<ul id='dropdown2' class='dropdown-content'>
<li>
<a onclick="adobe()">@@adobephoto@@</a>
</li>
<ul id="dropdown2" class="dropdown-content">
<li>
<a onclick="nowplaying('spotify');">@@NPSpotify@@</a>
</li>
@@ -236,9 +235,9 @@
<!--END hidden area-->
</div>
<div id="toot-btn-field">
<button class="btn waves-effect indigo unmize toot-btn-group" onclick="post()"
<button class="btn waves-effect unmize toot-btn-group" onclick="post()"
id="toot-post-btn">@@toot@@</button>
<button class="btn waves-effect indigo darken-3 unmize hide toot-btn-group" onclick="sec()"
<button class="btn waves-effect darken-3 unmize hide toot-btn-group" onclick="sec()"
id="toot-sec-btn"><i class="material-icons" id="toot-sec-icon"
title="@@sectoot@@">lock_open</i></button>
</div>
@@ -311,10 +310,14 @@
<input type="text" class="mastodon-choice" placeholder="@@choice@@2">
<input type="text" class="mastodon-choice" placeholder="@@choice@@3">
<input type="text" class="mastodon-choice" placeholder="@@choice@@4">
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
<label for="poll-multiple">@@pollmulti@@</label><br>
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
<label for="poll-until">@@polluntil@@</label><br>
<label>
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
<span>@@pollmulti@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
<span>@@polluntil@@</span>
</label>
<input type="number" style="width:50px" id="days_poll" placeholder="d" value="0">@@days@@
<input type="number" style="width:50px" id="hours_poll" placeholder="h" value="0">@@hours@@
<input type="number" style="width:50px" id="mins_poll" placeholder="m" value="6">@@mins@@
@@ -325,7 +328,7 @@
<!-- Modal Structure Tootdata-->
<div id="tootmodal" class="modal modal-fixed-footer">
<div class="modal-content">
<ul class="collapsible" data-collapsible="accordion" id="det-col">
<ul class="collapsible" id="det-col">
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">people_outline</i>@@afterLTL@@
@@ -463,7 +466,9 @@
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data"
id="his-end-btn" onclick="pinUser()">@@endorse@@</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin"
onclick="profbrws()">@@openinbrowser@@</a><br>
onclick="profbrws()">@@openinbrowser@@</a>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-my-data" id="his-main-acct"
onclick="setMain()" style="width: calc(100% - 10px)">@@mainacct@@</a><br>
</div><br>
<div id="his-matching-list">
@@likeUserDes@@<br>
@@ -474,46 +479,46 @@
</div>
<div class="his-float" id="his-float-timeline">
<div id="my-data-nav">
<ul class="custom-tabs transparent">
<li class="custom-tab col my-data-width active-back column-first">
<ul class="tabs transparent">
<li class="tab col my-data-width active-back column-first">
<a go="#his-tl" title="@@timeline@@"><i class="material-icons">timeline</i></a>
</li>
<li class="custom-tab col my-data-width">
<li class="tab col my-data-width">
<a go="#his-follow-list" title="@@follow@@"><i class="material-icons">people</i></a>
</li>
<li class="custom-tab col my-data-width">
<li class="tab col my-data-width">
<a go="#his-follower-list" title="@@follower@@"><i
class="material-icons">people</i></a>
</li>
<li class="custom-tab col my-data-width only-his-data">
<li class="tab col my-data-width only-his-data">
<a go="#his-action" title="@@operateOtherAcct@@"><i
class="material-icons">account_box</i></a>
</li>
<li class="custom-tab col my-data-width only-his-data">
<li class="tab col my-data-width only-his-data">
<a go="#his-list" title="@@list@@"><i class="material-icons">list</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-fav-list" title="@@favRegist@@"><i class="material-icons">star</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-blocking-list" title="@@blocks@@"><i class="material-icons">block</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-blocking-list" title="@@blocks@@"><i
class="material-icons">voice_over_off</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-domain-list" title="@@domainBlock@@"><i
class="material-icons">language</i><i class="material-icons">block</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-prof-list" title="@@editProf@@"><i class="material-icons">create</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-request-list" title="@@followReq@@"><i
class="material-icons">how_to_reg</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-follow-recom-list" title="@@frc@@"><i
class="material-icons">recent_actors</i></a>
</li>
@@ -621,7 +626,7 @@
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn"
onclick="follow()">@@follow@@</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn"
onclick="mute()">@@mute@@</a>
onclick="muteDo()">@@mute@@</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn"
onclick="block()">@@block@@</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">@@close@@</a>
@@ -662,7 +667,7 @@
<!-- Modal Structure Video-->
<div id="videomodal" class="modal modal-fixed-footer">
<div class="modal-content">
<video src="" id="video" style="max-width:100%; max-height:100%;" controls>
<video src="" id="video" style="max-width:100%; max-height:100%;" controls loop="true" autoplay="true">
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
@@ -675,26 +680,21 @@
<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-Usamin_18-5-0" class="release-do" style="display:none; ">
<div id="release-Usamin_18-7-1" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv Fanboxでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Usamin (18.5.0)</h5>
アップデータについて修正<br>
本来不要なところにフォロリク許可画面が出るようになっていたのを修正。<br>
不明なメディアに対するリンクを表示します<br>
PleromaでのVideoの挙動について修正しました<br>
Patreonでの支援を開始しました。<br>
アスタルテの新しいBBCodeに対応しました<br>
タイムライン下の方が切れてしまう不具合修正。<br>
通知をユーザーごとにフィルターする機能(最新のMastodonのみ)<br>
Electron 5.0.1になりました<br>
<br>
<h5>ThinkingDeskラベル</h5>
<img src="../../img/thinkingdesk.png" style="width:100px;" draggable="false"><br>
手作りマットラベル。貼ってはがせる。300円なのでポイントの余りでどうぞ。<br>
<a href="https://item.mercari.com/jp/m822743330" target="_blank">メルカリ</a>へ。
<h5>Release Note Usamin (18.7.1)</h5>
Electron 6.0.0<br>
画像ビューアーを開いているときに画像を矢印キーで切り替えられないバグを修正。<br>
コンテキストを上手く取得できないバグを修正<br>
タグサジェストがパワーアップ<br>
動画が自動再生(モーダル表示時)、ループ(モーダル, Pleroma, MisskeyのTL上)する<br>
絵文字(カスタム絵文字/Twemoji)をミュートワードに追加できるように<br>
絵文字が入ったURLに関する不具合修正。<br>
blurhash非対応インスタンスでのNSFW画像のblurを改修<br>
Pleroma等でアカウント情報が無い時があるため、それに関して修正<br>
</div>
<div id="release-en" style="display:none">
<h5>Let's make it native!</h5>
@@ -707,8 +707,8 @@
href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
@@PixivSupport@@
</a>
<a class="btn-share btn waves-effect waves-light red darken-2"
href="https://www.patreon.com/cutls" target="_blank">
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls"
target="_blank">
@@PatreonSupport@@
</a>
<a class="btn-share btn waves-effect waves-light blue"
@@ -881,20 +881,34 @@
<input type="hidden" id="filter-edit-id">
<input type="text" style="width:150px" id="filter-add-word" placeholder="@@filterWord@@"><br>
@@degree@@<br>
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
<label for="home_filter">@@home@@</label>
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
<label for="local_filter">@@local@@</label>
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
<label for="notf_filter">@@notf@@</label>
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
<label for="conv_filter">@@conver@@</label><br>
<label>
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
<span>@@home@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
<span>@@local@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
<span>@@notf@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
<span>@@conver@@</span>
</label>
@@option@@<br>
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
<label for="wholeword_filter">@@matchWord@@</label><br>
<label>
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
<span>@@matchWord@@</span>
</label>
<br>
<span class="sml">@@warnMatchWord@@</span><br>
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
<label for="except_filter">@@except@@</label><br>
<label>
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
<span>@@except@@</span>
</label>
<br>
<span class="sml">@@exceptWorn@@</span><br>
@@avalableBefore@@<span class="sml">@@warnAvBefore@@<b>@@warnAvBefore2@@</b></span><br><br>
<input type="number" style="width:50px" id="days_filter" placeholder="d" value="0">@@days@@
@@ -937,7 +951,7 @@
<div id="bottom" class="reverse">
<div class="leftside reverse">
<div id="dambox">
<button id="posttgl" class="btn waves-effect indigo"
<button id="posttgl" class="btn waves-effect"
style="width: 100%;height: 2.5rem;line-height: 0;margin: 0;">
<i class="material-icons"
style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;">edit</i>@@toot@@
@@ -990,6 +1004,56 @@
</div>
</div>
</div>
<!--Support me-->
<div id="support-btm" class="z-depth-4 hide">
<div id="support-btm-ja">
<h5>ご支援いただけませんか?</h5>
(これは支援の有無に関わらず定期的に出ます。)<br>
あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。<br>
乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。<br>
<br>
あなたはMastodon, MisskeyクライアントにTheDeskを選びました。これは奇跡的なことです。今考えればブラウザからアクセスした方が良かったのではと感じることかと存じます。<br>
それでも、あなたはTheDeskを使っています。<br>
TheDeskは2018年1月13日に最初のバージョンが出ました。それから圧倒的な機能数でゴリ押しするクライアントになっています。<br>
新機能に追従を図るためのモチベーションもさることながら、安全対策上TheDeskは開発者の緊急メッセージを表示できる機能が備わっており、開発者が送信ボタンを押すとすべてのTheDeskユーザーに通知が行くようになっています。<br>
かつてこれによってバグ報告を行い、使用を自粛していただくこともありました。<br>
そのような機能を実装するために、Mastodonなどのインスタンスを運営するのと同じく有料のサーバーを運用しています。<br>
<b>全てのユーザーが安心してTheDeskを使っていただける環境のため</b>にも、ぜひご支援をご検討ください。<br>
<b>@@TheDeskDes@@</b>
</div>
<div id="support-btm-en" class="hide">
<h5>Support me</h5>
It may disturb your Mastodon life, but your support is required to keep TheDesk awesome!<br>
<b>@@TheDeskDes@@</b>
</div>
<div id="support-btm-middle">
<h5>@@monthly@@</h5>
<a class="btn-share btn waves-effect waves-light red lighten-2"
href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
@@PixivSupport@@
</a>
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls"
target="_blank">
@@PatreonSupport@@
</a>
</div>
<div id="support-btm-right">
<h5>@@once@@</h5>
<a class="btn-share btn waves-effect waves-light blue"
href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
@@AWLSupport@@
</a>
<br>
@@SendAmazonGift1@@<a href="mailto:web-pro@cutls.com"
target="_blank">web-pro@cutls.com</a>@@SendAmazonGift2@@<br>
Kyash<br>
<img src="../../img/kyash.png" width="100"><br>
</div>
<div id="support-btm-close">
<button class="btn waves-effect" style="width:100%;" onclick="closeSupport()"
id="add-filter-btn">@@close@@</button>
</div>
</div>
<!--左下メッセージ-->
<div id="message">
</div>

View File

@@ -8,7 +8,7 @@
"nsfwDes":"Mark media as sensitive",
"cwDes":"Hide text behind warning",
"selfile":"Attach..",
"adobephoto":"Adobe Photo Editor",
"insertEmoji":"Emojis",
"NPSpotify":"NowPlaying(Spotify)",
"NPiTunes":"NowPlaying",
@@ -88,6 +88,7 @@
"likeHimOrHer":"Resembling",
"endorse":"Feature on profile",
"openinbrowser":"Open in browser",
"mainacct":"Set it an main account",
"frc":"Suggest",
"more":"More",
"revoverJP":" to ",
@@ -113,7 +114,8 @@
"AWLSupport":"Amazon Wish List",
"SendAmazonGift1":"Give me Amazon Gift Card:",
"SendAmazonGift2":"",
"sendSushi":"Osushi.love: give me sushi",
"monthly":"Monthly",
"once":"Once",
"local":"Local",
"localMedia":"Local(Media)",
"home":"Home",

View File

@@ -8,7 +8,6 @@
"nsfwDes":"画像に制限を付与",
"cwDes":"コンテンツワーニング(トゥートを表示する前にメッセージで隠す)",
"selfile":"ファイルを選択",
"adobephoto":"Adobeフォトエディタ",
"insertEmoji":"絵文字を挿入",
"NPSpotify":"NowPlaying(Spotify)",
"NPiTunes":"NowPlaying",
@@ -90,6 +89,7 @@
"more":"もっと",
"endorse":"紹介する",
"openinbrowser":"ブラウザで開く",
"mainacct":"メインアカウントに設定",
"revoverJP":"する",
"warnUseOtherAcct":"(解除はできません。)",
"revoverJPde":"で",
@@ -113,7 +113,8 @@
"AWLSupport":"Amazonほしいものリスト",
"SendAmazonGift1":"",
"SendAmazonGift2":"にAmazonギフトカードを送る",
"sendSushi":"Osushi.loveで寿司を贈る",
"monthly":"月額支援(大歓迎)",
"once":"一度限りの支援(もちろん歓迎)",
"local":"ローカル",
"localMedia":"ローカル(メディア)",
"home":"ホーム",

View File

@@ -8,7 +8,6 @@
"nsfwDes": "crwdns389:0crwdne389:0",
"cwDes": "crwdns390:0crwdne390:0",
"selfile": "crwdns391:0crwdne391:0",
"adobephoto": "crwdns392:0crwdne392:0",
"insertEmoji": "crwdns393:0crwdne393:0",
"NPSpotify": "crwdns1880:0crwdne1880:0",
"NPiTunes": "crwdns2404:0crwdne2404:0",

View File

@@ -1,187 +1,192 @@
{
"setting":"Preferences",
"set":"Save",
"yes":"Yes",
"no":"No",
"none":"None",
"default":"Default",
"change":"Change",
"select":"Select",
"env":"System Preferences",
"setlang":"Languages",
"backup":"Import and export of preferences",
"import":"Import",
"export":"Export",
"hardwareAcceleration":"Disable hardware acceleration",
"hardwareAccelerationWarn":"Auto restarted",
"theme":"Themes",
"popup":"Popup notification(on Windows)",
"popupwarn":"Hide to set \"0\"",
"s":"sec",
"nativenotf":"Native notification",
"nnwarn":"This does not work on Windows Portable ver.",
"nntest":"Notification test",
"minwidth":"Minimum width of columns",
"minwidthwarn":"Scroll bar will be shown when your window size is more than ammounts of columns.",
"fixwidth":"Minimum width of TweetDeck browser",
"fixwidthwarn":"",
"above":"above",
"font":"Font",
"fontwarn":"Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize":"Font size",
"savefolder":"Folder to save",
"savefolderwarn":"TheDesk uses this value when it try to save pictures or take screenshots.",
"absolute":"absolute value",
"themeSel":"Select theme",
"customtheme":"Edit and add custom themes",
"customthemeDirection":"Color scheme",
"primary":"Background color",
"secondarycolor":"Background of components",
"text":"Text color",
"accent":"Background of boosts",
"add_new":"Add new",
"name":"Name",
"desc":"About this theme",
"customShare":"Share this code with other TheDesk. Do not share this code with MiAS.",
"customImport":"Import of custom themes",
"delete":"Delete",
"cImpWarn":"Get more themes on <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>",
"timeline":"Timeline Preferences",
"timemode":"Time format",
"relativetime":"Relative format:\"1 minutes ago\",\"3 days ago\"",
"absolutetime":"Absolute format:\"23:25:21\",\"2017/12/30 23:59:00\"",
"mixtime":"Mixed format:toots posted today are relative-format, others are absolute-format.",
"relativesel":"Relative",
"absolutesel":"Absolute",
"doublesel":"Both relative and absolute",
"mixsel":"Mixed",
"locale":"Server's unique locale",
"localewarn":"This value is available on some Japanese servers",
"nswf":"Hide NSFW pictures",
"nsfwwarn":"Strong blur effect",
"cw":"Hide CW contents",
"replyct":"Reply counter style",
"replyct_hidden":"Show 1+ if the replies are more than 1.",
"replyct_full":"Show full count(1,2...)",
"gif":"Animated GIF images animation",
"box":"Action of posting-box",
"boxyes":"Folding",
"boxabs":"Absolutely open",
"boxno":"Open after posting",
"tag":"Tag TL Search",
"tagfed":"Use federated network",
"taglocal":"Use local network",
"via":"Show via",
"mouseover":"Hide action buttons without mouseover",
"mouseoverwarn":"You may feel 'mouseover' is unconfortable:(",
"mv":"Mouseover to show",
"mvclick":"Click to show",
"notfmarker":"Show Notification marker, red colored bell and counter(if you show a notification column.)",
"autofold":"Auto folding",
"autofoldwarn":"TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.",
"lines":"lines",
"letters":"letters",
"or":"or",
"imgheight":"Height of images",
"imgheightwarn":"Option:Set \"full\" to uncrop.",
"ticker":"Enable #InstanceTicker",
"tickerwarn":"Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
"animation":"Animation of timelines",
"replySound":"Sound(Reply)",
"favSound":"Sound(Fav)",
"btSound":"Sound(Boost)",
"followSound":"Sound(Follow)",
"customSound":"Custom sound",
"post":"Posting Preferences",
"autocw":"Alert before posting a long toot.",
"autocwwarn":"Show dialog whether you make too-long text hidden.",
"defaultcw":"Default warining text",
"cws":"Always CW set",
"defaultvis":"Default visibility",
"public":"Public",
"unlisted":"Unlisted",
"private":"Private",
"direct":"Direct",
"memory":"Memory(memorized as each server)",
"useapi":"Default of your visibility(Set on preferences of Mastodon server)",
"postimg":"Posting images preferences",
"showurl":"Insert media URL",
"nourl":"Insert nothig",
"disabled":"Disabled",
"quote":"Quote format",
"simple":"Only URL",
"mention":"URL and acct(mention to the user)",
"full":"URL, text and acct(mention to the user)",
"notqt":"Disabled(Hide buttons on TLs)",
"main":"Default accounts of actions",
"mainwarn":"Main account can be set on Account Manager.",
"lastacct":"Account you used recently",
"usemainacct":"Main account",
"secondary":"Secondary Toot Button",
"secwarn":"Toot with other visibility setting",
"nothing":"Hidden",
"localonly":"Local Only",
"zeroWidthEmoji":"Zero-width space when inserting emojis",
"keysc":"Keyboard shortcut Preferences",
"iks":"Easy inserter",
"okswarn":"You can insert any letters and emojis with only 3 keys",
"muteemp":"Mute & Emphasis Preferences",
"climute":"Client Mute",
"cliemp":"Client Emphasis",
"cliwarn":"Click client name on toots to toggle mute and emphasis.",
"enter":"Enter to set",
"wordmute":"Words Mute",
"wordemp":"Words Emphasis",
"useremp":"Users Emphasis",
"useerempwarn":"Set on users data modals.",
"empcolorwarn":"Use this color to emphasis",
"spotify":"Spotify and NowPlaying Preferences",
"npProvider":"NowPlaying Provider(Windows)",
"npPeoviderWarn":"macOS and Linux are not supported. AIMP and iTunes were checked by developer. <br>CAD:foobar2000, MusicBee,J. River Media Center, Media Jukebox<br>WLM:Last.fm Client, TTPlayer, OpenPandora, Zune.<br> For foobar2000, <a href=\"http://poiru.github.com/foo-cad/\">foo_cad plugin</a> is required. And MusicBee requires CAD.",
"spotifynote1":"Click ",
"spotifynote2":"icon to NowPlaying",
"link":"Account Connection",
"linkwarn":"TheDesk save your data on thedesk.top server.",
"connect":"Connect",
"disconnect":"Disconnect",
"templeteedit":"Edit a template",
"templeteeditwarn":"",
"templete1":"Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
"templete2":"macOS:{song}:Song name/{album}:Album name/{artist}:Artist name/composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre}",
"templete3":"Windows:{song}:Song name/{album}:Album name/{artist}:Artist name",
"postartwork":"Attach an Artwork of Spotify",
"tts":"TTS(text to speech) Preferences",
"speed":"Speed",
"speedwarn":"1-100(default:10)",
"pitch":"Pitch",
"pitchwarn":"0-100(default:50)",
"vol":"Volume",
"volwarn":"0-100(default:100)",
"test":"Test",
"sample":"TheDesk is an open-source Mastodon client for PC.",
"playstop":"Play/Stop",
"back":"Back",
"keyscs":"Keyboard shortcuts",
"keyscr":"Jump to n(1-9)th column",
"keynew":"Open toot box",
"keytoggle":"Toggle toot box",
"keypost":"Post",
"keysecpost":"Post(secondary toot)",
"keyunread":"Make all notifications read",
"keyesc":"Hide toot box",
"keyf5":"Super Reload",
"keyclear":"Clear toot box",
"keyacctman":"Account Manager",
"keyshowprof":"Show profile of selecting",
"keyrow":"Show next or previous image",
"keyzoom":"Mousewheel:Zoom a image",
"reset":"Reset(Danger)",
"resetconfirm":"Delete all data. You cannot undo. Continue?",
"about":"About TheDesk",
"hp":"Website",
"support":"Support",
"help":"Help",
"sushi":"Give me a sushi!",
"checkup":"Check update",
"ossJP":""
"setting": "Preferences",
"set": "Save",
"yes": "Yes",
"no": "No",
"none": "None",
"default": "Default",
"change": "Change",
"select": "Select",
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
"import": "Import",
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"theme": "Themes",
"popup": "Popup notification(on Windows)",
"popupwarn": "Hide to set \"0\"",
"s": "sec",
"nativenotf": "Native notification",
"nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test",
"minwidth": "Minimum width of columns",
"minwidthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "",
"above": "above",
"font": "Font",
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size",
"savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.",
"absolute": "absolute value",
"themeSel": "Select theme",
"customtheme": "Edit and add custom themes",
"customthemeDirection": "Color scheme",
"primary": "Background color",
"secondarycolor": "Background of components",
"text": "Text color",
"accent": "Background of boosts",
"add_new": "Add new",
"name": "Name",
"desc": "About this theme",
"customShare": "Share this code with other TheDesk. Do not share this code with MiAS.",
"customImport": "Import of custom themes",
"delete": "Delete",
"cImpWarn": "Get more themes on <a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
"absolutetime": "Absolute format:\"23:25:21\",\"2017/12/30 23:59:00\"",
"mixtime": "Mixed format:toots posted today are relative-format, others are absolute-format.",
"relativesel": "Relative",
"absolutesel": "Absolute",
"doublesel": "Both relative and absolute",
"mixsel": "Mixed",
"locale": "Server's unique locale",
"localewarn": "This value is available on some Japanese servers",
"nswf": "Hide NSFW pictures",
"nsfwwarn": "Strong blur effect",
"cw": "Hide CW contents",
"replyct": "Reply counter style",
"replyct_hidden": "Show 1+ if the replies are more than 1.",
"replyct_full": "Show full count(1,2...)",
"gif": "Animated GIF images animation",
"box": "Action of posting-box",
"boxyes": "Folding",
"boxabs": "Absolutely open",
"boxno": "Open after posting",
"tag": "Tag TL Search",
"tagfed": "Use federated network",
"taglocal": "Use local network",
"via": "Show via",
"mouseover": "Hide action buttons without mouseover",
"mouseoverwarn": "You may feel 'mouseover' is unconfortable:(",
"mv": "Mouseover to show",
"mvclick": "Click to show",
"notfmarker": "Show Notification marker, red colored bell and counter(if you show a notification column.)",
"autofold": "Auto folding",
"autofoldwarn": "TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.",
"lines": "lines",
"letters": "letters",
"or": "or",
"imgheight": "Height of images",
"imgheightwarn": "Option:Set \"full\" to uncrop.",
"ticker": "Enable #InstanceTicker",
"tickerwarn": "Show colorful stickers about the server. <a href=\"https://cdn.weep.me/mastodon/\">About #InstanceTicker</a> Copyright 2018 weepjp, kyori19.",
"animation": "Animation of timelines",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",
"followSound": "Sound(Follow)",
"customSound": "Custom sound",
"post": "Posting Preferences",
"autocw": "Alert before posting a long toot.",
"autocwwarn": "Show dialog whether you make too-long text hidden.",
"defaultcw": "Default warining text",
"cws": "Always CW set",
"defaultvis": "Default visibility",
"public": "Public",
"unlisted": "Unlisted",
"private": "Private",
"direct": "Direct",
"memory": "Memory(memorized as each server)",
"useapi": "Default of your visibility(Set on preferences of Mastodon server)",
"postimg": "Posting images preferences",
"showurl": "Insert media URL",
"nourl": "Insert nothig",
"disabled": "Disabled",
"quote": "Quote format",
"simple": "Only URL",
"mention": "URL and acct(mention to the user)",
"full": "URL, text and acct(mention to the user)",
"notqt": "Disabled(Hide buttons on TLs)",
"main": "Default accounts of actions",
"mainwarn": "Main account can be set on Account Manager.",
"lastacct": "Account you used recently",
"usemainacct": "Main account",
"secondary": "Secondary Toot Button",
"secwarn": "Toot with other visibility setting",
"nothing": "Hidden",
"localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis",
"keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys",
"muteemp": "Mute & Emphasis Preferences",
"climute": "Client Mute",
"cliemp": "Client Emphasis",
"cliwarn": "Click client name on toots to toggle mute and emphasis.",
"enter": "Enter to set",
"wordmute": "Words Mute",
"wordemp": "Words Emphasis",
"useremp": "Users Emphasis",
"useerempwarn": "Set on users data modals.",
"empcolorwarn": "Use this color to emphasis",
"spotify": "Spotify and NowPlaying Preferences",
"npProvider": "NowPlaying Provider(Windows)",
"npPeoviderWarn": "macOS and Linux are not supported. AIMP and iTunes were checked by developer. <br>CAD:foobar2000, MusicBee,J. River Media Center, Media Jukebox<br>WLM:Last.fm Client, TTPlayer, OpenPandora, Zune.<br> For foobar2000, <a href=\"http://poiru.github.com/foo-cad/\">foo_cad plugin</a> is required. And MusicBee requires CAD.",
"spotifynote1": "Click ",
"spotifynote2": "icon to NowPlaying",
"link": "Account Connection",
"linkwarn": "TheDesk save your data on thedesk.top server.",
"connect": "Connect",
"disconnect": "Disconnect",
"templeteedit": "Edit a template",
"templeteeditwarn": "",
"templete1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
"templete2": "macOS:{song}:Song name/{album}:Album name/{artist}:Artist name/composer:{composer}/spampling rate:{hz}/bit rate:{bitRate}/genre:{genre}",
"templete3": "Windows:{song}:Song name/{album}:Album name/{artist}:Artist name",
"postartwork": "Attach an Artwork of Spotify",
"tts": "TTS(text to speech) Preferences",
"speed": "Speed",
"speedwarn": "1-100(default:10)",
"pitch": "Pitch",
"pitchwarn": "0-100(default:50)",
"vol": "Volume",
"volwarn": "0-100(default:100)",
"test": "Test",
"sample": "TheDesk is an open-source Mastodon client for PC.",
"playstop": "Play/Stop",
"back": "Back",
"keyscs": "Keyboard shortcuts",
"keyscr": "Jump to n(1-9)th column",
"keynew": "Open toot box",
"keytoggle": "Toggle toot box",
"keypost": "Post",
"keysecpost": "Post(secondary toot)",
"keyunread": "Make all notifications read",
"keyesc": "Hide toot box",
"keyf5": "Super Reload",
"keyclear": "Clear toot box",
"keyacctman": "Account Manager",
"keyshowprof": "Show profile of selecting",
"keyrow": "Show next or previous image",
"keyzoom": "Mousewheel:Zoom a image",
"whenSelected": "When a toot is selected: ",
"fav": "Favourite this toot",
"bt": "Boost this toot",
"reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?",
"about": "About TheDesk",
"hp": "Website",
"support": "Support",
"help": "Help",
"sushi": "Give me a sushi!",
"checkup": "Check update",
"ossJP": ""
}

View File

@@ -1,187 +1,192 @@
{
"setting":"設定",
"set":"設定",
"yes":"はい",
"no":"いいえ",
"none":"なし",
"default":"既定",
"change":"変更",
"select":"選択",
"env":"環境設定",
"setlang":"言語",
"backup":"設定のインポートとエクスポート",
"import":"インポート",
"export":"エクスポート",
"hardwareAcceleration":"ハードウェアアクセラレーションの無効化",
"hardwareAccelerationWarn":"表示(特に設定画面)が乱れる場合に「はい」を選択してください。自動で再起動します。",
"theme":"テーマの設定",
"popup":"新規通知のポップアップお知らせの表示秒数",
"popupwarn":"0に設定すると表示されません",
"s":"秒",
"nativenotf":"ネイティブ通知設定",
"nnwarn":"Portableバージョンでは表示できません。",
"nntest":"通知テスト",
"minwidth":"マルチカラムの最低横幅",
"minwidthwarn":"画面全体の横幅÷コラム数がこの値を超えた時、横スクロールとなります。",
"fixwidth":"TweetDeckの限定の最低横幅",
"fixwidthwarn":"",
"above":"以上",
"font":"フォント",
"fontwarn":"「選択」を押してフォントを選んでください。(Linuxでは動きません)",
"fontsize":"フォントサイズ",
"savefolder":"デフォルトの保存先",
"savefolderwarn":"画像ダウンロードやスクリーンショットに影響します。",
"absolute":"絶対指定",
"themeSel":"テーマの選択",
"customtheme":"カスタムテーマの作成・編集",
"customthemeDirection":"色の系統",
"primary":"全体の背景色など",
"secondarycolor":"補助要素に使われる背景色",
"text":"テキストの色",
"accent":"ブーストの背景色など",
"add_new":"新規作成",
"name":"名前",
"desc":"説明",
"customShare":"このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。詳細:<a href=\"https://thedesk.top/mias.html\" target=\"_blank\">テーマ互換性</a>",
"customImport":"カスタムテーマのインポート",
"delete":"削除",
"cImpWarn":"<a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>上の80を超えるテーマを張り付けることもできます。",
"timeline":"タイムラインの設定",
"timemode":"時間表記設定",
"relativetime":"相対時間の例:\"1分前\",\"3日前\"",
"absolutetime":"絶対時間の例\"23:25:21\",\"2017年12月30日 23:59:00\"",
"mixtime":"混合表示は、当日のトゥートのみ相対、それ以外は絶対で表示 ",
"relativesel":"相対時間",
"absolutesel":"絶対時間",
"doublesel":"両方表示",
"mixsel":"混合表示",
"locale":"独自ロケールを使用",
"localewarn":"対応サーバーではそのサーバーにあわせた言語表示ができます。",
"nswf":"非表示設定の画像(NSFW)を隠す",
"nsfwwarn":"きつめのぼかしがかかります。",
"cw":"非表示設定のテキスト(CW)を隠す",
"replyct":"リプライ数表示",
"replyct_hidden":"2以上のとき1+と表示",
"replyct_full":"完全に表示",
"gif":"アイコンのアニメーションを再生する",
"box":"投稿ボックスの挙動",
"boxyes":"たたむ",
"boxabs":"枠外クリックで閉じない(起動時に展開)",
"boxno":"投稿後も隠さない",
"tag":"タグタイムラインの表示範囲",
"tagfed":"接続しているサーバー",
"taglocal":"検索対象のサーバーのみ",
"via":"viaを表示する",
"mouseover":"アクションメニューを非表示",
"mouseoverwarn":"「マウスオーバー」はすこし鬱陶しいと思うかもしれません。",
"mv":"マウスオーバーで表示",
"mvclick":"クリックで表示",
"notfmarker":"通知を開いているとき、通知新着お知らせを表示する",
"autofold":"指定行数以上を折りたたむ",
"autofoldwarn":"5文字以下のトゥートは折りたたみません。また、折りたたみ時は改行が描画されません。改行のみを行数とカウントします。",
"lines":"行",
"letters":"文字",
"or":"または",
"imgheight":"画像の高さ",
"imgheightwarn":"オプション:「full」と指定すると全ての画像をクロップしません。",
"ticker":"#InstanceTickerを使う",
"tickerwarn":"トゥートした人の所属サーバーをわかりやすく彩ります(自サーバー以外のトゥート向け)。<a href=\"https://cdn.weep.me/mastodon/\">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.",
"animation":"タイムラインのアニメーション",
"replySound":"リプライの通知音",
"favSound":"お気に入り登録の通知音",
"btSound":"ブーストの通知音",
"followSound":"フォローの通知音",
"customSound":"カスタム通知音",
"post":"投稿設定",
"autocw":"長文投稿時に警告",
"autocwwarn":"下で指定した以上のトゥートを投稿するときにCWするかのダイアログを表示します。",
"defaultcw":"デフォルトの警告文",
"cws":"標準でCWを設定",
"defaultvis":"デフォルトの公開設定",
"public":"公開(Public)",
"unlisted":"未収載(Unlisted)",
"private":"非公開(Private)",
"direct":"ダイレクト(Direct)",
"memory":"前回の投稿設定を記憶する(サーバーごとに記憶されます)",
"useapi":"マストドンアカウント設定の既定値",
"postimg":"画像投稿設定",
"showurl":"画像を投稿し、画像のURLを最後に表示",
"nourl":"画像を投稿するがURLは表示しない",
"disabled":"現在利用できません。",
"quote":"引用形式",
"simple":"URLのみ",
"mention":"URLとアカウント名(相手に通知)",
"full":"本文・URL・アカウント名",
"notqt":"使わない(TL上にボタンも表示されません)",
"main":"投稿後や起動時のアカウント",
"mainwarn":"メインアカウントはアカウント設定で指定できます。投稿以外のアカウント選択にも影響します。",
"lastacct":"最後に使用したアカウント",
"usemainacct":"メインアカウント",
"secondary":"セカンダリートゥートボタン",
"secwarn":"公開範囲の変更とトゥートを一発でできます。",
"nothing":"表示しない",
"localonly":"ローカル限定",
"zeroWidthEmoji":"絵文字にゼロ幅スペースを使う",
"keysc":"キーボードショートカットの設定",
"iks":"簡単文字入力",
"okswarn":"絵文字やタグ、&gt;BTなどを登録しておくとすぐに入力できます。",
"muteemp":"ミュート・強調の設定",
"climute":"クライアントミュート",
"cliemp":"クライアント強調",
"cliwarn":"各トゥートのクライアントをクリックすると設定できます。",
"enter":"Enterで確定",
"wordmute":"ワードミュート",
"wordemp":"ワード強調",
"useremp":"ユーザー強調",
"useerempwarn":"各ユーザーのデータ表示画面で設定できます。",
"empcolorwarn":"強調色(テーマによって異なります。)",
"spotify":"SpotifyとNowPlayingの設定",
"npProvider":"NowPlayingのソース(Windows)",
"npPeoviderWarn":"macOSやLinuxでは動作しません。AIMPとiTunes以外未検証です。<br>foobar2000, MusicBee,J. River Media Center, Media JukeboxはCADを、Last.fm Client, TTPlayer, OpenPandora, ZuneはWLMを選んでください。<br>ただし、foobar2000は<a href=\"http://poiru.github.com/foo-cad/\">foo_cad plugin</a>が必要です。MusicBeeもCADを有効にする必要があります。",
"spotifynote1":"",
"spotifynote2":"ボタンから簡単にNowPlayingができます。",
"link":"アカウントの連携",
"linkwarn":"APIの性質上thedesk.topへアクセスします。",
"connect":"接続",
"disconnect":"切断",
"templeteedit":"テンプレートの編集",
"templeteeditwarn":"以下を編集してテンプレートを変更できます。",
"templete1":"Spotify:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/{url}:各曲のSpotifyのURL",
"templete2":"macOS:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/作曲家{composer}/サンプルレート{hz}/ビットレート{bitRate}/ジャンル{genre}",
"templete3":"Windows:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名",
"postartwork":"アルバムアートワークを添付する(Spotify/Windows)",
"tts":"読み上げの設定",
"speed":"読み上げの速さ",
"speedwarn":"1-100まで、デフォルトは10。",
"pitch":"読み上げの高さ",
"pitchwarn":"0-100まで、デフォルトは50。(大きくなるほど高い)",
"vol":"読み上げの音量",
"volwarn":"0-100まで、デフォルトは100。",
"test":"テスト",
"sample":"これはテスト音声です。TheDeskはオープンソースのPC向けマストドンクライアントです。マルチサーバーやマルチカラムに対応しています。",
"playstop":"再生/停止",
"back":"戻る",
"keyscs":"キーボードショートカット一覧",
"keyscr":"1番目9番目のTLにスクロール",
"keynew":"投稿パネルを開く",
"keytoggle":"投稿パネルを開閉",
"keypost":"投稿",
"keysecpost":"投稿(セカンダリートゥート)",
"keyunread":"全ての通知を既読にする",
"keyesc":"投稿パネルを消す",
"keyf5":"スーパーリロード",
"keyclear":"入力内容を消す",
"keyacctman":"アカウントマネージャ",
"keyshowprof":"現在選択中のプロフィール",
"keyrow":"イメージビューワー起動時に画像切り替え",
"keyzoom":"マウスホイール:イメージビューワー時に拡大縮小",
"reset":"初期化",
"resetconfirm":"全てのデータを削除します。この操作は取り消せません。",
"about":"このソフトについて",
"hp":"公式HP",
"support":"支援",
"help":"ヘルプ",
"sushi":"寿司を投げる",
"checkup":"アップデートを確認",
"ossJP":"(オープンソースライセンス)"
}
"setting": "設定",
"set": "設定",
"yes": "はい",
"no": "いいえ",
"none": "なし",
"default": "既定",
"change": "変更",
"select": "選択",
"env": "環境設定",
"setlang": "言語",
"backup": "設定のインポートとエクスポート",
"import": "インポート",
"export": "エクスポート",
"hardwareAcceleration": "ハードウェアアクセラレーションの無効化",
"hardwareAccelerationWarn": "表示(特に設定画面)が乱れる場合に「はい」を選択してください。自動で再起動します。",
"theme": "テーマの設定",
"popup": "新規通知のポップアップお知らせの表示秒数",
"popupwarn": "0に設定すると表示されません",
"s": "秒",
"nativenotf": "ネイティブ通知設定",
"nnwarn": "Portableバージョンでは表示できません。",
"nntest": "通知テスト",
"minwidth": "マルチカラムの最低横幅",
"minwidthwarn": "画面全体の横幅÷コラム数がこの値を超えた時、横スクロールとなります。",
"fixwidth": "TweetDeckの限定の最低横幅",
"fixwidthwarn": "",
"above": "以上",
"font": "フォント",
"fontwarn": "「選択」を押してフォントを選んでください。(Linuxでは動きません)",
"fontsize": "フォントサイズ",
"savefolder": "デフォルトの保存先",
"savefolderwarn": "画像ダウンロードやスクリーンショットに影響します。",
"absolute": "絶対指定",
"themeSel": "テーマの選択",
"customtheme": "カスタムテーマの作成・編集",
"customthemeDirection": "色の系統",
"primary": "全体の背景色など",
"secondarycolor": "補助要素に使われる背景色",
"text": "テキストの色",
"accent": "ブーストの背景色など",
"add_new": "新規作成",
"name": "名前",
"desc": "説明",
"customShare": "このコードは他のTheDeskなどとシェアできます。このコードをMiASに貼ることはご遠慮ください。詳細:<a href=\"https://thedesk.top/mias.html\" target=\"_blank\">テーマ互換性</a>",
"customImport": "カスタムテーマのインポート",
"delete": "削除",
"cImpWarn": "<a href=\"https://assets.msky.cafe/\" target=\"_blank\">MiAS</a>上の80を超えるテーマを張り付けることもできます。",
"timeline": "タイムラインの設定",
"timemode": "時間表記設定",
"relativetime": "相対時間の例:\"1分前\",\"3日前\"",
"absolutetime": "絶対時間の例\"23:25:21\",\"2017年12月30日 23:59:00\"",
"mixtime": "混合表示は、当日のトゥートのみ相対、それ以外は絶対で表示 ",
"relativesel": "相対時間",
"absolutesel": "絶対時間",
"doublesel": "両方表示",
"mixsel": "混合表示",
"locale": "独自ロケールを使用",
"localewarn": "対応サーバーではそのサーバーにあわせた言語表示ができます。",
"nswf": "非表示設定の画像(NSFW)を隠す",
"nsfwwarn": "きつめのぼかしがかかります。",
"cw": "非表示設定のテキスト(CW)を隠す",
"replyct": "リプライ数表示",
"replyct_hidden": "2以上のとき1+と表示",
"replyct_full": "完全に表示",
"gif": "アイコンのアニメーションを再生する",
"box": "投稿ボックスの挙動",
"boxyes": "たたむ",
"boxabs": "枠外クリックで閉じない(起動時に展開)",
"boxno": "投稿後も隠さない",
"tag": "タグタイムラインの表示範囲",
"tagfed": "接続しているサーバー",
"taglocal": "検索対象のサーバーのみ",
"via": "viaを表示する",
"mouseover": "アクションメニューを非表示",
"mouseoverwarn": "「マウスオーバー」はすこし鬱陶しいと思うかもしれません。",
"mv": "マウスオーバーで表示",
"mvclick": "クリックで表示",
"notfmarker": "通知を開いているとき、通知新着お知らせを表示する",
"autofold": "指定行数以上を折りたたむ",
"autofoldwarn": "5文字以下のトゥートは折りたたみません。また、折りたたみ時は改行が描画されません。改行のみを行数とカウントします。",
"lines": "行",
"letters": "文字",
"or": "または",
"imgheight": "画像の高さ",
"imgheightwarn": "オプション:「full」と指定すると全ての画像をクロップしません。",
"ticker": "#InstanceTickerを使う",
"tickerwarn": "トゥートした人の所属サーバーをわかりやすく彩ります(自サーバー以外のトゥート向け)。<a href=\"https://cdn.weep.me/mastodon/\">#InstanceTickerについて</a> Copyright 2018 weepjp, kyori19.",
"animation": "タイムラインのアニメーション",
"replySound": "リプライの通知音",
"favSound": "お気に入り登録の通知音",
"btSound": "ブーストの通知音",
"followSound": "フォローの通知音",
"customSound": "カスタム通知音",
"post": "投稿設定",
"autocw": "長文投稿時に警告",
"autocwwarn": "下で指定した以上のトゥートを投稿するときにCWするかのダイアログを表示します。",
"defaultcw": "デフォルトの警告文",
"cws": "標準でCWを設定",
"defaultvis": "デフォルトの公開設定",
"public": "公開(Public)",
"unlisted": "未収載(Unlisted)",
"private": "非公開(Private)",
"direct": "ダイレクト(Direct)",
"memory": "前回の投稿設定を記憶する(サーバーごとに記憶されます)",
"useapi": "マストドンアカウント設定の既定値",
"postimg": "画像投稿設定",
"showurl": "画像を投稿し、画像のURLを最後に表示",
"nourl": "画像を投稿するがURLは表示しない",
"disabled": "現在利用できません。",
"quote": "引用形式",
"simple": "URLのみ",
"mention": "URLとアカウント名(相手に通知)",
"full": "本文・URL・アカウント名",
"notqt": "使わない(TL上にボタンも表示されません)",
"main": "投稿後や起動時のアカウント",
"mainwarn": "メインアカウントはアカウント設定で指定できます。投稿以外のアカウント選択にも影響します。",
"lastacct": "最後に使用したアカウント",
"usemainacct": "メインアカウント",
"secondary": "セカンダリートゥートボタン",
"secwarn": "公開範囲の変更とトゥートを一発でできます。",
"nothing": "表示しない",
"localonly": "ローカル限定",
"zeroWidthEmoji": "絵文字にゼロ幅スペースを使う",
"keysc": "キーボードショートカットの設定",
"iks": "簡単文字入力",
"okswarn": "絵文字やタグ、&gt;BTなどを登録しておくとすぐに入力できます。",
"muteemp": "ミュート・強調の設定",
"climute": "クライアントミュート",
"cliemp": "クライアント強調",
"cliwarn": "各トゥートのクライアントをクリックすると設定できます。",
"enter": "Enterで確定",
"wordmute": "ワードミュート",
"wordemp": "ワード強調",
"useremp": "ユーザー強調",
"useerempwarn": "各ユーザーのデータ表示画面で設定できます。",
"empcolorwarn": "強調色(テーマによって異なります。)",
"spotify": "SpotifyとNowPlayingの設定",
"npProvider": "NowPlayingのソース(Windows)",
"npPeoviderWarn": "macOSやLinuxでは動作しません。AIMPとiTunes以外未検証です。<br>foobar2000, MusicBee,J. River Media Center, Media JukeboxはCADを、Last.fm Client, TTPlayer, OpenPandora, ZuneはWLMを選んでください。<br>ただし、foobar2000は<a href=\"http://poiru.github.com/foo-cad/\">foo_cad plugin</a>が必要です。MusicBeeもCADを有効にする必要があります。",
"spotifynote1": "",
"spotifynote2": "ボタンから簡単にNowPlayingができます。",
"link": "アカウントの連携",
"linkwarn": "APIの性質上thedesk.topへアクセスします。",
"connect": "接続",
"disconnect": "切断",
"templeteedit": "テンプレートの編集",
"templeteeditwarn": "以下を編集してテンプレートを変更できます。",
"templete1": "Spotify:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/{url}:各曲のSpotifyのURL",
"templete2": "macOS:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名/作曲家{composer}/サンプルレート{hz}/ビットレート{bitRate}/ジャンル{genre}",
"templete3": "Windows:{song}:曲名/{album}:アルバム名/{artist}:アーティスト名",
"postartwork": "アルバムアートワークを添付する(Spotify/Windows)",
"tts": "読み上げの設定",
"speed": "読み上げの速さ",
"speedwarn": "1-100まで、デフォルトは10。",
"pitch": "読み上げの高さ",
"pitchwarn": "0-100まで、デフォルトは50。(大きくなるほど高い)",
"vol": "読み上げの音量",
"volwarn": "0-100まで、デフォルトは100。",
"test": "テスト",
"sample": "これはテスト音声です。TheDeskはオープンソースのPC向けマストドンクライアントです。マルチサーバーやマルチカラムに対応しています。",
"playstop": "再生/停止",
"back": "戻る",
"keyscs": "キーボードショートカット一覧",
"keyscr": "1番目9番目のTLにスクロール",
"keynew": "投稿パネルを開く",
"keytoggle": "投稿パネルを開閉",
"keypost": "投稿",
"keysecpost": "投稿(セカンダリートゥート)",
"keyunread": "全ての通知を既読にする",
"keyesc": "投稿パネルを消す",
"keyf5": "スーパーリロード",
"keyclear": "入力内容を消す",
"keyacctman": "アカウントマネージャ",
"keyshowprof": "現在選択中のプロフィール",
"keyrow": "イメージビューワー起動時に画像切り替え",
"keyzoom": "マウスホイール:イメージビューワー時に拡大縮小",
"whenSelected": "選択時",
"fav": "お気に入り登録",
"bt": "ブースト",
"reply": "返信",
"keyselecttop":"一番上の一番左のトゥートを選択",
"reset": "初期化",
"resetconfirm": "全てのデータを削除します。この操作は取り消せません。",
"about": "このソフトについて",
"hp": "公式HP",
"support": "支援",
"help": "ヘルプ",
"sushi": "寿司を投げる",
"checkup": "アップデートを確認",
"ossJP": "(オープンソースライセンス)"
}

View File

@@ -1,5 +1,10 @@
const fs = require("fs")
const ver = "Usamin (18.5.0)"
const readlineSync = require('readline-sync');
let ver = readlineSync.question('version string (empty: default string)? ');
if (!ver) {
ver = "Usamin (18.7.1)"
}
console.log("Constructing view files " + ver + ": make sure to update package.json")
const langs = ["ja", "en", "ps"]
const langsh = ["日本語", "English", "Crowdin translate system(beta)"]
const simples = ["acct", "index", "setting", "update", "setting"]

View File

@@ -11,7 +11,7 @@
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
@@comment-end@@
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
@@ -30,13 +30,14 @@
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.@@lang@@.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="../../node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<h4>@@setting@@</h4>
<ul class="collapsible" data-collapsible="accordion">
@@ -57,15 +58,17 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">@@nntest@@</a><br></template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label v-bind:for="item.id+check.value">{{check.text}}</label>
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
@@ -104,18 +107,36 @@
</div>
<div class="collapsible-body">
<h4>@@themeSel@@</h4>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<label for="black">Black</label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<label for="white">White</label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
<label for="custom">Custom</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<span>Black</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<span>White</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo"
value="indigo" />
<span>Indigo<span class="imas hide">(エンドレスナイト)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<span>Brown<span class="imas hide">(ビタースイート・タイム)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<span>Green<span class="imas hide">(ユースフルロマンス)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="blue" value="blue" />
<span>Blue<span class="imas hide">(渚の花嫁)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom"
value="custom" />
<span>custom</span>
</label>
<div style="width:300px" id="sel-selector">
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
</div>
@@ -131,10 +152,16 @@
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
placeholder="@@desc@@..."></textarea></div>
<h5>@@customthemeDirection@@</h5>
<input class="with-gap" name="direction" type="radio" id="dark" value="dark" checked="true" />
<label for="dark">Dark</label>
<input class="with-gap" name="direction" type="radio" id="light" value="light" />
<label for="light">Light</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="dark" value="dark"
checked="true" />
<span>Dark</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="light"
value="light" />
<span>Light</span>
</label>
<div id="pickers">
<div>
<h5>Primary</h5>@@secondarycolor@@
@@ -167,12 +194,12 @@
</div>
<button class="btn-large waves-effect" onclick="customComp()">@@change@@</button>&nbsp;<button
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
<input type="text" style="width:300px;height:40px;" id="custom_json" class="materialize-textarea"
placeholder="JSON style" readonly><br>
@@customShare@@
<h4>@@customImport@@</h4>
@@cImpWarn@@<br>
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea"
<input type="text" style="width:300px;height:40px;" id="custom_import" class="materialize-textarea"
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">@@import@@</button><br>
</li>
@@ -185,13 +212,15 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label v-bind:for="item.id+check.value">{{check.text}}</label>
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
@@ -230,14 +259,15 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label v-bind:for="item.id+check.value">{{check.text}}</label>
<label><input class="with-gap" v-on:click="complete(i,check.value)"
v-model="item.setValue" type="radio" v-bind:id="item.id+check.value"
v-bind:value="check.value" />
<span>{{check.text}}</span></label>
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template>
</template>
@@ -273,7 +303,6 @@
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
</div>
</li>
<li>
@@ -305,20 +334,38 @@
<div class="collapsible-body">
<h5>@@npProvider@@</h5>
@@npPeoviderWarn@@<br>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<label for="aimp">AIMP</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
<label for="itunes">iTunes</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
<label for="npmm">MediaMonkey</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
<label for="winamp">Winamp</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
<label for="wmp">WMP</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
<label for="wlm">WLM</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
<label for="cad">CAD</label><br><br>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<span>AIMP</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes"
value="ITUNES" />
<span>iTunes</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm"
value="MEDIAMONKEY" />
<span>MediaMonkey</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp"
value="WINAMP" />
<span>Winamp</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
<span>WMP</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
<span>WLM</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
<span>CAD</span>
</label>
<br><br>
@@spotifynote1@@<i class="material-icons" style="font-size:24px;">music_note</i>@@spotifynote2@@<br>
<h5>@@link@@</h5>
@@linkwarn@@<br>
@@ -330,19 +377,26 @@
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
class="fa fa-spotify left"></i>@@disconnect@@</a>
<h5>@@templeteedit@@</h5>
@@templeteeditwarn@@<br>
<h5>@@templateedit@@</h5>
@@templateeditwarn@@<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br>
@@templete1@@<br>
@@templete2@@<br>
@@templete3@@<br>
@@template1@@<br>
@@template2@@<br>
@@template3@@<br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
<h5>@@postartwork@@</h5>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
<label for="awk_yes">@@yes@@</label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
<label for="awk_no">@@no@@</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes"
value="yes" />
<span>@@yes@@</span>
</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no"
value="no" />
<span>@@no@@</span>
</label>
<br>
</div>
</li>
@@ -384,6 +438,7 @@
<li>Ctrl+Enter+Shift:@@keysecpost@@</li>
<li>Alt+Enter:@@secondary@@</li>
<li>Ctrl+E:@@keyunread@@</li>
<li>Ctrl+U:@@keyselecttop@@</li>
<li>Esc:@@keyesc@@</li>
<li>F5:@@keyf5@@</li>
<li>Ctrl+Shift+C:@@keyclear@@</li>
@@ -397,13 +452,15 @@
以下Markdownに対応したインスタンスのみ。
<br>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
<li>Shift+Enter:全角スペースを入れて改行</li>
<li>Shift+Space:ゼロ幅スペース</li>
以下アスタルテにログインしている場合のみ
<br>
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
@@whenSelected@@
<li>F:@@fav@@</li>
<li>B:@@bt@@</li>
<li>R:@@reply@@</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('@@resetconfirm@@')){ localStorage.clear(); location.href='index.html'; }"><i
@@ -439,6 +496,7 @@
</span><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/modal.js"></script>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script>

View File

@@ -3,7 +3,7 @@
<head>
<title>Update - TheDesk</title>
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<meta charset="utf-8">
@@ -76,9 +76,9 @@
font-size: 200%;
}
</style>
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<i class="material-icons pointer waves-effect" onclick="about();">info</i>
<i class="material-icons pointer waves-effect" onclick="skipper();">clear</i>
<!--a href="update.html">Reload</a-->
@@ -135,9 +135,6 @@
$("#skipper").toggleClass("show");
}
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
//var shell = electron.shell;
verck();
function update(sel) {
$("#box").toggleClass("show");
@@ -145,8 +142,7 @@
$("#dlnow").toggleClass("hide");
$("#dlnow").toggleClass("show");
$("#prog").text("");
var remote = electron.remote;
var bit = process.arch;
var bit = localStorage.getItem("bit");
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET',
@@ -186,26 +182,25 @@
shell.openExternal(url);
return false;
}
ipc.send('download-btn', [url, file]);
postMessage(["downloadButton", [url, file]], "*")
});
}
function quit() {
ipc.send('quit', 'go');
postMessage(["sendSinmpleIpc", "quit"], "*")
}
ipc.on('prog', function (event, arg) {
function updateProg(arg) {
console.log(arg);
$(".determinate").css("width",arg*100+"%");
$(".determinate").css("width", arg * 100 + "%");
$("#prog").text(Math.floor(arg * 100) + "%");
})
ipc.on('mess', function (event, arg) {
}
function updateMess(arg) {
console.log(arg);
$("#prog").text(arg);
})
}
function verck() {
var remote = electron.remote;
var platform = remote.process.platform;
var bit = process.arch;
var platform = localStorage.getItem("platform");
var bit = localStorage.getItem("bit");
if (platform == "win32") {
$('.windows').removeClass("hide")
} else if (platform == "linux") {

View File

@@ -4,7 +4,7 @@
<head>
<title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href='../../css/font-awesome.css' rel='stylesheet' type='text/css'>
@@ -74,10 +74,11 @@
</head>
<body id="mainView">
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.ps.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script>
var misskeytoken = false;
</script>
@@ -99,10 +100,15 @@
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp">
<div id="ins-suggest"></div>
crwdns368:0crwdne368:0<br>
<input type="checkbox" class="filled-in" id="linux" />
<label for="linux">crwdns369:0crwdne369:0</label><br>
<input type="checkbox" class="filled-in" id="misskey" />
<label for="misskey">crwdns382:0crwdne382:0</label><br>
<label>
<input type="checkbox" class="filled-in" id="linux" />
<span>crwdns369:0crwdne369:0</span>
</label>
<br>
<label>
<input type="checkbox" class="filled-in" id="misskey" />
<span>crwdns382:0crwdne382:0</span>
</label><br>
<button class="btn waves-effect" onclick="instance()">Login</button><br>
</div>
<div class="col s4">

View File

@@ -4,7 +4,7 @@
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
@@ -25,9 +25,9 @@
</head>
<body>
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.ps.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/blurhash.js"></script>
@@ -35,8 +35,10 @@
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../js/ui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
<script>
var ver = "Usamin (18.5.0)";
var ver = "Usamin (18.7.1)";
//betaを入れるとバージョンチェックしない
//GitHubに上げるときはindex.htmlをちゃんとする。(index.start.html)
//var ver="beta";
@@ -161,15 +163,15 @@
<div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between">
<i class="waves-effect gray material-icons" id="nsfw" title="crwdns389:0crwdne389:0"
onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons purple-text dropdown-button"
data-activates='dropdown1' id="vis-icon">public</i>
<i class="waves-effect gray material-icons purple-text dropdown-trigger" data-target="dropdown1"
id="vis-icon">public</i>
<a class="waves-effect gray" id="cw" onclick="cw()" title="crwdns390:0crwdne390:0">CW</a>
<span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray"
onclick="fileselect()" title="crwdns391:0crwdne391:0">photo_library</i></span></span>
<i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn"
title="crwdns393:0crwdne393:0">tag_faces</i>
<i class="waves-effect gray material-icons dropdown-button"
data-activates='dropdown2'>more_vert</i>
<i class="waves-effect gray material-icons dropdown-trigger"
data-target="dropdown2">more_vert</i>
<i class="material-icons nex gray waves-effect" title="crwdns395:0crwdne395:0(Ctrl+Shit+C)"
data-trans-title="post_box_clear" id="clear">clear</i>
</div>
@@ -190,7 +192,7 @@
</div>
</div>
<!-- 公開範囲 Dropdown Structure -->
<ul id='dropdown1' class='dropdown-content'>
<ul id="dropdown1" class="dropdown-content">
<li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">crwdns403:0crwdne403:0
</li>
<li>
@@ -213,10 +215,7 @@
</li>
</ul>
<!-- その他 Dropdown Structure -->
<ul id='dropdown2' class='dropdown-content'>
<li>
<a onclick="adobe()">crwdns392:0crwdne392:0</a>
</li>
<ul id="dropdown2" class="dropdown-content">
<li>
<a onclick="nowplaying('spotify');">crwdns1880:0crwdne1880:0</a>
</li>
@@ -236,9 +235,9 @@
<!--END hidden area-->
</div>
<div id="toot-btn-field">
<button class="btn waves-effect indigo unmize toot-btn-group" onclick="post()"
<button class="btn waves-effect unmize toot-btn-group" onclick="post()"
id="toot-post-btn">crwdns388:0crwdne388:0</button>
<button class="btn waves-effect indigo darken-3 unmize hide toot-btn-group" onclick="sec()"
<button class="btn waves-effect darken-3 unmize hide toot-btn-group" onclick="sec()"
id="toot-sec-btn"><i class="material-icons" id="toot-sec-icon"
title="crwdns1890:0crwdne1890:0">lock_open</i></button>
</div>
@@ -311,10 +310,14 @@
<input type="text" class="mastodon-choice" placeholder="crwdns2414:0crwdne2414:02">
<input type="text" class="mastodon-choice" placeholder="crwdns2414:0crwdne2414:03">
<input type="text" class="mastodon-choice" placeholder="crwdns2414:0crwdne2414:04">
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
<label for="poll-multiple">crwdns2416:0crwdne2416:0</label><br>
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
<label for="poll-until">crwdns2412:0crwdne2412:0</label><br>
<label>
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
<span>crwdns2416:0crwdne2416:0</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
<span>crwdns2412:0crwdne2412:0</span>
</label>
<input type="number" style="width:50px" id="days_poll" placeholder="d" value="0">crwdns507:0crwdne507:0
<input type="number" style="width:50px" id="hours_poll" placeholder="h" value="0">crwdns508:0crwdne508:0
<input type="number" style="width:50px" id="mins_poll" placeholder="m" value="6">crwdns509:0crwdne509:0
@@ -325,7 +328,7 @@
<!-- Modal Structure Tootdata-->
<div id="tootmodal" class="modal modal-fixed-footer">
<div class="modal-content">
<ul class="collapsible" data-collapsible="accordion" id="det-col">
<ul class="collapsible" id="det-col">
<li class="dm-hide">
<div class="collapsible-header">
<i class="material-icons">people_outline</i>@@afterLTL@@
@@ -463,7 +466,9 @@
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-his-data"
id="his-end-btn" onclick="pinUser()">crwdns454:0crwdne454:0</a><br>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat" id="his-openin"
onclick="profbrws()">crwdns455:0crwdne455:0</a><br>
onclick="profbrws()">crwdns455:0crwdne455:0</a>
<a href="#!" class="btn waves-effect waves-effect blue-grey btn-flat only-my-data" id="his-main-acct"
onclick="setMain()" style="width: calc(100% - 10px)">@@mainacct@@</a><br>
</div><br>
<div id="his-matching-list">
crwdns469:0crwdne469:0<br>
@@ -474,46 +479,46 @@
</div>
<div class="his-float" id="his-float-timeline">
<div id="my-data-nav">
<ul class="custom-tabs transparent">
<li class="custom-tab col my-data-width active-back column-first">
<ul class="tabs transparent">
<li class="tab col my-data-width active-back column-first">
<a go="#his-tl" title="crwdns442:0crwdne442:0"><i class="material-icons">timeline</i></a>
</li>
<li class="custom-tab col my-data-width">
<li class="tab col my-data-width">
<a go="#his-follow-list" title="crwdns440:0crwdne440:0"><i class="material-icons">people</i></a>
</li>
<li class="custom-tab col my-data-width">
<li class="tab col my-data-width">
<a go="#his-follower-list" title="crwdns441:0crwdne441:0"><i
class="material-icons">people</i></a>
</li>
<li class="custom-tab col my-data-width only-his-data">
<li class="tab col my-data-width only-his-data">
<a go="#his-action" title="crwdns443:0crwdne443:0"><i
class="material-icons">account_box</i></a>
</li>
<li class="custom-tab col my-data-width only-his-data">
<li class="tab col my-data-width only-his-data">
<a go="#his-list" title="crwdns444:0crwdne444:0"><i class="material-icons">list</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-fav-list" title="crwdns434:0crwdne434:0"><i class="material-icons">star</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-blocking-list" title="crwdns446:0crwdne446:0"><i class="material-icons">block</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-blocking-list" title="crwdns446:0crwdne446:0"><i
class="material-icons">voice_over_off</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-domain-list" title="crwdns450:0crwdne450:0"><i
class="material-icons">language</i><i class="material-icons">block</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-prof-list" title="crwdns451:0crwdne451:0"><i class="material-icons">create</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-request-list" title="crwdns452:0crwdne452:0"><i
class="material-icons">how_to_reg</i></a>
</li>
<li class="custom-tab col my-data-width only-my-data">
<li class="tab col my-data-width only-my-data">
<a go="#his-follow-recom-list" title="crwdns456:0crwdne456:0"><i
class="material-icons">recent_actors</i></a>
</li>
@@ -621,7 +626,7 @@
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn"
onclick="follow()">crwdns440:0crwdne440:0</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn"
onclick="mute()">crwdns449:0crwdne449:0</a>
onclick="muteDo()">crwdns449:0crwdne449:0</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn"
onclick="block()">crwdns448:0crwdne448:0</a>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">crwdns385:0crwdne385:0</a>
@@ -662,7 +667,7 @@
<!-- Modal Structure Video-->
<div id="videomodal" class="modal modal-fixed-footer">
<div class="modal-content">
<video src="" id="video" style="max-width:100%; max-height:100%;" controls>
<video src="" id="video" style="max-width:100%; max-height:100%;" controls loop="true" autoplay="true">
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">crwdns385:0crwdne385:0</a>
@@ -675,26 +680,21 @@
<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-Usamin_18-5-0" class="release-do" style="display:none; ">
<div id="release-Usamin_18-7-1" class="release-do" style="display:none; ">
<a href="https://code.cutls.com/thedesk-log/" target="_blank">開発の経緯</a><br>
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br>
Pixiv Fanboxでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br>
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note Usamin (18.5.0)</h5>
macOSでのアップデータについて修正<br>
本来不要なところにフォロリク許可画面が出るようになっていたのを修正。<br>
不明なメディアに対するリンクを表示します<br>
PleromaでのVideoの挙動について修正しました<br>
Patreonでの支援を開始しました。<br>
アスタルテの新しいBBCodeに対応しました<br>
タイムライン下の方が切れてしまう不具合修正。<br>
通知をユーザーごとにフィルターする機能(最新のMastodonのみ)<br>
Electron 5.0.1になりました<br>
<br>
<h5>ThinkingDeskラベル</h5>
<img src="../../img/thinkingdesk.png" style="width:100px;" draggable="false"><br>
手作りマットラベル。貼ってはがせる。300円なのでポイントの余りでどうぞ。<br>
<a href="https://item.mercari.com/jp/m822743330" target="_blank">メルカリ</a>へ。
<h5>Release Note Usamin (18.7.1)</h5>
Electron 6.0.0<br>
画像ビューアーを開いているときに画像を矢印キーで切り替えられないバグを修正。<br>
コンテキストを上手く取得できないバグを修正<br>
タグサジェストがパワーアップ<br>
動画が自動再生(モーダル表示時)、ループ(モーダル, Pleroma, MisskeyのTL上)する<br>
絵文字(カスタム絵文字/Twemoji)をミュートワードに追加できるように<br>
絵文字が入ったURLに関する不具合修正。<br>
blurhash非対応インスタンスでのNSFW画像のblurを改修<br>
Pleroma等でアカウント情報が無い時があるため、それに関して修正<br>
</div>
<div id="release-en" style="display:none">
<h5>Let's make it native!</h5>
@@ -707,8 +707,8 @@
href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
@@PixivSupport@@
</a>
<a class="btn-share btn waves-effect waves-light red darken-2"
href="https://www.patreon.com/cutls" target="_blank">
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls"
target="_blank">
@@PatreonSupport@@
</a>
<a class="btn-share btn waves-effect waves-light blue"
@@ -881,20 +881,34 @@
<input type="hidden" id="filter-edit-id">
<input type="text" style="width:150px" id="filter-add-word" placeholder="crwdns496:0crwdne496:0"><br>
crwdns497:0crwdne497:0<br>
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
<label for="home_filter">crwdns482:0crwdne482:0</label>
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
<label for="local_filter">crwdns480:0crwdne480:0</label>
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
<label for="notf_filter">crwdns488:0crwdne488:0</label>
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
<label for="conv_filter">crwdns498:0crwdne498:0</label><br>
<label>
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
<span>crwdns482:0crwdne482:0</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
<span>crwdns480:0crwdne480:0</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
<span>crwdns488:0crwdne488:0</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
<span>crwdns498:0crwdne498:0</span>
</label>
crwdns499:0crwdne499:0<br>
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
<label for="wholeword_filter">crwdns500:0crwdne500:0</label><br>
<label>
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
<span>crwdns500:0crwdne500:0</span>
</label>
<br>
<span class="sml">crwdns501:0crwdne501:0</span><br>
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
<label for="except_filter">crwdns502:0crwdne502:0</label><br>
<label>
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
<span>crwdns502:0crwdne502:0</span>
</label>
<br>
<span class="sml">crwdns503:0crwdne503:0</span><br>
crwdns504:0crwdne504:0<span class="sml">crwdns505:0crwdne505:0<b>crwdns506:0crwdne506:0</b></span><br><br>
<input type="number" style="width:50px" id="days_filter" placeholder="d" value="0">crwdns507:0crwdne507:0
@@ -937,7 +951,7 @@
<div id="bottom" class="reverse">
<div class="leftside reverse">
<div id="dambox">
<button id="posttgl" class="btn waves-effect indigo"
<button id="posttgl" class="btn waves-effect"
style="width: 100%;height: 2.5rem;line-height: 0;margin: 0;">
<i class="material-icons"
style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;">edit</i>crwdns388:0crwdne388:0
@@ -990,6 +1004,56 @@
</div>
</div>
</div>
<!--Support me-->
<div id="support-btm" class="z-depth-4 hide">
<div id="support-btm-ja">
<h5>ご支援いただけませんか?</h5>
(これは支援の有無に関わらず定期的に出ます。)<br>
あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。<br>
乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。<br>
<br>
あなたはMastodon, MisskeyクライアントにTheDeskを選びました。これは奇跡的なことです。今考えればブラウザからアクセスした方が良かったのではと感じることかと存じます。<br>
それでも、あなたはTheDeskを使っています。<br>
TheDeskは2018年1月13日に最初のバージョンが出ました。それから圧倒的な機能数でゴリ押しするクライアントになっています。<br>
新機能に追従を図るためのモチベーションもさることながら、安全対策上TheDeskは開発者の緊急メッセージを表示できる機能が備わっており、開発者が送信ボタンを押すとすべてのTheDeskユーザーに通知が行くようになっています。<br>
かつてこれによってバグ報告を行い、使用を自粛していただくこともありました。<br>
そのような機能を実装するために、Mastodonなどのインスタンスを運営するのと同じく有料のサーバーを運用しています。<br>
<b>全てのユーザーが安心してTheDeskを使っていただける環境のため</b>にも、ぜひご支援をご検討ください。<br>
<b>crwdns474:0crwdne474:0</b>
</div>
<div id="support-btm-en" class="hide">
<h5>Support me</h5>
It may disturb your Mastodon life, but your support is required to keep TheDesk awesome!<br>
<b>crwdns474:0crwdne474:0</b>
</div>
<div id="support-btm-middle">
<h5>@@monthly@@</h5>
<a class="btn-share btn waves-effect waves-light red lighten-2"
href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank">
@@PixivSupport@@
</a>
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls"
target="_blank">
@@PatreonSupport@@
</a>
</div>
<div id="support-btm-right">
<h5>@@once@@</h5>
<a class="btn-share btn waves-effect waves-light blue"
href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">
crwdns476:0crwdne476:0
</a>
<br>
crwdns477:0crwdne477:0<a href="mailto:web-pro@cutls.com"
target="_blank">web-pro@cutls.com</a>crwdns478:0crwdne478:0<br>
Kyash<br>
<img src="../../img/kyash.png" width="100"><br>
</div>
<div id="support-btm-close">
<button class="btn waves-effect" style="width:100%;" onclick="closeSupport()"
id="add-filter-btn">crwdns385:0crwdne385:0</button>
</div>
</div>
<!--左下メッセージ-->
<div id="message">
</div>

View File

@@ -11,7 +11,7 @@
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../css/pickr.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
@@ -30,13 +30,14 @@
</head>
<body id="mainView" style="overflow-y:scroll">
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../js/lang/lang.ps.js"></script>
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
<script src="../../node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="setting.vue.js"></script>
<script type="text/javascript" src="../../node_modules/sweetalert2/dist/sweetalert2.all.min.js"></script>
<h4>crwdns524:0crwdne524:0</h4>
<ul class="collapsible" data-collapsible="accordion">
@@ -57,15 +58,17 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.id=='notf'"><a onclick="notftest()"
class="pointer">crwdns540:0crwdne540:0</a><br></template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label v-bind:for="item.id+check.value">{{check.text}}</label>
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
@@ -104,18 +107,36 @@
</div>
<div class="collapsible-body">
<h4>crwdns2422:0crwdne2422:0</h4>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<label for="black">Black</label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<label for="white">White</label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo" value="indigo" />
<label for="indigo">Indigo<span class="imas hide">(エンドレスナイト)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<label for="brown">Brown<span class="imas hide">(ビタースイート・タイム)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<label for="green">Green<span class="imas hide">(ユースフルロマンス)</span></label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom" value="custom" />
<label for="custom">Custom</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="black" value="black" />
<span>Black</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="white" value="white" />
<span>White</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="indigo"
value="indigo" />
<span>Indigo<span class="imas hide">(エンドレスナイト)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="brown" value="brown" />
<span>Brown<span class="imas hide">(ビタースイート・タイム)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="green" value="green" />
<span>Green<span class="imas hide">(ユースフルロマンス)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="blue" value="blue" />
<span>Blue<span class="imas hide">(渚の花嫁)</span></span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="theme" type="radio" id="custom"
value="custom" />
<span>custom</span>
</label>
<div style="width:300px" id="sel-selector">
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
</div>
@@ -131,10 +152,16 @@
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
placeholder="crwdns2440:0crwdne2440:0..."></textarea></div>
<h5>crwdns2426:0crwdne2426:0</h5>
<input class="with-gap" name="direction" type="radio" id="dark" value="dark" checked="true" />
<label for="dark">Dark</label>
<input class="with-gap" name="direction" type="radio" id="light" value="light" />
<label for="light">Light</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="dark" value="dark"
checked="true" />
<span>Dark</span>
</label>
<label>
<input class="with-gap" onchange="settings()" name="direction" type="radio" id="light"
value="light" />
<span>Light</span>
</label>
<div id="pickers">
<div>
<h5>Primary</h5>crwdns2430:0crwdne2430:0
@@ -167,12 +194,12 @@
</div>
<button class="btn-large waves-effect" onclick="customComp()">crwdns528:0crwdne528:0</button>&nbsp;<button
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
<input type="text" style="width:300px" id="custom_json" class="materialize-textarea"
<input type="text" style="width:300px;height:40px;" id="custom_json" class="materialize-textarea"
placeholder="JSON style" readonly><br>
crwdns2442:0crwdne2442:0
<h4>crwdns2444:0crwdne2444:0</h4>
@@cImpWarn@@<br>
<input type="text" style="width:300px" id="custom_import" class="materialize-textarea"
<input type="text" style="width:300px;height:40px;" id="custom_import" class="materialize-textarea"
placeholder="JSON/JSON5 style">
<button class="btn waves-effect" onclick="customImp()">crwdns532:0crwdne532:0</button><br>
</li>
@@ -185,13 +212,15 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label v-bind:for="item.id+check.value">{{check.text}}</label>
<label>
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<span>{{check.text}}</span>
</label>
</template>
</template>
<template v-else>
@@ -230,14 +259,15 @@
<template v-for="(item, i) in config">
<h5>{{item.text.head}}</h5>
<template v-if="item.text.desc">
<templete v-html="item.text.desc"></templete><br>
<span v-html="item.text.desc"></span><br>
</template>
<template v-if="item.checkbox">
<template v-for="(check, j) in item.text.checkbox">
<template v-if="!check.kirishima || (check.kirishima && kirishima)">
<input class="with-gap" v-on:click="complete(i,check.value)" v-model="item.setValue"
type="radio" v-bind:id="item.id+check.value" v-bind:value="check.value" />
<label v-bind:for="item.id+check.value">{{check.text}}</label>
<label><input class="with-gap" v-on:click="complete(i,check.value)"
v-model="item.setValue" type="radio" v-bind:id="item.id+check.value"
v-bind:value="check.value" />
<span>{{check.text}}</span></label>
<span v-if="check.kirishimaText">{{check.kirishimaText}}</span>
</template>
</template>
@@ -273,7 +303,6 @@
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button><br><br>
</div>
</li>
<li>
@@ -305,20 +334,38 @@
<div class="collapsible-body">
<h5>crwdns2354:0crwdne2354:0</h5>
crwdns2356:0crwdne2356:0<br>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<label for="aimp">AIMP</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes" value="ITUNES" />
<label for="itunes">iTunes</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm" value="MEDIAMONKEY" />
<label for="npmm">MediaMonkey</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp" value="WINAMP" />
<label for="winamp">Winamp</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
<label for="wmp">WMP</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
<label for="wlm">WLM</label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
<label for="cad">CAD</label><br><br>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="aimp" value="AIMP" />
<span>AIMP</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="itunes"
value="ITUNES" />
<span>iTunes</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="npmm"
value="MEDIAMONKEY" />
<span>MediaMonkey</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="winamp"
value="WINAMP" />
<span>Winamp</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wmp" value="WMP" />
<span>WMP</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="wlm" value="WLM" />
<span>WLM</span>
</label>
<label>
<input class="with-gap" onchange="npprovider()" name="npp" type="radio" id="cad" value="CAD" />
<span>CAD</span>
</label>
<br><br>
crwdns625:0crwdne625:0<i class="material-icons" style="font-size:24px;">music_note</i>crwdns626:0crwdne626:0<br>
<h5>crwdns627:0crwdne627:0</h5>
crwdns628:0crwdne628:0<br>
@@ -330,19 +377,26 @@
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
class="fa fa-spotify left"></i>crwdns630:0crwdne630:0</a>
<h5>crwdns631:0crwdne631:0</h5>
crwdns632:0crwdne632:0<br>
<h5>@@templateedit@@</h5>
@@templateeditwarn@@<br>
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
{url}</textarea><br>
crwdns2358:0{song}crwdnd2358:0{album}crwdnd2358:0{artist}crwdnd2358:0{url}crwdne2358:0<br>
crwdns2360:0{song}crwdnd2360:0{album}crwdnd2360:0{artist}crwdnd2360:0{composer}crwdnd2360:0{hz}crwdnd2360:0{bitRate}crwdnd2360:0{genre}crwdne2360:0<br>
crwdns2362:0{song}crwdnd2362:0{album}crwdnd2362:0{artist}crwdne2362:0<br>
@@template1@@<br>
@@template2@@<br>
@@template3@@<br>
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">crwdns525:0crwdne525:0</button>
<h5>crwdns635:0crwdne635:0</h5>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes" value="yes" />
<label for="awk_yes">crwdns526:0crwdne526:0</label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no" value="no" />
<label for="awk_no">crwdns527:0crwdne527:0</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes"
value="yes" />
<span>crwdns526:0crwdne526:0</span>
</label>
<label>
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_no"
value="no" />
<span>crwdns527:0crwdne527:0</span>
</label>
<br>
</div>
</li>
@@ -384,6 +438,7 @@
<li>Ctrl+Enter+Shift:crwdns1924:0crwdne1924:0</li>
<li>Alt+Enter:crwdns1916:0crwdne1916:0</li>
<li>Ctrl+E:crwdns652:0crwdne652:0</li>
<li>Ctrl+U:@@keyselecttop@@</li>
<li>Esc:crwdns653:0crwdne653:0</li>
<li>F5:crwdns654:0crwdne654:0</li>
<li>Ctrl+Shift+C:crwdns655:0crwdne655:0</li>
@@ -397,13 +452,15 @@
以下Markdownに対応したインスタンスのみ。
<br>
<li>Ctrl+B/I/S/U:太字/斜字/取り消し/下線</li>
<li>Shift+Enter:全角スペースを入れて改行</li>
<li>Shift+Space:ゼロ幅スペース</li>
以下アスタルテにログインしている場合のみ
<br>
<li>Ctrl+R:
<a href="https://astarte.thedesk.top">アスタルテ暇人ランキング</a>を開く
</li><br>
@@whenSelected@@
<li>F:@@fav@@</li>
<li>B:@@bt@@</li>
<li>R:@@reply@@</li>
</div>
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
onclick="if(confirm('crwdns661:0crwdne661:0')){ localStorage.clear(); location.href='index.html'; }"><i
@@ -439,6 +496,7 @@
</span><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/modal.js"></script>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/login/logout.js"></script>

View File

@@ -3,7 +3,7 @@
<head>
<title>Update - TheDesk</title>
<link href="../../css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href="../../css/master.css" type="text/css" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<meta charset="utf-8">
@@ -76,9 +76,9 @@
font-size: 200%;
}
</style>
<script type="text/javascript" src="../../js/common/jquery.js"></script>
<script type="text/javascript" src="../../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/common/materialize.js"></script>
<script type="text/javascript" src="../../node_modules/materialize-css/dist/js/materialize.js"></script>
<i class="material-icons pointer waves-effect" onclick="about();">info</i>
<i class="material-icons pointer waves-effect" onclick="skipper();">clear</i>
<!--a href="update.html">Reload</a-->
@@ -135,9 +135,6 @@
$("#skipper").toggleClass("show");
}
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
//var shell = electron.shell;
verck();
function update(sel) {
$("#box").toggleClass("show");
@@ -145,8 +142,7 @@
$("#dlnow").toggleClass("hide");
$("#dlnow").toggleClass("show");
$("#prog").text("");
var remote = electron.remote;
var bit = process.arch;
var bit = localStorage.getItem("bit");
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET',
@@ -186,26 +182,25 @@
shell.openExternal(url);
return false;
}
ipc.send('download-btn', [url, file]);
postMessage(["downloadButton", [url, file]], "*")
});
}
function quit() {
ipc.send('quit', 'go');
postMessage(["sendSinmpleIpc", "quit"], "*")
}
ipc.on('prog', function (event, arg) {
function updateProg(arg) {
console.log(arg);
$(".determinate").css("width",arg*100+"%");
$(".determinate").css("width", arg * 100 + "%");
$("#prog").text(Math.floor(arg * 100) + "%");
})
ipc.on('mess', function (event, arg) {
}
function updateMess(arg) {
console.log(arg);
$("#prog").text(arg);
})
}
function verck() {
var remote = electron.remote;
var platform = remote.process.platform;
var bit = process.arch;
var platform = localStorage.getItem("platform");
var bit = localStorage.getItem("bit");
if (platform == "win32") {
$('.windows').removeClass("hide")
} else if (platform == "linux") {

3
package-lock.json generated
View File

@@ -1,3 +0,0 @@
{
"lockfileVersion": 1
}