Compare commits

..

320 Commits

Author SHA1 Message Date
cutls
7281db2375 Merge branch 'master' of github.com:cutls/TheDesk 2021-02-02 11:47:43 +09:00
cutls
2699d51301 TheDesk 22.1.0 (Koume) 2021-02-02 11:47:38 +09:00
Cutls
e8c1dad86b Merge pull request #441 from cutls/dependabot/npm_and_yarn/app/json5-2.2.0
Bump json5 from 2.1.3 to 2.2.0 in /app
2021-02-01 17:47:17 -09:00
Cutls
72b279a107 Merge pull request #439 from cutls/dependabot/npm_and_yarn/app/sweetalert2-10.14.0
Bump sweetalert2 from 10.13.0 to 10.14.0 in /app
2021-02-01 17:47:01 -09:00
Cutls
73894c7e37 Merge pull request #437 from cutls/dependabot/npm_and_yarn/app/sanitize-html-2.3.2
Bump sanitize-html from 2.3.1 to 2.3.2 in /app
2021-02-01 17:46:48 -09:00
Cutls
12dee56919 Merge pull request #440 from cutls/l10n_master
New Crowdin updates
2021-02-01 17:46:29 -09:00
cutls
e9c5709095 remove tweetdeck 2021-02-02 11:38:23 +09:00
cutls
10358cb317 Merge branch 'master' of github.com:cutls/TheDesk 2021-02-02 11:27:28 +09:00
cutls
7d6d0b5628 Mention and tag links are not considered the acct data 2021-02-02 11:27:15 +09:00
dependabot-preview[bot]
e6eeff56e3 Bump json5 from 2.1.3 to 2.2.0 in /app
Bumps [json5](https://github.com/json5/json5) from 2.1.3 to 2.2.0.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/master/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.1.3...v2.2.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-02-01 20:13:05 +00:00
Cutls
0f3be2fdc4 New translations setting.json (German) 2021-01-31 15:36:40 -09:00
Cutls
8c1ba088be New translations acct.json (German) 2021-01-31 15:36:38 -09:00
Cutls
5d5e3c77e1 New translations main.json (French) 2021-01-31 15:36:36 -09:00
Cutls
995f677d8f New translations update.json (French) 2021-01-31 15:24:50 -09:00
Cutls
8e71e973d6 New translations setting.json (German) 2021-01-31 15:24:48 -09:00
Cutls
c7f1bb9b76 New translations main.json (German) 2021-01-31 15:24:47 -09:00
Cutls
3cc1f427ce New translations setting.json (French) 2021-01-31 15:24:45 -09:00
Cutls
3621be674f New translations main.json (French) 2021-01-31 15:24:43 -09:00
Cutls
ef1ecd5db3 New translations acct.json (French) 2021-01-31 15:24:42 -09:00
Cutls
a0a0802784 New translations main.json (German) 2021-01-31 15:06:27 -09:00
Cutls
3b96bf3c25 New translations index.json (German) 2021-01-31 15:06:26 -09:00
dependabot-preview[bot]
87c747cb93 Bump sweetalert2 from 10.13.0 to 10.14.0 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 10.13.0 to 10.14.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/v10.13.0...v10.14.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-28 20:13:08 +00:00
dependabot-preview[bot]
83b2138b26 Bump sanitize-html from 2.3.1 to 2.3.2 in /app
Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.3.1 to 2.3.2.
- [Release notes](https://github.com/apostrophecms/sanitize-html/releases)
- [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.3.1...2.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-27 20:15:47 +00:00
Cutls
23a72c1dc5 Merge pull request #434 from cutls/dependabot/npm_and_yarn/app/sanitize-html-2.3.1
Bump sanitize-html from 2.3.0 to 2.3.1 in /app
2021-01-24 00:22:00 +09:00
Cutls
9413d9c4b8 New Crowdin updates (#432)
* New translations main.json (Norwegian)

* New translations main.json (Dutch)

* New translations main.json (Italian)

* New translations main.json (Hungarian)

* New translations main.json (Hebrew)

* New translations main.json (Polish)

* New translations main.json (Turkish)

* New translations main.json (Swedish)

* New translations main.json (Serbian (Cyrillic))

* New translations main.json (Russian)

* New translations main.json (Portuguese)

* New translations main.json (Arabic)

* New translations main.json (Afrikaans)

* New translations main.json (Spanish)

* New translations main.json (Finnish)

* New translations main.json (French)

* New translations main.json (Romanian)

* New translations main.json (Bulgarian)

* New translations main.json (German)

* New translations main.json (Greek)

* New translations main.json (Czech)

* New translations main.json (Danish)

* New translations main.json (Catalan)

* New translations main.json (Spanish, Argentina)

* New translations main.json (English)

* New translations index.json (Cornish)

* New translations main.json (Sinhala)

* New translations acct.json (Cornish)

* New translations main.json (Cornish)

* New translations setting.json (Cornish)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Vietnamese)

* New translations main.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations main.json (Ukrainian)

* New translations update.json (Cornish)

* New translations main.json (Chinese Traditional)
2021-01-23 06:21:43 -09:00
cutls
78ea495969 add image rotate button 2021-01-23 19:17:55 +09:00
dependabot-preview[bot]
a2c8d5fd37 Bump sanitize-html from 2.3.0 to 2.3.1 in /app
Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/apostrophecms/sanitize-html/releases)
- [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.3.0...2.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-22 20:13:53 +00:00
Cutls
31b5df7f42 Merge pull request #430 from cutls/dependabot/npm_and_yarn/app/fortawesome/fontawesome-free-5.15.2
Bump @fortawesome/fontawesome-free from 5.15.1 to 5.15.2 in /app
2021-01-19 04:11:43 +09:00
Cutls
28a0419d2c Merge pull request #431 from cutls/dependabot/npm_and_yarn/app/chokidar-3.5.1
Bump chokidar from 3.5.0 to 3.5.1 in /app
2021-01-19 04:11:30 +09:00
Cutls
88214e5a33 New Crowdin updates (#428)
* New translations setting.json (Swedish)

* New translations setting.json (Serbian (Cyrillic))

* New translations setting.json (Russian)

* New translations setting.json (Portuguese)

* New translations setting.json (Polish)

* New translations setting.json (Norwegian)

* New translations setting.json (Dutch)

* New translations setting.json (Turkish)

* New translations setting.json (Vietnamese)

* New translations setting.json (English)

* New translations setting.json (Spanish, Argentina)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Ukrainian)

* New translations setting.json (Afrikaans)

* New translations setting.json (Catalan)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Spanish)

* New translations setting.json (French)

* New translations setting.json (Romanian)

* New translations setting.json (Italian)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Czech)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (Danish)

* New translations setting.json (Sinhala)
2021-01-19 04:11:15 +09:00
cutls
277f61826f gitignore and language file 2021-01-19 04:10:30 +09:00
cutls
447aeea0cb some git watched file modified 2021-01-19 04:10:18 +09:00
cutls
cc5ba8af0f add Pleroma refreshable token 2021-01-19 04:06:13 +09:00
dependabot-preview[bot]
9e62d15576 Bump chokidar from 3.5.0 to 3.5.1 in /app
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.5.0 to 3.5.1.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.5.0...3.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-15 20:14:08 +00:00
cutls
eaec63adb8 Add desc 2021-01-16 04:41:16 +09:00
cutls
57ca23e4e5 Add macOS control center nowplaying 2021-01-16 04:28:09 +09:00
dependabot-preview[bot]
e97ac5008a Bump @fortawesome/fontawesome-free from 5.15.1 to 5.15.2 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.15.1 to 5.15.2.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.15.1...5.15.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-14 20:13:06 +00:00
cutls
8c2d17d096 readme 2021-01-12 15:09:14 +09:00
cutls
7763ad98ad Merge branch 'master' of github.com:cutls/TheDesk 2021-01-12 14:46:02 +09:00
cutls
d6a32fbeae misc 2021-01-12 14:45:49 +09:00
cutls
aeaca51334 and more 2021-01-12 14:45:18 +09:00
cutls
f4d6ff8ee3 add beta language and auto restart when login crowdin 2021-01-12 14:44:57 +09:00
Cutls
f0a25df38f New Crowdin updates (#427)
* New translations acct.json (Sinhala)

* New translations index.json (Sinhala)

* New translations main.json (Sinhala)

* New translations setting.json (Sinhala)

* New translations update.json (Sinhala)

* New translations main.json (Sinhala)

* New translations setting.json (Sinhala)
2021-01-12 14:04:34 +09:00
Cutls
89b25c56e7 Merge pull request #425 from cutls/dependabot/npm_and_yarn/app/sweetalert2-10.13.0
Bump sweetalert2 from 10.10.0 to 10.13.0 in /app
2021-01-12 04:57:45 +09:00
Cutls
f0f8ed5eca Merge pull request #426 from cutls/dependabot/npm_and_yarn/app/chokidar-3.5.0
Bump chokidar from 3.4.3 to 3.5.0 in /app
2021-01-12 04:57:28 +09:00
Cutls
793a511bc3 Merge pull request #416 from cutls/dependabot/npm_and_yarn/app/ini-1.3.8
[Security] Bump ini from 1.3.5 to 1.3.8 in /app
2021-01-12 04:57:06 +09:00
Cutls
22299eaf33 New Crowdin updates (#422)
* New translations acct.json (Chinese Traditional)

* New translations index.json (Chinese Traditional)

* New translations main.json (Chinese Traditional)

* New translations setting.json (Chinese Traditional)

* New translations acct.json (Chinese Traditional)

* New translations index.json (Chinese Traditional)

* New translations main.json (Chinese Traditional)

* New translations setting.json (Chinese Traditional)

* New translations index.json (Chinese Traditional)

* New translations main.json (Chinese Traditional)

* New translations index.json (Chinese Traditional)

* New translations update.json (Chinese Traditional)

* New translations index.json (Chinese Traditional)

* New translations update.json (Chinese Traditional)

* New translations index.json (Chinese Traditional)

* New translations main.json (Chinese Traditional)

* New translations setting.json (Chinese Traditional)

* New translations index.json (Chinese Traditional)

* New translations main.json (Chinese Traditional)

* New translations setting.json (Chinese Traditional)

* New translations main.json (Chinese Traditional)

* New translations setting.json (Chinese Traditional)

* New translations main.json (Chinese Traditional)

* New translations main.json (Chinese Traditional)

* New translations setting.json (Portuguese)

* New translations main.json (Swedish)

* New translations setting.json (Serbian (Cyrillic))

* New translations main.json (Serbian (Cyrillic))

* New translations setting.json (Russian)

* New translations main.json (Russian)

* New translations main.json (Portuguese)

* New translations setting.json (Polish)

* New translations main.json (Polish)

* New translations setting.json (Norwegian)

* New translations main.json (Norwegian)

* New translations setting.json (Dutch)

* New translations main.json (Dutch)

* New translations setting.json (Swedish)

* New translations main.json (English)

* New translations setting.json (Spanish, Argentina)

* New translations main.json (Spanish, Argentina)

* New translations setting.json (Portuguese, Brazilian)

* New translations main.json (Portuguese, Brazilian)

* New translations setting.json (Vietnamese)

* New translations main.json (Vietnamese)

* New translations setting.json (Chinese Traditional)

* New translations main.json (Turkish)

* New translations main.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations main.json (Chinese Simplified)

* New translations setting.json (Ukrainian)

* New translations main.json (Ukrainian)

* New translations setting.json (Turkish)

* New translations setting.json (Italian)

* New translations setting.json (Afrikaans)

* New translations setting.json (Catalan)

* New translations main.json (Catalan)

* New translations setting.json (Bulgarian)

* New translations main.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations main.json (Arabic)

* New translations main.json (Afrikaans)

* New translations setting.json (Spanish)

* New translations main.json (Spanish)

* New translations setting.json (French)

* New translations main.json (French)

* New translations setting.json (Romanian)

* New translations main.json (Romanian)

* New translations main.json (Czech)

* New translations main.json (Italian)

* New translations setting.json (Hungarian)

* New translations main.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations main.json (Hebrew)

* New translations setting.json (Finnish)

* New translations main.json (Finnish)

* New translations setting.json (Czech)

* New translations setting.json (Greek)

* New translations main.json (Greek)

* New translations setting.json (German)

* New translations main.json (German)

* New translations setting.json (Danish)

* New translations main.json (Danish)

* New translations setting.json (English)
2021-01-12 04:56:25 +09:00
cutls
8745f94d81 add export plugin 2021-01-09 21:58:34 +09:00
cutls
ecff3c7f8f plugin readme 2021-01-09 21:38:10 +09:00
cutls
5cee604d51 TheDesk 22.0.1(Koume) 2021-01-09 21:24:55 +09:00
cutls
f12f9ed047 change StartMenu 2021-01-09 21:19:21 +09:00
dependabot-preview[bot]
7f4e752b21 Bump sweetalert2 from 10.10.0 to 10.13.0 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 10.10.0 to 10.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/v10.10.0...v10.13.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-09 12:13:06 +00:00
cutls
3ad4aca4a7 announce unread 2021-01-09 21:11:09 +09:00
cutls
4fbe7218e6 AiScript 2021-01-09 21:07:59 +09:00
cutls
46bc9474a0 emoji input 2021-01-09 17:51:40 +09:00
cutls
40ac7b33a1 scrollbar width 2021-01-09 17:51:35 +09:00
cutls
1db56bcfbb add reset width 2021-01-09 15:47:20 +09:00
dependabot-preview[bot]
4612dbe591 Bump chokidar from 3.4.3 to 3.5.0 in /app
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.4.3 to 3.5.0.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.4.3...3.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-01-06 20:14:03 +00:00
dependabot-preview[bot]
0a74b9c54b [Security] Bump ini from 1.3.5 to 1.3.8 in /app
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8. **This update includes a security fix.**
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-12-14 20:12:40 +00:00
cutls
a10a4d02b4 travis 2020-11-28 07:42:05 +09:00
cutls
6805ed32fb TheDesk 22.0.0 (Koume) 2020-11-28 07:32:06 +09:00
Cutls
1f2740b01e New Crowdin updates (#406)
* New translations setting.json (Serbian (Cyrillic))

* New translations setting.json (Russian)

* New translations setting.json (Portuguese)

* New translations setting.json (Swedish)

* New translations setting.json (Polish)

* New translations setting.json (Norwegian)

* New translations setting.json (Dutch)

* New translations setting.json (Italian)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Spanish, Argentina)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Vietnamese)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Ukrainian)

* New translations setting.json (Turkish)

* New translations setting.json (Afrikaans)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Spanish)

* New translations setting.json (French)

* New translations setting.json (Romanian)

* New translations setting.json (Catalan)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (Danish)

* New translations setting.json (Czech)

* New translations setting.json (English)
2020-11-28 07:29:47 +09:00
cutls
74af696ad5 add 2020-11-28 07:26:18 +09:00
cutls
ec3c2369bc md 2020-11-28 07:08:55 +09:00
cutls
c0a6ecec4d Add: AiScript TheDesk Plugin 2020-11-28 07:07:16 +09:00
cutls
7169f1147b Add: plugin system[WIP] 2020-11-28 05:57:11 +09:00
cutls
8873af4597 Merge branch 'master' of github.com:cutls/TheDesk 2020-11-17 02:16:28 +09:00
Cutls
859acad27c New Crowdin updates (#369)
* New translations setting.json (French)

* New translations setting.json (French)

* New translations setting.json (French)

* New translations setting.json (French)

* New translations main.json (Portuguese)

* New translations main.json (Swedish)

* New translations index.json (Swedish)

* New translations main.json (Serbian (Cyrillic))

* New translations index.json (Serbian (Cyrillic))

* New translations main.json (Russian)

* New translations index.json (Russian)

* New translations index.json (Portuguese)

* New translations main.json (Polish)

* New translations index.json (Polish)

* New translations main.json (Norwegian)

* New translations index.json (Norwegian)

* New translations main.json (Dutch)

* New translations index.json (Turkish)

* New translations index.json (English)

* New translations main.json (Spanish, Argentina)

* New translations index.json (Spanish, Argentina)

* New translations main.json (Portuguese, Brazilian)

* New translations index.json (Portuguese, Brazilian)

* New translations main.json (Vietnamese)

* New translations index.json (Vietnamese)

* New translations main.json (Turkish)

* New translations main.json (Chinese Traditional)

* New translations index.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations index.json (Chinese Simplified)

* New translations main.json (Ukrainian)

* New translations index.json (Ukrainian)

* New translations index.json (Dutch)

* New translations index.json (Romanian)

* New translations main.json (Catalan)

* New translations index.json (Catalan)

* New translations main.json (Bulgarian)

* New translations index.json (Bulgarian)

* New translations main.json (Arabic)

* New translations index.json (Arabic)

* New translations main.json (Afrikaans)

* New translations index.json (Czech)

* New translations index.json (Afrikaans)

* New translations main.json (Spanish)

* New translations index.json (Spanish)

* New translations main.json (French)

* New translations index.json (French)

* New translations main.json (Romanian)

* New translations main.json (Czech)

* New translations main.json (Italian)

* New translations index.json (Finnish)

* New translations index.json (Italian)

* New translations main.json (Hungarian)

* New translations index.json (Hungarian)

* New translations main.json (Hebrew)

* New translations index.json (Hebrew)

* New translations main.json (Finnish)

* New translations main.json (Greek)

* New translations index.json (Greek)

* New translations main.json (German)

* New translations index.json (German)

* New translations main.json (Danish)

* New translations index.json (Danish)

* New translations main.json (English)

* New translations main.json (Swedish)

* New translations index.json (Swedish)

* New translations main.json (Serbian (Cyrillic))

* New translations index.json (Serbian (Cyrillic))

* New translations main.json (Russian)

* New translations index.json (Russian)

* New translations main.json (Portuguese)

* New translations index.json (Portuguese)

* New translations main.json (Polish)

* New translations index.json (Polish)

* New translations main.json (Norwegian)

* New translations index.json (Norwegian)

* New translations main.json (Dutch)

* New translations index.json (Turkish)

* New translations index.json (English)

* New translations main.json (Spanish, Argentina)

* New translations index.json (Spanish, Argentina)

* New translations main.json (Portuguese, Brazilian)

* New translations index.json (Portuguese, Brazilian)

* New translations main.json (Vietnamese)

* New translations index.json (Vietnamese)

* New translations main.json (Turkish)

* New translations main.json (Chinese Traditional)

* New translations index.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations index.json (Chinese Simplified)

* New translations main.json (Ukrainian)

* New translations index.json (Ukrainian)

* New translations index.json (Dutch)

* New translations index.json (Romanian)

* New translations main.json (Catalan)

* New translations index.json (Catalan)

* New translations main.json (Bulgarian)

* New translations index.json (Bulgarian)

* New translations main.json (Arabic)

* New translations index.json (Arabic)

* New translations main.json (Afrikaans)

* New translations index.json (Czech)

* New translations index.json (Afrikaans)

* New translations main.json (Spanish)

* New translations index.json (Spanish)

* New translations main.json (French)

* New translations index.json (French)

* New translations main.json (Romanian)

* New translations main.json (Czech)

* New translations main.json (Italian)

* New translations index.json (Finnish)

* New translations index.json (Italian)

* New translations main.json (Hungarian)

* New translations index.json (Hungarian)

* New translations main.json (Hebrew)

* New translations index.json (Hebrew)

* New translations main.json (Finnish)

* New translations main.json (Greek)

* New translations index.json (Greek)

* New translations main.json (German)

* New translations index.json (German)

* New translations main.json (Danish)

* New translations index.json (Danish)

* New translations main.json (English)
2020-11-17 02:16:12 +09:00
Cutls
44943e0e14 Merge pull request #372 from cutls/dependabot/npm_and_yarn/app/fortawesome/fontawesome-free-5.15.1
Bump @fortawesome/fontawesome-free from 5.14.0 to 5.15.1 in /app
2020-11-17 02:15:57 +09:00
Cutls
640847416a Merge pull request #379 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.9.1
Bump electron-builder from 22.8.1 to 22.9.1 in /app
2020-11-17 02:15:45 +09:00
dependabot-preview[bot]
35122db142 Bump electron-builder from 22.8.1 to 22.9.1 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.8.1 to 22.9.1.
- [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/v22.8.1...v22.9.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-16 17:14:58 +00:00
Cutls
994ec964d6 Merge pull request #381 from cutls/dependabot/npm_and_yarn/app/chokidar-3.4.3
Bump chokidar from 3.4.2 to 3.4.3 in /app
2020-11-17 02:13:13 +09:00
Cutls
5508862ba1 Merge branch 'master' into dependabot/npm_and_yarn/app/chokidar-3.4.3 2020-11-17 02:13:06 +09:00
dependabot-preview[bot]
075a120856 Bump chokidar from 3.4.2 to 3.4.3 in /app
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.4.2 to 3.4.3.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.4.2...3.4.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-16 17:12:31 +00:00
Cutls
f34e2e6bbf Merge pull request #386 from cutls/dependabot/npm_and_yarn/app/electron-rebuild-2.3.2
Bump electron-rebuild from 2.0.3 to 2.3.2 in /app
2020-11-17 02:11:42 +09:00
Cutls
64296c69d3 Merge branch 'master' into dependabot/npm_and_yarn/app/electron-rebuild-2.3.2 2020-11-17 02:11:33 +09:00
Cutls
f4d250eeb3 Merge pull request #389 from cutls/dependabot/npm_and_yarn/app/electron-10.1.5
Bump electron from 10.1.2 to 10.1.5 in /app
2020-11-17 02:10:57 +09:00
Cutls
750c74ae69 Merge pull request #393 from cutls/dependabot/npm_and_yarn/app/eslint-7.13.0
Bump eslint from 7.9.0 to 7.13.0 in /app
2020-11-17 02:10:42 +09:00
Cutls
525dd5ec52 Merge pull request #397 from cutls/dependabot/npm_and_yarn/app/sweetalert2-10.10.0
Bump sweetalert2 from 10.3.5 to 10.10.0 in /app
2020-11-17 02:10:29 +09:00
cutls
89bb8d6496 node update 2020-11-17 02:09:50 +09:00
cutls
a7399db3f1 TheDesk 21.3.0 2020-11-17 01:56:58 +09:00
cutls
790ab2065c when in offline 2020-11-17 01:36:07 +09:00
cutls
fa20278727 CW when reply 2020-11-17 01:10:59 +09:00
cutls
f2a4900f18 add: draft 2020-11-17 01:00:32 +09:00
dependabot-preview[bot]
fd3afb6354 Bump sweetalert2 from 10.3.5 to 10.10.0 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 10.3.5 to 10.10.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/v10.3.5...v10.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-11 20:13:15 +00:00
dependabot-preview[bot]
4a4dc82c40 Bump eslint from 7.9.0 to 7.13.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.9.0 to 7.13.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.9.0...v7.13.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-11-09 20:13:17 +00:00
dependabot-preview[bot]
54db978b6f Bump electron from 10.1.2 to 10.1.5 in /app
Bumps [electron](https://github.com/electron/electron) from 10.1.2 to 10.1.5.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v10.1.2...v10.1.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-24 15:56:19 +00:00
dependabot-preview[bot]
1a35eda46f Bump electron-rebuild from 2.0.3 to 2.3.2 in /app
Bumps [electron-rebuild](https://github.com/electron/electron-rebuild) from 2.0.3 to 2.3.2.
- [Release notes](https://github.com/electron/electron-rebuild/releases)
- [Changelog](https://github.com/electron/electron-rebuild/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-rebuild/compare/v2.0.3...v2.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-22 02:04:00 +00:00
cutls
7d9ab19eef #373 looong more button 2020-10-18 18:33:53 +09:00
cutls
bdfeae20f2 #317 disabled toot button when offline 2020-10-18 18:04:31 +09:00
dependabot-preview[bot]
9931ecd577 Bump @fortawesome/fontawesome-free from 5.14.0 to 5.15.1 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.14.0 to 5.15.1.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.14.0...5.15.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-10-06 12:32:35 +00:00
cutls
99c2f0fc8d TheDesk 21.2.4 (Mayu) 2020-09-26 22:46:30 +09:00
cutls
58d9228aec Add italiano 2020-09-26 21:18:28 +09:00
Cutls
85738d72ae Merge pull request #362 from cutls/l10n_master
New Crowdin updates
2020-09-26 21:05:57 +09:00
Cutls
2fe60a3b69 Merge pull request #364 from cutls/dependabot/npm_and_yarn/app/sweetalert2-10.3.5
Bump sweetalert2 from 10.3.1 to 10.3.5 in /app
2020-09-26 21:05:34 +09:00
cutls
06c944a35d timeline subscription streaming bug 2020-09-26 21:04:21 +09:00
cutls
0f75972616 TheDesk Tips redesign 2020-09-26 21:02:48 +09:00
dependabot-preview[bot]
f55b08cbf3 Bump sweetalert2 from 10.3.1 to 10.3.5 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 10.3.1 to 10.3.5.
- [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/v10.3.1...v10.3.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-26 05:02:25 +00:00
Cutls
51814e49d7 New translations setting.json (German) 2020-09-24 22:42:05 +09:00
Cutls
36d8a00a49 New translations index.json (German) 2020-09-24 22:42:04 +09:00
Cutls
1c8ca3b5f9 New translations acct.json (German) 2020-09-24 22:42:02 +09:00
cutls
1cbd6992e3 em fix 2020-09-23 03:14:37 +09:00
cutls
1f3a27325b TheDesk 21.2.3 (Mayu) 2020-09-23 02:22:09 +09:00
Cutls
890ec772f9 Merge pull request #357 from cutls/dependabot/npm_and_yarn/app/electron-rebuild-2.0.3
Bump electron-rebuild from 1.11.0 to 2.0.3 in /app
2020-09-23 02:10:30 +09:00
Cutls
b072012976 Merge pull request #359 from cutls/dependabot/npm_and_yarn/app/sweetalert2-10.3.1
Bump sweetalert2 from 10.0.2 to 10.3.1 in /app
2020-09-23 02:10:19 +09:00
cutls
8982058a25 Coding for the KIRENAI streaming 2020-09-23 01:35:28 +09:00
dependabot-preview[bot]
fb95e077e9 Bump sweetalert2 from 10.0.2 to 10.3.1 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 10.0.2 to 10.3.1.
- [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/v10.0.2...v10.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-22 08:52:01 +00:00
cutls
dc08f46909 delete custom-electron-titlebar 2020-09-18 21:49:55 +09:00
dependabot-preview[bot]
3e6a47d5f7 Bump electron-rebuild from 1.11.0 to 2.0.3 in /app
Bumps [electron-rebuild](https://github.com/electron/electron-rebuild) from 1.11.0 to 2.0.3.
- [Release notes](https://github.com/electron/electron-rebuild/releases)
- [Changelog](https://github.com/electron/electron-rebuild/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-rebuild/compare/v1.11.0...v2.0.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-17 16:10:21 +00:00
cutls
aabcfb230f Merge branch 'master' of github.com:cutls/TheDesk 2020-09-17 21:42:17 +09:00
cutls
ee99a660c2 use lazyload 2020-09-17 21:42:04 +09:00
cutls
5063061a70 to spell check false 2020-09-17 21:41:55 +09:00
Cutls
c3ce7bd516 New Crowdin updates (#324)
* New translations setting.json (Catalan)

* New translations setting.json (Danish)

* New translations setting.json (Greek)

* New translations setting.json (Finnish)

* New translations setting.json (Hebrew)

* New translations setting.json (Bulgarian)

* New translations setting.json (Romanian)

* New translations setting.json (French)

* New translations setting.json (Spanish)

* New translations setting.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations setting.json (Ukrainian)

* New translations setting.json (Turkish)

* New translations setting.json (Swedish)

* New translations setting.json (Serbian (Cyrillic))

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Vietnamese)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Dutch)

* New translations setting.json (Hungarian)

* New translations setting.json (Italian)

* New translations setting.json (Russian)

* New translations setting.json (Norwegian)

* New translations setting.json (Polish)

* New translations setting.json (Portuguese)

* New translations index.json (Serbian (Cyrillic))

* New translations index.json (Russian)

* New translations index.json (Portuguese)

* New translations index.json (Polish)

* New translations index.json (Norwegian)

* New translations index.json (Dutch)

* New translations index.json (Italian)

* New translations index.json (Portuguese, Brazilian)

* New translations index.json (Vietnamese)

* New translations index.json (Chinese Traditional)

* New translations index.json (Swedish)

* New translations index.json (Ukrainian)

* New translations index.json (Turkish)

* New translations index.json (Arabic)

* New translations index.json (Afrikaans)

* New translations index.json (Spanish)

* New translations index.json (French)

* New translations index.json (Romanian)

* New translations index.json (Catalan)

* New translations index.json (Hungarian)

* New translations index.json (Hebrew)

* New translations index.json (Finnish)

* New translations index.json (Greek)

* New translations index.json (Danish)

* New translations index.json (Portuguese, Brazilian)

* New translations acct.json (Portuguese, Brazilian)

* New translations index.json (Portuguese, Brazilian)

* New translations main.json (Portuguese, Brazilian)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Serbian (Cyrillic))

* New translations setting.json (Russian)

* New translations setting.json (Portuguese)

* New translations setting.json (Swedish)

* New translations setting.json (Polish)

* New translations setting.json (Norwegian)

* New translations setting.json (Dutch)

* New translations setting.json (Italian)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Spanish, Argentina)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Vietnamese)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Ukrainian)

* New translations setting.json (Turkish)

* New translations setting.json (Afrikaans)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Spanish)

* New translations setting.json (French)

* New translations setting.json (Romanian)

* New translations setting.json (Catalan)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (Danish)

* New translations setting.json (Czech)

* New translations setting.json (English)

* New translations setting.json (Portuguese)

* New translations setting.json (Swedish)

* New translations setting.json (Serbian (Cyrillic))

* New translations setting.json (Russian)

* New translations setting.json (Polish)

* New translations setting.json (Norwegian)

* New translations setting.json (Dutch)

* New translations setting.json (Turkish)

* New translations setting.json (Italian)

* New translations setting.json (Catalan)

* New translations setting.json (Romanian)

* New translations setting.json (French)

* New translations setting.json (Spanish)

* New translations setting.json (Afrikaans)

* New translations setting.json (Bulgarian)

* New translations setting.json (Greek)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Czech)

* New translations setting.json (Danish)

* New translations setting.json (Arabic)

* New translations setting.json (German)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (English)

* New translations setting.json (Ukrainian)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Spanish, Argentina)

* New translations setting.json (Vietnamese)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Catalan)

* New translations main.json (Czech)

* New translations setting.json (Czech)

* New translations main.json (Danish)

* New translations setting.json (Danish)

* New translations main.json (German)

* New translations setting.json (German)

* New translations main.json (Greek)

* New translations setting.json (Greek)

* New translations main.json (Finnish)

* New translations main.json (Catalan)

* New translations setting.json (Spanish)

* New translations main.json (Romanian)

* New translations setting.json (Bulgarian)

* New translations setting.json (Romanian)

* New translations setting.json (French)

* New translations main.json (Spanish)

* New translations main.json (French)

* New translations setting.json (Arabic)

* New translations main.json (Bulgarian)

* New translations main.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations main.json (Afrikaans)

* New translations main.json (Chinese Simplified)

* New translations setting.json (Ukrainian)

* New translations main.json (Ukrainian)

* New translations setting.json (Turkish)

* New translations main.json (Turkish)

* New translations setting.json (Swedish)

* New translations main.json (Swedish)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Portuguese, Brazilian)

* New translations main.json (Portuguese, Brazilian)

* New translations setting.json (Serbian (Cyrillic))

* New translations setting.json (English)

* New translations setting.json (Spanish, Argentina)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Chinese Traditional)

* New translations setting.json (Vietnamese)

* New translations main.json (Vietnamese)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Italian)

* New translations main.json (Serbian (Cyrillic))

* New translations main.json (Hungarian)

* New translations main.json (Italian)

* New translations setting.json (Hungarian)

* New translations setting.json (Dutch)

* New translations setting.json (Hebrew)

* New translations main.json (Hebrew)

* New translations setting.json (Finnish)

* New translations main.json (Dutch)

* New translations main.json (Portuguese)

* New translations setting.json (Russian)

* New translations main.json (Russian)

* New translations setting.json (Portuguese)

* New translations setting.json (Polish)

* New translations main.json (Polish)

* New translations setting.json (Norwegian)

* New translations main.json (Norwegian)

* New translations main.json (English)

* New translations main.json (Arabic)

* New translations main.json (Afrikaans)

* New translations main.json (Bulgarian)

* New translations main.json (Romanian)

* New translations main.json (French)

* New translations main.json (Spanish)

* New translations main.json (Turkish)

* New translations main.json (Swedish)

* New translations main.json (Russian)

* New translations main.json (Serbian (Cyrillic))

* New translations main.json (Portuguese)

* New translations main.json (Ukrainian)

* New translations main.json (Vietnamese)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations main.json (Italian)

* New translations main.json (Polish)

* New translations main.json (Danish)

* New translations main.json (Greek)

* New translations main.json (German)

* New translations main.json (Czech)

* New translations main.json (Catalan)

* New translations main.json (Finnish)

* New translations main.json (Norwegian)

* New translations main.json (Dutch)

* New translations main.json (Hungarian)

* New translations main.json (Hebrew)

* New translations main.json (English)

* New translations acct.json (Portuguese, Brazilian)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Portuguese, Brazilian)

* New translations setting.json (Portuguese, Brazilian)

* New translations index.json (Portuguese, Brazilian)

* New translations main.json (Portuguese, Brazilian)

* New translations setting.json (Portuguese, Brazilian)

* New translations update.json (Portuguese, Brazilian)

* New translations index.json (Portuguese, Brazilian)

* New translations main.json (Portuguese, Brazilian)

* New translations acct.json (Italian)

* New translations index.json (Italian)

* New translations main.json (Italian)

* New translations setting.json (Italian)

* New translations acct.json (Italian)

* New translations index.json (Italian)

* New translations main.json (Italian)

* New translations index.json (Italian)

* New translations main.json (Italian)

* New translations setting.json (Italian)

* New translations index.json (Italian)

* New translations main.json (Italian)

* New translations setting.json (Italian)

* New translations index.json (Italian)

* New translations index.json (Italian)

* New translations main.json (Italian)

* New translations setting.json (Italian)

* New translations update.json (Italian)

* New translations main.json (Italian)

* New translations setting.json (Italian)

* New translations update.json (Italian)

* New translations main.json (Italian)

* New translations main.json (Italian)

* New translations main.json (Italian)

* New translations setting.json (Italian)

* New translations setting.json (Italian)

* New translations setting.json (Italian)

* New translations setting.json (Italian)

* New translations setting.json (Italian)

* New translations setting.json (Italian)

* New translations setting.json (Italian)

* New translations setting.json (Italian)

* New translations setting.json (Italian)

* New translations setting.json (Italian)

* New translations setting.json (Italian)

* New translations setting.json (Italian)
2020-09-17 21:31:47 +09:00
Cutls
95efd96c3e Merge pull request #328 from cutls/dependabot/npm_and_yarn/app/electron-dl-3.0.2
Bump electron-dl from 3.0.1 to 3.0.2 in /app
2020-09-17 21:29:23 +09:00
Cutls
abf5274c06 Merge branch 'master' into dependabot/npm_and_yarn/app/electron-dl-3.0.2 2020-09-17 21:28:40 +09:00
dependabot-preview[bot]
db5d3182bc Bump electron-dl from 3.0.1 to 3.0.2 in /app
Bumps [electron-dl](https://github.com/sindresorhus/electron-dl) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/sindresorhus/electron-dl/releases)
- [Commits](https://github.com/sindresorhus/electron-dl/compare/v3.0.1...v3.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-17 12:27:26 +00:00
Cutls
0527c978ce Merge pull request #329 from cutls/dependabot/npm_and_yarn/app/chokidar-3.4.2
Bump chokidar from 3.4.1 to 3.4.2 in /app
2020-09-17 21:26:54 +09:00
Cutls
b36de5dc26 Merge pull request #332 from cutls/dependabot/npm_and_yarn/app/lodash-4.17.20
Bump lodash from 4.17.19 to 4.17.20 in /app
2020-09-17 21:26:30 +09:00
Cutls
92b47e56f7 Merge pull request #333 from cutls/dependabot/npm_and_yarn/app/custom-electron-titlebar-3.2.4
Bump custom-electron-titlebar from 3.2.3 to 3.2.4 in /app
2020-09-17 21:26:17 +09:00
Cutls
fc967f92f3 Merge pull request #335 from cutls/dependabot/npm_and_yarn/app/vue-2.6.12
Bump vue from 2.6.11 to 2.6.12 in /app
2020-09-17 21:26:02 +09:00
Cutls
1882bbf0b6 Merge pull request #339 from cutls/dependabot/npm_and_yarn/app/jimp-0.16.1
Bump jimp from 0.14.0 to 0.16.1 in /app
2020-09-17 21:25:42 +09:00
Cutls
a3fed1f6f0 Merge pull request #345 from cutls/dependabot/npm_and_yarn/app/yargs-parser-15.0.1
[Security] Bump yargs-parser from 15.0.0 to 15.0.1 in /app
2020-09-17 21:25:25 +09:00
Cutls
eae0fd1768 Merge pull request #348 from cutls/dependabot/npm_and_yarn/app/sweetalert2-10.0.2
Bump sweetalert2 from 9.17.0 to 10.0.2 in /app
2020-09-17 21:25:04 +09:00
dependabot-preview[bot]
a7a99fc3a2 [Security] Bump yargs-parser from 15.0.0 to 15.0.1 in /app
Bumps [yargs-parser](https://github.com/yargs/yargs-parser) from 15.0.0 to 15.0.1. **This update includes a security fix.**
- [Release notes](https://github.com/yargs/yargs-parser/releases)
- [Changelog](https://github.com/yargs/yargs-parser/blob/master/docs/CHANGELOG-full.md)
- [Commits](https://github.com/yargs/yargs-parser/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-17 12:24:41 +00:00
dependabot-preview[bot]
fedd80477b Bump chokidar from 3.4.1 to 3.4.2 in /app
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.4.1...3.4.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-17 12:24:21 +00:00
Cutls
844d145e09 Merge pull request #350 from Ding-Fan/patch-1
Update README.md
2020-09-17 21:23:57 +09:00
Cutls
a817c14925 Merge pull request #354 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.8.1
Bump electron-builder from 22.7.0 to 22.8.1 in /app
2020-09-17 21:23:20 +09:00
Cutls
70e145eceb Merge branch 'master' into dependabot/npm_and_yarn/app/electron-builder-22.8.1 2020-09-17 21:23:11 +09:00
Cutls
438f11c11d Merge pull request #351 from cutls/dependabot/npm_and_yarn/app/electron-10.1.2
Bump electron from 9.1.1 to 10.1.2 in /app
2020-09-17 21:22:32 +09:00
dependabot-preview[bot]
edf75d1915 Bump electron-builder from 22.7.0 to 22.8.1 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.7.0 to 22.8.1.
- [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/v22.7.0...v22.8.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-17 12:08:46 +00:00
dependabot-preview[bot]
9de26d9998 Bump lodash from 4.17.19 to 4.17.20 in /app
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.19 to 4.17.20.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.19...4.17.20)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-17 12:08:36 +00:00
dependabot-preview[bot]
ab5a786197 Bump electron from 9.1.1 to 10.1.2 in /app
Bumps [electron](https://github.com/electron/electron) from 9.1.1 to 10.1.2.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v9.1.1...v10.1.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-17 12:08:35 +00:00
Cutls
272b613e18 Merge pull request #352 from cutls/dependabot/npm_and_yarn/app/eslint-7.9.0
Bump eslint from 7.6.0 to 7.9.0 in /app
2020-09-17 21:06:49 +09:00
cutls
35c10e0c7d css fix 2020-09-17 21:05:08 +09:00
cutls
7795adf173 #353 subscription type streaming JSON bug 2020-09-17 21:05:01 +09:00
dependabot-preview[bot]
dca2e5fdab Bump eslint from 7.6.0 to 7.9.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.6.0 to 7.9.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.6.0...v7.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-15 09:37:21 +00:00
Ding
eb6dcdfa5d Update README.md
fix typo
2020-09-13 00:49:27 +08:00
cutls
9f4f788519 toogle with mouseover 2020-09-11 21:25:27 +09:00
dependabot-preview[bot]
1d7588e4e4 Bump sweetalert2 from 9.17.0 to 10.0.2 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 9.17.0 to 10.0.2.
- [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/v9.17.0...v10.0.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-09 16:43:12 +00:00
cutls
81c476c1bb TheDesk 21.2.2 (Mayu) 2020-09-09 22:04:24 +09:00
cutls
ccc44ca769 bump 2020-09-09 20:54:31 +09:00
cutls
82c5a853cb fix 2020-09-09 20:54:07 +09:00
cutls
e11af25ba6 TheDesk 21.2.1 (Mayu) 2020-09-09 20:46:52 +09:00
cutls
16b68bb190 TheDesk 21.2.0 (Mayu) 2020-09-09 17:15:19 +09:00
cutls
051dbb3b1b For store only build 2020-09-09 16:59:18 +09:00
cutls
bdf2b9be71 disabled version checker for MS Store 2020-09-09 16:58:41 +09:00
cutls
0b6a76d01a travis trial 6 2020-09-09 16:53:44 +09:00
cutls
bd1e1f7ee8 travis trial 5 2020-09-09 16:49:00 +09:00
cutls
e9c7ffe825 travis trial 4 2020-09-09 16:45:32 +09:00
cutls
9e735bc7df travis trial 3 2020-09-09 16:42:12 +09:00
cutls
eefc03c4f3 travis trial 2 2020-09-09 16:37:17 +09:00
cutls
135caffaec travis trial 1 2020-09-09 16:34:45 +09:00
cutls
c1f7abac58 not to ban for MS Store 2020-09-09 16:33:11 +09:00
cutls
a325c50f1f pwa exp 2020-09-08 23:56:35 +09:00
cutls
37daa5638b to pwa 2020-09-08 23:46:55 +09:00
cutls
8118806f4e fix input type color css 2020-09-08 23:39:06 +09:00
cutls
3f7aaa7e99 new custom/default css 2020-09-08 23:35:30 +09:00
cutls
700de676d0 to streaming notifications with new subscription type streaming 2020-09-08 23:35:13 +09:00
cutls
52a8ec8033 to fix translate btn design 2020-09-08 23:34:42 +09:00
cutls
40a884b4f5 Redesign of column setting 2020-09-08 18:50:05 +09:00
cutls
62df4e2fac bug of custom sound 2020-09-08 18:49:55 +09:00
cutls
69d60a7372 I8d TL streaming 2020-09-07 19:06:57 +09:00
cutls
9623b79197 #317 dropdown menu with library 2020-09-07 16:36:25 +09:00
cutls
ec1481aed0 fix 2020-09-07 00:58:26 +09:00
cutls
1e76867fd1 TheDesk 21.1.1 (Mayu) 2020-09-07 00:55:47 +09:00
cutls
7ff01413e5 some fix 2020-09-07 00:23:10 +09:00
cutls
48b3ed3aca some fix 2020-09-07 00:14:51 +09:00
cutls
e75d52f985 TheDesk 21.1.0 (Mayu) 2020-09-07 00:08:30 +09:00
cutls
3f95e755b5 cannot get next fav/flw/fler 2020-09-06 23:29:12 +09:00
cutls
9d0f4096f8 #317 nice reload 2020-09-06 22:57:20 +09:00
cutls
e402e0e7a7 materialize-css update 2020-09-06 21:39:16 +09:00
cutls
38c77fb39e streaming disconnect warrior 2020-09-06 21:38:15 +09:00
cutls
3020adbe9d #317 annoucement 2020-09-06 21:37:50 +09:00
cutls
4df390713c #317 announcement bug 2020-09-04 23:54:49 +09:00
cutls
bec4444388 #307 #317 margin between timelines 2020-09-04 23:43:04 +09:00
cutls
2d249f6f19 max/min width of column 2020-09-03 23:17:01 +09:00
cutls
4d1053ce99 Use proxy media url for unknown media 2020-09-03 22:57:53 +09:00
cutls
0522331977 Channel subscription type streaming 2020-09-03 11:21:20 +09:00
cutls
eb9520397c z-index 2020-09-03 11:20:57 +09:00
cutls
f0c93b8fce #342 emoji 2020-09-03 11:20:36 +09:00
cutls
b3e9c3d6ce wip: channel subscription type streaming 2020-09-02 13:24:59 +09:00
cutls
99793f2e20 TheDesk Nano fixed 2020-09-02 12:11:02 +09:00
cutls
f43bd64be2 minimum hashtag streaming 2020-09-02 12:02:31 +09:00
cutls
fa440e8d9b fix some CSS 2020-08-30 22:42:49 +09:00
dependabot-preview[bot]
db4d457325 Bump jimp from 0.14.0 to 0.16.1 in /app
Bumps [jimp](https://github.com/oliver-moran/jimp) from 0.14.0 to 0.16.1.
- [Release notes](https://github.com/oliver-moran/jimp/releases)
- [Changelog](https://github.com/oliver-moran/jimp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oliver-moran/jimp/compare/v0.14.0...v0.16.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-29 15:10:29 +00:00
dependabot-preview[bot]
d87245899e Bump vue from 2.6.11 to 2.6.12 in /app
Bumps [vue](https://github.com/vuejs/vue) from 2.6.11 to 2.6.12.
- [Release notes](https://github.com/vuejs/vue/releases)
- [Commits](https://github.com/vuejs/vue/compare/v2.6.11...v2.6.12)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-20 20:30:38 +00:00
dependabot-preview[bot]
ac6260ab24 Bump custom-electron-titlebar from 3.2.3 to 3.2.4 in /app
Bumps [custom-electron-titlebar](https://github.com/AlexTorresSk/custom-electron-titlebar) from 3.2.3 to 3.2.4.
- [Release notes](https://github.com/AlexTorresSk/custom-electron-titlebar/releases)
- [Commits](https://github.com/AlexTorresSk/custom-electron-titlebar/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-08-14 22:58:13 +00:00
cutls
91bc8c8bdd WIP #317 last.fm 2020-08-12 10:01:14 +09:00
cutls
74d756d43b #317 for a11y 2020-08-12 09:48:28 +09:00
cutls
2281d0ca35 #317 WebView prefer 2020-08-05 12:46:10 +09:00
cutls
31cc929c68 #317 last_status type 2020-08-05 12:38:51 +09:00
cutls
80ce93785a #317 context menu 2020-08-05 12:26:59 +09:00
cutls
1710ab0035 [WIP] linting 2020-08-02 16:08:07 +09:00
cutls
dafc50bbd7 TheDesk 21.0.5 (Mayu) 2020-08-02 13:26:18 +09:00
cutls
50f58f8d3b Merge branch 'master' of github.com:cutls/TheDesk 2020-08-02 13:16:45 +09:00
cutls
b9be1529cc Change InstanceTicker to OpenSticker 2020-08-02 13:16:31 +09:00
Cutls
fb3a89b547 Merge pull request #318 from cutls/dependabot/npm_and_yarn/app/sweetalert2-9.17.0
Bump sweetalert2 from 9.15.2 to 9.17.0 in /app
2020-07-21 09:21:23 +09:00
Cutls
c01915c397 Merge pull request #319 from cutls/dependabot/npm_and_yarn/app/fortawesome/fontawesome-free-5.14.0
Bump @fortawesome/fontawesome-free from 5.13.1 to 5.14.0 in /app
2020-07-21 09:20:57 +09:00
Cutls
e9a774c1d4 Merge pull request #315 from cutls/dependabot/npm_and_yarn/app/lodash-4.17.19
[Security] Bump lodash from 4.17.15 to 4.17.19 in /app
2020-07-21 09:20:20 +09:00
Cutls
04d08ae6c1 Merge pull request #320 from cutls/dependabot/npm_and_yarn/app/chokidar-3.4.1
Bump chokidar from 3.4.0 to 3.4.1 in /app
2020-07-21 09:19:54 +09:00
dependabot-preview[bot]
0585f95a85 Bump @fortawesome/fontawesome-free from 5.13.1 to 5.14.0 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.13.1 to 5.14.0.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.13.1...5.14.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-21 00:19:39 +00:00
dependabot-preview[bot]
2300e02a12 Bump chokidar from 3.4.0 to 3.4.1 in /app
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.4.0...3.4.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-21 00:19:24 +00:00
Cutls
fec4b61cb6 Merge pull request #321 from cutls/dependabot/npm_and_yarn/app/custom-electron-titlebar-3.2.3
Bump custom-electron-titlebar from 3.2.2-hotfix62 to 3.2.3 in /app
2020-07-21 09:18:00 +09:00
Cutls
e1941ce621 Merge pull request #322 from cutls/dependabot/npm_and_yarn/app/electron-9.1.1
Bump electron from 9.0.5 to 9.1.1 in /app
2020-07-21 09:17:44 +09:00
dependabot-preview[bot]
3aeb47b039 Bump electron from 9.0.5 to 9.1.1 in /app
Bumps [electron](https://github.com/electron/electron) from 9.0.5 to 9.1.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v9.0.5...v9.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-20 23:53:38 +00:00
dependabot-preview[bot]
73701be7c9 Bump custom-electron-titlebar from 3.2.2-hotfix62 to 3.2.3 in /app
Bumps [custom-electron-titlebar](https://github.com/AlexTorresSk/custom-electron-titlebar) from 3.2.2-hotfix62 to 3.2.3.
- [Release notes](https://github.com/AlexTorresSk/custom-electron-titlebar/releases)
- [Commits](https://github.com/AlexTorresSk/custom-electron-titlebar/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-17 20:58:08 +00:00
Cutls
7941eb7e9d Update FUNDING.yml 2020-07-17 11:17:25 +09:00
dependabot-preview[bot]
a8dedc94e9 Bump sweetalert2 from 9.15.2 to 9.17.0 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 9.15.2 to 9.17.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/v9.15.2...v9.17.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-14 21:03:09 +00:00
cutls
26fd6a72d6 InstanceTicker URL 2020-07-10 14:22:55 +09:00
dependabot-preview[bot]
9d6f06cbde Bump lodash from 4.17.15 to 4.17.19 in /app
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-08 21:41:51 +00:00
cutls
b0bd85ccc6 Merge branch 'master' of github.com:cutls/TheDesk 2020-07-05 19:32:44 +09:00
cutls
9fc570e183 maxim 2020-07-05 19:32:31 +09:00
Cutls
695d812ecb Update README.md 2020-07-04 18:25:49 +09:00
cutls
ef6db98da5 revert like 2020-07-04 18:20:35 +09:00
cutls
cd38819a7a add maxim 2020-07-04 18:03:04 +09:00
cutls
f207ed274b TheDesk 21.0.4 (Mayu) 2020-07-04 11:38:51 +09:00
cutls
c3691783de Merge branch 'master' of github.com:cutls/TheDesk 2020-07-04 11:32:25 +09:00
Cutls
7171831b14 Merge pull request #274 from cutls/dependabot/npm_and_yarn/app/chokidar-3.4.0
Bump chokidar from 3.3.1 to 3.4.0 in /app
2020-07-04 11:32:04 +09:00
dependabot-preview[bot]
fa14921421 Bump chokidar from 3.3.1 to 3.4.0 in /app
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.3.1 to 3.4.0.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.3.1...3.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-04 02:31:27 +00:00
Cutls
475a80acdd New Crowdin translations (#278)
* New translations index.json (Greek)

* New translations setting.json (Czech)

* New translations index.json (Danish)

* New translations setting.json (Danish)

* New translations index.json (German)

* New translations setting.json (German)

* New translations index.json (Finnish)

* New translations setting.json (Finnish)

* New translations index.json (Hebrew)

* New translations setting.json (Hebrew)

* New translations index.json (Hungarian)

* New translations index.json (Romanian)

* New translations index.json (Czech)

* New translations setting.json (Greek)

* New translations setting.json (Catalan)

* New translations index.json (Afrikaans)

* New translations setting.json (Romanian)

* New translations index.json (French)

* New translations setting.json (French)

* New translations index.json (Spanish)

* New translations setting.json (Spanish)

* New translations setting.json (Bulgarian)

* New translations index.json (Catalan)

* New translations index.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations index.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations index.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations index.json (Chinese Simplified)

* New translations setting.json (Turkish)

* New translations setting.json (Ukrainian)

* New translations index.json (Ukrainian)

* New translations index.json (Turkish)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Spanish, Argentina)

* New translations index.json (Vietnamese)

* New translations setting.json (Vietnamese)

* New translations index.json (Portuguese, Brazilian)

* New translations setting.json (Portuguese, Brazilian)

* New translations index.json (Spanish, Argentina)

* New translations index.json (English)

* New translations setting.json (Swedish)

* New translations index.json (Polish)

* New translations setting.json (Hungarian)

* New translations index.json (Italian)

* New translations setting.json (Italian)

* New translations index.json (Dutch)

* New translations setting.json (Dutch)

* New translations index.json (Norwegian)

* New translations setting.json (Norwegian)

* New translations index.json (Swedish)

* New translations setting.json (Polish)

* New translations index.json (Portuguese)

* New translations setting.json (Portuguese)

* New translations index.json (Russian)

* New translations setting.json (Russian)

* New translations index.json (Serbian (Cyrillic))

* New translations setting.json (Serbian (Cyrillic))

* New translations setting.json (English)

* New translations index.json (Afrikaans)

* New translations index.json (Romanian)

* New translations index.json (Bulgarian)

* New translations index.json (Arabic)

* New translations index.json (Spanish)

* New translations index.json (French)

* New translations index.json (Ukrainian)

* New translations index.json (Turkish)

* New translations index.json (Swedish)

* New translations index.json (Serbian (Cyrillic))

* New translations index.json (Russian)

* New translations index.json (Portuguese, Brazilian)

* New translations index.json (English)

* New translations index.json (Spanish, Argentina)

* New translations index.json (Chinese Simplified)

* New translations index.json (Vietnamese)

* New translations index.json (Chinese Traditional)

* New translations index.json (Portuguese)

* New translations index.json (Greek)

* New translations index.json (German)

* New translations index.json (Danish)

* New translations index.json (Finnish)

* New translations index.json (Czech)

* New translations index.json (Catalan)

* New translations index.json (Polish)

* New translations index.json (Norwegian)

* New translations index.json (Dutch)

* New translations index.json (Italian)

* New translations index.json (Hungarian)

* New translations index.json (Hebrew)

* New translations main.json (Catalan)

* New translations main.json (Czech)

* New translations main.json (Bulgarian)

* New translations main.json (Danish)

* New translations main.json (German)

* New translations main.json (Spanish)

* New translations main.json (Romanian)

* New translations main.json (French)

* New translations main.json (Arabic)

* New translations main.json (Afrikaans)

* New translations main.json (Chinese Simplified)

* New translations main.json (Ukrainian)

* New translations main.json (Turkish)

* New translations main.json (Swedish)

* New translations main.json (English)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Vietnamese)

* New translations main.json (Chinese Traditional)

* New translations main.json (Serbian (Cyrillic))

* New translations main.json (Hungarian)

* New translations main.json (Hebrew)

* New translations main.json (Italian)

* New translations main.json (Finnish)

* New translations main.json (Greek)

* New translations main.json (Russian)

* New translations main.json (Portuguese)

* New translations main.json (Polish)

* New translations main.json (Norwegian)

* New translations main.json (Dutch)

* New translations main.json (Swedish)

* New translations main.json (Serbian (Cyrillic))

* New translations main.json (Russian)

* New translations main.json (Turkish)

* New translations main.json (Portuguese)

* New translations main.json (Polish)

* New translations main.json (Norwegian)

* New translations main.json (Vietnamese)

* New translations main.json (English)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations main.json (Ukrainian)

* New translations main.json (Dutch)

* New translations main.json (Catalan)

* New translations main.json (Bulgarian)

* New translations main.json (Arabic)

* New translations main.json (Afrikaans)

* New translations main.json (Spanish)

* New translations main.json (French)

* New translations main.json (Romanian)

* New translations main.json (Czech)

* New translations main.json (Finnish)

* New translations main.json (Italian)

* New translations main.json (Hungarian)

* New translations main.json (Hebrew)

* New translations main.json (Greek)

* New translations main.json (German)

* New translations main.json (Danish)

* New translations main.json (Swedish)

* New translations main.json (Serbian (Cyrillic))

* New translations main.json (Russian)

* New translations main.json (Turkish)

* New translations main.json (Portuguese)

* New translations main.json (Polish)

* New translations main.json (Norwegian)

* New translations main.json (Vietnamese)

* New translations main.json (English)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations main.json (Ukrainian)

* New translations main.json (Dutch)

* New translations main.json (Catalan)

* New translations main.json (Bulgarian)

* New translations main.json (Arabic)

* New translations main.json (Afrikaans)

* New translations main.json (Spanish)

* New translations main.json (French)

* New translations main.json (Romanian)

* New translations main.json (Czech)

* New translations main.json (Finnish)

* New translations main.json (Italian)

* New translations main.json (Hungarian)

* New translations main.json (Hebrew)

* New translations main.json (Greek)

* New translations main.json (German)

* New translations main.json (Danish)

* New translations acct.json (Romanian)

* New translations acct.json (Danish)

* New translations acct.json (German)

* New translations acct.json (Greek)

* New translations acct.json (Finnish)

* New translations acct.json (Hebrew)

* New translations acct.json (Czech)

* New translations acct.json (Afrikaans)

* New translations acct.json (French)

* New translations acct.json (Spanish)

* New translations acct.json (Bulgarian)

* New translations acct.json (Arabic)

* New translations acct.json (Catalan)

* New translations acct.json (Chinese Simplified)

* New translations acct.json (Chinese Traditional)

* New translations acct.json (Ukrainian)

* New translations acct.json (Turkish)

* New translations acct.json (Spanish, Argentina)

* New translations acct.json (English)

* New translations acct.json (Vietnamese)

* New translations acct.json (Portuguese, Brazilian)

* New translations acct.json (Dutch)

* New translations acct.json (Hungarian)

* New translations acct.json (Italian)

* New translations acct.json (Norwegian)

* New translations acct.json (Polish)

* New translations acct.json (Swedish)

* New translations acct.json (Serbian (Cyrillic))

* New translations acct.json (Russian)

* New translations acct.json (Portuguese)

* New translations index.json (German)
2020-07-04 11:31:09 +09:00
Cutls
9826c3f33e Merge pull request #279 from cutls/dependabot/npm_and_yarn/app/jquery-3.5.1
Bump jquery from 3.5.0 to 3.5.1 in /app
2020-07-04 11:30:50 +09:00
Cutls
ecee949547 Merge pull request #281 from cutls/dependabot/npm_and_yarn/app/electron-rebuild-1.11.0
Bump electron-rebuild from 1.10.1 to 1.11.0 in /app
2020-07-04 11:30:36 +09:00
Cutls
95eea7051f Merge branch 'master' into dependabot/npm_and_yarn/app/electron-rebuild-1.11.0 2020-07-04 11:30:21 +09:00
Cutls
74e3ea41a7 Merge pull request #293 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.7.0
Bump electron-builder from 22.5.1 to 22.7.0 in /app
2020-07-04 11:29:46 +09:00
dependabot-preview[bot]
dc27db920a Bump electron-builder from 22.5.1 to 22.7.0 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.5.1 to 22.7.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/v22.5.1...v22.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-04 02:28:57 +00:00
dependabot-preview[bot]
b2724fe362 Bump jquery from 3.5.0 to 3.5.1 in /app
Bumps [jquery](https://github.com/jquery/jquery) from 3.5.0 to 3.5.1.
- [Release notes](https://github.com/jquery/jquery/releases)
- [Commits](https://github.com/jquery/jquery/compare/3.5.0...3.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-04 02:28:47 +00:00
Cutls
5d43a5b159 Merge pull request #304 from cutls/dependabot/npm_and_yarn/app/electron-dl-3.0.1
Bump electron-dl from 3.0.0 to 3.0.1 in /app
2020-07-04 11:28:34 +09:00
Cutls
7435f3ddfd Merge branch 'master' into dependabot/npm_and_yarn/app/electron-dl-3.0.1 2020-07-04 11:28:18 +09:00
Cutls
94b6de6d3f Merge pull request #309 from cutls/dependabot/npm_and_yarn/app/fortawesome/fontawesome-free-5.13.1
Bump @fortawesome/fontawesome-free from 5.13.0 to 5.13.1 in /app
2020-07-04 11:27:36 +09:00
Cutls
1eb49e9a26 Merge pull request #311 from cutls/dependabot/npm_and_yarn/app/sweetalert2-9.15.2
Bump sweetalert2 from 9.10.12 to 9.15.2 in /app
2020-07-04 11:27:23 +09:00
Cutls
0893aa4ee1 Merge pull request #313 from cutls/dependabot/npm_and_yarn/app/jimp-0.14.0
Bump jimp from 0.10.3 to 0.14.0 in /app
2020-07-04 11:27:10 +09:00
cutls
ccdd9fba88 Introduce Electron 9.0.5 2020-07-04 11:26:46 +09:00
dependabot-preview[bot]
01dc5ff700 Bump electron-rebuild from 1.10.1 to 1.11.0 in /app
Bumps [electron-rebuild](https://github.com/electron/electron-rebuild) from 1.10.1 to 1.11.0.
- [Release notes](https://github.com/electron/electron-rebuild/releases)
- [Changelog](https://github.com/electron/electron-rebuild/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-rebuild/compare/v1.10.1...v1.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-04 02:12:00 +00:00
Cutls
346e8319df Merge pull request #310 from cutls/dependabot/npm_and_yarn/app/electron-9.0.5
Bump electron from 8.2.3 to 9.0.5 in /app
2020-07-04 11:10:08 +09:00
Cutls
5ca7046d5c Merge pull request #312 from heguro/fix-quote-muted
Fix quote_muted
2020-06-30 14:19:11 +09:00
dependabot-preview[bot]
f39e851211 Bump jimp from 0.10.3 to 0.14.0 in /app
Bumps [jimp](https://github.com/oliver-moran/jimp) from 0.10.3 to 0.14.0.
- [Release notes](https://github.com/oliver-moran/jimp/releases)
- [Changelog](https://github.com/oliver-moran/jimp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oliver-moran/jimp/compare/v0.10.3...v0.14.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-29 20:15:35 +00:00
heguro
3747020876 Fix quote_muted 2020-06-26 14:22:30 +09:00
dependabot-preview[bot]
5ed5a9ade3 Bump sweetalert2 from 9.10.12 to 9.15.2 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 9.10.12 to 9.15.2.
- [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/v9.10.12...v9.15.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-24 03:48:09 +00:00
dependabot-preview[bot]
04f157353f Bump electron from 8.2.3 to 9.0.5 in /app
Bumps [electron](https://github.com/electron/electron) from 8.2.3 to 9.0.5.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.2.3...v9.0.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-23 05:46:03 +00:00
dependabot-preview[bot]
a1bbcc9be2 Bump @fortawesome/fontawesome-free from 5.13.0 to 5.13.1 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.13.0 to 5.13.1.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.13.0...5.13.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-19 20:18:38 +00:00
cutls
1266ef44ee Beta: fedibird expires_at 2020-06-16 15:08:27 +09:00
dependabot-preview[bot]
0da36709d5 Bump electron-dl from 3.0.0 to 3.0.1 in /app
Bumps [electron-dl](https://github.com/sindresorhus/electron-dl) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/sindresorhus/electron-dl/releases)
- [Commits](https://github.com/sindresorhus/electron-dl/compare/v3.0.0...v3.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-16 02:57:33 +00:00
cutls
2b5637f388 netlify 2020-06-16 11:36:03 +09:00
cutls
6d478906a0 width mistake 2020-06-16 11:22:58 +09:00
cutls
e436aed6c5 TheDesk 21.0.3 (Mayu) 2020-06-16 11:06:22 +09:00
cutls
25867690f3 re-challenge 2020-06-16 11:00:12 +09:00
cutls
b5efbebadb TheDesk 21.0.2 (Mayu) 2020-06-16 10:42:10 +09:00
cutls
e93f860c0c directly import setting 2020-06-13 01:59:05 +09:00
cutls
df04ebca4c quote_muted param 2020-06-13 01:46:26 +09:00
cutls
d2aaf2c2cf timeline delete bug 2020-06-13 01:40:32 +09:00
cutls
8386cd675c votebutton-fixed, and <pre> fixed 2020-06-13 01:33:30 +09:00
cutls
ad7b3cf485 follow request 2020-06-12 22:13:06 +09:00
cutls
f9f2aeab23 font change error 2020-06-12 21:06:12 +09:00
cutls
ea735d279f font-change bug 2020-06-12 20:58:10 +09:00
cutls
fa616d56fd Merge branch 'master' of github.com:cutls/TheDesk 2020-06-10 12:09:32 +09:00
cutls
907e55e6d7 column deleting 2020-06-10 12:09:17 +09:00
Cutls
874be5bca8 Merge pull request #292 from heguro/fix-could-not-see-column-list
Fix: cannot sort column if using some kind of TL
2020-05-24 16:07:14 +09:00
heguro
f49907e5e5 Fix: cannot sort column when using some kind of TL 2020-05-24 05:45:15 +09:00
cutls
da197340ec Flexible font-size 2020-05-23 13:54:51 +09:00
cutls
cf6e5b5dd5 Improve: font-size-change 2020-05-15 12:47:01 +09:00
cutls
917cd322fc bug of emoji 2020-05-15 11:15:01 +09:00
cutls
bc616ba118 TheDesk 21.0.1 (Mayu) 2020-05-11 19:03:55 +09:00
cutls
ea26648619 delete user matching 2020-05-11 18:59:28 +09:00
cutls
c2f1aec8b6 Fix: cannot show when dled imga 2020-05-11 18:42:52 +09:00
cutls
c005b546ba Fix: cannot upload 2020-05-11 18:42:43 +09:00
cutls
783ceec8de typo 2020-05-10 22:02:51 +09:00
cutls
b1ccfa85ba TheDesk 21.0.0(Mayu) 2020-05-10 21:59:25 +09:00
cutls
7e6d03fd53 fix: utl loading 2020-05-10 21:52:01 +09:00
cutls
dd0e1279c4 icon, en-splash, add remote-only pub 2020-05-10 19:39:49 +09:00
cutls
1b3e676b30 Add splash screen 2020-05-10 17:32:49 +09:00
cutls
a4582bb18a splash animation 2020-05-10 13:26:07 +09:00
cutls
25e99725d2 Add: show utl as a column 2020-05-07 00:31:11 +09:00
cutls
da011cd302 pwa compat 2020-05-06 18:09:00 +09:00
cutls
53010751ee pwa compat 2020-05-06 18:06:05 +09:00
cutls
19401b61cb del asterte-compat 2020-05-06 18:03:33 +09:00
cutls
82271f1c17 platform compat 2020-05-06 18:02:14 +09:00
cutls
a74d0ecf8d Bug wo mitsuketa 2020-05-05 23:37:58 +09:00
cutls
7ee4205f8a Add: Last.fm 2020-05-05 23:36:31 +09:00
cutls
9aef043344 cors 2020-05-03 22:46:55 +09:00
cutls
4dbc673719 fix 2020-05-03 22:32:41 +09:00
cutls
d44cecf21f show 2020-05-03 22:27:11 +09:00
cutls
3c0ea8f40d test 2020-05-03 22:23:59 +09:00
cutls
06b806532e test fin 2020-05-03 22:20:28 +09:00
cutls
1983864294 mv 2020-05-03 22:16:36 +09:00
cutls
c523a274e1 headers 2020-05-03 22:14:39 +09:00
cutls
03563eb1f2 mv 2020-05-03 22:11:23 +09:00
cutls
2f14d18126 toml 2020-05-03 22:06:41 +09:00
cutls
d1309a82ec np 2020-05-03 22:05:55 +09:00
cutls
2a2607eb4b follow request 2020-05-03 22:05:45 +09:00
cutls
e9b5221f05 TheDesk 20.3.3 2020-05-03 00:30:41 +09:00
cutls
bb71a28375 Add filesize 2020-05-02 23:32:46 +09:00
cutls
af3e87b0e3 Merge branch 'master' of github.com:cutls/TheDesk 2020-04-29 15:08:57 +09:00
cutls
4728a59c33 Accessibility (Screen Reader Optimized mode) 2020-04-29 15:08:42 +09:00
Cutls
f9a9c13dc5 Merge pull request #272 from cutls/dependabot/npm_and_yarn/app/electron-8.2.3
Bump electron from 8.0.0 to 8.2.3 in /app
2020-04-27 17:48:21 +09:00
Cutls
1fa6abccf7 Merge branch 'master' into dependabot/npm_and_yarn/app/electron-8.2.3 2020-04-27 17:48:12 +09:00
dependabot-preview[bot]
9aa68b8ee6 Bump electron from 8.0.0 to 8.2.3 in /app
Bumps [electron](https://github.com/electron/electron) from 8.0.0 to 8.2.3.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.0.0...v8.2.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-27 08:47:46 +00:00
Cutls
f90cfe221f Merge pull request #273 from cutls/dependabot/npm_and_yarn/app/jimp-0.10.3
Bump jimp from 0.10.1 to 0.10.3 in /app
2020-04-27 17:47:40 +09:00
Cutls
b70a5d0053 Merge branch 'master' into dependabot/npm_and_yarn/app/jimp-0.10.3 2020-04-27 17:47:27 +09:00
Cutls
9c4ba4da80 Merge pull request #271 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.5.1
Bump electron-builder from 22.4.1 to 22.5.1 in /app
2020-04-27 17:46:36 +09:00
Cutls
591dc1ba3c Merge pull request #270 from cutls/dependabot/npm_and_yarn/app/sweetalert2-9.10.12
Bump sweetalert2 from 9.10.9 to 9.10.12 in /app
2020-04-27 17:46:18 +09:00
Cutls
841afc5a33 Merge pull request #267 from cutls/dependabot/npm_and_yarn/app/jquery-3.5.0
Bump jquery from 3.4.1 to 3.5.0 in /app
2020-04-27 17:46:01 +09:00
Cutls
3a2e3c7895 New Crowdin translations (#263)
* New translations setting.json (Russian)

* New translations setting.json (Portuguese)

* New translations setting.json (Romanian)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Polish)

* New translations setting.json (Norwegian)

* New translations setting.json (Italian)

* New translations setting.json (Serbian (Cyrillic))

* New translations setting.json (Vietnamese)

* New translations setting.json (Ukrainian)

* New translations setting.json (Turkish)

* New translations setting.json (Swedish)

* New translations setting.json (Spanish, Argentina)

* New translations setting.json (Spanish)

* New translations setting.json (Hungarian)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Catalan)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations setting.json (Czech)

* New translations setting.json (Hebrew)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (French)

* New translations setting.json (Finnish)

* New translations setting.json (Dutch)

* New translations setting.json (Danish)

* New translations setting.json (English)

* New translations main.json (Russian)

* New translations main.json (Romanian)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Portuguese)

* New translations main.json (Serbian (Cyrillic))

* New translations main.json (Polish)

* New translations main.json (Norwegian)

* New translations main.json (Italian)

* New translations main.json (Turkish)

* New translations main.json (English)

* New translations main.json (Vietnamese)

* New translations main.json (Ukrainian)

* New translations main.json (Swedish)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Spanish)

* New translations main.json (Catalan)

* New translations main.json (Czech)

* New translations main.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations main.json (Bulgarian)

* New translations main.json (Arabic)

* New translations main.json (Afrikaans)

* New translations main.json (Hungarian)

* New translations main.json (Hebrew)

* New translations main.json (Greek)

* New translations main.json (German)

* New translations main.json (Danish)

* New translations main.json (French)

* New translations main.json (Finnish)

* New translations main.json (Dutch)

* New translations acct.json (Serbian (Cyrillic))

* New translations main.json (Russian)

* New translations acct.json (Russian)

* New translations main.json (Romanian)

* New translations acct.json (Romanian)

* New translations main.json (Portuguese, Brazilian)

* New translations acct.json (Portuguese, Brazilian)

* New translations main.json (Portuguese)

* New translations main.json (Serbian (Cyrillic))

* New translations acct.json (Portuguese)

* New translations main.json (Polish)

* New translations acct.json (Polish)

* New translations main.json (Norwegian)

* New translations acct.json (Norwegian)

* New translations main.json (Italian)

* New translations acct.json (Italian)

* New translations main.json (Turkish)

* New translations main.json (English)

* New translations acct.json (English)

* New translations main.json (Vietnamese)

* New translations acct.json (Vietnamese)

* New translations main.json (Ukrainian)

* New translations acct.json (Ukrainian)

* New translations acct.json (Spanish)

* New translations acct.json (Turkish)

* New translations main.json (Swedish)

* New translations acct.json (Swedish)

* New translations main.json (Spanish, Argentina)

* New translations acct.json (Spanish, Argentina)

* New translations main.json (Spanish)

* New translations acct.json (Afrikaans)

* New translations main.json (Catalan)

* New translations main.json (Czech)

* New translations acct.json (Czech)

* New translations main.json (Chinese Traditional)

* New translations acct.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations acct.json (Chinese Simplified)

* New translations acct.json (Danish)

* New translations acct.json (Catalan)

* New translations main.json (Bulgarian)

* New translations acct.json (Bulgarian)

* New translations main.json (Arabic)

* New translations acct.json (Arabic)

* New translations main.json (Afrikaans)

* New translations main.json (Hungarian)

* New translations acct.json (Hungarian)

* New translations main.json (Hebrew)

* New translations acct.json (Hebrew)

* New translations main.json (Greek)

* New translations acct.json (Greek)

* New translations main.json (German)

* New translations acct.json (German)

* New translations main.json (Danish)

* New translations main.json (French)

* New translations acct.json (French)

* New translations main.json (Finnish)

* New translations acct.json (Finnish)

* New translations main.json (Dutch)

* New translations acct.json (Dutch)

* New translations index.json (Italian)

* New translations index.json (Hungarian)

* New translations index.json (Hebrew)

* New translations index.json (Finnish)

* New translations index.json (Romanian)

* New translations index.json (Russian)

* New translations index.json (Portuguese)

* New translations index.json (Polish)

* New translations index.json (Dutch)

* New translations index.json (Norwegian)

* New translations index.json (Greek)

* New translations index.json (Spanish)

* New translations index.json (Arabic)

* New translations index.json (Afrikaans)

* New translations index.json (French)

* New translations index.json (German)

* New translations index.json (Bulgarian)

* New translations index.json (Danish)

* New translations index.json (Czech)

* New translations index.json (Catalan)

* New translations index.json (Vietnamese)

* New translations index.json (Chinese Traditional)

* New translations index.json (Portuguese, Brazilian)

* New translations index.json (English)

* New translations index.json (Spanish, Argentina)

* New translations index.json (Serbian (Cyrillic))

* New translations index.json (Swedish)

* New translations index.json (Chinese Simplified)

* New translations index.json (Turkish)

* New translations index.json (Ukrainian)
2020-04-27 17:45:32 +09:00
cutls
5e035dc239 tag add all/none/any 2020-04-26 17:55:03 +09:00
cutls
2761cc23b0 css of announcement 2020-04-26 16:34:58 +09:00
cutls
cf00fefa6b Accessibility 2020-04-21 23:56:04 +09:00
cutls
039799083d depend 2020-04-21 22:18:40 +09:00
dependabot-preview[bot]
f6f53f9729 Bump jimp from 0.10.1 to 0.10.3 in /app
Bumps [jimp](https://github.com/oliver-moran/jimp) from 0.10.1 to 0.10.3.
- [Release notes](https://github.com/oliver-moran/jimp/releases)
- [Changelog](https://github.com/oliver-moran/jimp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oliver-moran/jimp/compare/v0.10.1...v0.10.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-20 21:05:16 +00:00
cutls
219695f9ae TheDesk 20.3.2 (Kawaii) 2020-04-18 11:00:56 +09:00
dependabot-preview[bot]
34c189b3ed Bump electron-builder from 22.4.1 to 22.5.1 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.4.1 to 22.5.1.
- [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/commits/v22.5.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-16 20:14:21 +00:00
dependabot-preview[bot]
4a704bc257 Bump sweetalert2 from 9.10.9 to 9.10.12 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 9.10.9 to 9.10.12.
- [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/v9.10.9...v9.10.12)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-14 20:16:52 +00:00
cutls
2dc3ca51a3 Mastodon 3.1.3 2020-04-11 16:09:46 +09:00
cutls
b2564cfabb Fix: Pleroma image upload 2020-04-11 10:41:04 +09:00
dependabot-preview[bot]
d0734ed5fe Bump jquery from 3.4.1 to 3.5.0 in /app
Bumps [jquery](https://github.com/jquery/jquery) from 3.4.1 to 3.5.0.
- [Release notes](https://github.com/jquery/jquery/releases)
- [Commits](https://github.com/jquery/jquery/compare/3.4.1...3.5.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-10 20:16:32 +00:00
cutls
6ddc613b5a fix 2020-04-08 18:12:58 +09:00
cutls
3373ff417f TheDesk 20.3.1 (Kawaii) 2020-04-08 17:58:37 +09:00
cutls
9bee8afe95 misc 2020-04-08 15:30:20 +09:00
cutls
f79da2b692 tips versioning and Spotify player bug 2020-04-08 15:28:04 +09:00
cutls
fedb1ee858 misskey login 2020-04-08 15:27:47 +09:00
cutls
50e11ec035 v1 media bug 2020-04-08 14:54:25 +09:00
cutls
233442936a Fix: delete when unreblog 2020-04-08 14:54:14 +09:00
262 changed files with 16091 additions and 9529 deletions

2
.github/FUNDING.yml vendored
View File

@@ -5,4 +5,4 @@ patreon: cutls
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
custom: https://www.pixiv.net/fanbox/creator/28105985
custom: https://cutls.fanbox.cc

9
.gitignore vendored
View File

@@ -20,7 +20,16 @@ app/view/bg
app/view/cs
app/view/ps
app/view/es-AR
app/view/it-IT
app/git
*.code-workspace
releasenote.md
app/yarn-error.log
app/js/platform/aiscript.js
app/view/es-ES
app/view/fr-FR
app/view/no-NO
app/view/zh-CN
app/view/ru-RU
app/view/zh-TW
app/view/pt-BR

View File

@@ -6,15 +6,30 @@ language: node_js
env:
- YARN_GPG=no
node_js:
- '10.15.2'
- '12.17.0'
cache:
yarn: true
script: node -v
before_deploy:
- yarn global add electron-builder
- yarn global add browserify
- cd app
- VERSION=$(cat package.json | grep version | head -1 | awk -F= "{ print $2 }" | sed 's/[version:,\",]//g' | tr -d '[[:space:]]')
- yarn install --no-lockfile --prod
- yarn construct:store
- if [ "$TRAVIS_OS_NAME" = "osx" ];then electron-builder --mac -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "osx" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "osx" ];then mv *.dmg TheDesk-$VERSION-store.dmg;else :;fi
- if [ "$TRAVIS_OS_NAME" = "osx" ];then cd ../app;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then electron-builder --linux snap:x64 -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then mv *.snap TheDesk-$VERSION-store.snap;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../app;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then yarn add electron-builder;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win appx:x64 -p never ;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv *.appx TheDesk-$VERSION-store.appx;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../app;else :;fi
- yarn construct
- if [ "$TRAVIS_OS_NAME" = "osx" ];then electron-builder --mac -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then electron-builder --linux --x64 -p never;else :;fi
@@ -22,7 +37,6 @@ before_deploy:
- if [ "$TRAVIS_OS_NAME" = "linux" ];then ls;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then mv thedesk-*.zip thedesk.zip;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../app;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then yarn add electron-builder;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win --ia32 -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then ls;else :;fi

View File

@@ -11,7 +11,10 @@
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント[日本語はこちら](README_ja.md)
Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com)
Download:[TheDesk](https://thedesk.top)
On GitHub Releases, `-store.*` assets are made for some application store or manager(Snapcraft, Homebrew, Microsoft Store).
They do not check the latest version(Which you can get the latest ver or not depends on the store)
<a href="https://www.patreon.com/cutls"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160"></a>
<a href="https://liberapay.com/cutls/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
@@ -32,16 +35,20 @@ The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.o
The default sounds of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/)
## Terms of Use
## Privacy Policy
* [利用規約(Terms of Use(ja))](https://thedesk.top/tos.html)
* [プライバシーポリシー(Privacy Policy(ja))](https://thedesk.top/priv.html)
## Language
* 日本語(Japanese)
* 日本語, 関西(Japanese, Kansai)
* English
* de, cs, bg(from Crowdin)
* български(Bulgarian) with [translate project](https://translate.thedesk.top/project/thedesk/bg)
* Česky(Czech) with [translate project](https://translate.thedesk.top/project/thedesk/cs)
* Deutsch(German) with [translate project](https://translate.thedesk.top/project/thedesk/de)
* Español, argentina(Spanish, Argentina) with [translate project](https://translate.thedesk.top/project/thedesk/es-AR)
* italiano(Italian) with [translate project](https://translate.thedesk.top/project/thedesk/it-IT)
### Translation
@@ -49,15 +56,17 @@ Crowdin project is available! Visit: https://translate.thedesk.top
### Run on developer mode
`npm run dev` on `app` folder.
`npm run dev` on `app` folder.(before you should run `yarn construct` to make HTML views)
If you change HTML or language files, you should rub to `yarn construct`. Or `yarn watchview` can always watch and construct such files with 1 process.
## Contributors
Build for macOS
Build for macOS(Now: Travis CI)
* [toneji](https://minohdon.jp/@toneji)
Build for Linux
Build for Linux(Now: Travis CI)
* [popn_ja](https://popon.pptdn.jp/@popn_ja)
@@ -67,7 +76,8 @@ Fellow coder
## Build
You have to use either **npm** or **yarn**. Whichever you use, it works well.
You should use `yarn` but you can use also `npm`, but if you build on Windows, you should strongly use `yarn`
`yarn ***` and `npm run ***` has the same meaning,
### npm
@@ -92,27 +102,11 @@ yarn install
yarn construct
```
run `npm run dev` or `yarn dev` to launch developer version with console(click `view`)
run `yarn dev` to launch developer version with console(click `view`)
### electron-builder(Recommended)
Use scripts(they can work well with npm, **yarn**).
#### npm
```sh
# Build for current platform
npm run build
# Select build target
## Windows
npm run build:win
## Windows and Linux (The macOS target should run on macOS. So, this option hasn't include the build for macOS)
npm run build:all
```
#### yarn
```sh
# Build for current platform
yarn build
@@ -129,7 +123,7 @@ yarn build:all
Config is all on package.json
### electron-packager
`npm install --save-dev electron-rebuild`
`yarn --D electron-rebuild`
Linux/macOS
`./node_modules/.bin/electron-rebuild`
@@ -140,19 +134,25 @@ To install Python 2.x and Visual C++ for Windows, before running `npm install --
`npm install --global windows-build-tools`
Windows
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite`
```
electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite
```
Linux
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=linux --arch=x64,ia32 --electron-version=4.0.5 --overwrite`
```
electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=linux --arch=x64,ia32 --electron-version=4.0.5 --overwrite
```
macOS
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite`
```
electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite
```
### PWA support
TheDesk is a wed-based app, so you can run it on a browser. Of course, the main stream is as Electron. Some features won't work as well as Electron.
TheDesk is a web-based app, so you can run it on a browser. Of course, the main stream is as Electron. Some features won't work as well as Electron.
You can run `npm run build:pwa` to build as PWA, including `manifest.json` and the ServiceWorker.
**You have to rename `node_modules` to `dependencies` to run as a web application. (restricted by Netlify)**
**You have to rename `node_modules` to `dependencies` to run as a web application. (restricted by Netlify, but always you should do to run as PWA)**
Check the app on Chrome or Firefox: [Here](https://app.thedesk.top) (it follows the `master` branch, so not stable.)
[![Netlify Status](https://api.netlify.com/api/v1/badges/6916503b-2882-43f7-9681-ab814e6d28f9/deploy-status)](https://app.netlify.com/sites/thedesk/deploys)
@@ -163,7 +163,6 @@ Did you find a bug with Pleroma accounts?
Pleroma **does not** follow Mastodon API rules completely although Pleroma developers say so.
Please write issues to improve TheDesk affinity with Pleroma.
## Vulnerabilities when `npm i`???
No, if your npm says materialize-css has vulnerabilities(CVE-2019-11002/3/4), look at [here](https://github.com/Dogfalo/materialize/issues/6286) under discussion.
## Vulnerabilities when `yarn install`???
No, if your npm says materialize-css has vulnerabilities(CVE-2019-11002/3/4), look at [here](https://github.com/Dogfalo/materialize/issues/6286) under discussion, but I do not think this report is really fatal.

View File

@@ -10,10 +10,12 @@
![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント
Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com)
Download:[TheDesk](https://thedesk.top)
[Pixiv FANBOX](https://www.pixiv.net/fanbox/creator/28105985)
`-store.*`とあるアセットはストアやパッケージマネージャ向けのもので、アップデートの確認をソフト本体で行いません。
![Screenshots1](https://thedesk.top/img/scr1.png)
## ライセンス
@@ -31,32 +33,39 @@ Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge
標準の通知音は [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/) で提供されています。
## 利用規約
## プライバシーポリシー
* [利用規約](https://thedesk.top/tos.html)
* [プライバシーポリシー](https://thedesk.top/priv.html)
## 言語
* 日本語
* 日本語(関西)
* English(英語)
* ドイツ語, チェコ語, ブルガリア語(from Crowdin)
* ドイツ語, チェコ語, ブルガリア語, イタリア語, スペイン語アルゼンチン方言 (from [Crowdin](https://translate.thedesk.top))
### 翻訳
Crowdinから翻訳に参加してみませんか: https://translate.thedesk.top
以下、`yarn ***`は全て`npm run ***`で実行できます。(yarnが推奨)
### デベロッパーモード
`npm run dev``app`フォルダ内で実行
`yarn dev``app`フォルダ内で実行
ただし、最初に`yarn construct`必須。
watchモード(ホットリロードはしません): `yarn construct`の代わりに`yarn watchview`
HTMLや言語定義の変更について、このコマンドで継続監視します。その他のアセットの変更には不要です。
プロセス1つを占拠するので、`yarn dev`は他のプロセスで行ってください。
## 主なコントリビューター
macOSビルダー
macOSビルダー(現在はTravis CI)
* [とねぢ](https://minohdon.jp/@toneji)
Linuxビルダー
Linuxビルダー(現在はTravis CI)
* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
@@ -66,7 +75,7 @@ Linuxビルダー
## ビルド
npmでもyarnでも好きな方を選んでください。
npmでもyarnでも好きな方を選んでください。Windows環境ではyarnを強く推奨します。
### npm
@@ -95,22 +104,6 @@ yarn construct
scriptsを利用します
#### npm
```sh
# 実行している環境向けにビルド
npm run build
# ターゲットを指定してビルド
## Windows
npm run build:win
## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません
npm run build:all
```
#### yarn
```sh
# 実行している環境向けにビルド
yarn build
@@ -123,10 +116,11 @@ yarn build:win
yarn build:all
```
ビルド設定はすべてpackage.jsonに記載しています。
### electron-packager(非推奨)
`npm install --save-dev electron-rebuild`
`yarn -D electron-rebuild`
Linux/macOS
`./node_modules/.bin/electron-rebuild`
@@ -139,19 +133,25 @@ WindowsでPython 2.xやVisualC++を一発でインストールできるツール
日本語話者向けですが、macOSビルドにはXCodeが要るとの情報があります。([とねぢ](https://minohdon.jp/@toneji)氏談)
Windows
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite`
```
electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite
```
Linux
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=linux --arch=x64,ia32 --electron-version=4.0.5 --overwrite`
```
electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=linux --arch=x64,ia32 --electron-version=4.0.5 --overwrite
```
macOS
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite`
```
electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite
```
### PWAとして実行
TheDeskはウェブ技術を使用して作られているので、ブラウザで動かすこともできます。もちろん、Electron向けに設計されているので一部機能は動きません。
`npm run build:pwa`でビルドできます。PWAに必要な`manifest.json`やサービスワーカーなども要員されています。
`yarn build:pwa`でビルドできます。PWAに必要な`manifest.json`やサービスワーカーなども用意されています。
**`node_modules``dependencies`にリネームしないと動きません。(Netlifyの制限です)**
**`node_modules`を`dependencies`にリネームしないと動きません。(Netlifyの制限ですが、Netlify以外で動かす場合にも必須です)**
ChromeまたはFirefoxでチェック: [こちら](https://app.thedesk.top) (`master`ブランチに追従しています。不安定です。)
[![Netlify Status](https://api.netlify.com/api/v1/badges/6916503b-2882-43f7-9681-ab814e6d28f9/deploy-status)](https://app.netlify.com/sites/thedesk/deploys)
@@ -165,7 +165,7 @@ Issuesに書いてある問題についてはなるべく対処しますので
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)
## `npm i`したら脆弱性あるって言われた
## `yarn install`したら脆弱性あるって言われた
materialize-cssの脆弱性(CVE-2019-11002/3/4)については[こちら](https://github.com/Dogfalo/materialize/issues/6286)で本当に脆弱性かどうか議論しています。
実際には害が無いものと思われます。

5
app/.eslintignore Normal file
View File

@@ -0,0 +1,5 @@
js/common/blurhash.js
js/common/hammer.min.js
js/common/sha256.js
js/platform/punycode.js
js/platform/tj-deck.js

14
app/.eslintrc.json Normal file
View File

@@ -0,0 +1,14 @@
{
"extends": "eslint:recommended",
"env": {"browser": true},
"rules": {
"no-console": "off",
"semi": ["error", "never"]
},
"globals": {
"$": false,
"ver": true,
"pwa": true,
"lang": true
}
}

View File

@@ -1,135 +1,139 @@
<!doctype html>
<!DOCTYPE html>
<html lang="ja">
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
<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" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet" />
<meta charset="utf-8" />
<style>
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 5px;
padding-top: 15px;
}
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<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">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet">
<meta charset="utf-8">
<style>
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 5px;
padding-top: 15px;
}
a,
button {
-webkit-app-region: no-drag;
}
a,
button {
-webkit-app-region: no-drag;
}
.container {
width: 100%;
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr 1fr;
grid-template-areas: 'name1 data1' 'name2 data2' 'name3 data3' 'name4 data4' 'name5 data5' 'name6 data6';
text-align: left;
margin: 5px;
}
.container {
width: 100%;
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr 1fr;
grid-template-areas: 'name1 data1''name2 data2''name3 data3''name4 data4''name5 data5''name6 data6';
text-align: left;
margin: 5px;
}
.area-name1 {
grid-area: name1;
}
.area-name1 {
grid-area: name1;
}
.area-data1 {
grid-area: data1;
}
.area-data1 {
grid-area: data1;
}
.area-name2 {
grid-area: name2;
}
.area-name2 {
grid-area: name2;
}
.area-data2 {
grid-area: data2;
}
.area-data2 {
grid-area: data2;
}
.area-name3 {
grid-area: name3;
}
.area-name3 {
grid-area: name3;
}
.area-data3 {
grid-area: data3;
}
.area-data3 {
grid-area: data3;
}
.area-name4 {
grid-area: name4;
}
.area-name4 {
grid-area: name4;
}
.area-data4 {
grid-area: data4;
}
.area-data4 {
grid-area: data4;
}
.area-name5 {
grid-area: name5;
}
.area-name5 {
grid-area: name5;
}
.area-data5 {
grid-area: data5;
}
.area-data5 {
grid-area: data5;
}
.area-name6 {
grid-area: name6;
}
.area-name6 {
grid-area: name6;
}
.area-data6 {
grid-area: data6;
}
</style>
</head>
.area-data6 {
grid-area: data6;
}
</style>
</head>
<body class="center " style="overflow:hidden">
<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="./node_modules/materialize-css/dist/js/materialize.js"></script>
<img src="./img/desk.svg" 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">Commit(7chars)</div>
<div class="area-data3" id="hash"></div>
<div class="area-name4">Chromium</div>
<div class="area-data4" id="chrome"></div>
<div class="area-name5">Electron</div>
<div class="area-data5" id="electron"></div>
<div class="area-name6">Node.js</div>
<div class="area-data6" 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://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">
<br><a href="https://thedesk.top" target="_blank">Web site</a></div>
<button onclick="window.close()" class="btn waves-effect indigo" style="width:calc(100% - 10px);"><i
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"));
$("#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];
$("#ver").text(ver);
}
$("#hash").html('<a href="https://github.com/cutls/TheDesk/commits/' + about[3] + '" target="_blank">' + about[3].slice(0, 7) + '</a>');
$(document).on('click', 'a', e => {
var url = $(e.target).attr('href');
postMessage(["openUrl", url], "*")
return false;
});
</script>
<body class="center" style="overflow: hidden;">
<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="./node_modules/materialize-css/dist/js/materialize.js"></script>
<img src="./img/desk.svg" 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">Commit(7chars)</div>
<div class="area-data3" id="hash"></div>
<div class="area-name4">Chromium</div>
<div class="area-data4" id="chrome"></div>
<div class="area-name5">Electron</div>
<div class="area-data5" id="electron"></div>
<div class="area-name6">Node.js</div>
<div class="area-data6" 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://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" />
<br /><a href="https://thedesk.top" target="_blank">Web site</a>
</div>
<button onclick="window.close()" class="btn waves-effect indigo" style="width: calc(100% - 10px);"><i 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'))
$('#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]
$('#ver').text(ver)
}
$('#hash').html('<a href="https://github.com/cutls/TheDesk/commits/' + about[3] + '" target="_blank">' + about[3].slice(0, 7) + '</a>')
$(document).on('click', 'a', (e) => {
var url = $(e.target).attr('href')
postMessage(['openUrl', url], '*')
return false
})
</script>
</body>
</html>

11
app/aiscript.js Normal file
View File

@@ -0,0 +1,11 @@
const { AiScript, parse, values, utils } = require('@syuilo/aiscript')
global.sanitizeHtml = require('sanitize-html')
global.asValue = values
global.AiScript = AiScript
global.asParse = parse
global.asCommon = {
'TheDesk:console': values.FN_NATIVE((z) => {
console.log(z[0].value)
})
}
global.asUtil = utils

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@@ -21,6 +21,15 @@ html {
align-items: flex-start;
}
#acct-list .btn-flat.white-text {
color: inherit !important;
}
#acct-list .btn-flat.red-text {
background-color: white !important;
}
.lts {
font-size: 150%;
}
@@ -48,6 +57,12 @@ html {
.first .hide-first {
display: none;
}
.hide-second {
display: none;
}
.first .hide-second {
display: inline;
}
#compt {
margin-top: 20px;
@@ -73,4 +88,7 @@ i.left {
#domain-list .title {
font-size: 1.3rem;
}
.text-line-icon {
font-size: 1rem;
}

View File

@@ -5,27 +5,44 @@ body {
overflow: hidden;
user-select: none;
cursor: default;
font-size: 13px;
height: 100vh;
color: var(--color);
color: var(--text);
}
.titlebar, .menubar-menu-container, .action-menu-item {
background-color: var(--notfbox) !important;
html {
font-size: 13px;
}
.titlebar,
.menubar-menu-container,
.action-menu-item {
background-color: var(--subcolor) !important;
filter: brightness(110%) !important;
color: var(--color) !important;
color: var(--text) !important;
}
.action-menu-item:hover {
filter: brightness(80%) !important;
}
.btn {
margin: 5px;
.btn,
.btn-flat {
font-size: 1.1rem;
margin: 0.4rem;
text-transform: none;
height: 2.76rem;
line-height: 2.76rem;
}
.markdown {
display: none;
}
help {
display: none;
.accessMark {
font-size: 12px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
background-color: var(--emphasized);
padding-left: 5px;
padding-right: 5px;
}
.accessibility .scr {
display: none !important;
}
.show-help {
display: inline;
@@ -73,12 +90,21 @@ option {
width: 100%;
height: 100%;
}
#imagewrap img.rotate-90 {
transform: rotate(-90deg)
}
#imagewrap img.rotate-180 {
transform: rotate(-180deg)
}
#imagewrap img.rotate-270 {
transform: rotate(-270deg)
}
.pointer {
cursor: pointer;
}
.badge {
min-width: 0 !important;
margin-left: 5px !important;
margin-left: 0.4rem !important;
}
.unvisible {
opacity: 0;
@@ -152,16 +178,17 @@ pre {
display: block;
border-left: 5px solid;
border-color: #079903;
padding-left: 10px;
margin-top: 5px;
margin-bottom: 5px;
margin-left: 5px;
padding-left: 0.75rem;
margin-top: 0.75rem;
margin-bottom: 0.75rem;
margin-left: 0.75rem;
background-color: #000;
padding: 1em 1em 1em;
position: relative;
border-top-left-radius: 10px;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
border-top-left-radius: 0.75rem;
border-bottom-right-radius: 0.75rem;
border-bottom-left-radius: 0.75rem;
white-space: normal;
}
blockquote,
.quote p {
@@ -173,9 +200,9 @@ blockquote,
background-color: #ddd;
padding: 1em 1em 1em;
position: relative;
border-top-left-radius: 10px;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
border-top-left-radius: 0.75rem;
border-bottom-right-radius: 0.75rem;
border-bottom-left-radius: 0.5rem;
}
blockquote:before,
.quote:before {
@@ -193,9 +220,9 @@ blockquote:before,
background-color: #fff;
padding: 1em 1em 1em;
position: relative;
border-top-left-radius: 10px;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
border-top-left-radius: 0.75rem;
border-bottom-right-radius: 0.75rem;
border-bottom-left-radius: 0.75rem;
border-left: 5px solid #0096fa;
}
.pixiv-post :before {
@@ -212,9 +239,10 @@ blockquote:before,
display: none;
position: fixed;
width: 100vw;
height: calc(100vh - 40px);
height: calc(100vh - 3rem);
background-color: var(--bg);
color: var(--color);
filter: brightness(50%);
color: var(--text);
z-index: 99999;
justify-content: center;
align-items: center;
@@ -225,7 +253,7 @@ blockquote:before,
width: 100vw;
height: 100vh;
background-color: var(--bg);
color: var(--color);
color: var(--text);
z-index: 99999;
justify-content: center;
align-items: center;
@@ -236,7 +264,7 @@ blockquote:before,
#pip {
z-index: 504;
width: 418px;
background-color: var(--subcolor);
background-color: var(--thirdColor);
position: absolute;
}
.pip-bottom {
@@ -297,40 +325,53 @@ blockquote:before,
}
.collapsible-header,
.tabs {
background-color: var(--subcolor);
background-color: var(--thirdColor);
}
.collapsible-header:focus {
background-color: var(--subcolor) !important;
background-color: var(--thirdColor) !important;
}
.modal-footer {
background-color: var(--modalfooter) !important;
}
.font {
font-size: 1.5rem;
margin-bottom: 5px;
margin-bottom: 0.4rem;
}
.font:hover {
background-color: #999;
}
.release-do {
border: solid 2px;
border-color: var(--color);
border-color: var(--text);
padding: 5px;
}
#pickers {
display: flex;
flex-wrap: wrap;
flex-direction: column;
}
input[type='color'] {
-webkit-appearance: none;
border: none;
width: 32px;
height: 32px;
}
input[type='color']::-webkit-color-swatch-wrapper {
padding: 0;
}
input[type='color']::-webkit-color-swatch {
border: none;
}
#menu {
position: fixed;
z-index: 9999;
z-index: 999;
background-color: var(--postbox);
width: 540px;
top: calc(50% - 150px);
left: calc(50% - 250px);
padding: 5px;
padding: 0.4rem;
border: thin solid gray;
border-radius: 5px;
border-radius: 0.4rem;
overflow: hidden;
}
#menu-wrapper {
@@ -340,30 +381,34 @@ blockquote:before,
overflow: hidden;
}
#left-menu {
width: 230px;
width: 17.7rem;
}
#left-menu div {
padding-left: 5px;
#left-menu a {
padding-left: 0.4rem;
width: 100%;
height: 50px;
height: 3rem;
display: flex;
align-items: center;
cursor: pointer;
color: var(--text);
}
#left-menu div:hover {
#left-menu a:hover {
background-color: var(--beforehover);
}
#left-menu span {
margin-left: 5px;
margin-left: 0.4rem;
}
#left-menu div.active {
#left-menu a.active {
background-color: var(--emphasized);
}
#left-menu a.active span {
text-decoration: underline;
}
#right-menu {
width: 100%;
overflow-y: scroll;
overflow-x: hidden;
padding: 5px;
padding: 0.4rem;
}
#tltype {
display: flex;
@@ -373,12 +418,13 @@ blockquote:before,
display: flex;
flex-wrap: wrap;
align-items: center;
width: 170px;
height: 40px;
width: 13rem;
height: 3.1rem;
cursor: pointer;
color: var(--text);
}
#tltype .type span {
width: calc(100% - 30px);
width: calc(100% - 2.3rem);
}
#tltype .type:hover {
background-color: var(--beforehover);
@@ -387,28 +433,28 @@ blockquote:before,
background-color: var(--emphasized);
}
#tltype i {
font-size: 30px;
font-size: 2.3rem;
}
#tltype i.sub-icon {
font-size: 20px;
font-size: 1.53rem;
position: absolute;
color: var(--beforehover);
left: 10px;
bottom: 5px;
left: 0.9rem;
bottom: 0.4rem;
background-color: #fff;
}
.drag-bar {
cursor: move;
text-align: center;
width: calc(100% + 10px);
width: calc(100% + 0.8rem);
border-radius: 5px;
background-color: var(--box);
background-color: var(--subcolor);
filter: brightness(80%);
margin-left: -5px;
margin-right: -5px;
margin-top: -5px;
font-size: 16px;
padding: 4px;
margin-left: -0.4rem;
margin-right: -0.4rem;
margin-top: -0.4rem;
font-size: 1.3rem;
padding: 0.3rem;
}
#something-wrong {
flex-direction: column;
@@ -423,12 +469,12 @@ blockquote:before,
position: fixed;
bottom: -300px;
width: 100vw;
background-color: var(--box);
background-color: var(--subcolor);
z-index: 9999;
padding: 10px;
padding: 0.8rem;
display: grid;
grid-template-columns: 3fr 1fr 1fr;
grid-template-rows: 1fr 36px;
grid-template-rows: 1fr 2.7rem;
grid-template-areas: 'note middle right' 'note close close';
}
#support-btm-en,
@@ -445,23 +491,23 @@ blockquote:before,
grid-area: close;
}
.select-wrapper .dropdown-content {
width: 250px !important;
width: 19.2rem !important;
}
input,
textarea {
color: var(--color);
color: var(--text);
font-size: 1rem !important;
font-family: inherit;
}
.swal2-popup {
background-color: var(--notfbox) !important;
background-color: var(--subcolor) !important;
}
.swal2-title,
.swal2-content {
color: var(--color) !important;
color: var(--text) !important;
}
#src-contents svg {
margin-right: 5px;
margin-right: 0.4rem;
}
.contributor {
cursor: pointer;
@@ -471,11 +517,11 @@ textarea {
}
.tagComp {
display: grid;
grid-template-columns: 60px 80px 1fr;
grid-template-columns: 4.6rem 6.15rem 1fr;
grid-template-rows: 1fr 1fr;
grid-template-areas: 'svg toot user' 'svg toot tag' 'svg toots tag';
border-top: dotted 0.5px var(--gray);
padding: 5px;
padding: 0.4rem;
}
.tagCompSvg {
grid-area: svg;
@@ -493,7 +539,7 @@ textarea {
}
.tagCompTag {
grid-area: tag;
padding-top: 10px;
padding-top: 0.4rem;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
@@ -504,15 +550,22 @@ textarea {
#pageSrc {
position: absolute;
top: 0;
left: calc(50vw - 150px);
width: 300px;
left: calc(50vw - 11.53rem);
width: 23rem;
max-width: 100%;
background-color: var(--box);
z-index: 501;
padding: 5px;
background-color: var(--subcolor);
z-index: 501;
padding: 0.4rem;
}
#pageSrcInput {
width: 160px;
width: 12.3rem;
}
.voice {
clip: rect(1px, 1px, 1px, 1px);
position: absolute !important;
height: 1px;
width: 1px;
overflow: hidden;
}
@media (max-width: 500px) {
@@ -524,9 +577,15 @@ textarea {
/*スクロールバー*/
::-webkit-scrollbar {
width: 5px;
height: 10px;
height: 12px;
background: rgba(0, 0, 0, 0.05);
}
.thickScrollBar ::-webkit-scrollbar {
height: 18px;
}
.thinScrollBar ::-webkit-scrollbar {
height: 5px;
}
::-webkit-scrollbar-track {
-webkit-border-radius: 5px;
border-radius: 5px;
@@ -538,28 +597,34 @@ textarea {
background: #607d8b;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
}
::-webkit-scrollbar-thumb::after {
content: '';
position: absolute;
top: 100%;
left: 50%;
margin-left: -15px;
border: 15px solid transparent;
border-top: 15px solid #e0edff;
}
/* Web Fonts */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'),
url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN_r8OUuhp.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F,
U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
src: local('Open Sans Light'), local('OpenSans-Light'), url('../fonts/OpenSans-Light.ttf') format('truetype');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Material Icons';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/materialicons/v48/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2)
format('woff2');
src: url(https://fonts.gstatic.com/s/materialicons/v48/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
}
.material-icons {
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
font-size: 24px;
font-size: 1.84rem;
line-height: 1;
letter-spacing: normal;
text-transform: none;
@@ -570,3 +635,54 @@ textarea {
-webkit-font-feature-settings: 'liga';
-webkit-font-smoothing: antialiased;
}
.pwaView .pwa,
.pwaView .mac,
.pwaView .win {
display: none;
}
.win32 .mac,
.linux .mac {
display: none;
}
.linux .win,
.darwin .win {
display: none;
}
.dropdown-content.header:hover {
background-color: white;
}
button {
font-family: inherit !important;
}
.via-dropdown {
text-overflow: ellipsis;
white-space: nowrap;
overflow-x: hidden;
}
#re-online {
background-color: rgb(38, 92, 153);
position: fixed;
width: 100vw;
height: 2rem;
padding: 0.25rem;
color: white;
z-index: 1000;
}
#offline {
background-color: rgb(153, 38, 38);
position: fixed;
width: 100vw;
height: 2rem;
padding: 0.25rem;
color: white;
z-index: 999;
}
.pluginNex {
width: 2rem;
text-align: center;
}
.pluginNex span {
font-size: 2rem;
position: relative;
top: -4px;
}

View File

@@ -1,144 +1,149 @@
/*トゥートボックス向けCSS*/
#post-box {
display: none;
position: fixed;
left: calc(50vw - 150px);
top: 50vh;
background-color: var(--postbox);
border: thin solid gray;
z-index: 501;
max-width: 100%;
padding: 5px;
border-radius: 5px;
overflow: hidden;
display: none;
position: fixed;
left: calc(50vw - 150px);
top: 50vh;
background-color: var(--postbox);
border: thin solid gray;
z-index: 501;
max-width: 100%;
padding: 0.4rem;
border-radius: 0.4rem;
overflow: hidden;
}
textarea {
min-height: 100px !important;
font-family: inherit;
min-height: 7.7rem !important;
font-family: inherit;
}
#post-box .ui-resizable-s, #post-box .ui-resizable-se{
display: none !important;
#post-box .ui-resizable-s,
#post-box .ui-resizable-se {
display: none !important;
}
.cancel {
font-size: 0.5rem;
color: gray;
cursor: pointer;
position: absolute;
right: 2px;
top: 4px;
font-size: 0.5rem;
color: gray;
cursor: pointer;
position: absolute;
right: 2px;
top: 4px;
}
.more-show {
display: none;
display: none;
}
#drag {
width: 100%;
height: 100px;
width: 100%;
height: 100px;
}
#post-btn {
display: none;
display: none;
}
#vis {
text-transform: capitalize;
text-transform: capitalize;
}
#cw-text {
display: none;
display: none;
}
#sch-box {
display: none;
display: none;
}
#sch-box input {
width: auto;
width: auto;
}
.picker__close,
.picker__today,
.picker__clear {
color: #26a69a !important;
color: #26a69a !important;
}
.cw {
display: none;
display: none;
}
.sensitive {
filter: blur(50px);
filter: blur(50px);
}
#emoji {
}
#suggest {
max-height: 300px;
overflow-y: scroll;
#suggest, #draft {
max-height: 23rem;
overflow-y: scroll;
overflow-x: hidden;
}
#emoji-list {
width: 100%;
height: 200px;
overflow-y: scroll;
width: 100%;
height: 15.4rem;
overflow-y: scroll;
}
#preview-field {
display: none;
display: none;
}
.preview-img {
width: 50px;
max-height: 100px;
width: 4rem;
max-height: 7.6rem;
}
.pi-wrap {
display: inline-block;
width: 50px;
max-height: 100px;
display: inline-block;
width: 3.8rem;
max-height: 7.7rem;
}
#default-emoji a {
color: var(--color);
margin-right: 2px;
color: var(--text);
margin-right: 0.15rem;
}
.character-counter {
position: relative;
top: -25px;
position: relative;
top: -1.9rem;
}
.trendtag {
overflow-y: scroll;
max-height: 100px;
overflow-y: scroll;
max-height: 7.7rem;
}
#toot-btn-field {
display: flex;
display: flex;
}
#toot-post-btn {
width: calc(100% - 10px);
padding: 0;
margin-top: 10px;
width: calc(100% - 0.7rem);
padding: 0;
margin-top: 0.7rem;
height: 2.7rem;
}
#toot-sec-btn {
width: 30px;
padding: 0;
margin-top: 10px;
width: 2.3rem;
padding: 0;
margin-top: 0.7rem;
}
#left-side {
float: left;
overflow-x: hidden;
height: calc(100% - 32px);
float: left;
overflow-x: hidden;
height: calc(100% - 2.5rem);
}
#right-side {
display: none;
float: left;
width: 300px;
padding: 5px;
overflow-x: hidden;
height: calc(100% - 32px);
display: none;
float: left;
width: 23rem;
padding: 0.4rem;
overflow-x: hidden;
height: calc(100% - 2.5rem);
}
#posttgl,#toot-post-btn {
background-color: var(--accentbtn);
#posttgl,
#toot-post-btn {
background-color: var(--active);
color: var(--text);
}
/*mini*/
.mini-post .mize {
display: none !important;
display: none !important;
}
.mini-post #textarea {
padding: 0;
padding: 0;
}
.mini-post #post-box {
width: 200px;
min-width: 100px;
width: 15.4rem;
min-width: 7.7rem;
}
.mini-post #toot-field {
padding: 0;
padding: 0;
}
.mini-post #toot-btn-field {
padding: 0;
padding: 0;
}

View File

@@ -3,29 +3,29 @@
cursor: move;
user-select: none;
background-color: var(--modalfooter);
margin: 5px;
border-radius: 5px;
color: var(--color);
margin: 0.4rem;
border-radius: 0.4rem;
color: var(--text);
padding: 3px;
display: grid;
grid-template-columns: 43px 1fr 60px;
grid-template-columns: 3.3rem 1fr 4.6rem;
grid-template-areas: "sorticon sorttitle sorttitle" "sorticon sortacct sortaction";
}
.sorticon {
grid-area: sorticon;
}
.sorticon i {
font-size: 43px;
font-size: 3.3rem;
}
.sorttitle {
margin-left: 5px;
margin-left: 0.4rem;
grid-area: sorttitle;
}
.sortacct {
margin-left: 5px;
margin-left: 0.4rem;
grid-area: sortacct;
}
.sortaction {
margin-left: 5px;
margin-left: 0.4rem;
grid-area: sortaction;
}

View File

@@ -1,192 +1,22 @@
:root {
--bg: white;
--drag: rgba(255, 255, 255, 0.8);
--color: black;
--beforehover: #757575;
--modal: white;
--subcolor: #e0e0e0;
--box: white;
--sidebar: #eeeeee;
--shared: #cfd8dc;
--notfbox: white;
--emphasized: #81c784;
--his-data: rgba(255, 255, 255, 0.9);
--active: #e6ee9c;
--postbox: white;
--modalfooter: #fafafa;
--accentbtn: #009688;
--selected: #c0c0c0;
--selectedWithShare: #b2babd;
--gray: #757575;
}
#imagemodal {
background: url("../img/pixel.white.svg");
}
.blacktheme {
--bg: #212121;
--drag: rgba(0, 0, 0, 0.8);
--color: white;
--text: white;
--beforehover: #9e9e9e;
--modal: black;
--subcolor: #212121;
--box: #424242;
--sidebar: #424242;
--shared: #004d40;
--notfbox: #333333;
--thirdColor: #212121;
--bottom: #424242;
--accent: #004d40;
--subcolor: #333333;
--emphasized: #4e342e;
--his-data: rgba(0, 0, 0, 0.8);
--active: #757575;
--postbox: #424242;
--modalfooter: #212121;
--accentbtn: #3f51b5;
--active: #3f51b5;
--selected: #3f3f3f;
--selectedWithShare: #003a30;
--gray: #cccccc;
}
.blacktheme #imagemodal {
#imagemodal {
background: url("../img/pixel.svg");
}
.indigotheme {
--bg: #031833;
--drag: rgba(0, 0, 0, 0.8);
--color: white;
--beforehover: #9e9e9e;
--modal: #0d1351;
--subcolor: #0d1351;
--shared: #004d40;
--box: #0d1351;
--sidebar: #0d1351;
--notfbox: #0d47a1;
--emphasized: #4e342e;
--his-data: rgba(13, 19, 81, 0.8);
--active: #757575;
--postbox: #1a237e;
--modalfooter: #031833;
--accentbtn: #00acc1;
--selected: #214f8a;
--selectedWithShare: #003a30;
--gray: #cccccc ;
}
.indigotheme #imagemodal {
background: url("../img/pixel.svg");
}
.browntheme {
--bg: #261411;
--drag: rgba(0, 0, 0, 0.8);
--color: white;
--beforehover: #9e9e9e;
--modal: #261411;
--subcolor: #4e342e;
--shared: #004d40;
--box: #4e342e;
--sidebar: #4e342e;
--notfbox: #4e342e;
--emphasized: #0d47a1;
--his-data: rgba(62, 39, 35, 0.8);
--active: #757575;
--postbox: #4e342e;
--modalfooter: #261411;
--accentbtn: #827717;
--selected: #6d352b;
--selectedWithShare: #003a30;
--gray: #cccccc;
}
.browntheme #imagemodal {
background: url("../img/pixel.svg");
}
.greentheme {
--bg: #c8e6c9;
--drag: rgba(255, 255, 255, 0.8);
--color: black;
--beforehover: #757575;
--modal: #81c784;
--subcolor: #a5d6a7;
--box: #81c784;
--sidebar: #c5e1a5;
--shared: #ffcc80;
--notfbox: #a5d6a7;
--emphasized: #9e9d24;
--his-data: rgba(255, 255, 255, 0.9);
--active: #e6ee9c;
--postbox: #a5d6a7;
--modalfooter: #81c784;
--accentbtn: #33691e;
--selected: #78c17a;
--selectedWithShare: #caa266;
--gray: #757575;
}
.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;
--gray: #757575;
}
.bluetheme #imagemodal {
background: url("../img/pixel.white.svg");
}
.polartheme {
--bg: #2e3440;
--drag: rgba(0, 0, 0, 0.8);
--color: white;
--beforehover: #8d94a0;
--modal: #3b4252;
--subcolor: #434c5e;
--box: #4c566a;
--sidebar: #3b4252;
--shared: #2d3b58;
--notfbox: #2a3857;
--emphasized: #2f4b86;
--his-data: rgba(0, 0, 0, 0.8);
--active: #2a3857;
--postbox: #434c5e;
--modalfooter: #485166;
--accentbtn: #2f4b86;
--selected: #464f61;
--selectedWithShare: #3e527e;
--gray: #cccccc;
}
.polartheme #imagemodal {
background: url("../img/pixel.svg");
}
.snowtheme {
--bg: #eceff4;
--drag: rgba(255, 255, 255, 0.8);
--color: #36425a;
--beforehover: #344058;
--modal: #e5e9f0;
--subcolor: #d8dee9;
--box: #c0c8d6;
--sidebar: #eeeeee;
--shared: #c3d4e6;
--notfbox: #d8dee9;
--emphasized: #88c0d0;
--his-data: rgba(255, 255, 255, 0.9);
--active: #8fbcbb;
--postbox: #d8dee9;
--modalfooter: #b2bed4;
--accentbtn: #81a1c1;
--selected: #b4bdd0;
--selectedWithShare: #a3afbb;
--gray: #5c6c8c;
}
.snowtheme #imagemodal {
background: url("../img/pixel.white.svg");
}

View File

@@ -1,7 +1,7 @@
/*TL CSS(ただしBBCode pulse:master.css/spin:font-awesome*/
#main {
width: 100vw;
height: calc(100vh - 40px);
height: calc(100% - 3rem);
}
#timeline-container {
overflow-x: scroll;
@@ -11,18 +11,19 @@
}
#bottom {
position: absolute;
overflow: hidden;
bottom: 0;
width: 100vw;
height: 40px;
padding: 3px;
height: 3rem;
padding: 0.23rem;
padding-right: 0;
padding-left: 40px;
background-color: var(--sidebar);
padding-left: 3rem;
background-color: var(--bottom);
display: flex;
justify-content: space-between;
flex-wrap: wrap;
z-index: 500;
box-shadow: 10px 0 10px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0.77rem 0 0.77rem, 0.77rem rgba(0, 0, 0, 0.2);
}
#demobottom {
width: 500px;
@@ -30,24 +31,24 @@
}
#bottom.reverse {
padding-left: 0;
padding-right: 40px;
padding-right: 3rem;
}
.reverse {
flex-direction: row-reverse;
}
#bottom #dambox {
width: 300px;
margin-right: 10px;
width: 23rem;
margin-right: 0.76rem;
}
#bottom.reverse #dambox {
margin-right: 0;
}
#bottom .trendtag {
height: 40px;
height: 3rem;
}
#bottom #group,
#demogroup {
margin-right: 40px;
margin-right: 3rem;
}
#bottom .leftside {
display: flex;
@@ -57,42 +58,42 @@
align-items: center;
}
#bottom #tips img {
vertical-align: -3px;
vertical-align: -0.23rem;
}
#bottom a,
#demogroup a {
color: var(--color);
color: var(--text);
}
#bottom i {
font-size: 30px;
font-size: 2.3rem;
}
.exc-icons {
font-size: 20px;
font-size: 1.53rem;
}
.exc-chb {
padding-left: 24px !important;
padding-left: 1.84rem !important;
}
.btnsgroup {
border: 1px solid;
padding-top: 1px;
padding-left: 5px;
padding-right: 5px;
margin-right: 15px;
border-radius: 5px;
height: 35px;
padding-left: 0.4rem;
padding-right: 0.4rem;
margin-right: 1.15rem;
border-radius: 0.4rem;
height: 2.7rem;
}
.bgReport {
height: 34px;
height: 2.61rem;
padding-top: 0.45rem;
text-decoration: underline;
padding-left: 5px;
padding-right: 5px;
padding-left: 0.4rem;
padding-right: 0.4rem;
}
#spot-box {
display: grid;
grid-template-columns: 40px 30px 2.5fr 1fr 60px;
grid-template-rows: 22px 20px;
grid-template-areas: 'cover name name artist refresh' 'cover progress progress progress time';
grid-template-columns: 3rem 2.3rem 2.5fr 1fr 4.6rem;
grid-template-rows: 1.7rem 1.5rem;
grid-template-areas: 'cover name name name refresh' 'cover progress progress progress time';
}
#spot-refresh {
grid-area: refresh;
@@ -105,20 +106,14 @@
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
line-height: 25px;
}
#spot-artist {
grid-area: artist;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
line-height: 25px;
line-height: 1.92rem;
}
#spot-img {
width: 90%;
}
#spot-time {
grid-area: time;
line-height: 0.5rem;
}
.progress {
grid-area: progress;
@@ -126,7 +121,7 @@
}
.btnsgroup .grouptitle {
font-family: Open Sans;
font-size: 15px;
font-size: 1.1rem;
}
@media screen and (max-width: 890px) {
.btnsgroup .grouptitle {
@@ -140,7 +135,7 @@
iframe,
.cvo video {
max-width: 100%;
max-height: 300px;
max-height: 23rem;
}
@media screen and (max-width: 600px) {
.mobile #timeline-container {
@@ -157,11 +152,12 @@ iframe,
.box {
overflow: hidden;
min-width: 300px;
max-width: 600px;
flex: 1;
border-top: none;
display: flex;
flex-direction: column;
margin-bottom: -10px;
margin-bottom: -0.75rem;
}
.img_FTL {
display: none;
@@ -215,16 +211,20 @@ iframe,
}
.emoji,
.emoji-img {
width: 15px;
width: 1.153rem;
height: 1.153rem;
object-fit: cover;
}
.area-toot .emoji,
.area-toot .emoji-img {
width: 20px;
width: 1.538rem;
height: 1.538rem;
object-fit: cover;
vertical-align: middle;
margin: -1px 0;
}
.bigemoji {
width: 100px !important;
width: 7.7rem !important;
height: auto !important;
position: relative;
z-index: 9999;
@@ -253,13 +253,13 @@ iframe,
}
.cvo {
user-select: text;
padding-left: 5px;
padding-left: 0.4rem;
border-bottom: 0.5px solid;
padding-right: 2px;
padding-right: 0.15rem;
word-break: break-word;
width: 100%;
display: grid;
grid-template-columns: 43px 2fr 1fr;
grid-template-columns: 3.3rem 2fr 1fr;
grid-template-rows: auto 1.6rem 1fr auto 2.5rem;
grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'space toot toot' 'space additional additional' 'vis actions side';
}
@@ -285,21 +285,21 @@ iframe,
}
.area-notice {
margin: 2px;
margin: 0.15rem;
grid-area: notice;
}
.area-icon {
width: 40px;
margin: 2px;
width: 3rem;
margin: 0.15rem;
grid-area: icon;
}
.area-display_name {
user-select: text;
height: 1.5em;
margin: 2px;
margin-left: 5px;
margin: 0.15rem;
margin-left: 0.4rem;
overflow: hidden;
grid-area: display_name;
white-space: nowrap;
@@ -310,7 +310,7 @@ iframe,
flex-wrap: nowrap;
}
.flex-name {
max-width: calc(100% - 60px);
max-width: calc(100% - 4.6rem);
overflow: hidden;
text-overflow: ellipsis;
}
@@ -318,9 +318,9 @@ iframe,
.area-toot {
cursor: text;
user-select: auto;
margin-top: 5px;
margin-bottom: 5px;
margin-left: 5px;
margin-top: 0.4rem;
margin-bottom: 0.4rem;
margin-left: 0.4rem;
grid-area: toot;
}
@@ -353,7 +353,7 @@ iframe,
.area-actions {
padding: 0;
margin: 0;
top: -5px;
top: -0.4rem;
position: relative;
display: flex;
justify-content: space-around;
@@ -361,28 +361,28 @@ iframe,
grid-area: actions;
}
.area-vis {
margin: 2px;
margin: 0.4rem;
grid-area: vis;
text-align: center;
}
.area-side {
display: flex;
top: -5px;
top: -0.4rem;
position: relative;
justify-content: flex-end;
margin: 2px;
margin: 0.15rem;
grid-area: side;
}
.cusr {
user-select: text;
padding-left: 5px;
padding-left: 0.4rem;
border-bottom: 0.5px solid;
padding-right: 2px;
padding-right: 0.15rem;
word-break: break-word;
width: 100%;
display: grid;
grid-template-columns: 43px 2fr 1fr;
grid-template-columns: 3.3rem 2fr 1fr;
grid-template-rows: auto 1.6rem 2fr auto;
grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'space status status' 'space actions actions';
}
@@ -391,12 +391,12 @@ iframe,
grid-area: status;
display: flex;
flex-wrap: wrap;
margin-bottom: 5px;
margin-bottom: 0.75rem;
}
.cusr .cbadge {
margin-top: 6px;
margin-left: 6px;
margin-top: 0.46rem;
margin-left: 0.46rem;
}
.quote-inline {
@@ -404,16 +404,16 @@ iframe,
}
.quote-renote {
display: grid;
grid-template-columns: 43px 2fr 25px;
grid-template-columns: 3.3rem 2fr 1.92rem;
grid-template-areas: 'ricon ruser rdet' 'ricon rtext rdet';
border: 1px solid;
margin-top: 3px;
margin-top: 0.23rem;
padding: 1px;
border-radius: 3px;
border-radius: 0.23rem;
}
.renote-icon {
grid-area: ricon;
padding: 5px;
padding: 0.4rem;
}
.renote-details {
grid-area: rdet;
@@ -429,63 +429,34 @@ iframe,
}
.btn-flat {
color: var(--color);
color: var(--text);
}
.area-side i {
margin-left: 10px;
margin-left: 0.75rem;
}
.viabadge {
margin-top: 10px;
margin-top: 0.75rem;
}
.action i {
font-size: 1.2rem;
margin-right: 2px;
margin-right: 0.15rem;
}
.action .fa-quote-right {
margin-top: 2px;
margin-top: 0.15rem;
}
.actct {
color: var(--beforehover);
}
.actct:hover {
color: var(--color);
color: var(--text);
transition: 0.5s;
}
#contextWrap {
position: fixed;
width: 199vw;
height: 100vh;
z-index: 100;
.contextMenu.dropdown-content {
padding-top: 5px;
overflow-y: hidden;
left: calc(100% - 200px) !important;
width: 200px !important;
}
.contextMenu {
position: fixed;
background-color: var(--box);
z-index: 9999;
border-radius: 5px;
padding: 5px;
}
.contextMenu.bottom:before {
content: '';
position: absolute;
top: 100%;
right: 27px;
border: 15px solid transparent;
border-top: 15px solid var(--box);
}
.contextMenu.top:before {
content: '';
position: absolute;
top: -30px;
right: 27px;
border: 15px solid transparent;
border-bottom: 15px solid var(--box);
}
.contextMenu .btn-flat {
text-transform: none !important;
width: 100%;
text-align: left;
}
.gray {
color: var(--gray);
}
@@ -501,30 +472,30 @@ iframe,
}
.toot img:not(.emoji-img) {
max-width: 100%;
max-height: 300px;
max-height: 23rem;
}
.cbadge {
display: inline-block;
min-width: 10px;
max-width: 100px;
padding: 3px 7px;
min-width: 0.76rem;
max-width: 7.7rem;
padding: 0.23rem 0.5rem;
font-size: 0.8em;
margin-right: 5px;
margin-right: 0.4rem;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: middle;
background-color: #777;
border-radius: 10px;
border-radius: 0.75rem;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
height: calc(0.8em + 8px);
height: calc(0.8em + 0.6rem);
user-select: none;
}
.cbadge-hover {
color: var(--color);
color: var(--text);
background-color: transparent;
}
.cbadge-hover:hover {
@@ -534,13 +505,13 @@ iframe,
p {
margin: 0;
margin-bottom: 0px;
line-height: 20px;
line-height: 1.53rem;
}
p:not(:last-child) {
margin-bottom: 10px;
margin-bottom: 0.76rem;
}
.shared {
background-color: var(--shared);
background-color: var(--accent);
}
.emphasized {
background-color: var(--emphasized);
@@ -550,17 +521,17 @@ p:not(:last-child) {
}
.notice-box {
top: 0;
background-color: var(--notfbox);
background-color: var(--subcolor);
filter: brightness(110%);
position: relative;
margin-right: 10px;
margin-right: 0.7rem;
width: 100%;
min-height: 60px;
min-height: 4.6rem;
z-index: 500;
padding: 5px;
padding: 0.4rem;
display: grid;
grid-template-columns: 40px 60px 1fr 24px;
grid-template-rows: 30px 30px;
grid-template-columns: 3rem 5rem 1fr 1.8rem;
grid-template-rows: 2.3rem 2.3rem;
grid-template-areas: 'notice notice_name notice_name a2' 'notice a1 sta a3' 'notf-box notf-box notf-box notf-box';
}
.emp {
@@ -604,8 +575,8 @@ p:not(:last-child) {
}
#tools {
position: fixed;
top: 10px;
right: 10px;
top: 0.76rem;
right: 0.76rem;
float: right;
}
.setting {
@@ -618,14 +589,14 @@ p:not(:last-child) {
}
.notf-box {
position: fixed;
right: 70px;
background-color: var(--box);
right: 5.4rem;
background-color: var(--subcolor);
border: thin solid gray;
z-index: 501;
width: 400px;
padding: 5px;
min-height: 100px;
max-height: 500px;
width: 30rem;
padding: 0.4rem;
min-height: 7.7rem;
max-height: 38.4rem;
}
.column-hide {
display: none;
@@ -633,17 +604,21 @@ p:not(:last-child) {
height: 0;
}
.prof-img {
border-radius: 3px;
border-radius: 0.23rem;
width: 3rem;
}
.prof-img-sml {
width: 1.5rem;
}
.notf-icon {
position: relative;
top: -20px;
width: 20px;
left: 20px;
top: -1.53rem;
width: 1.5rem;
left: 1.5rem;
}
.notf-indv-box {
width: 100%;
max-height: 400px;
max-height: 30.7rem;
overflow-y: scroll;
overflow-x: hidden;
border: thin solid gray;
@@ -652,14 +627,30 @@ p:not(:last-child) {
box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12),
0 5px 5px -3px rgba(0, 0, 0, 0.3), 0px -10px 10px 0px rgba(0, 0, 0, 0.3) inset;
}
.notf-indv-box label span {
padding-left: 23px !important;
margin-right: 5px;
}
.notf-indv-box .setting {
font-size: 1rem;
width: calc(25% - 3px);
text-align: left;
padding: 5px;
height: 70px;
text-align: center;
}
.notf-exclude-btn:hover {
background-color: inherit !important;
border: 1px solid;
}
.type-b {
display: none;
}
.modal-footer {
background-color: var(--box);
background-color: var(--subcolor);
}
.ballons {
background-color: var(--box);
background-color: var(--subcolor);
position: absolute;
bottom: 0px;
right: 0px;
@@ -676,54 +667,54 @@ p:not(:last-child) {
.vote {
width: 100%;
border: 1px solid;
margin-top: 3px;
margin-top: 0.23rem;
padding: 1px;
border-radius: 3px;
border-radius: 0.23rem;
overflow: hidden;
position: relative;
}
.fa-2x > .emoji-img {
width: 36px !important;
height: 36px !important;
width: 2.3rem !important;
height: 2.3rem !important;
}
.fa-3x > .emoji-img {
width: 54px !important;
height: 54px !important;
width: 4.15rem !important;
height: 4.15rem !important;
}
.fa-4x > .emoji-img {
width: 72px !important;
height: 72px !important;
width: 4.6rem !important;
height: 4.6rem !important;
}
.fa-5x > .emoji-img {
width: 90px !important;
height: 90px !important;
width: 6.9rem !important;
height: 6.9rem !important;
}
#lists-user {
overflow-y: scroll;
overflow-x: hidden;
max-height: 200px;
max-height: 15.4rem;
}
.votebtn {
border: 1px solid;
color: var(--bg);
background-color: var(--beforehover);
cursor: pointer;
width: 50px;
padding: 2px;
width: 3.8rem;
height: 1.7rem;
display: inline-block;
text-align: center;
margin-top: 5px;
border-radius: 10px;
margin-top: 0.38rem;
border-radius: 0.75rem;
transition-duration: 0.5s;
}
.votebtn:hover {
background-color: var(--color);
background-color: var(--text);
}
.leadPoll {
position: absolute;
background-color: var(--box);
height: 20px;
border-radius: 3px;
background-color: var(--subcolor);
height: 1.5rem;
border-radius: 0.23rem;
}
.lpAnime {
animation-duration: 1s;
@@ -740,7 +731,7 @@ p:not(:last-child) {
width: 1.2rem !important;
position: relative;
top: -1px;
margin-left: 5px !important;
margin-left: 0.38rem !important;
}
.jump {
display: inline-block;
@@ -765,6 +756,9 @@ p:not(:last-child) {
width: 100%;
height: 100%;
}
.fav_ct, .rt_ct, .rep_ct {
font-size: 1.1rem;
}
.shared.selectedToot {
background-color: var(--selectedWithShare);
}
@@ -778,18 +772,18 @@ audio {
white-space: normal;
}
.cw_btn {
margin: 3px;
margin: 0.23rem;
background-color: var(--emphasized);
color: var(--color);
padding-left: 3px;
padding-right: 3px;
border-radius: 3px;
border: 1px solid var(--color);
color: var(--text);
padding-left: 0.23rem;
padding-right: 0.23rem;
border-radius: 0.23rem;
border: 1px solid var(--text);
user-select: none;
}
.vis-data {
font-size: 1rem !important;
margin: 5px;
margin: 0.4rem;
user-select: none;
}
@keyframes jump {
@@ -863,29 +857,29 @@ audio {
display: none !important;
}
.announcement {
padding: 5px;
padding: 0.38rem;
border-bottom: 1px solid;
}
.announReaction {
width: 35px;
width: 2.7rem;
height: 1.7rem;
font-size: 1.1rem;
margin: 3px;
margin: 0.23rem;
cursor: pointer;
border: solid 1px;
padding-left: 2px;
background-color: var(--notfbox);
border-radius: 2px;
padding-left: 0.15rem;
background-color: var(--subcolor);
border-radius: 0.15rem;
}
.announReaction img {
position: relative;
top: 3px;
top: 0.23rem;
}
.announReaction.reactioned {
background-color: var(--emphasized);
}
.announReaction.add {
width: 19px;
width: 1.46rem;
}
.reactionsPack {
display: flex;

View File

@@ -1,151 +1,162 @@
/*アイコンをクリックした時とかにでてくるユーザーデータ*/
#his-data {
background-repeat: no-repeat;
background-image: url("../../loading.svg");
overflow-y: hidden;
background-repeat: no-repeat;
background-image: url('../img/loading.svg');
overflow-y: hidden;
}
#his-data .btn .material-icons{
float:left;
#his-data .btn .material-icons {
float: left;
}
#his-data-content {
display: flex;
justify-content: center;
display: flex;
justify-content: center;
}
#his-name {
font-size: 1.5rem;
font-size: 1.5rem;
}
#his-prof {
float: left;
width: 100px;
margin-right: 5px;
width: 7.7rem;
margin-right: 0.4rem;
}
.his-float {
overflow-y: scroll;
padding: 5px;
overflow-y: scroll;
padding: 0.4rem;
}
#his-float-data {
height: 100%;
height: 100%;
overflow-y: hidden;
}
#his-leftside {
width: 500px;
width: 28.4rem;
max-width: 30vw;
}
#his-float-timeline {
max-width: 775px;
height: 100%;
overflow-y: hidden;
max-width: 47.5rem;
min-width: calc(100% - 29.4rem);
height: 100%;
overflow-y: hidden;
}
#his-basic-prof {
min-height: 130px;
}
#his-matching-list {
overflow-y: scroll;
overflow-x: hidden;
display: flex;
min-height: 10rem;
}
#his-field {
vertical-align: baseline;
text-align: center;
padding: 0;
vertical-align: baseline;
text-align: center;
padding: 0;
}
#his-field tr {
height: 1.5rem;
height: 1.5rem;
}
.his-field-title {
height: 1.5rem;
padding: 0;
background-color: #757575;
text-align: center;
padding: 5px;
margin-bottom: 1px;
width: 30%;
height: 1.5rem;
padding: 0;
background-color: #757575;
text-align: center;
padding: 0.4rem;
margin-bottom: 1px;
width: 30%;
}
.his-field-content {
height: 1.5rem;
padding: 0;
padding-left: 5px;
height: 1.5rem;
padding: 0;
padding-left: 0.4rem;
}
.his-var-content a span.ellipsis:after {
content: "...";
content: '...';
}
.his-var-content a:not(.mention) span:last-of-type {
display: none;
display: none;
}
#his-data a .rep_ct,
#his-data a .rt_ct,
#his-data a .fav_ct {
display: inline !important;
display: inline !important;
}
#his-data-show {
margin: 20px;
margin-left: 50px;
margin-right: 50px;
background-color: var(--his-data);
height: calc(100% - 20px);
margin-bottom: 0;
padding: 5px;
margin: 1.5rem;
margin-left: 3.8rem;
margin-right: 3.8rem;
background-color: var(--his-data);
height: calc(100% - 1.5rem);
margin-bottom: 0;
padding: 0.4rem;
}
#his-data-wrap {
display: flex;
display: flex;
}
.his-var-content {
overflow-y: scroll;
overflow-x: hidden;
height: calc(100% - 45px);
overflow-y: scroll;
overflow-x: hidden;
height: calc(100% - 3.4rem);
padding-bottom: 60px;
}
#my-data-nav .btn {
width: 140px;
width: 10.6rem;
}
.active-back {
background-color: var(--active);
#my-data-nav .active-back {
display: none;
}
#his-name .emojione,
#his-name .emoji-img {
width: 20px;
width: 1.538rem;
}
#his-plus-action .btn {
padding-right: 5px;
padding-left: 5px;
padding-right: 0.4rem;
padding-left: 0.4rem;
}
.tabs {
display: flex;
display: flex;
}
.tabs .tab a {
padding: 8px 12px;
padding: 0.6rem 0.9rem;
}
#his-des {
max-height: 250px;
overflow-y: scroll;
max-height: 17.7rem;
overflow-y: scroll;
}
#his-sign-action {
border: 1px solid;
border-radius: 5px;
display: flex;
align-items: center;
padding-left: 10px;
padding-right: 10px;
flex-wrap: wrap;
border: 1px solid;
border-radius: 0.4rem;
display: flex;
align-items: center;
padding-left: 0.75rem;
padding-right: 0.75rem;
flex-wrap: wrap;
}
#his-sign-action .btn {
flex-basis: 31.2%;
flex-basis: calc(50% - 10.6px);
}
#his-sign-action .dropdown-trigger {
flex-basis: 100%;
}
#his-des .mention {
color: #039be5;
cursor: pointer;
color: #039be5;
cursor: pointer;
}
#his-table{
max-height: 150px;
overflow-y: scroll;
#his-table {
max-height: 11.538rem;
overflow-y: scroll;
}
#his-float-blocked {
display: flex;
justify-content: center;
align-items: center;
font-size: 2rem;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
font-size: 2rem;
height: 100%;
}
#hisdropdown{
background-color: var(--bg);
#hisdropdown {
background-color: var(--bg);
}
#hisdropdown li a {
color: white;
}
#hisdropdown li:hover {
background-color: var(--active);
}
#his-data-title {
width: 100%;
text-align: center;
font-size: 1.5rem;
}
#hisdropdown li:hover{
background-color: var(--active);
}

Binary file not shown.

69
app/img/2025.svg Normal file
View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 600 600" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g id="輝き" transform="matrix(0.892356,0,0,0.892356,36.941,-15.9516)">
<g transform="matrix(2.39479,0,0,2.21494,-178.97,-182.183)">
<ellipse cx="123.217" cy="151.049" rx="36.923" ry="35.804" style="fill:rgb(84,82,81);"/>
</g>
<g transform="matrix(1,0,0,1,8.39159,-32.1678)">
<ellipse cx="120.479" cy="305.524" rx="112.5" ry="52" style="fill:rgb(84,82,81);"/>
</g>
<g transform="matrix(0.952046,-0.305955,0.305955,0.952046,-139.881,8.62199)">
<ellipse cx="134.479" cy="430.524" rx="46.5" ry="84" style="fill:rgb(84,82,81);"/>
</g>
<g transform="matrix(1,0,0,1,2.39158,-65.1678)">
<ellipse cx="130.479" cy="561.024" rx="72.5" ry="74.5" style="fill:rgb(84,82,81);"/>
</g>
<g transform="matrix(1,0,0,1,8.39159,-32.1678)">
<ellipse cx="156.979" cy="651.76" rx="68" ry="60.235" style="fill:rgb(84,82,81);"/>
</g>
<g transform="matrix(0.954888,0.296965,-0.296965,0.954888,55.6063,-54.2336)">
<ellipse cx="199.479" cy="158.995" rx="98.5" ry="51" style="fill:rgb(240,132,46);"/>
</g>
<g transform="matrix(0.931851,0.362841,-0.362841,0.931851,63.1962,-89.0819)">
<ellipse cx="344.979" cy="135.857" rx="74" ry="90.137" style="fill:rgb(240,132,46);"/>
</g>
<g transform="matrix(1,0,0,1,-56.6084,-45.1678)">
<ellipse cx="493.479" cy="301.22" rx="126.5" ry="55.5" style="fill:rgb(240,132,46);"/>
</g>
<g transform="matrix(1,0,0,1,-14.6084,-70.1678)">
<ellipse cx="531.479" cy="368.22" rx="58.5" ry="54.5" style="fill:rgb(240,132,46);"/>
</g>
<g transform="matrix(0.973706,-0.227807,0.227807,0.973706,-124.722,44.48)">
<ellipse cx="265.479" cy="614.97" rx="98.5" ry="37.5" style="fill:rgb(54,76,159);"/>
</g>
<g transform="matrix(0.982834,-0.184492,0.184492,0.982834,-148.417,-31.379)">
<ellipse cx="407.479" cy="676.47" rx="71.5" ry="96" style="fill:rgb(54,76,159);"/>
</g>
<g transform="matrix(1,0,0,1,-34.6084,-22.1678)">
<ellipse cx="468.979" cy="511.47" rx="48" ry="31" style="fill:rgb(54,76,159);"/>
</g>
<g transform="matrix(0.880625,0.473815,-0.473815,0.880625,260.236,-235.714)">
<ellipse cx="533.979" cy="472.97" rx="46" ry="99.5" style="fill:rgb(54,76,159);"/>
</g>
<g transform="matrix(1,0,0,1,9.39159,-36.1678)">
<circle cx="69.229" cy="310.72" r="24.25" style="fill:white;"/>
</g>
<g transform="matrix(1,0,0,1,8.39159,-48.1678)">
<circle cx="98.229" cy="417.72" r="25.25" style="fill:white;"/>
</g>
<g transform="matrix(0.76,0,0,0.76,96.9465,101.545)">
<circle cx="375.229" cy="646.72" r="56.25" style="fill:white;"/>
</g>
<g transform="matrix(1,0,0,1,8.39159,-32.1678)">
<circle cx="427.729" cy="287.22" r="32.75" style="fill:white;"/>
</g>
<g id="cat" transform="matrix(0.0249784,0,0,0.0249784,346.146,563.341)">
<path d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(5,127,254);"/>
</g>
<g id="cat1" serif:id="cat" transform="matrix(-0.0249784,0,0,0.0249784,147.519,318.341)">
<path d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(5,127,254);"/>
</g>
<g id="cat2" serif:id="cat" transform="matrix(-0.0249784,0,0,0.0249784,120.519,222.341)">
<path d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(5,127,254);"/>
</g>
<g id="cat3" serif:id="cat" transform="matrix(0.0249784,0,0,0.0249784,390.146,196.341)">
<path d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(5,127,254);"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.8 KiB

50
app/img/aiscript.svg Normal file
View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 687 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g id="アートボード1" transform="matrix(1,0,0,1,-168.896,-476)">
<rect x="168.896" y="476" width="686.208" height="72" style="fill:none;"/>
<clipPath id="_clip1">
<rect x="168.896" y="476" width="686.208" height="72"/>
</clipPath>
<g clip-path="url(#_clip1)">
<g transform="matrix(1,0,0,1,77.6363,162.413)">
<g transform="matrix(96,0,0,96,88.3157,385.587)">
<path d="M0.463,-0.571C0.452,-0.59 0.436,-0.602 0.415,-0.608C0.394,-0.613 0.374,-0.611 0.356,-0.6L0.08,-0.443C0.053,-0.428 0.04,-0.405 0.04,-0.374C0.04,-0.344 0.053,-0.321 0.08,-0.306L0.356,-0.148C0.368,-0.141 0.381,-0.138 0.395,-0.138C0.425,-0.138 0.448,-0.151 0.463,-0.178C0.474,-0.197 0.476,-0.217 0.47,-0.237C0.465,-0.259 0.453,-0.274 0.434,-0.285L0.278,-0.374L0.434,-0.464C0.453,-0.474 0.465,-0.49 0.47,-0.511C0.476,-0.532 0.474,-0.552 0.463,-0.571Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
</g>
<g transform="matrix(96,0,0,96,137.468,385.587)">
<path d="M0.197,-0.67C0.197,-0.691 0.189,-0.71 0.174,-0.725C0.159,-0.74 0.14,-0.748 0.118,-0.748C0.096,-0.748 0.078,-0.74 0.063,-0.725C0.047,-0.71 0.04,-0.691 0.04,-0.67C0.04,-0.648 0.047,-0.629 0.063,-0.614C0.078,-0.599 0.096,-0.591 0.118,-0.591C0.14,-0.591 0.159,-0.599 0.174,-0.614C0.189,-0.629 0.197,-0.648 0.197,-0.67ZM0.197,-0.079C0.197,-0.101 0.189,-0.119 0.174,-0.135C0.159,-0.15 0.14,-0.158 0.118,-0.158C0.096,-0.158 0.078,-0.15 0.063,-0.135C0.047,-0.119 0.04,-0.101 0.04,-0.079C0.04,-0.057 0.047,-0.038 0.063,-0.023C0.078,-0.008 0.096,0 0.118,0C0.14,0 0.159,-0.008 0.174,-0.023C0.189,-0.038 0.197,-0.057 0.197,-0.079Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
</g>
<g transform="matrix(96,0,0,96,201.74,385.587)">
<path d="M0.118,-0.75C0.097,-0.75 0.078,-0.742 0.063,-0.727C0.047,-0.712 0.04,-0.693 0.04,-0.671L0.04,-0.573C0.04,-0.551 0.047,-0.532 0.063,-0.517C0.078,-0.502 0.097,-0.494 0.118,-0.494C0.14,-0.494 0.159,-0.502 0.174,-0.517C0.189,-0.532 0.197,-0.551 0.197,-0.573L0.197,-0.671C0.197,-0.693 0.189,-0.712 0.174,-0.727C0.159,-0.742 0.14,-0.75 0.118,-0.75ZM0.355,-0.75C0.333,-0.75 0.314,-0.742 0.299,-0.727C0.284,-0.712 0.276,-0.693 0.276,-0.671L0.276,-0.573C0.276,-0.551 0.284,-0.532 0.299,-0.517C0.314,-0.502 0.333,-0.494 0.355,-0.494C0.377,-0.494 0.395,-0.502 0.41,-0.517C0.426,-0.532 0.434,-0.551 0.434,-0.573L0.434,-0.671C0.434,-0.693 0.426,-0.712 0.41,-0.727C0.395,-0.742 0.377,-0.75 0.355,-0.75Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
</g>
<g transform="matrix(96,0,0,96,247.1,385.587)">
<path d="M0.394,-0.494L0.488,-0.306L0.3,-0.306L0.394,-0.494ZM0.063,-0.009C0.082,0.001 0.102,0.002 0.123,-0.005C0.144,-0.011 0.159,-0.024 0.169,-0.044L0.221,-0.148L0.566,-0.148L0.619,-0.044C0.625,-0.03 0.635,-0.02 0.648,-0.012C0.661,-0.004 0.674,0 0.689,0C0.701,0 0.713,-0.003 0.724,-0.009C0.743,-0.018 0.756,-0.033 0.763,-0.054C0.771,-0.075 0.769,-0.095 0.759,-0.114L0.464,-0.705C0.457,-0.718 0.448,-0.729 0.435,-0.737C0.422,-0.745 0.408,-0.749 0.394,-0.749C0.379,-0.749 0.365,-0.745 0.352,-0.737C0.339,-0.729 0.33,-0.718 0.323,-0.705L0.028,-0.114C0.018,-0.095 0.017,-0.075 0.024,-0.054C0.03,-0.033 0.043,-0.018 0.063,-0.009Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
</g>
<g transform="matrix(96,0,0,96,322.7,385.587)">
<path d="M0.158,0C0.18,0 0.198,-0.008 0.214,-0.023C0.229,-0.038 0.236,-0.057 0.236,-0.079L0.236,-0.67C0.236,-0.691 0.229,-0.71 0.214,-0.725C0.198,-0.741 0.18,-0.749 0.158,-0.749C0.136,-0.749 0.117,-0.741 0.102,-0.725C0.087,-0.71 0.079,-0.691 0.079,-0.67L0.079,-0.079C0.079,-0.057 0.087,-0.038 0.102,-0.023C0.117,-0.008 0.136,0 0.158,0Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
</g>
<g transform="matrix(96,0,0,96,352.988,385.587)">
<path d="M0.118,-0.158C0.097,-0.158 0.078,-0.15 0.063,-0.135C0.047,-0.119 0.04,-0.101 0.04,-0.079C0.04,-0.057 0.047,-0.038 0.063,-0.023C0.078,-0.008 0.097,0 0.118,0L0.463,0C0.525,0 0.579,-0.022 0.623,-0.067C0.667,-0.111 0.69,-0.164 0.69,-0.227C0.69,-0.289 0.667,-0.342 0.623,-0.387C0.579,-0.431 0.525,-0.453 0.463,-0.453L0.266,-0.453C0.247,-0.453 0.231,-0.46 0.218,-0.473C0.204,-0.487 0.197,-0.503 0.197,-0.522C0.197,-0.541 0.204,-0.557 0.218,-0.571C0.231,-0.584 0.247,-0.591 0.266,-0.591L0.611,-0.591C0.632,-0.591 0.651,-0.599 0.667,-0.614C0.682,-0.629 0.69,-0.648 0.69,-0.67C0.69,-0.691 0.682,-0.71 0.667,-0.725C0.651,-0.741 0.632,-0.749 0.611,-0.749L0.266,-0.749C0.204,-0.749 0.15,-0.726 0.106,-0.682C0.062,-0.638 0.04,-0.584 0.04,-0.522C0.04,-0.459 0.062,-0.406 0.106,-0.362C0.15,-0.318 0.204,-0.296 0.266,-0.296L0.463,-0.296C0.482,-0.296 0.498,-0.289 0.511,-0.275C0.525,-0.262 0.532,-0.246 0.532,-0.227C0.532,-0.207 0.525,-0.191 0.511,-0.178C0.498,-0.164 0.482,-0.158 0.463,-0.158L0.118,-0.158Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
</g>
<g transform="matrix(96,0,0,96,422.924,385.587)">
<path d="M0.413,0C0.517,0 0.605,-0.037 0.678,-0.11C0.693,-0.125 0.701,-0.143 0.701,-0.166C0.701,-0.187 0.693,-0.206 0.678,-0.221C0.663,-0.236 0.644,-0.244 0.623,-0.244C0.601,-0.244 0.582,-0.236 0.567,-0.221C0.524,-0.179 0.473,-0.158 0.413,-0.158C0.354,-0.158 0.303,-0.179 0.261,-0.221C0.218,-0.263 0.197,-0.314 0.197,-0.374C0.197,-0.434 0.218,-0.485 0.261,-0.528C0.303,-0.57 0.354,-0.591 0.413,-0.591C0.473,-0.591 0.524,-0.57 0.567,-0.528C0.582,-0.512 0.601,-0.504 0.623,-0.504C0.644,-0.504 0.663,-0.512 0.678,-0.528C0.693,-0.543 0.701,-0.561 0.701,-0.583C0.701,-0.605 0.693,-0.623 0.678,-0.639C0.605,-0.712 0.517,-0.749 0.413,-0.749C0.31,-0.749 0.222,-0.712 0.149,-0.639C0.076,-0.566 0.04,-0.478 0.04,-0.374C0.04,-0.271 0.076,-0.183 0.149,-0.11C0.222,-0.037 0.31,0 0.413,0Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
</g>
<g transform="matrix(96,0,0,96,492.86,385.587)">
<path d="M0.572,-0.472C0.572,-0.44 0.56,-0.412 0.537,-0.389C0.514,-0.366 0.486,-0.355 0.453,-0.355L0.236,-0.355L0.236,-0.591L0.453,-0.591C0.486,-0.591 0.514,-0.579 0.537,-0.556C0.56,-0.533 0.572,-0.505 0.572,-0.472ZM0.421,-0.197L0.595,-0.023C0.61,-0.008 0.628,0 0.65,0C0.672,0 0.69,-0.008 0.706,-0.023C0.721,-0.038 0.729,-0.057 0.729,-0.079C0.729,-0.101 0.721,-0.119 0.706,-0.135L0.601,-0.24C0.64,-0.265 0.671,-0.298 0.694,-0.338C0.717,-0.38 0.729,-0.425 0.729,-0.472C0.729,-0.549 0.702,-0.614 0.648,-0.668C0.594,-0.722 0.529,-0.749 0.453,-0.749L0.158,-0.749C0.136,-0.749 0.117,-0.741 0.102,-0.725C0.087,-0.71 0.079,-0.691 0.079,-0.67L0.079,-0.079C0.079,-0.057 0.087,-0.038 0.102,-0.023C0.117,-0.008 0.136,0 0.158,0C0.18,0 0.198,-0.008 0.214,-0.023C0.229,-0.038 0.236,-0.057 0.236,-0.079L0.236,-0.197L0.421,-0.197Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
</g>
<g transform="matrix(96,0,0,96,566.588,385.587)">
<path d="M0.158,0C0.18,0 0.198,-0.008 0.214,-0.023C0.229,-0.038 0.236,-0.057 0.236,-0.079L0.236,-0.67C0.236,-0.691 0.229,-0.71 0.214,-0.725C0.198,-0.741 0.18,-0.749 0.158,-0.749C0.136,-0.749 0.117,-0.741 0.102,-0.725C0.087,-0.71 0.079,-0.691 0.079,-0.67L0.079,-0.079C0.079,-0.057 0.087,-0.038 0.102,-0.023C0.117,-0.008 0.136,0 0.158,0Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
</g>
<g transform="matrix(96,0,0,96,596.876,385.587)">
<path d="M0.572,-0.472C0.572,-0.44 0.56,-0.412 0.537,-0.389C0.514,-0.366 0.486,-0.355 0.453,-0.355L0.236,-0.355L0.236,-0.591L0.453,-0.591C0.486,-0.591 0.514,-0.579 0.537,-0.556C0.56,-0.533 0.572,-0.505 0.572,-0.472ZM0.158,0C0.18,0 0.198,-0.008 0.214,-0.023C0.229,-0.038 0.236,-0.057 0.236,-0.079L0.236,-0.197L0.453,-0.197C0.529,-0.197 0.594,-0.224 0.648,-0.278C0.702,-0.332 0.729,-0.397 0.729,-0.472C0.729,-0.549 0.702,-0.614 0.648,-0.668C0.594,-0.722 0.529,-0.749 0.453,-0.749L0.158,-0.749C0.136,-0.749 0.117,-0.741 0.102,-0.725C0.087,-0.71 0.079,-0.691 0.079,-0.67L0.079,-0.079C0.079,-0.057 0.087,-0.038 0.102,-0.023C0.117,-0.008 0.136,0 0.158,0Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
</g>
<g transform="matrix(96,0,0,96,670.604,385.587)">
<path d="M0.266,-0.591L0.266,-0.079C0.266,-0.057 0.273,-0.038 0.289,-0.023C0.304,-0.008 0.323,0 0.344,0C0.366,0 0.385,-0.008 0.4,-0.023C0.415,-0.038 0.423,-0.057 0.423,-0.079L0.423,-0.591L0.591,-0.591C0.612,-0.591 0.631,-0.599 0.647,-0.614C0.662,-0.629 0.67,-0.648 0.67,-0.67C0.67,-0.691 0.662,-0.71 0.647,-0.725C0.631,-0.741 0.612,-0.749 0.591,-0.749L0.099,-0.749C0.077,-0.749 0.058,-0.741 0.043,-0.725C0.027,-0.71 0.02,-0.691 0.02,-0.67C0.02,-0.648 0.027,-0.629 0.043,-0.614C0.058,-0.599 0.077,-0.591 0.099,-0.591L0.266,-0.591Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
</g>
<g transform="matrix(96,0,0,96,736.748,385.587)">
<path d="M0.118,-0.75C0.097,-0.75 0.078,-0.742 0.063,-0.727C0.047,-0.712 0.04,-0.693 0.04,-0.671L0.04,-0.573C0.04,-0.551 0.047,-0.532 0.063,-0.517C0.078,-0.502 0.097,-0.494 0.118,-0.494C0.14,-0.494 0.159,-0.502 0.174,-0.517C0.189,-0.532 0.197,-0.551 0.197,-0.573L0.197,-0.671C0.197,-0.693 0.189,-0.712 0.174,-0.727C0.159,-0.742 0.14,-0.75 0.118,-0.75ZM0.355,-0.75C0.333,-0.75 0.314,-0.742 0.299,-0.727C0.284,-0.712 0.276,-0.693 0.276,-0.671L0.276,-0.573C0.276,-0.551 0.284,-0.532 0.299,-0.517C0.314,-0.502 0.333,-0.494 0.355,-0.494C0.377,-0.494 0.395,-0.502 0.41,-0.517C0.426,-0.532 0.434,-0.551 0.434,-0.573L0.434,-0.671C0.434,-0.693 0.426,-0.712 0.41,-0.727C0.395,-0.742 0.377,-0.75 0.355,-0.75Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 4096 4096" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g id="TheDesk">
<g id="back">
<g transform="matrix(1,0,0,1.53232,-11.8871,-1144.65)">
<rect x="1044.02" y="1686.36" width="2335.77" height="782.558" style="fill:rgba(255,255,255,0);">
<animate attributeName="fill" begin="0.5s" dur="0.1s" fill="freeze" values="rgba(255,255,255,0);rgba(255,255,255,1)" />
</rect>
</g>
<rect x="1058.89" y="609.971" width="711.146" height="2885.69" style="fill:rgba(255,255,255,0);">
<animate attributeName="fill" begin="0.5s" dur="0.1s" fill="freeze" values="rgba(255,255,255,0);rgba(255,255,255,1)" />
</rect>
<g transform="matrix(1.08582,0,0,1,-142.973,0)">
<rect x="1665.9" y="1021.89" width="776.607" height="2050.26" style="fill:rgba(255,255,255,0);">
<animate attributeName="fill" begin="0.5s" dur="0.1s" fill="freeze" values="rgba(255,255,255,0);rgba(255,255,255,1)" />
</rect>
</g>
</g>
<g transform="matrix(1,0,0,0.998821,0,4.65666)" id="gray">
<rect x="678.5" y="128.48" width="450" height="3821.5" style="fill:rgb(84,82,81);"/>
</g>
<g transform="matrix(0.999978,-5.55112e-17,-2.20005e-08,0.996112,-1237.17,972.039)" id="orange">
<rect x="1915.71" y="-583.55" width="450" height="3117.62" style="fill:rgb(240,132,46);" r="3117.62">
<animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0,1915.71,-583.55" to="-60,1915.71,-583.55" dur="0.5s" repeatCount="1" fill="freeze" />
</rect>
</g>
<g transform="matrix(0.999978,5.55112e-17,-5.55112e-17,0.999978,-1236.96,-1164.58)" id="blue">
<rect x="1915.5" y="1775.41" width="450" height="3105.58" style="fill:rgb(54,76,159);" r="3117.62">
<animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0,1915.71,4881" to="60,1915.71,4881" dur="0.5s" repeatCount="1" fill="freeze" />
</rect>
</g>
<path id="cat" d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgba(0,0,0,0);">
<animate attributeName="fill" begin="0.6s" dur="0.5s" fill="freeze" values="rgba(0,0,0,0);rgba(0,0,0,1)" repeatCount="1" />
</path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -1,35 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
<style type="text/css">
.st0{display:none;}
.st1{fill:#FFFFFF;}
.st2{fill:#545251;stroke:#040000;stroke-miterlimit:10;}
.st3{fill:#F0842E;}
.st4{fill:#364C9F;}
.st5{fill:#FFFFFF;stroke:#040000;stroke-miterlimit:10;}
.st6{fill-rule:evenodd;clip-rule:evenodd;fill:#040000;}
.st7{fill-rule:evenodd;clip-rule:evenodd;fill:none;}
</style>
<g id="レイヤー_1" class="st0">
</g>
<g id="レイヤー_2">
<polyline class="st1" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
<rect x="678.5" y="128.48" class="st2" width="450" height="3821.5"/>
<rect x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st3" width="450" height="3117.62"/>
<rect x="1915.5" y="1555.41" transform="matrix(0.5 0.866 -0.866 0.5 3762.031 -299.6245)" class="st4" width="450" height="3105.58"/>
<path class="st5" d="M714.5,2953.5"/>
<path id="path1891" class="st6" d="M1592.47,2584h456.47c0-64.89-4.63-77.76-112.1-77.76c17.17-51.5,86.95-176.11,125.73-176.11
c34.31,0,75.24,1.89,75.24,80.17c0,88.87,149.56,232.16,185.82,173.7c54.04-87.12-92.91-60.55-92.91-270.65
c0-287.43,167.74-246.51,167.74-407.99c0-80.79-22.32-91.7-22.32-149.46c0-76.34,67.25-71.91,54.17-135.2
c-9.04-43.72-16.11-78.78-21.38-131.65c-3.74-37.51-4.93-77.5-43.9-75.89c-45.78,1.89-63.15,82.47-134.31,88.25
c-71.02,5.77-131.57-60.46-159.06-51c-27.25,9.38-18.68,83.32-2.52,135.83c25.4,82.54,80.79,189.86-20.2,206.02
c-100.99,16.16-274.69,32.32-399.92,197.94s-120.6,359.99-169.66,420.11C1314.72,2612.08,1146,2529.23,1146,2697.11
c0,75.16,127.35,129.27,147.55,105.03c20.2-24.24-171.62-96.46,43.01-181.78C1519.91,2547.46,1536.28,2532.58,1592.47,2584z"/>
<rect class="st7" width="4096" height="4096"/>
<path class="st1" d="M-58,1122"/>
</g>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 4096 4096" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g id="TheDesk">
<g>
<g transform="matrix(1,0,0,1.53232,-11.8871,-1144.65)">
<rect x="1044.02" y="1686.36" width="2335.77" height="782.558" style="fill:white;"/>
</g>
<rect x="1058.89" y="609.971" width="711.146" height="2885.69" style="fill:white;"/>
<g transform="matrix(1.08582,0,0,1,-142.973,0)">
<rect x="1665.9" y="1021.89" width="776.607" height="2050.26" style="fill:white;"/>
</g>
</g>
<g transform="matrix(1,0,0,0.998821,0,4.65666)">
<rect x="678.5" y="128.48" width="450" height="3821.5" style="fill:rgb(84,82,81);"/>
</g>
<g transform="matrix(0.5,-0.866,0.862652,0.498067,224.046,2340.41)">
<rect x="1915.71" y="-583.55" width="450" height="3117.62" style="fill:rgb(240,132,46);"/>
</g>
<g transform="matrix(0.5,0.866,-0.866,0.5,3757.17,-299.625)">
<rect x="1915.5" y="1555.41" width="450" height="3105.58" style="fill:rgb(54,76,159);"/>
</g>
<path id="cat" d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(4,0,0);"/>
<rect x="0" y="0" width="4096" height="4096" style="fill:none;"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -1,5 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!--
TheDesk icon, Cutls P.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
-->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
<style type="text/css">

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,4 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
ThinkingDesk: Cutls P's icon, Cutls P.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
-->
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

@@ -1,3 +1,4 @@
//@ts-check
//このソフトについて
function about() {
postMessage(["sendSinmpleIpc", "about"], "*")

View File

@@ -115,6 +115,13 @@ $(function($) {
return false
}
}
//Ctrl+K:メニュー開閉
if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 75) {
menu()
return false
}
}
//Ctrl+Space:読み込み
if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 32) {
@@ -220,7 +227,8 @@ $(function($) {
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)
var cwTxt = $('#cw-text').val()
re(id, ats_cm, acct_id, mode, cwTxt)
return false
}
}

View File

@@ -10,7 +10,7 @@ $(document).ready(function () {
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,
@@ -21,9 +21,9 @@ $(document).ready(function () {
alignment: 'left', // Displays dropdown with edge aligned to the left of button
stopPropagation: false // Stops event propagation
}
);
$('.collapsible').collapsible();
)
$('.collapsible').collapsible()
$('#videomodal').modal({
onCloseEnd: stopVideo
});
});
})
})

View File

@@ -17,26 +17,26 @@
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
define(['jquery'], factory)
} else if (typeof module === 'object' && typeof module.exports === 'object') {
factory(require('jquery'));
factory(require('jquery'))
} else {
// Browser globals
factory(jQuery);
factory(jQuery)
}
}(function ($) {
$.timeago = function (timestamp) {
if (timestamp instanceof Date) {
return inWords(timestamp);
return inWords(timestamp)
} else if (typeof timestamp === "string") {
return inWords($.timeago.parse(timestamp));
return inWords($.timeago.parse(timestamp))
} else if (typeof timestamp === "number") {
return inWords(new Date(timestamp));
return inWords(new Date(timestamp))
} else {
return inWords($.timeago.datetime(timestamp));
return inWords($.timeago.datetime(timestamp))
}
};
var $t = $.timeago;
}
var $t = $.timeago
$.extend($.timeago, {
settings: {
refreshMillis: 60000,
@@ -69,33 +69,33 @@
inWords: function (distanceMillis) {
if (!this.settings.allowPast && !this.settings.allowFuture) {
throw 'timeago allowPast and allowFuture settings can not both be set to false.';
throw 'timeago allowPast and allowFuture settings can not both be set to false.'
}
var $l = this.settings.strings;
var prefix = $l.prefixAgo;
var suffix = $l.suffixAgo;
var $l = this.settings.strings
var prefix = $l.prefixAgo
var suffix = $l.suffixAgo
if (this.settings.allowFuture) {
if (distanceMillis < 0) {
prefix = $l.prefixFromNow;
suffix = $l.suffixFromNow;
prefix = $l.prefixFromNow
suffix = $l.suffixFromNow
}
}
if (!this.settings.allowPast && distanceMillis >= 0) {
return this.settings.strings.inPast;
return this.settings.strings.inPast
}
var seconds = Math.abs(distanceMillis) / 1000;
var minutes = seconds / 60;
var hours = minutes / 60;
var days = hours / 24;
var years = days / 365;
var seconds = Math.abs(distanceMillis) / 1000
var minutes = seconds / 60
var hours = minutes / 60
var days = hours / 24
var years = days / 365
function substitute(stringOrFunction, number) {
var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
var value = ($l.numbers && $l.numbers[number]) || number;
return string.replace(/%d/i, value);
var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction
var value = ($l.numbers && $l.numbers[number]) || number
return string.replace(/%d/i, value)
}
var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
@@ -108,124 +108,124 @@
days < 45 && substitute($l.month, 1) ||
days < 365 && substitute($l.months, Math.round(days / 30)) ||
years < 1.5 && substitute($l.year, 1) ||
substitute($l.years, Math.round(years));
substitute($l.years, Math.round(years))
var separator = $l.wordSeparator || "";
if ($l.wordSeparator === undefined) { separator = " "; }
return $.trim([prefix, words, suffix].join(separator));
var separator = $l.wordSeparator || ""
if ($l.wordSeparator === undefined) { separator = " " }
return $.trim([prefix, words, suffix].join(separator))
},
parse: function (iso8601) {
var s = $.trim(iso8601);
s = s.replace(/\.\d+/, ""); // remove milliseconds
s = s.replace(/-/, "/").replace(/-/, "/");
s = s.replace(/T/, " ").replace(/Z/, " UTC");
s = s.replace(/([\+\-]\d\d)\:?(\d\d)/, " $1$2"); // -04:00 -> -0400
s = s.replace(/([\+\-]\d\d)$/, " $100"); // +09 -> +0900
return new Date(s);
var s = $.trim(iso8601)
s = s.replace(/\.\d+/, "") // remove milliseconds
s = s.replace(/-/, "/").replace(/-/, "/")
s = s.replace(/T/, " ").replace(/Z/, " UTC")
s = s.replace(/([\+\-]\d\d)\:?(\d\d)/, " $1$2") // -04:00 -> -0400
s = s.replace(/([\+\-]\d\d)$/, " $100") // +09 -> +0900
return new Date(s)
},
datetime: function (elem) {
var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
return $t.parse(iso8601);
var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title")
return $t.parse(iso8601)
},
isTime: function (elem) {
// jQuery's `is()` doesn't play well with HTML5 in IE
return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
return $(elem).get(0).tagName.toLowerCase() === "time" // $(elem).is("time");
}
});
})
// functions that can be called via $(el).timeago('action')
// init is default when no action is given
// functions are called with context of a single element
var functions = {
init: function () {
functions.dispose.call(this);
var refresh_el = $.proxy(refresh, this);
refresh_el();
var $s = $t.settings;
functions.dispose.call(this)
var refresh_el = $.proxy(refresh, this)
refresh_el()
var $s = $t.settings
if ($s.refreshMillis > 0) {
this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis);
this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis)
}
},
update: function (timestamp) {
var date = (timestamp instanceof Date) ? timestamp : $t.parse(timestamp);
$(this).data('timeago', { datetime: date });
var date = (timestamp instanceof Date) ? timestamp : $t.parse(timestamp)
$(this).data('timeago', { datetime: date })
if ($t.settings.localeTitle) {
$(this).attr("title", date.toLocaleString());
$(this).attr("title", date.toLocaleString())
}
refresh.apply(this);
refresh.apply(this)
},
updateFromDOM: function () {
$(this).data('timeago', { datetime: $t.parse($t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title")) });
refresh.apply(this);
$(this).data('timeago', { datetime: $t.parse($t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title")) })
refresh.apply(this)
},
dispose: function () {
if (this._timeagoInterval) {
window.clearInterval(this._timeagoInterval);
this._timeagoInterval = null;
window.clearInterval(this._timeagoInterval)
this._timeagoInterval = null
}
}
};
}
$.fn.timeago = function (action, options) {
var fn = action ? functions[action] : functions.init;
var fn = action ? functions[action] : functions.init
if (!fn) {
throw new Error("Unknown function name '" + action + "' for timeago");
throw new Error("Unknown function name '" + action + "' for timeago")
}
// each over objects here and call the requested function
this.each(function () {
fn.call(this, options);
});
return this;
};
fn.call(this, options)
})
return this
}
function refresh() {
var $s = $t.settings;
var $s = $t.settings
//check if it's still visible
if ($s.autoDispose && !$.contains(document.documentElement, this)) {
//stop if it has been removed
$(this).timeago("dispose");
return this;
$(this).timeago("dispose")
return this
}
var data = prepareData(this);
var data = prepareData(this)
if (!isNaN(data.datetime)) {
if ($s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) {
$(this).text(inWords(data.datetime));
$(this).text(inWords(data.datetime))
} else {
if ($(this).attr('title').length > 0) {
$(this).text($(this).attr('title'));
$(this).text($(this).attr('title'))
}
}
}
return this;
return this
}
function prepareData(element) {
element = $(element);
element = $(element)
if (!element.data("timeago")) {
element.data("timeago", { datetime: $t.datetime(element) });
var text = $.trim(element.text());
element.data("timeago", { datetime: $t.datetime(element) })
var text = $.trim(element.text())
if ($t.settings.localeTitle) {
element.attr("title", element.data('timeago').datetime.toLocaleString());
element.attr("title", element.data('timeago').datetime.toLocaleString())
} else if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
element.attr("title", text);
element.attr("title", text)
}
}
return element.data("timeago");
return element.data("timeago")
}
function inWords(date) {
return $t.inWords(distance(date));
return $t.inWords(distance(date))
}
function distance(date) {
return (new Date().getTime() - date.getTime());
return (new Date().getTime() - date.getTime())
}
// fix for IE6 suckage
document.createElement("abbr");
document.createElement("time");
}));
document.createElement("abbr")
document.createElement("time")
}))

View File

@@ -1,24 +1,29 @@
//バージョンチェッカー
function verck(ver, jp) {
console.log('%c Welcome😊', 'color: red;font-size:200%;')
if (store) return false
console.log('%c Welcome😊 ' + ver, 'color: red;font-size:200%;')
$('body').addClass(localStorage.getItem('platform'))
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)
}
var showVer = false
//Spotify
if (localStorage.getItem('spotify')) {
localStorage.removeItem('spotify')
localStorage.removeItem('spotify-refresh')
var spDc = 'Spotify NowPlaying sysytem was changed, please re-login to Spotify'
if(lang.language == 'ja') {
spDc = 'Spotify NowPlayingの機能が変更されたため、もう一度ログインしてください'
}
//ちょっと削除とリンク解析の都合上アレ(e)
show = true
Swal.fire({
type: 'info',
title: spDc,
})
}
//Spotify(e)
if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) {
showVer = true
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
$(document).ready(function() {
if (localStorage.getItem('winstore')) {
if (localStorage.getItem('winstore') && !pwa) {
$('#releasenote').modal('open')
}
verp = ver.replace('(', '')
@@ -37,8 +42,8 @@ function verck(ver, jp) {
})
}
localStorage.setItem('ver', ver)
if (!show) {
console.log(show)
if (!showVer) {
console.log(showVer)
if (
date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe') ||
!localStorage.getItem('showSupportMe')
@@ -68,9 +73,9 @@ function verck(ver, jp) {
}
var platform = localStorage.getItem('platform')
console.log('Your platform:' + platform)
if (!localStorage.getItem('winstore')) {
$('#start').css('display', 'flex')
}
//if (!localStorage.getItem('winstore') && !pwa) {
// $('#start').css('display', 'flex')
//}
if (
localStorage.getItem('winstore') == 'brewcask' ||
localStorage.getItem('winstore') == 'snapcraft' ||
@@ -142,9 +147,10 @@ function verck(ver, jp) {
if (!localStorage.getItem('last-notice-id')) {
localStorage.setItem('last-notice-id', 0)
}
var start = 'https://thedesk.top/notice?since_id=' + localStorage.getItem('last-notice-id')
var start = 'https://thedesk.top/notice/index.php?since_id=' + localStorage.getItem('last-notice-id')
fetch(start, {
method: 'GET'
method: 'GET',
cors: true
})
.then(function(response) {
if (!response.ok) {
@@ -172,7 +178,7 @@ function verck(ver, jp) {
} else {
if (obj.type == 'textv2') {
if (~obj.languages.indexOf(lang.language)) {
var show = true
var showVer = true
if (obj.toot != '') {
var toot =
'<button class="btn-flat toast-action" onclick="detEx(\'' +
@@ -183,25 +189,25 @@ function verck(ver, jp) {
}
if (obj.ver != '') {
if (obj.ver == ver) {
show = true
showVer = true
} else {
show = false
showVer = false
}
}
if (obj.domain != '') {
var multi = localStorage.getItem('multi')
if (multi) {
show = false
showVer = false
var accts = JSON.parse(multi)
Object.keys(accts).forEach(function(key) {
var acct = accts[key]
if (acct.domain == obj.domain) {
show = true
showVer = true
}
})
}
}
if (show) {
if (showVer) {
M.toast({
html:
escapeHTML(obj.text) +
@@ -231,7 +237,7 @@ function infowebsocket() {
if (obj.type == 'textv2') {
if (~obj.languages.indexOf(lang.language)) {
localStorage.setItem('last-notice-id', obj.id)
var show = true
var showVer = true
if (obj.toot != '') {
var toot =
'<button class="btn-flat toast-action" onclick="detEx(\'' +
@@ -242,25 +248,25 @@ function infowebsocket() {
}
if (obj.ver != '') {
if (obj.ver == ver) {
show = true
showVer = true
} else {
show = false
showVer = false
}
}
if (obj.domain != '') {
var multi = localStorage.getItem('multi')
if (multi) {
show = false
showVer = false
var accts = JSON.parse(multi)
Object.keys(accts).forEach(function(key) {
var acct = accts[key]
if (acct.domain == obj.domain) {
show = true
showVer = true
}
})
}
}
if (show) {
if (showVer) {
console.log(obj.text)
console.log(escapeHTML(obj.text))
M.toast({
@@ -322,79 +328,8 @@ function closeSupport() {
}
)
}
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
} else {
var mes = false
}
if (mes) {
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()
}
})
})
} else {
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()
}
})
}
}
function closeStart() {
$('#start').css('display', 'none')
var platform = localStorage.getItem('platform')
var ver = localStorage.getItem('ver')
storeDialog(platform, ver)
}

View File

@@ -92,7 +92,7 @@ var activity=[
{shortcode:"man-rowing-boat",css:"95.8333% 14.5833%"},
{shortcode:"man-biking",css:"95.8333% 39.5833%"},
{shortcode:"man-mountain-biking",css:"95.8333% 64.5833%"}
];
]
var flag=[
{shortcode:"checkered_flag",css:"16.6667% 58.3333%"},
{shortcode:"crossed_flags",css:"14.5833% 60.4167%"},
@@ -356,7 +356,7 @@ var flag=[
{shortcode:"rainbow-flag",css:"83.3333% 100%"},
{shortcode:"triangular_flag_on_post",css:"54.1667% 6.25%"},
{shortcode:"waving_black_flag",css:"20.8333% 29.1667%"},
{shortcode:"waving_white_flag",css:"20.8333% 27.0833%"}];
{shortcode:"waving_white_flag",css:"20.8333% 27.0833%"}]
var food=[
{shortcode:"green_apple",css:"12.5% 25%"},
{shortcode:"apple",css:"12.5% 22.9167%"},
@@ -444,7 +444,7 @@ var food=[
{shortcode:"spoon",css:"62.5% 14.5833%"},
{shortcode:"fork_and_knife",css:"14.5833% 0%"},
{shortcode:"knife_fork_plate",css:"14.5833% 18.75%"}
];
]
var nature=[
{shortcode:"dog",css:"22.9167% 62.5%"},
{shortcode:"cat",css:"22.9167% 52.0833%"},
@@ -605,7 +605,7 @@ var nature=[
{shortcode:"droplet",css:"35.4167% 39.5833%"},
{shortcode:"sweat_drops",css:"35.4167% 37.5%"},
{shortcode:"umbrella_with_rain_drops",css:"0% 100%"}
];
]
var object=[
{shortcode:"watch",css:"0% 29.1667%"},
{shortcode:"iphone",css:"39.5833% 0%"},
@@ -780,7 +780,7 @@ var object=[
{shortcode:"closed_lock_with_key",css:"39.5833% 62.5%"},
{shortcode:"lock",css:"39.5833% 66.6667%"},
{shortcode:"unlock",css:"39.5833% 68.75%"}
];
]
var people=[
{shortcode:"grinning",css:"45.8333% 68.75%"},
{shortcode:"smiley",css:"45.8333% 75%"},
@@ -1096,7 +1096,7 @@ var people=[
{shortcode:"woman-raising-hand",css:"93.75% 29.1667%"},
{shortcode:"woman-frowning",css:"93.75% 54.1667%"},
{shortcode:"woman-pouting",css:"93.75% 79.1667%"}
];
]
var place=[
{shortcode:"car",css:"52.0833% 60.4167%"},
{shortcode:"taxi",css:"52.0833% 56.25%"},
@@ -1217,7 +1217,7 @@ var place=[
{shortcode:"milky_way",css:"8.33333% 93.75%"},
{shortcode:"bridge_at_night",css:"8.33333% 87.5%"},
{shortcode:"foggy",css:"8.33333% 70.8333%"}
];
]
var symbol=[
{shortcode:"heart",css:"6.25% 62.5%"},
{shortcode:"yellow_heart",css:"35.4167% 14.5833%"},
@@ -1492,7 +1492,7 @@ var symbol=[
{shortcode:"female_sign",css:"2.08333% 37.5%"},
{shortcode:"male_sign",css:"2.08333% 39.5833%"},
{shortcode:"staff_of_aesculapius",css:"2.08333% 87.5%"}
];
]
var faicons=[
"fa-500px",
"fa-address-book",

View File

@@ -83,6 +83,6 @@ var idata = {
"nitiasa.com_quote":"enabled",
"biwakodon.com_quote":"enabled",
"comm.cx_quote":"enabled"
};
}
localStorage.setItem("instance", JSON.stringify(idata));
localStorage.setItem("instance", JSON.stringify(idata))

View File

@@ -32,7 +32,7 @@ function ck() {
} else {
var obj = JSON.parse(multi)
var jp = false
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var acct = obj[key]
if (acct.domain) {
refresh(key, true)
@@ -47,6 +47,16 @@ function ck() {
multiSelector(false)
verck(ver, jp)
$('.stw').show()
let tipsName = localStorage.getItem('tips')
const matchCID = /custom:([abcdef0-9]{8}-[abcdef0-9]{4}-4[abcdef0-9]{3}-[abcdef0-9]{4}-[abcdef0-9]{12})/
if (tipsName) {
if (tipsName.match(matchCID)) {
const id = tipsName.match(matchCID)[1]
tips('custom', id)
} else {
tips(tipsName)
}
}
$('#something-wrong img').attr('src', '../../img/thinking.svg')
}
}
@@ -74,7 +84,7 @@ function login(url) {
website: 'https://thedesk.top'
})
)
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -139,20 +149,20 @@ function code(code, mode) {
code: code
})
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
todo(json)
if (json['access_token']) {
localStorage.setItem(url + '_at', json['access_token'])
@@ -178,20 +188,20 @@ function getdata() {
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (json.error) {
console.error('Error:' + json.error)
M.toast({ html: lang.lang_fatalerroroccured + 'Error:' + json.error, displayLength: 5000 })
@@ -236,20 +246,20 @@ function getdataAdv(domain, at) {
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (json.error) {
console.error('Error:' + json.error)
M.toast({ html: lang.lang_fatalerroroccured + 'Error:' + json.error, displayLength: 5000 })
@@ -288,34 +298,40 @@ function getdataAdv(domain, at) {
})
}
//ユーザーデータ更新
function refresh(target, loadskip) {
async function refresh(target, loadskip) {
var multi = localStorage.getItem('multi')
var obj = JSON.parse(multi)
if (obj[target].mode == 'misskey') {
return
}
let at = obj[target].at
if (obj[target].rt) {
console.log('refresh access token')
at = await refreshPleromaAt(obj[target])
localStorage.setItem(`acct_${target}_at`, at)
}
var start = 'https://' + obj[target].domain + '/api/v1/accounts/verify_credentials'
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + obj[target].at
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (json.error) {
console.error('Error:' + json.error)
M.toast({ html: lang.lang_fatalerroroccured + 'Error:' + json.error, displayLength: 5000 })
@@ -359,6 +375,29 @@ function refresh(target, loadskip) {
}
})
}
async function refreshPleromaAt(obj) {
const start = 'https://' + obj.domain + '/oauth/token'
const rt = obj.rt.split(' ')
let promise = await fetch(start, {
method: 'POST',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
grant_type : 'refresh_token',
refresh_token: rt[0],
client_id: rt[1],
client_secret: rt[2]
})
})
const json = await promise.json()
if (json.access_token) {
return json.access_token
} else {
return false
}
}
//MarkdownやBBCodeの対応、文字数制限をチェック
//絶対ストリーミングを閉じさせないマン
function ckdb(acct_id) {
@@ -444,13 +483,13 @@ function ckdb(acct_id) {
'content-type': 'application/json'
}
})
.then(function(response) {
.then(function (response) {
return response.json()
})
.catch(function(error) {
.catch(function (error) {
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (json.error) {
console.error(json.error)
return
@@ -497,7 +536,7 @@ function multiSelector(parseC) {
$('#src-acct-sel').html('<option value="tootsearch">Tootsearch</option>')
$('#add-acct-sel').html('<option value="noauth">' + lang.lang_login_noauth + '</option>')
} else {
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var acct = obj[key]
var list = key * 1 + 1
if (key + '' === last) {
@@ -565,8 +604,8 @@ function multiSelector(parseC) {
$('#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>'
lang.lang_login_noauth +
'</option><!--option value="webview">Twitter</option-->'
)
$('#dir-acct-sel').append('<option value="noauth">' + lang.lang_login_noauth + '</option>')
}
@@ -587,27 +626,29 @@ function enc(ver) {
}
//インスタンスティッカー
function ticker() {
var start = 'https://toot.app/toot/'
var start = 'https://s.0px.io/json'
fetch(start, {
method: 'GET',
cors: true,
headers: {
'content-type': 'application/json'
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (json) {
localStorage.setItem('ticker', JSON.stringify(json))
localStorage.removeItem('ticker')
localStorage.setItem('sticker', JSON.stringify(json))
}
})
}

View File

@@ -1,7 +1,7 @@
//ログアウトします
function logout() {
localStorage.removeItem("acct_" + acct_id + "_at");
localStorage.removeItem("domain_" + acct_id);
location.href = "index.html";
todc();
localStorage.removeItem("acct_" + acct_id + "_at")
localStorage.removeItem("domain_" + acct_id)
location.href = "index.html"
todc()
}

View File

@@ -36,7 +36,7 @@ function load() {
var domains = []
var templete
$('#acct-list').html('')
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var acct = obj[key]
var list = key * 1 + 1
if (acct.background != 'def' && acct.text != 'def') {
@@ -55,6 +55,9 @@ function load() {
<div class="card-content ">
<span class="lts">${list}.</span><img src="${acct.prof}" width="40" height="40" />
<span class="card-title">${name}</span>${escapeHTML(acct.user)}@${acct.domain}
<a onclick="login('${acct.domain}')" class="pointer white-text waves-effect" title="${lang.lang_manager_refreshAt}">
<i class="material-icons text-line-icon">login</i>
</a>
</div>
<div class="card-action">
<button class="btn-flat waves-effect disTar pointer white-text" onclick="refresh('${key}')">
@@ -72,7 +75,7 @@ function load() {
})
domains = _.uniq(domains)
$('#domain-list').html('')
Object.keys(domains).forEach(function(key2) {
Object.keys(domains).forEach(function (key2) {
var domain = domains[key2]
if (localStorage.getItem('letters_' + key2)) {
var maxChars = localStorage.getItem('letters_' + key2)
@@ -108,7 +111,7 @@ load()
support()
function maxChars(domain, uid) {
var value = $('#maxChars' + uid).val()
if(value*1 < 1 || !Number.isInteger(value*1)) {
if (value * 1 < 1 || !Number.isInteger(value * 1)) {
Swal.fire({
type: 'error',
title: 'Error'
@@ -127,8 +130,8 @@ function maxChars(domain, uid) {
localStorage.removeItem('multi')
}
}
Object.keys(obj).forEach(function(key) {
if(obj[key].domain == domain) localStorage.setItem('letters_' + key, value)
Object.keys(obj).forEach(function (key) {
if (obj[key].domain == domain) localStorage.setItem('letters_' + key, value)
})
console.log('#maxChars' + uid, value)
load()
@@ -208,7 +211,7 @@ function multiDel(target) {
cancelButtonText: lang.lang_no
}).then(result => {
if (result.value) {
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var nk = key - 1
//公開範囲(差分のみ)
if (key >= target) {
@@ -227,7 +230,9 @@ function multiDel(target) {
var olddom = localStorage.getItem('domain_' + key)
localStorage.setItem('domain_' + nk, olddom)
var oldat = localStorage.getItem('acct_' + key + '_at')
var oldrt = localStorage.getItem('acct_' + key + '_rt')
localStorage.setItem('acct_' + nk + '_at', oldat)
localStorage.setItem('acct_' + nk + '_rt', oldrt)
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))
@@ -243,7 +248,7 @@ function multiDel(target) {
var col = localStorage.getItem('column')
var oldcols = JSON.parse(col)
var newcols = []
Object.keys(oldcols).forEach(function(key) {
Object.keys(oldcols).forEach(function (key) {
var nk = key - 1
var oldcol = oldcols[key]
if (target < oldcol.domain) {
@@ -252,11 +257,31 @@ function multiDel(target) {
var newdom = oldcol.domain
}
var type = oldcol.type
var data = null
if (oldcol.data) {
data = oldcol.data
}
var background = null
if (oldcol.background) {
background = oldcol.background
}
var text = null
if (oldcol.text) {
text = oldcol.text
}
var left_fold = false
if (oldcol.left_fold) {
left_fold = true
}
//消した垢のコラムじゃないときコピー
if (target != oldcol.domain) {
var add = {
domain: newdom,
type: type
type: type,
data: data,
background: background,
text: text,
left_fold: left_fold
}
newcols.push(add)
}
@@ -283,7 +308,7 @@ function multiDel2(target) {
obj.splice(target, 1)
var json = JSON.stringify(obj)
localStorage.setItem('multi', json)
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
if (key >= target) {
var oldvis = localStorage.getItem('vis-memory-' + key)
if (oldvis) {
@@ -311,7 +336,7 @@ function multiDel2(target) {
} else {
var cobj = JSON.parse(col)
}
Object.keys(cobj).forEach(function(key) {
Object.keys(cobj).forEach(function (key) {
var column = cobj[key]
if (column.domain > target) {
var nk = key - 1
@@ -331,7 +356,7 @@ function multiDel2(target) {
//サポートインスタンス
function support() {
Object.keys(idata).forEach(function(key) {
Object.keys(idata).forEach(function (key) {
var instance = idata[key]
if (instance == 'instance') {
templete =
@@ -379,7 +404,7 @@ function login(url) {
website: 'https://thedesk.top'
})
)
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -417,20 +442,20 @@ function versionChecker(url) {
'content-type': 'application/json'
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
var version = json.version
if (version) {
var reg = version.match(/^([0-9])\.[0-9]\.[0-9]/u)
@@ -456,25 +481,25 @@ function versionCompat(prefix, ver, title, real) {
'content-type': 'application/json'
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
var complete = false
var ct = 0
var jl = 0
var jl2 = 0
Object.keys(json).forEach(function(key) {
Object.keys(json).forEach(function (key) {
var data = json[key]
if (data) {
jl++
@@ -506,7 +531,7 @@ function misskeyLogin(url) {
if (!url) {
var url = $('#misskey-url').val()
}
var start = 'http://' + url + '/api/app/create'
var start = 'https://' + url + '/api/app/create'
var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
@@ -561,7 +586,7 @@ function misskeyLogin(url) {
]
})
)
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -585,7 +610,7 @@ function misskeyAuth(url, mkc) {
appSecret: mkc
})
)
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -609,9 +634,8 @@ function instance() {
alert('入力形式が違います。(Cutls@mstdn.jpにログインする場合、入力するのは"mstdn.jp"です。)')
return false
}
login(url)
login(url)
}
//コード入れてAccessTokenゲット
function code(code) {
localStorage.removeItem('redirect')
@@ -637,7 +661,7 @@ function code(code) {
appSecret: localStorage.getItem('mkc')
})
)
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -696,7 +720,7 @@ function code(code) {
code: code
})
)
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -705,14 +729,16 @@ function code(code) {
if (json['access_token']) {
$('#auth').hide()
$('#add').show()
getdata(url, json['access_token'])
getdata(url, json)
}
}
}
}
}
//ユーザーデータ取得
function getdata(domain, at) {
function getdata(domain, json) {
var at = json['access_token']
var rt = `${json['refresh_token']} ${localStorage.getItem('client_id')} ${localStorage.getItem('client_secret')}`
var start = 'https://' + domain + '/api/v1/accounts/verify_credentials'
fetch(start, {
method: 'GET',
@@ -721,20 +747,20 @@ function getdata(domain, at) {
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (json.error) {
console.error('Error:' + json.error)
M.toast({ html: lang.lang_fatalerroroccured + 'Error:' + json.error, displayLength: 5000 })
@@ -752,6 +778,7 @@ function getdata(domain, at) {
}
var add = {
at: at,
rt: rt ? rt : null,
name: json['display_name'],
domain: domain,
user: json['acct'],
@@ -762,8 +789,24 @@ function getdata(domain, at) {
}
var multi = localStorage.getItem('multi')
var obj = JSON.parse(multi)
var target = obj.length
obj.push(add)
let addTarget = -1
let ct = 0
for (let acct of obj) {
if (acct.domain === domain && acct.user === json['acct']) {
console.log('detected dupl addct')
addTarget = ct
break
}
ct++
}
if (addTarget == -1) {
var target = obj.length
obj.push(add)
} else {
console.log('dupl acct_' + addTarget)
obj[addTarget] = add
var target = addTarget
}
localStorage.setItem('name_' + target, json['display_name'])
localStorage.setItem('user_' + target, json['acct'])
localStorage.setItem('user-id_' + target, json['id'])
@@ -787,6 +830,7 @@ function atSetup(type) {
var i = $('#misskey-key').val()
var add = {
at: i,
rt: null,
name: 'Pseudo Account',
domain: url,
user: 'user+pseudo',
@@ -800,6 +844,7 @@ function atSetup(type) {
var i = $('#code').val()
var add = {
at: i,
rt: null,
name: 'Pseudo Account',
domain: url,
user: 'user+pseudo',
@@ -842,25 +887,25 @@ function refresh(target) {
Authorization: 'Bearer ' + obj[target].at
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (json.error) {
console.error('Error:' + json.error)
M.toast({ html: lang.lang_fatalerroroccured + 'Error:' + json.error, displayLength: 5000 })
@@ -873,6 +918,7 @@ function refresh(target) {
}
var ref = {
at: obj[target].at,
rt: obj[target].rt ? obj[target].rt : null,
name: json['display_name'],
domain: obj[target].domain,
user: json['acct'],
@@ -914,7 +960,7 @@ function misskeyRefresh(obj, target, url) {
i: obj[target].at
})
)
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -924,6 +970,7 @@ function misskeyRefresh(obj, target, url) {
var priv = 'public'
var add = {
at: json.accessToken,
rt: null,
name: json['user']['name'],
domain: url,
user: json['user']['username'],
@@ -963,7 +1010,7 @@ function multisel() {
$('#src-acct-sel').html('<option value="tootsearch">Tootsearch</option>')
$('#add-acct-sel').html('<option value="noauth">' + lang.lang_login_noauth + '</option>')
} else {
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var acct = obj[key]
var list = key * 1 + 1
if (key == last) {
@@ -1053,10 +1100,10 @@ var oldSuggest
var suggest
input.addEventListener(
'focus',
function() {
function () {
$('#ins-suggest').html('')
window.clearInterval(timer)
timer = window.setInterval(function() {
timer = window.setInterval(function () {
var new_val = input.value
if (prev_val != new_val) {
if (new_val.length > 3) {
@@ -1069,23 +1116,23 @@ input.addEventListener(
'Bearer tC8F6xWGWBUwGScyNevYlx62iO6fdQ4oIK0ad68Oo7ZKB8GQdGpjW9TKxBnIh8grAhvd5rw3iyP9JPamoDpeLQdz62EToPJUW99hDx8rfuJfGdjQuimZPTbIOx0woA5M'
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (!json.error) {
var urls = 'Suggest:'
Object.keys(json.instances).forEach(function(key) {
Object.keys(json.instances).forEach(function (key) {
var url = json.instances[key]
urls =
urls +
@@ -1107,7 +1154,7 @@ input.addEventListener(
input.addEventListener(
'blur',
function() {
function () {
window.clearInterval(timer)
},
false

View File

@@ -3,6 +3,7 @@
$(document).on('click', 'a', e => {
var $a = $(e.target)
var url = $a.attr('href')
var acct_id = $a.attr('data-acct')
if (!url) {
var url = $a.parent().attr('href')
}
@@ -43,10 +44,14 @@ $(document).on('click', 'a', e => {
if (ats[2]) {
//Quesdon判定
if (!~ats[2].indexOf('@')) {
udgEx(url, 'main')
var acct_id = $a.parent().attr('data-acct')
if (!acct_id) {
acct_id = localStorage.getItem("main")
}
udgEx(url, acct_id)
return false
} else {
if(pwa) {
if (pwa) {
return true
} else {
postMessage(['openUrl', url], '*')
@@ -54,7 +59,7 @@ $(document).on('click', 'a', e => {
}
}
} else {
if(pwa) {
if (pwa) {
return true
}
//hrefがhttp/httpsならブラウザで
@@ -112,7 +117,7 @@ function playSound() {
}
context = new AudioContext()
context.createBufferSource().start(0)
context.decodeAudioData(request.response, function(buf) {
context.decodeAudioData(request.response, function (buf) {
//console.log("Playing:" , source)
source.buffer = buf
source.loop = false
@@ -130,16 +135,11 @@ function playSound() {
volumeControl.gain.value = vol
source.start(0)
soundFile = source
function newFunction() {
var source
return source
}
}
function nano() {
postMessage(['nano', null], '*')
}
onmessage = function(e) {
onmessage = function (e) {
if (e.data[0] == 'details') {
details(e.data[1][0], e.data[1][1])
} else if (e.data[0] == 'udg') {
@@ -149,10 +149,9 @@ onmessage = function(e) {
} else if (e.data[0] == 'post') {
post('pass')
} else if (e.data[0] == 'toastSaved') {
var show = `${lang.lang_img_DLDone}${
e.data[1][0]
}<button class="btn-flat toast-action" onclick="openFinder('${e.data[1][1]}')">Show</button>`
M.toast({ html: show, displayLength: 5000 })
var showTxt = `${lang.lang_img_DLDone}${e.data[1][0]
}<button class="btn-flat toast-action" onclick="openFinder('${e.data[1][1]}')">Show</button>`
M.toast({ html: showTxt, displayLength: 5000 })
} else if (e.data[0] == 'parseColumn') {
parseColumn(e.data[1])
} else if (e.data[0] == 'exportSettingsCore') {
@@ -175,7 +174,7 @@ onmessage = function(e) {
} 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])
renderMem(e.data[1][0], e.data[1][1], e.data[1][2], e.data[1][3], e.data[1][4])
} else if (e.data[0] == 'updateProg') {
updateProg(e.data[1])
} else if (e.data[0] == 'updateMess') {
@@ -186,6 +185,10 @@ onmessage = function(e) {
asRead()
} else if (e.data[0] == 'asReadEnd') {
asReadEnd()
} else if (e.data[0] == 'accessibility') {
console.log('atrue')
$('body').addClass('accessibility')
$('.window-title').before('<div class="accessMark">Screen Reader Optimized</div>')
} else if (e.data[0] == 'logData') {
$('#logs').val(e.data[1])
var obj = document.getElementById('logs')
@@ -198,7 +201,7 @@ onmessage = function(e) {
}
}
/* PWA */
if(pwa) {
if (pwa) {
function postMessage(e) {
if (e[0] == 'openUrl') {
urls = e[1].match(/https?:\/\/(.+)/)
@@ -207,13 +210,27 @@ if(pwa) {
title: 'Open URL',
icon: 'info',
html:
`If you are OK, click: <a href="${urls[0]}" target="_blank" class="btn waves-effect">Here</a>`,
`If you are OK, click: <a href="${urls[0]}" target="_blank" class="btn waves-effect">Here</a>`,
showCloseButton: false,
showCancelButton: true,
focusConfirm: false,
confirmButtonText: 'Close'
})
})
}
}
}
}
}
$('html').addClass(localStorage.getItem('scroll') ? localStorage.getItem('scroll') : '')
const connection = function (event) {
console.log(navigator.onLine, 'network state')
if (!navigator.onLine) {
$('#re-online').addClass('hide')
$('#offline').removeClass('hide')
} else if (!$('#offline').hasClass('hide')) {
$('#offline').addClass('hide')
$('#re-online').removeClass('hide')
}
}
window.onoffline = connection
window.ononline = connection

View File

@@ -1,12 +1,18 @@
document.title = 'TheDesk'
$.strip_tags = function(str, allowed) {
window.onload = function () {
console.log('loaded')
initPostbox()
connection()
initPlugin(plugins)
if(localStorage.getItem('control-center-np')) $('#ccnp').removeClass('hide')
}
$.strip_tags = function (str, allowed) {
if (!str) {
return ''
}
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('')
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
return str.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''
})
}
@@ -89,17 +95,18 @@ function formattimeutc(date) {
}
postMessage(['sendSinmpleIpc', 'custom-css-request'], '*')
function makeCID() {
return (
randomStr(8) +
'-' +
randomStr(4) +
'-' +
randomStr(4) +
'-' +
randomStr(4) +
'-' +
randomStr(12)
)
let chars = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("")
for (let i = 0, len = chars.length; i < len; i++) {
switch (chars[i]) {
case "x":
chars[i] = Math.floor(Math.random() * 16).toString(16)
break
case "y":
chars[i] = (Math.floor(Math.random() * 4) + 8).toString(16)
break
}
}
return chars.join("")
}
function randomStr(l) {
// 生成する文字列に含める文字セット
@@ -148,15 +155,15 @@ function rgbToHex(color) {
console.error(color + ':第1引数はRGB形式で入力')
}
/*マルチバイト用切り出し*/
$.isSurrogatePear = function(upper, lower) {
$.isSurrogatePear = function (upper, lower) {
return 0xd800 <= upper && upper <= 0xdbff && 0xdc00 <= lower && lower <= 0xdfff
}
$.mb_strlen = function(str) {
$.mb_strlen = function (str) {
var splitter = new GraphemeSplitter()
var arr = splitter.splitGraphemes(str)
return arr.length
}
$.mb_substr = function(str, begin, end) {
$.mb_substr = function (str, begin, end) {
//配列にする
var splitter = new GraphemeSplitter()
var arr = splitter.splitGraphemes(str)
@@ -176,7 +183,7 @@ function object_array_sort(data, key, order, fn) {
num_a = 1
num_b = -1
}
data = data.sort(function(a, b) {
data = data.sort(function (a, b) {
var x = a[key]
var y = b[key]
if (x > y) return num_a

218
app/js/platform/plugin.js Normal file
View File

@@ -0,0 +1,218 @@
var plugins = getPlugin()
function getPlugin() {
const json = localStorage.getItem('plugins')
let ret = {
buttonOnPostbox: [],
buttonOnToot: [],
buttonOnBottom: [],
init: [],
tips: [],
none: []
}
if (!json) return ret
const plugins = JSON.parse(json)
for (let plugin of plugins) {
const meta = getMeta(plugin.content)
if (!meta) continue
const type = meta.event
ret[type] ? ret[type].push(plugin) : ret[type] = [plugin]
if (type === 'buttonOnToot') continue
if (type === 'tips') {
if (meta.interval) {
const matchCID = /custom:([abcdef0-9]{8}-[abcdef0-9]{4}-4[abcdef0-9]{3}-[abcdef0-9]{4}-[abcdef0-9]{12})/
setInterval(function () {
const tipsName = localStorage.getItem('tips')
if (tipsName.match(matchCID)) {
const id = tipsName.match(matchCID)[1]
if (id === plugin.id) if (location.href.split('/').pop() === 'index.html') execPlugin(id, 'tips', null)
}
}, meta.interval)
}
continue
}
const shortcut = meta.shortcut
$(window).keydown(function (e) {
if (e.keyCode === shortcut && e.altKey) execPlugin(plugin.id, type)
})
}
return ret
}
function initPlugin() {
asCommon['TheDesk:dialog'] = asValue.FN_NATIVE((z) => {
Swal.fire({
title: z[0].value,
icon: z[2] ? z[2].value : 'info',
text: z[1] ? z[1].value : ''
})
})
asCommon['TheDesk:confirm'] = asValue.FN_NATIVE(async (z) => {
const alert = await Swal.fire({
title: z[0].value,
text: z[1].value,
icon: z[2] ? z[2].value : 'info',
showCancelButton: true
})
return asUtil.jsToVal(!!(alert.value && alert.value === true))
})
asCommon['TheDesk:css'] = asValue.FN_NATIVE((z) => {
$(escapeHTML(z[0].value)).css(escapeHTML(z[1].value), escapeHTML(z[2].value))
})
asCommon['TheDesk:openLink'] = asValue.FN_NATIVE((z) => {
postMessage(['openUrl', z[0].value], '*')
})
const { buttonOnPostbox, init, buttonOnBottom, tips } = plugins
for (let target of buttonOnPostbox) {
const meta = getMeta(target.content)
$('#dropdown2').append(`<li><a onclick="execPlugin('${target.id}','buttonOnPostbox', null);">${escapeHTML(meta.name)}</a></li>`)
}
for (let target of buttonOnBottom) {
const meta = getMeta(target.content)
$('#group .btnsgroup').append(`<a onclick="execPlugin('${target.id}','buttonOnBottom', null);" class="nex waves-effect pluginNex"><span title="${escapeHTML(meta.name)}">${escapeHTML(meta.name).substr(0, 1)}</span></a>`)
}
for (let target of tips) {
const meta = getMeta(target.content)
$('#tips-menu .btnsgroup').append(`<a onclick="tips('custom', '${target.id}')" class="nex waves-effect pluginNex"><span title="${escapeHTML(meta.name)}">${escapeHTML(meta.name).substr(0, 1)}</span></a>`)
}
for (let target of init) {
const as = new AiScript(asCommon)
const meta = getMeta(target.content)
M.toast({ html: `${escapeHTML(meta.name)}を実行しました`, displayLength: 1000 })
if (target) as.exec(asParse(target.content))
}
}
function getMeta(plugin) {
try {
return AiScript.collectMetadata(asParse(plugin)).get(null)
} catch (e) {
console.error(e)
return null
}
}
async function execPlugin(id, source, args) {
const coh = plugins[source]
let exe = null
for (let plugin of coh) {
if (plugin.id == id) {
exe = plugin.content
break
}
}
const common = _.cloneDeep(asCommon)
if (source == 'buttonOnToot') {
common.DATA = args
const domain = localStorage.getItem(`domain_${args.acct_id}`)
const at = localStorage.getItem(`acct_${args.acct_id}_at`)
const start = `https://${domain}/api/v1/statuses/${args.id}`
const promise = await fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization:
`Bearer ${at}`
}
})
let json = await promise.json()
common.TOOT = asUtil.jsToVal(json)
common['TheDesk:changeText'] = asValue.FN_NATIVE((z) => {
const v = sanitizeHtml(z[0].value,
{
allowedTags: ['p', 'br', 'a', 'span'],
allowedAttributes: {
'a': ['href', 'class', 'rel', 'target'],
'span': [],
'p': [],
'br': [],
}
}).replace(/href="javascript:/, 'href="').replace(/href='javascript:/, 'href="').replace(/href=javascript:/, 'href="')
json.content = v
if (getMeta(exe).dangerHtml) $(`[unique-id=${args.id}] .toot`).html(parse([json], null, null, null, null, null, null, true))
})
} else if (source == 'buttonOnPostbox') {
const postDt = post(null, false, true)
common.POST = asUtil.jsToVal(postDt)
common.ACCT_ID = asUtil.jsToVal(postDt.TheDeskAcctId)
common['TheDesk:postText'] = asValue.FN_NATIVE((z) => {
$('#textarea').val(z[0].value)
})
common['TheDesk:postCW'] = asValue.FN_NATIVE((z) => {
if (z[1]) $('#cw-text').val(z[1].value)
cw(z[0] ? z[0].value : false)
})
common['TheDesk:postNSFW'] = asValue.FN_NATIVE((z) => {
nsfw(z[0] ? z[0].value : false)
})
common['TheDesk:postVis'] = asValue.FN_NATIVE((z) => {
vis(z[0].value)
})
common['TheDesk:postClearbox'] = asValue.FN_NATIVE(() => {
clear()
})
common['TheDesk:postExec'] = asValue.FN_NATIVE(() => {
if (getMeta(exe).apiPost) post()
})
} else if (source == 'tips') {
common['TheDesk:refreshTipsView'] = asValue.FN_NATIVE((z) => {
const v = sanitizeHtml(z[0].value,
{
allowedTags: ['p', 'br', 'a', 'span', 'img'],
allowedAttributes: {
'a': ['href', 'class', 'rel', 'target', 'style'],
'span': ['style'],
'p': ['style'],
'br': [],
'img': ['src', 'style']
}
}).replace(/href="javascript:/, 'href="').replace(/href='javascript:/, 'href="').replace(/href=javascript:/, 'href="')
if (getMeta(exe).dangerHtml) $('#tips-text').html(v)
})
}
common['TheDesk:console'] = asValue.FN_NATIVE((z) => {
console.log(z[0].value)
})
common['TheDesk:api'] = asValue.FN_NATIVE(async (z) => {
try {
if (!getMeta(exe).apiGet && z[0].value == "GET") return asUtil.jsToVal(null)
if (!getMeta(exe).apiPost && (z[0].value == "POST" || z[0].value == "DELETE" || z[0].value == "PUT")) return asUtil.jsToVal(null)
const domain = localStorage.getItem(`domain_${z[3].value}`)
const at = localStorage.getItem(`acct_${z[3].value}_at`)
const start = `https://${domain}/api/${z[1].value}`
const q = {
method: z[0].value,
headers: {
'content-type': 'application/json',
Authorization:
`Bearer ${at}`
}
}
if (z[2]) q.body = z[2].value
const promise = await fetch(start, q)
const json = await promise.json()
return asUtil.jsToVal(json)
} catch (e) {
return asUtil.jsToVal(null)
}
})
common['TheDesk:getRequest'] = asValue.FN_NATIVE(async (z) => {
try {
if (!getMeta(exe).apiGet) return asUtil.jsToVal(null)
const start = `https://${z[0].value}`
const promise = await fetch(start)
let json = null
if (z[1].value) {
json = await promise.json()
} else {
json = await promise.text()
}
return asUtil.jsToVal(json)
} catch (e) {
return asUtil.jsToVal(null)
}
})
const as = new AiScript(common)
if (exe) as.exec(asParse(exe))
}

View File

@@ -2,23 +2,9 @@ var electron = require('electron')
const shell = electron.shell
var ipc = electron.ipcRenderer
//title bar
const customTitlebar = require('custom-electron-titlebar')
window.addEventListener('DOMContentLoaded', () => {
ipc.send('frameCheck', '')
ipc.on('frame', function(event, args) {
const file = location.href.substr(-10)
if (
file == 'index.html' ||
file == '/acct.html' ||
file == 'tting.html'
) {
new customTitlebar.Titlebar({
backgroundColor: customTitlebar.Color.fromHex('#000'),
titleHorizontalAlignment: 'right',
icon: '../../img/desk.png'
})
}
})
document.title = 'TheDesk'
ipc.send('acsCheck', '')
})
onmessage = function(e) {
@@ -47,7 +33,7 @@ onmessage = function(e) {
} 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])
ipc.send('openFinder', e.data[1])
} else if (e.data[0] == 'columnDel') {
ipc.send('column-del', e.data[1])
} else if (e.data[0] == 'lang') {
@@ -154,12 +140,12 @@ ipc.on('resizeJudgement', function(event, b64) {
var width = element.naturalWidth
var height = element.naturalHeight
if (width > resize || height > resize) {
ipc.send('resize-image', [b64, resize])
ipc.send('resize-image', [b64[0], resize])
} else {
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
}
}
element.src = b64
element.src = 'data:image/png;base64,' + b64[0]
} else {
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
}
@@ -169,7 +155,7 @@ 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, '\\\\') + '\\\\.'
var argC = arg.replace(/\\/g, '\\\\')
console.log('saved')
postMessage(['toastSaved', [arg, argC]], '*')
})
@@ -205,6 +191,7 @@ ipc.on('theme-json-response', function(event, args) {
postMessage(['customConnect', args], '*')
})
ipc.on('theme-json-create-complete', function(event, args) {
if(args != '') alert(args)
postMessage(['clearCustomImport', ''], '*')
postMessage(['ctLoad', ''], '*')
})
@@ -217,7 +204,7 @@ ipc.on('memory', function(event, arg) {
var use = arg[0]
var cpu = arg[1]
var total = arg[2]
postMessage(['renderMem', [use, cpu, total]], '*')
postMessage(['renderMem', [use, cpu, total, arg[3], arg[4]]], '*')
})
//log
ipc.on('logData', function(event, args) {
@@ -230,12 +217,16 @@ ipc.on('prog', function(event, arg) {
ipc.on('mess', function(event, arg) {
postMessage(['updateMess', arg], '*')
})
//misc
ipc.on('asRead', function(event, arg) {
postMessage(['asRead', ''], '*')
})
ipc.on('asReadEnd', function(event, arg) {
postMessage(['asReadEnd', ''], '*')
})
ipc.on('accessibility', function(event, arg) {
postMessage(['accessibility', 'true'], '*')
})
var webviewDom = document.getElementById('webview')
if (webviewDom) {
webviewDom.addEventListener('new-window', function(e) {

View File

@@ -23,6 +23,7 @@ function emojiToggle(reaction) {
}
$('#post-box').css('width', width + 'px')
$('#suggest').html('')
$('#draft').html('')
if (!localStorage.getItem('emojis_' + acct_id)) {
var html = `<button class="btn waves-effect green" style="width:100%; padding:0; margin-top:0;" onclick="emojiGet('true');">${lang.lang_emoji_get}</button>`
$('#emoji-list').html(html)
@@ -31,10 +32,12 @@ function emojiToggle(reaction) {
}
} else {
$('#poll').addClass('hide')
$('#draft').addClass('hide')
$('#right-side').hide()
$('#right-side').css('width', '300px')
$('#emoji').addClass('hide')
$('#suggest').html('')
$('#draft').html('')
$('#left-side').css('width', '100%')
var width = localStorage.getItem('postbox-width')
if (width) {
@@ -336,6 +339,8 @@ function emojiInsert(code, del) {
}
sentence = before + word + after
textarea.value = sentence
textarea.focus()
textarea.setSelectionRange(pos + word.length, pos + word.length)
}
//改行挿入
function brInsert(code) {

View File

@@ -133,25 +133,34 @@ async function media(b64, type, no, stamped) {
//v2/media
try {
var id = await v2MediaUpload(domain, at, fd)
var mediav = $('#media').val()
var regExp = new RegExp('tmp_' + r, 'g')
mediav = mediav.replace(regExp, id)
$('#media').val(mediav)
var html = `<img src="../../img/picture.svg" class="preview-img pointer unknown" data-media="${id}" oncontextmenu="deleteImage('${id}')" onclick="altImage('${acct_id}','${id}')" title="${lang.lang_postimg_delete}">`
$('#preview').append(html)
todc()
if (localStorage.getItem('nsfw_' + acct_id)) {
$('#nsfw').addClass('yellow-text')
$('#nsfw').html('visibility')
$('#nsfw').addClass('nsfw-avail')
}
$('.toot-btn-group').prop('disabled', false)
$('select').formSelect()
$('#mec').text(lang.lang_there)
M.toast({ html: '<span>' + lang.lang_postimg_sync + '</span><button class="btn-flat toast-action" onclick="syncDetail()">Click</button>', displayLength: 3000 })
$('#imgup').text('')
$('#imgsel').show()
localStorage.removeItem('image')
if(!id) {
var start = 'https://' + domain + '/api/v1/media'
httpreq.open('POST', start, true)
httpreq.upload.addEventListener('progress', progshow, false)
httpreq.responseType = 'json'
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.send(fd)
} else {
var mediav = $('#media').val()
var regExp = new RegExp('tmp_' + r, 'g')
mediav = mediav.replace(regExp, id)
$('#media').val(mediav)
var html = `<img src="../../img/picture.svg" class="preview-img pointer unknown" data-media="${id}" oncontextmenu="deleteImage('${id}')" onclick="altImage('${acct_id}','${id}')" title="${lang.lang_postimg_delete}">`
$('#preview').append(html)
todc()
if (localStorage.getItem('nsfw_' + acct_id)) {
$('#nsfw').addClass('yellow-text')
$('#nsfw').html('visibility')
$('#nsfw').addClass('nsfw-avail')
}
$('.toot-btn-group').prop('disabled', false)
$('select').formSelect()
$('#mec').text(lang.lang_there)
M.toast({ html: '<span>' + lang.lang_postimg_sync + '</span><button class="btn-flat toast-action" onclick="syncDetail()">Click</button>', displayLength: 3000 })
$('#imgup').text('')
$('#imgsel').show()
localStorage.removeItem('image')
}
} catch {
var start = 'https://' + domain + '/api/v1/media'
httpreq.open('POST', start, true)
@@ -183,6 +192,10 @@ async function media(b64, type, no, stamped) {
M.toast({ html: lang.lang_postimg_failupload, displayLength: 5000 })
return false
}
$('#imgup').text('')
$('.toot-btn-group').prop('disabled', false)
$('select').formSelect()
$('#imgsel').show()
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']}" oncontextmenu="deleteImage('${json['id']}')" onclick="altImage('${acct_id}','${json['id']}')" title="${lang.lang_postimg_delete}">`

View File

@@ -9,7 +9,16 @@ function sec() {
}
post(null, mode)
}
function post(mode, postvis) {
function post(mode, postvis, dry) {
if(!navigator.onLine && !dry) {
draftToggle(true)
addToDraft()
M.toast({
html: lang.lang_post_offline,
displayLength: 3000
})
return false
}
if ($('#toot-post-btn').prop('disabled')) {
return false
}
@@ -122,12 +131,16 @@ function post(mode, postvis) {
console.log('This toot will be posted at:' + scheduled)
schedule()
toot.scheduled_at = scheduled
if ($('#sch-box').hasClass('expire')) {
toot.scheduled_at = null
toot.expires_at = scheduled
}
} else {
var scheduled = ''
}
if (!$('#poll').hasClass('hide')) {
var options = []
$('.mastodon-choice').map(function() {
$('.mastodon-choice').map(function () {
var choice = $(this).val()
if (choice != '') {
options.push(choice)
@@ -155,6 +168,13 @@ function post(mode, postvis) {
}
}
console.table(toot)
if (dry) {
$('#ideKey').val('')
$('.toot-btn-group').prop('disabled', false)
todc()
toot['TheDeskAcctId'] = acct_id
return toot
}
var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
@@ -162,11 +182,11 @@ function post(mode, postvis) {
httpreq.setRequestHeader('Idempotency-Key', ideKey)
httpreq.responseType = 'json'
httpreq.send(JSON.stringify(toot))
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
if(media && this.status == 422) {
if (media && this.status == 422) {
$('#ideKey').val('')
$('.toot-btn-group').prop('disabled', false)
alertProcessUnfinished()
@@ -195,6 +215,20 @@ function post(mode, postvis) {
}
}
}
function expPostMode() {
$('#sch-box').toggleClass('expire')
if ($('#sch-box').hasClass('expire')) {
Swal.fire({
type: 'info',
title: 'Expiring toot On'
})
} else {
Swal.fire({
type: 'info',
title: 'Expireing toot Off'
})
}
}
function misskeyPost() {
var str = $('#textarea').val()
var acct_id = $('#post-acct-sel').val()
@@ -252,7 +286,7 @@ function misskeyPost() {
httpreq.setRequestHeader('Content-Type', 'application/json')
httpreq.responseType = 'json'
httpreq.send(JSON.stringify(toot))
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if (str.indexOf(localStorage.getItem('stable')) == -1) {
localStorage.removeItem('stable')
@@ -321,7 +355,7 @@ function clear() {
$('#mins_poll').val(6)
$('#poll').addClass('hide')
$('#pollsta').text(lang.lang_no)
$('.mastodon-choice').map(function() {
$('.mastodon-choice').map(function () {
$(this).val('')
})
localStorage.removeItem('image')

View File

@@ -1,14 +1,14 @@
/*保護系*/
//画像保護
function nsfw() {
if ($('#nsfw').hasClass('nsfw-avail')) {
$('#nsfw').removeClass('yellow-text')
$('#nsfw').html('visibility_off')
$('#nsfw').removeClass('nsfw-avail')
} else {
function nsfw(force) {
if (force || !$('#nsfw').hasClass('nsfw-avail')) {
$('#nsfw').addClass('yellow-text')
$('#nsfw').html('visibility')
$('#nsfw').addClass('nsfw-avail')
} else {
$('#nsfw').removeClass('yellow-text')
$('#nsfw').html('visibility_off')
$('#nsfw').removeClass('nsfw-avail')
}
}
@@ -79,13 +79,8 @@ function loadVis() {
loadVis()
//コンテントワーニング
function cw() {
if ($('#cw').hasClass('cw-avail')) {
$('#cw-text').val()
$('#cw-text').hide()
$('#cw').removeClass('yellow-text')
$('#cw').removeClass('cw-avail')
} else {
function cw(force) {
if (force || !$('#cw').hasClass('cw-avail')) {
$('#cw-text').show()
$('#cw').addClass('yellow-text')
$('#cw').addClass('cw-avail')
@@ -93,6 +88,11 @@ function cw() {
if (cwt) {
$('#cw-text').val(cwt)
}
} else {
$('#cw-text').val()
$('#cw-text').hide()
$('#cw').removeClass('yellow-text')
$('#cw').removeClass('cw-avail')
}
}
//TLでコンテントワーニングを表示トグル
@@ -100,8 +100,8 @@ function cw_show(e) {
$(e).parent().parent().find('.cw_hide').toggleClass('cw')
$(e).parent().find('.cw_long').toggleClass('hide')
}
$(function() {
$('#cw-text').on('change', function(event) {
$(function () {
$('#cw-text').on('change', function (event) {
var acct_id = $('#post-acct-sel').val()
var domain = localStorage.getItem('domain_' + acct_id)
var cwlen = $('#cw-text').val().length
@@ -126,3 +126,79 @@ function schedule() {
$('#sch-box').addClass('sch-avail')
}
}
//下書き機能
function draftToggle(force) {
if ($('#draft').hasClass('hide') || force) {
$('#draft').removeClass('hide')
$('#right-side').show()
$('#right-side').css('width', '300px')
$('#left-side').css('width', 'calc(100% - 300px)')
var width = localStorage.getItem('postbox-width')
if (width) {
width = width.replace('px', '') * 1 + 300
} else {
width = 600
}
$('#post-box').css('width', width + 'px')
$('#suggest').html('')
$('#draft').html('')
draftDraw()
} else {
$('#poll').addClass('hide')
$('#draft').addClass('hide')
$('#right-side').hide()
$('#right-side').css('width', '300px')
$('#emoji').addClass('hide')
$('#suggest').html('')
$('#draft').html('')
$('#left-side').css('width', '100%')
var width = localStorage.getItem('postbox-width')
if (width) {
width = width.replace('px', '') * 1
} else {
width = 300
}
$('#post-box').css('width', width + 'px')
}
}
function draftDraw() {
var draft = localStorage.getItem('draft')
var html = `<button class="btn waves-effect green" style="width:100%; padding:0; margin-top:0;" onclick="addToDraft();">${lang.lang_secure_draft}</button>`
if (draft) {
var draftObj = JSON.parse(draft)
for (let i = 0; i < draftObj.length; i++) {
var toot = draftObj[i]
html = html + `<div class="tootInDraft">
<i class="waves-effect gray material-icons" onclick="useThisDraft(${i})" title="${lang.lang_secure_userThis}">reply</i>
<i class="waves-effect gray material-icons" onclick="deleteThisDraft(${i})" title="${lang.lang_secure_deleteThis}">cancel</i>
${escapeHTML(toot.status).replace(/\n/, '').substr(0, 10)}
</div>`
}
}
$('#draft').html(html)
}
function addToDraft() {
var json = post(null, null, true)
var draft = localStorage.getItem('draft')
var draftObj = []
if (draft) draftObj = JSON.parse(draft)
draftObj.push(json)
draft = JSON.stringify(draftObj)
localStorage.setItem('draft', draft)
draftDraw()
}
function useThisDraft(i) {
var draft = localStorage.getItem('draft')
var draftObj = JSON.parse(draft)
draftToPost(draftObj[i], draftObj[i]['TheDeskAcctId'], 0)
draftToggle()
}
function deleteThisDraft(i) {
var draft = localStorage.getItem('draft')
var draftObj = JSON.parse(draft)
draftObj.splice(i, 1)
draft = JSON.stringify(draftObj)
localStorage.setItem('draft', draft)
draftDraw()
}

View File

@@ -15,7 +15,7 @@ function fav(id, acct_id, remote) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -75,7 +75,7 @@ function rt(id, acct_id, remote, vis) {
} else {
httpreq.send()
}
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -131,7 +131,7 @@ function bkm(id, acct_id, tlid) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -160,8 +160,14 @@ function bkm(id, acct_id, tlid) {
//フォロー
async function follow(acct_id, resolve) {
if ($('#his-data').hasClass('locked')) {
locked = true
} else {
locked = false
}
if (!acct_id && acct_id != 'selector') {
var acct_id = $('#his-data').attr('use-acct')
} else if (acct_id == 'selector') {
var acct_id = $('#user-acct-sel').val()
}
@@ -172,6 +178,7 @@ async function follow(acct_id, resolve) {
var flag = 'follow'
var flagm = 'create'
}
var id = $('#his-data').attr('user-id')
if (resolve == 'selector') {
var fullacct = $('#his-acct').attr('fullname')
@@ -193,7 +200,7 @@ async function follow(acct_id, resolve) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send(JSON.stringify(ent))
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -205,7 +212,11 @@ async function follow(acct_id, resolve) {
$('#his-follow-btn-text').text(lang.lang_status_follow)
} else {
$('#his-data').addClass('following')
$('#his-follow-btn-text').text(lang.lang_status_unfollow)
if (locked) {
$('#his-follow-btn-text').text(lang.lang_status_requesting)
} else {
$('#his-follow-btn-text').text(lang.lang_status_unfollow)
}
}
}
}
@@ -267,7 +278,7 @@ function block(acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if (this.status !== 200) {
setLog(start, this.status, this.response)
@@ -327,7 +338,7 @@ function muteDo(acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send(rq)
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if (this.status !== 200) {
setLog(start, this.status, this.response)
@@ -367,7 +378,7 @@ function del(id, acct_id) {
httpreq.responseType = 'json'
httpreq.send()
}
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if (this.status !== 200) {
setLog(start, this.status, this.response)
@@ -409,69 +420,72 @@ function redraft(id, acct_id) {
httpreq.responseType = 'json'
httpreq.send()
}
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if (this.status !== 200) {
setLog(start, this.status, this.response)
}
var json = httpreq.response
$('#post-acct-sel').prop('disabled', true)
$('#post-acct-sel').val(acct_id)
$('select').formSelect()
mdCheck()
var medias = $('[toot-id=' + id + ']').attr('data-medias')
var mediack = json.media_attachments[0]
//メディアがあれば
var media_ids = []
if (mediack) {
for (var i = 0; i <= 4; i++) {
if (json.media_attachments[i]) {
media_ids.push(json.media_attachments[i].id)
$('#preview').append(
'<img src="' +
json.media_attachments[i].preview_url +
'" style="width:50px; max-height:100px;">'
)
} else {
break
}
}
}
var vismode = $('[toot-id=' + id + '] .vis-data').attr('data-vis')
vis(vismode)
var medias = media_ids.join(',');
$('#media').val(medias)
localStorage.setItem('nohide', true)
show()
if (json.text) {
var html = json.text
} else {
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)
}
$('#textarea').val(html)
if (json.spoiler_text) {
cw()
$('#cw-text').val(json.spoiler_text)
}
if (json.sensitive) {
$('#nsfw').addClass('yellow-text')
$('#nsfw').html('visibility')
$('#nsfw').addClass('nsfw-avail')
}
if (json.in_reply_to_id) {
$('#reply').val(json.in_reply_to_id)
}
draftToPost(json, acct_id, id)
}
}
}
})
}
function draftToPost(json, acct_id, id) {
$('#post-acct-sel').prop('disabled', true)
$('#post-acct-sel').val(acct_id)
$('select').formSelect()
mdCheck()
mediack = null
if(json.media_attachments) mediack = json.media_attachments[0]
//メディアがあれば
var media_ids = []
if (mediack) {
for (var i = 0; i <= 4; i++) {
if (json.media_attachments[i]) {
media_ids.push(json.media_attachments[i].id)
$('#preview').append(
'<img src="' +
json.media_attachments[i].preview_url +
'" style="width:50px; max-height:100px;">'
)
} else {
break
}
}
}
var vismode = json.visibility
vis(vismode)
var medias = media_ids.join(',')
$('#media').val(medias)
localStorage.setItem('nohide', true)
show()
if (json.text) {
var html = json.text
} else {
var html = json.status
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)
}
$('#textarea').val(html)
if (json.spoiler_text) {
cw(true)
$('#cw-text').val(json.spoiler_text)
}
if (json.sensitive) {
$('#nsfw').addClass('yellow-text')
$('#nsfw').html('visibility')
$('#nsfw').addClass('nsfw-avail')
}
if (json.in_reply_to_id) {
$('#reply').val(json.in_reply_to_id)
}
}
//ピン留め
function pin(id, acct_id) {
if ($(`.cvo[unique-id=${id}]`).hasClass('pined')) {
@@ -488,7 +502,7 @@ function pin(id, acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -519,7 +533,7 @@ function request(id, flag, acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -545,7 +559,7 @@ function domainblock(add, flag, acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -572,7 +586,7 @@ function empUser() {
M.toast({ html: id + lang.lang_status_emphas, displayLength: 4000 })
} else {
var can
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var usT = obj[key]
if (usT != id && !can) {
can = false
@@ -604,7 +618,7 @@ function pinUser() {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -640,20 +654,20 @@ function staEx(mode) {
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (json.statuses) {
if (json.statuses[0]) {
var id = json.statuses[0].id
@@ -669,35 +683,9 @@ function staEx(mode) {
})
return
}
function toggleAction(elem, height) {
var cont = elem.parents('.cvo').find('.contextMenu')
if (cont.hasClass('hide')) {
$('#contextWrap').removeClass('hide')
var left = elem.offset().left + 60
var top = elem.offset().top - height
if (top < 75) {
top = elem.offset().top + 45
cont.removeClass('bottom')
cont.addClass('top')
} else {
cont.removeClass('top')
cont.addClass('bottom')
}
if (elem.parents('.cvo').attr('id') == 'toot-this') {
console.log($('#toot-this').offset().top, elem.offset().top)
left = $('#toot-this').offset().left + elem.offset().left + 10
top = $('#toot-this').offset().top - $('#toot-this').height() - height + 25
}
cont.css('top', top + 'px')
cont.css('right', `calc(100vw - ${left}px)`)
cont.removeClass('hide')
elem
.parents('.cvo')
.find('.act-icon')
.text('expand_less')
} else {
$('#contextWrap').addClass('hide')
$('.contextMenu').addClass('hide')
$('.act-icon').text('expand_more')
}
function toggleAction(elm) {
console.log(elm)
const instance = M.Dropdown.init(elm)
console.log(instance.isOpen)
instance.open()
}

View File

@@ -18,7 +18,7 @@ input.addEventListener(
var new_val = input.value
if (new_val == '') {
$('#suggest').html('')
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
$('#right-side').hide()
$('#right-side').css('width', '300px')
$('#left-side').css('width', '100%')
@@ -41,7 +41,7 @@ input.addEventListener(
var q = acct[1]
} else {
$('#suggest').html('')
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
$('#right-side').hide()
$('#right-side').css('width', '300px')
$('#left-side').css('width', '100%')
@@ -138,6 +138,7 @@ input.addEventListener(
$('#post-box').css('width', width + 'px')
$('#poll').addClass('hide')
$('#emoji').addClass('hide')
$('#draft').addClass('hide')
}
} else if (json.accounts[0] && acct[1]) {
var accts = ''
@@ -165,8 +166,9 @@ input.addEventListener(
$('#suggest').html(accts)
$('#poll').addClass('hide')
$('#emoji').addClass('hide')
$('#draft').addClass('hide')
} else {
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
$('#right-side').hide()
$('#right-side').css('width', '300px')
$('#left-side').css('width', '100%')
@@ -226,7 +228,7 @@ function tagInsert(code, del) {
}
sentence = before + word + after
textarea.value = sentence
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
$('#right-side').hide()
$('#right-side').css('width', '300px')
$('#left-side').css('width', '50%')

View File

@@ -1,5 +1,5 @@
/*リプライ*/
function re(id, ats_cm, acct_id, mode) {
function re(id, ats_cm, acct_id, mode, cwTxt) {
clear()
var ats = ats_cm.split(',')
localStorage.setItem('nohide', true)
@@ -25,13 +25,18 @@ function re(id, ats_cm, acct_id, mode) {
}
$('#acct-sel-prof').attr('src', profimg)
vis(mode)
if(localStorage.getItem('cw-continue') == 'yes') {
cw(true)
$('#cw-text').val(cwTxt)
}
}
function reEx(id) {
$('#tootmodal').modal('close')
var at = $('#tootmodal').attr('data-user')
var acct_id = $('#status-acct-sel').val()
var mode = $('#tootmodal .vis-data').attr('data-vis')
re(id, at, acct_id, mode)
var cwTxt = $('#cw-text').val()
re(id, at, acct_id, mode, cwTxt)
}
//引用
function qt(id, acct_id, at, url) {

View File

@@ -334,7 +334,19 @@ function cardCheck(tlid) {
}
}
function mov(id, tlid, type) {
function mov(id, tlid, type, rand, target) {
const dropdownTrigger = `dropdown_${rand}`
let elm = document.querySelector(`#timeline_${tlid} #${dropdownTrigger}`)
if(tlid == 'notf') {
const timeline = $(target).parents('.notf-indv-box').attr('id')
elm = document.querySelector(`#${timeline} #${dropdownTrigger}`)
console.log(`#${timeline} #${dropdownTrigger}`)
}
const instance = M.Dropdown.getInstance(elm)
if(instance) {
if(instance.isOpen) return false
}
var click = false
if (tlid == 'notf') {
var tlide = '[data-notf=' + acct_id + ']'
@@ -361,9 +373,9 @@ function mov(id, tlid, type) {
}
if (mouseover == 'hide') {
if (click) {
$(tlide + ' [toot-id=' + id + ']').toggleClass('hide-actions')
$(tlide + ' [unique-id=' + id + ']').toggleClass('hide-actions')
} else {
$(tlide + ' [toot-id=' + id + ']').removeClass('hide-actions')
$(tlide + ' [unique-id=' + id + ']').removeClass('hide-actions')
}
//$(tlide + " [toot-id=" + id + "] .area-vis").toggleClass("hide")

View File

@@ -1,95 +1,98 @@
//日付パーサー
function date(str, datetype) {
if (datetype == "relative") {
return '<time class="timeago" datetime="' + str + '"></time>';
function date(str, datetype, lastStatus) {
if (lastStatus) {
var date = new Date(str)
return date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate()
} else if (datetype == "relative") {
return '<time class="timeago" datetime="' + str + '"></time>'
} else {
var date = new Date(str);
var date = new Date(str)
if (datetype == "unix") {
var unixm = date.getTime();
return Math.floor(unixm / 1000);
var unixm = date.getTime()
return Math.floor(unixm / 1000)
}
var now = new Date();
var month = date.getMonth() + 1;
var now = new Date()
var month = date.getMonth() + 1
if (date.getMinutes() < 10) {
var min = "0" + date.getMinutes();
var min = "0" + date.getMinutes()
} else {
var min = date.getMinutes();
var min = date.getMinutes()
}
var sec = null;
var sec = null
if (date.getSeconds() < 10) {
sec = "0" + date.getSeconds();
sec = "0" + date.getSeconds()
} else {
sec = date.getSeconds();
sec = date.getSeconds()
}
if (datetype == "full") {
var ret = date.getFullYear() + "/" + month + "/" + date.getDate() + "/ " +
date.getHours() + ":" + min + ":" + sec;
date.getHours() + ":" + min + ":" + sec
}
if (date.getFullYear() == now.getFullYear()) {
if (date.getMonth() == now.getMonth()) {
if (date.getDate() == now.getDate()) {
if (datetype == "medium") {
var ret = '<time class="timeago" datetime="' + str + '"></time>';
var ret = '<time class="timeago" datetime="' + str + '"></time>'
} else {
var ret = date.getHours() + ":" + min + ":" + sec;
var ret = date.getHours() + ":" + min + ":" + sec
}
} else {
var ret = month + "/" + date.getDate() + " " + date.getHours() + ":" +
min + ":" + sec;
min + ":" + sec
}
} else {
var ret = month + "/" + date.getDate() + " " + date.getHours() + ":" + min +
":" + sec;
":" + sec
}
} else {
var ret = date.getFullYear() + "/" + month + "/" + date.getDate() + " " +
date.getHours() + ":" + min + ":" + sec;
date.getHours() + ":" + min + ":" + sec
}
if (datetype == "double") {
return '<time class="timeago" datetime="' + str + '"></time>/' + ret;
return '<time class="timeago" datetime="' + str + '"></time>/' + ret
} else {
return ret;
return ret
}
}
}
//特殊フォーマット(インスタンス情報で利用)
function crat(str) {
var date = new Date(str);
var mnt = null;
var date = new Date(str)
var mnt = null
if (date.getMonth() < 9) {
mnt = "0" + (date.getMonth() + 1);
mnt = "0" + (date.getMonth() + 1)
} else {
mnt = date.getMonth() + 1;
mnt = date.getMonth() + 1
}
if (date.getDate() < 10) {
var dat = "0" + date.getDate();
var dat = "0" + date.getDate()
} else {
var dat = date.getDate();
var dat = date.getDate()
}
if (date.getHours() < 10) {
var hrs = "0" + date.getHours();
var hrs = "0" + date.getHours()
} else {
var hrs = date.getHours();
var hrs = date.getHours()
}
if (date.getMinutes() < 10) {
var mns = "0" + date.getMinutes();
var mns = "0" + date.getMinutes()
} else {
var mns = date.getMinutes();
var mns = date.getMinutes()
}
if (date.getSeconds() < 10) {
var sec = "0" + date.getSeconds();
var sec = "0" + date.getSeconds()
} else {
var sec = date.getSeconds();
var sec = date.getSeconds()
}
format_str = 'YYYY-MM-DD hh:mm:ss';
format_str = format_str.replace(/YYYY/g, date.getFullYear());
format_str = format_str.replace(/MM/g, mnt);
format_str = format_str.replace(/DD/g, dat);
format_str = format_str.replace(/hh/g, hrs);
format_str = format_str.replace(/mm/g, mns);
format_str = format_str.replace(/ss/g, sec);
format_str = 'YYYY-MM-DD hh:mm:ss'
format_str = format_str.replace(/YYYY/g, date.getFullYear())
format_str = format_str.replace(/MM/g, mnt)
format_str = format_str.replace(/DD/g, dat)
format_str = format_str.replace(/hh/g, hrs)
format_str = format_str.replace(/mm/g, mns)
format_str = format_str.replace(/ss/g, sec)
return format_str;
return format_str
}

View File

@@ -1,49 +1,49 @@
//ディレクトリ
//ディレクトリトグル
function dirMenu() {
$("#dir-contents").html("");
directory();
$("#left-menu div").removeClass("active");
$("#dirMenu").addClass("active");
$(".menu-content").addClass("hide");
$("#dir-box").removeClass("hide");
$("#dir-contents").html("")
directory()
$("#left-menu a").removeClass("active")
$("#dirMenu").addClass("active")
$(".menu-content").addClass("hide")
$("#dir-box").removeClass("hide")
}
function dirselCk() {
var acct = $("#dir-acct-sel").val();
var acct = $("#dir-acct-sel").val()
if (acct == "noauth") {
$("#dirNoAuth").removeClass("hide");
$("#dirNoAuth").removeClass("hide")
} else {
$("#dirNoAuth").addClass("hide");
directory();
$("#dirNoAuth").addClass("hide")
directory()
}
}
function directory(isMore) {
var order = $("[name=sort]:checked").val();
var order = $("[name=sort]:checked").val()
if (!order) {
order = "active";
order = "active"
}
var local_only = $("#local_only:checked").val();
var local_only = $("#local_only:checked").val()
if (local_only) {
local_only = "true";
local_only = "true"
} else {
local_only = "false";
local_only = "false"
}
var acct_id = $("#dir-acct-sel").val();
var acct_id = $("#dir-acct-sel").val()
if (acct_id == "noauth") {
var domain = $("#dirNoAuth-url").val();
var at = "";
var domain = $("#dirNoAuth-url").val()
var at = ""
} else {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var domain = localStorage.getItem("domain_" + acct_id)
var at = localStorage.getItem("acct_" + acct_id + "_at")
}
if (isMore) {
var addOffset = $("#dir-contents .cvo").length;
var addOffset = $("#dir-contents .cvo").length
} else {
var addOffset = 0;
$("#dir-contents").html("");
var addOffset = 0
$("#dir-contents").html("")
}
var start = "https://" + domain + "/api/v1/directory?order=" + order + "&local=" + local_only + "&offset=" + addOffset;
console.log(start);
var start = "https://" + domain + "/api/v1/directory?order=" + order + "&local=" + local_only + "&offset=" + addOffset
console.log(start)
fetch(start, {
method: "GET",
headers: {
@@ -54,23 +54,23 @@ function directory(isMore) {
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text);
});
setLog(response.url, response.status, text)
})
}
return response.json();
return response.json()
})
.catch(function(error) {
setLog(start, "JSON", error);
console.error(error);
setLog(start, "JSON", error)
console.error(error)
})
.then(function(json) {
if (json) {
$("#moreDir").removeClass("disabled");
var html = userparse(json, null, acct_id, "dir", null);
$("#dir-contents").append(html);
jQuery("time.timeago").timeago();
$("#moreDir").removeClass("disabled")
var html = userparse(json, null, acct_id, "dir", null)
$("#dir-contents").append(html)
jQuery("time.timeago").timeago()
} else {
$("#moreDir").addClass("disabled");
$("#moreDir").addClass("disabled")
}
});
})
}

View File

@@ -1,8 +1,8 @@
//DM(Conv) TL
function dm(acct_id, tlid, type, delc, voice) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/conversations";
var domain = localStorage.getItem("domain_" + acct_id)
var at = localStorage.getItem("acct_" + acct_id + "_at")
var start = "https://" + domain + "/api/v1/conversations"
fetch(start, {
method: "GET",
headers: {
@@ -13,38 +13,38 @@ function dm(acct_id, tlid, type, delc, voice) {
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text);
});
setLog(response.url, response.status, text)
})
}
return response.json();
return response.json()
})
.catch(function(error) {
todo(error);
setLog(start, "JSON", error);
console.error(error);
todo(error)
setLog(start, "JSON", error)
console.error(error)
})
.then(function(json) {
var templete = '<div id="convList' + tlid + '">' + dmListParse(json, type, acct_id, tlid, "", mute) + "</div>";
localStorage.setItem("lastobj_" + tlid, json[0].id);
$("#timeline_" + tlid).html(templete);
additional(acct_id, tlid);
jQuery("time.timeago").timeago();
todc();
var templete = '<div id="convList' + tlid + '">' + dmListParse(json, type, acct_id, tlid, "", mute) + "</div>"
localStorage.setItem("lastobj_" + tlid, json[0].id)
$("#timeline_" + tlid).html(templete)
additional(acct_id, tlid)
jQuery("time.timeago").timeago()
todc()
//reload(type, '', acct_id, tlid, data, mute, delc,voice);
$(window).scrollTop(0);
});
$(window).scrollTop(0)
})
}
function dmmore(tlid) {
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
var acct_id = obj[tlid].domain;
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var multi = localStorage.getItem("column")
var obj = JSON.parse(multi)
var acct_id = obj[tlid].domain
var domain = localStorage.getItem("domain_" + acct_id)
var at = localStorage.getItem("acct_" + acct_id + "_at")
var sid = $("#timeline_" + tlid + " .cvo")
.last()
.attr("unique-id");
var start = "https://" + domain + "/api/v1/conversations?max_id=" + sid;
var type = "dm";
.attr("unique-id")
var start = "https://" + domain + "/api/v1/conversations?max_id=" + sid
var type = "dm"
fetch(start, {
method: "GET",
headers: {
@@ -55,444 +55,444 @@ function dmmore(tlid) {
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text);
});
setLog(response.url, response.status, text)
})
}
return response.json();
return response.json()
})
.catch(function(error) {
todo(error);
setLog(start, "JSON", error);
console.error(error);
todo(error)
setLog(start, "JSON", error)
console.error(error)
})
.then(function(json) {
var templete = '<div id="convList' + tlid + '">' + dmListParse(json, type, acct_id, tlid, "", mute) + "</div>";
$("#timeline_" + tlid).append(templete);
additional(acct_id, tlid);
jQuery("time.timeago").timeago();
moreloading = false;
});
var templete = '<div id="convList' + tlid + '">' + dmListParse(json, type, acct_id, tlid, "", mute) + "</div>"
$("#timeline_" + tlid).append(templete)
additional(acct_id, tlid)
jQuery("time.timeago").timeago()
moreloading = false
})
}
//DMオブジェクトパーサー(トゥート)
function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var templete = "";
var templete = ""
if (obj[0]) {
localStorage.setItem("lastunix_" + tlid, date(obj[0].created_at, "unix"));
localStorage.setItem("lastunix_" + tlid, date(obj[0].created_at, "unix"))
}
var actb = localStorage.getItem("action_btns");
var actb = "re,rt,fav,qt,del,pin,red";
var actb = localStorage.getItem("action_btns")
var actb = "re,rt,fav,qt,del,pin,red"
if (actb) {
var actb = actb.split(",");
var disp = {};
var actb = actb.split(",")
var disp = {}
for (var k = 0; k < actb.length; k++) {
if (k < 4) {
var tp = "type-a";
var tp = "type-a"
} else {
var tp = "type-b";
var tp = "type-b"
}
disp[actb[k]] = tp;
disp[actb[k]] = tp
}
}
var datetype = localStorage.getItem("datetype");
var nsfwtype = localStorage.getItem("nsfw");
var sent = localStorage.getItem("sentence");
var ltr = localStorage.getItem("letters");
var gif = localStorage.getItem("gif");
var imh = localStorage.getItem("img-height");
var datetype = localStorage.getItem("datetype")
var nsfwtype = localStorage.getItem("nsfw")
var sent = localStorage.getItem("sentence")
var ltr = localStorage.getItem("letters")
var gif = localStorage.getItem("gif")
var imh = localStorage.getItem("img-height")
//独自ロケール
var locale = localStorage.getItem("locale");
var locale = localStorage.getItem("locale")
if (locale == "yes") {
var locale = false;
var locale = false
}
//ネイティブ通知
var native = localStorage.getItem("nativenotf");
var native = localStorage.getItem("nativenotf")
if (!native) {
native = "yes";
native = "yes"
}
//クライアント強調
var emp = localStorage.getItem("client_emp");
var emp = localStorage.getItem("client_emp")
if (emp) {
var emp = JSON.parse(emp);
var emp = JSON.parse(emp)
}
//クライアントミュート
var mute = localStorage.getItem("client_mute");
var mute = localStorage.getItem("client_mute")
if (mute) {
var mute = JSON.parse(mute);
var mute = JSON.parse(mute)
}
//ユーザー強調
var useremp = localStorage.getItem("user_emp");
var useremp = localStorage.getItem("user_emp")
if (useremp) {
var useremp = JSON.parse(useremp);
var useremp = JSON.parse(useremp)
}
//ワード強調
var wordemp = localStorage.getItem("word_emp");
var wordemp = localStorage.getItem("word_emp")
if (wordemp) {
var wordemp = JSON.parse(wordemp);
var wordemp = JSON.parse(wordemp)
}
//ワードミュート
var wordmute = localStorage.getItem("word_mute");
var wordmute = localStorage.getItem("word_mute")
if (wordmute) {
var wordmute = JSON.parse(wordmute);
wordmute = wordmute.concat(mutefilter);
var wordmute = JSON.parse(wordmute)
wordmute = wordmute.concat(mutefilter)
} else {
wordmute = mutefilter;
wordmute = mutefilter
}
//Ticker
var tickerck = localStorage.getItem("ticker_ok");
var tickerck = localStorage.getItem("ticker_ok")
if (tickerck) {
var ticker = true;
var ticker = true
} else {
var ticker = false;
var ticker = false
}
//Cards
var card = localStorage.getItem("card_" + tlid);
var card = localStorage.getItem("card_" + tlid)
if (!sent) {
var sent = 500;
var sent = 500
}
if (!ltr) {
var ltr = 500;
var ltr = 500
}
if (!nsfwtype || nsfwtype == "yes") {
var nsfw = "ok";
var nsfw = "ok"
} else {
var nsfw;
var nsfw
}
var cwtype = localStorage.getItem("cw");
var cwtype = localStorage.getItem("cw")
if (!cwtype || cwtype == "yes") {
var cw = "ok";
var cw = "ok"
} else {
var cw;
var cw
}
if (!datetype) {
datetype = "absolute";
datetype = "absolute"
}
if (!gif) {
var gif = "yes";
var gif = "yes"
}
if (!imh) {
var imh = "200";
var imh = "200"
}
if (!emp) {
var emp = [];
var emp = []
}
if (!mute) {
var mute = [];
var mute = []
}
if (!useremp) {
var useremp = [];
var useremp = []
}
if (!wordemp) {
var wordemp = [];
var wordemp = []
}
if (!wordmute) {
var wordmute = [];
var wordmute = []
}
//via通知
var viashow = localStorage.getItem("viashow");
var viashow = localStorage.getItem("viashow")
if (!viashow) {
viashow = "via-hide";
viashow = "via-hide"
}
if (viashow == "hide") {
viashow = "via-hide";
viashow = "via-hide"
}
//認証なしTL
if (mix == "noauth") {
var noauth = "hide";
var antinoauth = "";
var noauth = "hide"
var antinoauth = ""
} else {
var noauth = "";
var antinoauth = "hide";
var noauth = ""
var antinoauth = "hide"
}
//マウスオーバーのみ
var mouseover = localStorage.getItem("mouseover");
var mouseover = localStorage.getItem("mouseover")
if (!mouseover) {
mouseover = "";
mouseover = ""
} else if (mouseover == "yes" || mouseover == "click") {
mouseover = "hide";
mouseover = "hide"
} else if (mouseover == "no") {
mouseover = "";
mouseover = ""
}
var local = [];
var times = [];
var local = []
var times = []
Object.keys(obj).forEach(function(key) {
var conv_id = obj[key].id;
var toot = obj[key].last_status;
var dis_name = escapeHTML(toot.account.display_name);
var conv_id = obj[key].id
var toot = obj[key].last_status
var dis_name = escapeHTML(toot.account.display_name)
if (toot.account.emojis) {
var actemojick = toot.account.emojis[0];
var actemojick = toot.account.emojis[0]
} else {
var actemojick = false;
var actemojick = false
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.account.emojis).forEach(function(key5) {
var emoji = toot.account.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img 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);
});
var emoji = toot.account.emojis[key5]
var shortcode = emoji.shortcode
var emoji_url = '<img 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)
})
}
var noticeavatar = "";
var if_notf = "";
var uniqueid = toot.id;
var notice = "";
var boostback = "";
var noticeavatar = ""
var if_notf = ""
var uniqueid = toot.id
var notice = ""
var boostback = ""
//ユーザー強調
if (toot.account.username != toot.account.acct) {
var fullname = toot.account.acct;
var fullname = toot.account.acct
} else {
var domain = localStorage.getItem("domain_" + acct_id);
var fullname = toot.account.acct + "@" + domain;
var domain = localStorage.getItem("domain_" + acct_id)
var fullname = toot.account.acct + "@" + domain
}
if (useremp) {
Object.keys(useremp).forEach(function(key10) {
var user = useremp[key10];
var user = useremp[key10]
if (user == fullname) {
boostback = "emphasized";
boostback = "emphasized"
}
});
})
}
var id = toot.id;
var home = "";
var id = toot.id
var home = ""
if (toot.account.locked) {
var locked = ' <i class="fas fa-lock red-text"></i>';
var locked = ' <i class="fas fa-lock red-text"></i>'
} else {
var locked = "";
var locked = ""
}
if (!toot.application) {
var via = "";
viashow = "hide";
var via = ""
viashow = "hide"
} else {
var via = escapeHTML(toot.application.name);
var via = escapeHTML(toot.application.name)
//強調チェック
Object.keys(emp).forEach(function(key6) {
var cli = emp[key6];
var cli = emp[key6]
if (cli == via) {
boostback = "emphasized";
boostback = "emphasized"
}
});
})
//ミュートチェック
Object.keys(mute).forEach(function(key7) {
var cli = mute[key7];
var cli = mute[key7]
if (cli == via) {
boostback = "hide";
boostback = "hide"
}
});
})
}
if (mix == "pinned") {
boostback = "emphasized";
boostback = "emphasized"
}
if (toot.spoiler_text && cw) {
var content = toot.content;
var spoil = escapeHTML(toot.spoiler_text);
var spoiler = "cw cw_hide_" + toot.id;
var api_spoil = "gray";
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id + '\')" class="nex parsed">' + lang.lang_parse_cwshow + "</a><br>";
var content = toot.content
var spoil = escapeHTML(toot.spoiler_text)
var spoiler = "cw cw_hide_" + toot.id
var api_spoil = "gray"
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id + '\')" class="nex parsed">' + lang.lang_parse_cwshow + "</a><br>"
} else {
var ct1 = toot.content.split("</p>").length + toot.content.split("<br />").length - 2;
var ct2 = toot.content.split("</p>").length + toot.content.split("<br>").length - 2;
var ct1 = toot.content.split("</p>").length + toot.content.split("<br />").length - 2
var ct2 = toot.content.split("</p>").length + toot.content.split("<br>").length - 2
if (ct1 > ct2) {
var ct = ct1;
var ct = ct1
} else {
var ct = ct2;
var ct = ct2
}
if ((sent < ct && $.mb_strlen($.strip_tags(toot.content)) > 5) || ($.strip_tags(toot.content).length > ltr && $.mb_strlen($.strip_tags(toot.content)) > 5)) {
var content = '<span class="gray">' + lang.lang_parse_fulltext + "</span><br>" + toot.content;
var spoil = '<span class="cw-long-' + toot.id + '">' + $.mb_substr($.strip_tags(toot.content), 0, 100) + '</span><span class="gray">' + lang.lang_parse_autofold + "</span>";
var spoiler = "cw cw_hide_" + toot.id;
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id + '\')" class="nex parsed">' + lang.lang_parse_more + "</a><br>";
var content = '<span class="gray">' + lang.lang_parse_fulltext + "</span><br>" + toot.content
var spoil = '<span class="cw-long-' + toot.id + '">' + $.mb_substr($.strip_tags(toot.content), 0, 100) + '</span><span class="gray">' + lang.lang_parse_autofold + "</span>"
var spoiler = "cw cw_hide_" + toot.id
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id + '\')" class="nex parsed">' + lang.lang_parse_more + "</a><br>"
} else {
var content = toot.content;
var spoil = escapeHTML(toot.spoiler_text);
var spoiler = "";
var spoiler_show = "";
var content = toot.content
var spoil = escapeHTML(toot.spoiler_text)
var spoiler = ""
var spoiler_show = ""
}
}
var urls = $.strip_tags(content)
.replace(/\n/g, " ")
.match(/https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/);
.match(/https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/)
if (urls) {
var analyze = "<a onclick=\"additionalIndv('" + tlid + "'," + acct_id + ",'" + id + '\')" class="add-show pointer">' + lang.lang_parse_url + "</a><br>";
var analyze = "<a onclick=\"additionalIndv('" + tlid + "'," + acct_id + ",'" + id + '\')" class="add-show pointer">' + lang.lang_parse_url + "</a><br>"
} else {
var analyze = "";
var analyze = ""
}
var viewer = "";
var hasmedia = "";
var youtube = "";
var viewer = ""
var hasmedia = ""
var youtube = ""
if (toot.emojis) {
var emojick = toot.emojis[0];
var emojick = toot.emojis[0]
} else {
var emojick = false;
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 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);
});
var emoji = toot.emojis[key5]
var shortcode = emoji.shortcode
var emoji_url = '<img 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)
})
}
//ニコフレ絵文字
if (toot.profile_emojis) {
var nicoemojick = toot.profile_emojis[0];
var nicoemojick = toot.profile_emojis[0]
} else {
var nicoemojick = false;
var nicoemojick = false
}
//絵文字があれば
if (nicoemojick) {
Object.keys(toot.profile_emojis).forEach(function(keynico) {
var emoji = toot.profile_emojis[keynico];
var shortcode = emoji.shortcode;
var emoji_url = '<img 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);
});
var emoji = toot.profile_emojis[keynico]
var shortcode = emoji.shortcode
var emoji_url = '<img 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)
})
}
//デフォ絵文字
content = twemoji.parse(content);
content = twemoji.parse(content)
if (dis_name) {
dis_name = twemoji.parse(dis_name);
dis_name = twemoji.parse(dis_name)
}
if (spoil) {
spoil = twemoji.parse(spoil);
spoil = twemoji.parse(spoil)
}
var mediack = toot.media_attachments[0];
var mediack = toot.media_attachments[0]
//メディアがあれば
var media_ids = "";
var media_ids = ""
if (mediack) {
hasmedia = "hasmedia";
var cwdt = 100 / toot.media_attachments.length;
hasmedia = "hasmedia"
var cwdt = 100 / toot.media_attachments.length
Object.keys(toot.media_attachments).forEach(function(key2) {
var media = toot.media_attachments[key2];
var purl = media.preview_url;
media_ids = media_ids + media.id + ",";
var url = media.url;
var media = toot.media_attachments[key2]
var purl = media.preview_url
media_ids = media_ids + media.id + ","
var url = media.url
if (toot.sensitive && nsfw) {
var sense = "sensitive";
var sense = "sensitive"
} else {
var sense = "";
var sense = ""
}
viewer = viewer + "<a onclick=\"imgv('" + id + "','" + key2 + "','" + acct_id + '\')" id="' + id + "-image-" + key2 + '" data-url="' + url + '" data-type="' + media.type + '" class="img-parsed"><img src="' + purl + '" class="' + sense + ' toot-img pointer" style="width:' + cwdt + "%; height:" + imh + 'px;"></a></span>';
});
media_ids = media_ids.slice(0, -1);
viewer = viewer + "<a onclick=\"imgv('" + id + "','" + key2 + "','" + acct_id + '\')" id="' + id + "-image-" + key2 + '" data-url="' + url + '" data-type="' + media.type + '" class="img-parsed"><img src="' + purl + '" class="' + sense + ' toot-img pointer" style="width:' + cwdt + "%; height:" + imh + 'px;"></a></span>'
})
media_ids = media_ids.slice(0, -1)
} else {
viewer = "";
hasmedia = "nomedia";
viewer = ""
hasmedia = "nomedia"
}
var menck = toot.mentions[0];
var mentions = "";
var menck = toot.mentions[0]
var mentions = ""
//メンションであれば
if (menck) {
mentions = "";
mentions = ""
Object.keys(toot.mentions).forEach(function(key3) {
var mention = toot.mentions[key3];
mentions = mentions + "<a onclick=\"udg('" + mention.id + "'," + acct_id + ')" class="pointer">@' + mention.acct + "</a> ";
});
mentions = '<div style="float:right">' + mentions + "</div>";
var mention = toot.mentions[key3]
mentions = mentions + "<a onclick=\"udg('" + mention.id + "'," + acct_id + ')" class="pointer">@' + mention.acct + "</a> "
})
mentions = '<div style="float:right">' + mentions + "</div>"
}
var tagck = toot.tags[0];
var tags = "";
var tagck = toot.tags[0]
var tags = ""
//タグであれば
if (tagck) {
Object.keys(toot.tags).forEach(function(key4) {
var tag = toot.tags[key4];
tags = tags + '<span class="hide" data-tag="' + tag.name + '">#' + tag.name + ":<a onclick=\"tl('tag','" + tag.name + "'," + acct_id + ',\'add\')" class="pointer" title="' + lang.lang_parse_tagTL.replace("{{tag}}", "#" + tag.name) + '">TL</a> <a onclick="brInsert(\'#' + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", "#" + tag.name) + '">Toot</a> ' + "<a onclick=\"tagPin('" + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagpin.replace("{{tag}}", "#" + tag.name) + '">Pin</a></span> ';
});
tags = '<div style="float:right">' + tags + "</div>";
var tag = toot.tags[key4]
tags = tags + '<span class="hide" data-tag="' + tag.name + '">#' + tag.name + ":<a onclick=\"tl('tag','" + tag.name + "'," + acct_id + ',\'add\')" class="pointer" title="' + lang.lang_parse_tagTL.replace("{{tag}}", "#" + tag.name) + '">TL</a> <a onclick="brInsert(\'#' + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", "#" + tag.name) + '">Toot</a> ' + "<a onclick=\"tagPin('" + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagpin.replace("{{tag}}", "#" + tag.name) + '">Pin</a></span> '
})
tags = '<div style="float:right">' + tags + "</div>"
}
//アニメ再生
if (gif == "yes") {
var avatar = toot.account.avatar;
var avatar = toot.account.avatar
} else {
var avatar = toot.account.avatar_static;
var avatar = toot.account.avatar_static
}
//ワードミュート
if (wordmute) {
Object.keys(wordmute).forEach(function(key8) {
var worde = wordmute[key8];
var worde = wordmute[key8]
if (worde) {
if (worde.tag) {
var word = worde.tag;
var word = worde.tag
} else {
var word = worde;
var word = worde
}
var regExp = new RegExp(word, "g");
var regExp = new RegExp(word, "g")
if ($.strip_tags(content).match(regExp)) {
boostback = "hide by_filter";
boostback = "hide by_filter"
}
}
});
})
}
//ワード強調
if (wordemp) {
Object.keys(wordemp).forEach(function(key9) {
var word = wordemp[key9];
var word = wordemp[key9]
if (word) {
var word = word.tag;
var regExp = new RegExp(word, "g");
content = content.replace(regExp, '<span class="emp">' + escapeHTML(word) + "</span>");
var word = word.tag
var regExp = new RegExp(word, "g")
content = content.replace(regExp, '<span class="emp">' + escapeHTML(word) + "</span>")
}
});
})
}
//日本語じゃない
if (toot.language != "ja") {
var trans = '<div class="action pin"><a onclick="trans(\'' + toot.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 + '\')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_trans + '"><i class="material-icons">g_translate</i></a></div>'
} else {
var trans = "";
var trans = ""
}
if (toot.favourited) {
var if_fav = " yellow-text";
var fav_app = "faved";
var if_fav = " yellow-text"
var fav_app = "faved"
} else {
var if_fav = "";
var fav_app = "";
var if_fav = ""
var fav_app = ""
}
//Cards
if (!card && toot.card) {
var cards = toot.card;
var cards = toot.card
if (cards.provider_name == "Twitter") {
if (cards.image) {
var twiImg = '<br><img src="' + cards.image + '">';
var twiImg = '<br><img src="' + cards.image + '">'
} else {
var twiImg = "";
var twiImg = ""
}
analyze = '<blockquote class="twitter-tweet"><b>' + escapeHTML(cards.author_name) + "</b><br>" + escapeHTML(cards.description) + twiImg + "</blockquote>";
analyze = '<blockquote class="twitter-tweet"><b>' + escapeHTML(cards.author_name) + "</b><br>" + escapeHTML(cards.description) + twiImg + "</blockquote>"
}
if (cards.title) {
analyze = '<span class="gray">URL' + lang.lang_cards_check + ":<br>Title:" + escapeHTML(cards.title) + "<br>" + escapeHTML(cards.description) + "</span>";
analyze = '<span class="gray">URL' + lang.lang_cards_check + ":<br>Title:" + escapeHTML(cards.title) + "<br>" + escapeHTML(cards.description) + "</span>"
}
if (cards.html) {
analyze = cards.html + '<i class="material-icons" onclick="pip(' + id + ')" title="' + lang.lang_cards_pip + '">picture_in_picture_alt</i>';
analyze = cards.html + '<i class="material-icons" onclick="pip(' + id + ')" title="' + lang.lang_cards_pip + '">picture_in_picture_alt</i>'
}
}
//Ticker
var tickerdom = "";
var tickerdom = ""
if (ticker) {
var tickerdata = localStorage.getItem("ticker");
var tickerdata = localStorage.getItem("ticker")
if (tickerdata) {
var tickerdata = JSON.parse(tickerdata);
var tickerdata = JSON.parse(tickerdata)
var thisdomain = toot.account.acct.split("@");
var thisdomain = toot.account.acct.split("@")
if (thisdomain.length > 1) {
thisdomain = thisdomain[1];
thisdomain = thisdomain[1]
}
for (var i = 0; i < tickerdata.length; i++) {
var value = tickerdata[i];
var value = tickerdata[i]
if (value.domain == thisdomain) {
var tickerdom = '<div style="background:linear-gradient(to left,transparent, ' + value.bg + " 96%) !important; color:" + value.text + ';width:100%; height:0.9rem; font-size:0.8rem;"><img src="' + value.image + '" style="height:100%;"><span style="position:relative; top:-0.2rem;"> ' + escapeHTML(value.name) + "</span></div>";
break;
var tickerdom = '<div style="background:linear-gradient(to left,transparent, ' + value.bg + " 96%) !important; color:" + value.text + ';width:100%; height:0.9rem; font-size:0.8rem;"><img src="' + value.image + '" style="height:100%;"><span style="position:relative; top:-0.2rem;"> ' + escapeHTML(value.name) + "</span></div>"
break
}
}
}
}
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' + boostback + " " + fav_app + " " + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="' + media_ids + ' " unixtime="' + date(obj[key].created_at, "unix") + '" ' + if_notf + ' onclick="dmStatus()">' + '<div class="area-notice"><span class="gray sharesta">' + notice + home + "</span></div>" + '<div class="area-icon"><a onclick="udg(\'' + toot.account.id + "'," + acct_id + ');" user="' + toot.account.acct + '" class="udg">' + '<img src="' + avatar + '" width="40" class="prof-img" user="' + toot.account.acct + '"></a>' + noticeavatar + "</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; cursor:text;"> @' + toot.account.acct + locked + "</span></div>" + '<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' + toot.url + '\');" title="' + date(toot.created_at, "absolute") + "(" + lang.lang_parse_clickcopyurl + ')"><i class="far fa-clock-o"></i>' + date(toot.created_at, datetype) + "</span>" + "</div></div>" + '<div class="area-toot">' + tickerdom + '<span class="' + api_spoil + " cw_text_" + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show + '</span><span class="toot ' + spoiler + '">' + content + "</span>" + "" + viewer + "" + "<br><a onclick=\"details('" + toot.id + "'," + acct_id + ",'" + tlid + "','dm')\" class=\"pointer waves-effect\">" + lang.lang_parse_thread + "</a></div>" + '<div class="area-vis"></div>' + "</div></div>";
});
return templete;
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' + boostback + " " + fav_app + " " + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="' + media_ids + ' " unixtime="' + date(obj[key].created_at, "unix") + '" ' + if_notf + ' onclick="dmStatus()">' + '<div class="area-notice"><span class="gray sharesta">' + notice + home + "</span></div>" + '<div class="area-icon"><a onclick="udg(\'' + toot.account.id + "'," + acct_id + ');" user="' + toot.account.acct + '" class="udg">' + '<img src="' + avatar + '" width="40" class="prof-img" user="' + toot.account.acct + '"></a>' + noticeavatar + "</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; cursor:text;"> @' + toot.account.acct + locked + "</span></div>" + '<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' + toot.url + '\');" title="' + date(toot.created_at, "absolute") + "(" + lang.lang_parse_clickcopyurl + ')"><i class="far fa-clock-o"></i>' + date(toot.created_at, datetype) + "</span>" + "</div></div>" + '<div class="area-toot">' + tickerdom + '<span class="' + api_spoil + " cw_text_" + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show + '</span><span class="toot ' + spoiler + '">' + content + "</span>" + "" + viewer + "" + "<br><a onclick=\"details('" + toot.id + "'," + acct_id + ",'" + tlid + "','dm')\" class=\"pointer waves-effect\">" + lang.lang_parse_thread + "</a></div>" + '<div class="area-vis"></div>' + "</div></div>"
})
return templete
}

View File

@@ -14,6 +14,46 @@ function mediaToggle(tlid) {
$('#timeline_' + tlid).addClass('media-filter')
}
}
/* Remote only */
function remoteOnly(tlid, type) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
if (obj[tlid].data) {
if (obj[tlid].data.remote) {
obj[tlid].data.remote = false
var json = JSON.stringify(obj)
localStorage.setItem('column', json)
$('#sta-remote-' + tlid).text('Off')
$('#sta-remote-' + tlid).css('color', '#009688')
} else {
obj[tlid].data.remote = true
var json = JSON.stringify(obj)
localStorage.setItem('column', json)
$('#sta-remote-' + tlid).text('On')
$('#sta-remote-' + tlid).css('color', 'red')
}
} else {
obj[tlid].data = {}
obj[tlid].data.remote = true
var json = JSON.stringify(obj)
localStorage.setItem('column', json)
$('#sta-remote-' + tlid).text('On')
$('#sta-remote-' + tlid).css('color', 'red')
}
columnReload(tlid, type)
}
function remoteOnlyCk(tlid) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
if (obj[tlid].data) {
if (obj[tlid].data.remote) {
$('#sta-remote-' + tlid).text('On')
$('#sta-remote-' + tlid).css('color', 'red')
return true
}
}
return false
}
//各TL上方のBT[BTOnly/BTExc/Off]
function ebtToggle(tlid) {
var ebt = localStorage.getItem('ebt_' + tlid)
@@ -101,7 +141,7 @@ function delreset(tlid) {
}
/*ワードフィルター機能*/
function filterMenu() {
$('#left-menu div').removeClass('active')
$('#left-menu a').removeClass('active')
$('#filterMenu').addClass('active')
$('.menu-content').addClass('hide')
$('#filter-box').removeClass('hide')
@@ -117,26 +157,26 @@ function filter() {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
Authorization: 'Bearer ' + at,
},
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (json) {
var filters = ''
Object.keys(json).forEach(function(key) {
Object.keys(json).forEach(function (key) {
var filterword = json[key]
var context = filterword.context.join(',')
filters =
@@ -180,6 +220,9 @@ function makeNewFilter() {
if ($('#conv_filter:checked').val()) {
cont.push('thread')
}
if ($('#prof_filter:checked').val()) {
cont.push('profiles')
}
if (!cont.length) {
$('#filtered-words').html('Error:' + lang.lang_filter_errordegree)
}
@@ -188,10 +231,7 @@ function makeNewFilter() {
if (!who) {
who = false
}
var time =
$('#days_filter').val() * 24 * 60 * 60 +
$('#hours_filter').val() * 60 * 60 +
$('#mins_filter').val() * 60
var time = $('#days_filter').val() * 24 * 60 * 60 + $('#hours_filter').val() * 60 * 60 + $('#mins_filter').val() * 60
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
if ($('#filter-edit-id').val()) {
@@ -213,10 +253,10 @@ function makeNewFilter() {
context: cont,
irreversible: exc,
whole_word: who,
expires_in: time
expires_in: time,
})
)
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -229,6 +269,7 @@ function makeNewFilter() {
$('#local_filter').prop('checked', false)
$('#notf_filter').prop('checked', false)
$('#conv_filter').prop('checked', false)
$('#prof_filter').prop('checked', false)
$('#except_filter').prop('checked', false)
$('#wholeword_filter').prop('checked', false)
$('#days_filter').val('0')
@@ -259,29 +300,29 @@ function filterEdit(id, acct_id) {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
Authorization: 'Bearer ' + at,
},
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (json) {
var now = new Date()
now = now.getTime()
var now = Math.floor(now / 1000)
$('#filter-add-word').val(json.phrase)
Object.keys(json.context).forEach(function(key) {
Object.keys(json.context).forEach(function (key) {
var context = json.context[key]
$('[value=' + context + ']').prop('checked', true)
})
@@ -311,7 +352,7 @@ function filterDel(id, acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@@ -331,23 +372,23 @@ function getFilter(acct_id) {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
Authorization: 'Bearer ' + at,
},
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
localStorage.setItem('filter_' + acct_id, JSON.stringify(json))
})
} else {
@@ -366,13 +407,13 @@ function getFilterType(json, type) {
type = 'notifi'
}
var mutedfilters = []
Object.keys(json).forEach(function(key) {
Object.keys(json).forEach(function (key) {
var filterword = json[key]
var phrases = filterword.phrase
var arr = filterword.context
if (arr.join(',').indexOf(type) !== -1) {
mutedfilters.push(phrases)
} else if (type == 'mix'){
} else if (type == 'mix') {
if (arr.indexOf('home') !== -1 || arr.indexOf('public') !== -1) {
mutedfilters.push(phrases)
}
@@ -396,23 +437,23 @@ function filterUpdate(acct_id) {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
Authorization: 'Bearer ' + at,
},
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
localStorage.setItem('filter_' + acct_id, JSON.stringify(json))
filterUpdateInternal(json, 'home')
filterUpdateInternal(json, 'local')
@@ -428,13 +469,11 @@ function filterUpdateInternal(json, type) {
home = home.concat(wordmute)
}
if (home) {
$('[data-acct=' + acct_id + '] [data-type=' + type + '] .cvo').each(function(i, elem) {
$('[data-acct=' + acct_id + '] [data-type=' + type + '] .cvo').each(function (i, elem) {
var id = $(elem).attr('toot-id')
$('[toot-id=' + id + ']').removeClass('hide')
var text = $(elem)
.find('.toot')
.html()
Object.keys(home).forEach(function(key8) {
var text = $(elem).find('.toot').html()
Object.keys(home).forEach(function (key8) {
var word = home[key8]
var regExp = new RegExp(word.replace(/[.*+?^=!:${}()|[\]\/\\]/g, '\\$&'), 'g')
if ($.strip_tags(text).match(regExp)) {

View File

@@ -1,5 +1,5 @@
function listMenu() {
$('#left-menu div').removeClass('active')
$('#left-menu a').removeClass('active')
$('#listMenu').addClass('active')
$('.menu-content').addClass('hide')
$('#list-box').removeClass('hide')

File diff suppressed because it is too large Load Diff

View File

@@ -19,7 +19,22 @@ async function mixtl(acct_id, tlid, type, delc, voice) {
additional(acct_id, tlid)
jQuery('time.timeago').timeago()
todc()
mixre(acct_id, tlid, 'mix', mute, voice, '')
if(mastodonBaseWsStatus[domain] == 'cannotuse') {
mixre(acct_id, tlid, 'mix', mute, voice, '')
} else if (mastodonBaseWsStatus[domain] == 'undetected' || mastodonBaseWsStatus[domain] == 'connecting') {
const mbws = setInterval(function () {
if(mastodonBaseWsStatus[domain] == 'cannotuse') {
mixre(acct_id, tlid, 'mix', mute, voice, '')
clearInterval(mbws)
} else if(mastodonBaseWsStatus[domain] == 'available') {
mastodonBaseWs[domain].send(JSON.stringify({type: 'subscribe', stream: 'public:local'}))
clearInterval(mbws)
}
}, 1000)
} else if(mastodonBaseWsStatus[domain] == 'available') {
mastodonBaseWs[domain].send(JSON.stringify({type: 'subscribe', stream: 'public:local'}))
}
$(window).scrollTop(0)
lastId = integrated[0].id
beforeLastId = integrated[1].id

View File

@@ -116,7 +116,7 @@ function notfColumn(acct_id, tlid, sys) {
var start = 'wss://' + domain + '/?i=' + at
}
}
function notfCommon(acct_id, tlid, sys) {
function notfCommon(acct_id, tlid, sys, stream) {
todo('Notifications Loading...')
var native = localStorage.getItem('nativenotf')
var at = localStorage.getItem('acct_' + acct_id + '_at')
@@ -147,6 +147,10 @@ function notfCommon(acct_id, tlid, sys) {
}
}
}
if(stream == 'only') {
notfWS(misskey, acct_id, tlid, domain, at)
return false
}
fetch(start, i)
.then(function(response) {
console.log('header to get param:' + response.headers.get('link'))
@@ -203,10 +207,11 @@ function notfCommon(acct_id, tlid, sys) {
}
$('#notf-box').addClass('fetched')
todc()
notfWS(misskey, acct_id, tlid, domain, at)
if(stream != 'no') notfWS(misskey, acct_id, tlid, domain, at)
})
}
function notfWS(misskey, acct_id, tlid, domain, at) {
if(mastodonBaseWsStatus[domain] == 'available') return false
if (!misskey) {
if (localStorage.getItem('streaming_' + acct_id)) {
var wss = localStorage.getItem('streaming_' + acct_id)
@@ -239,8 +244,10 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
localStorage.setItem('lastnotf_' + acct_id, obj.id)
if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) {
//markers show中はダメ
if (obj.type != 'follow') {
if (obj.type != 'follow' && obj.type != 'follow_request') {
templete = parse([obj], 'notf', acct_id, 'notf', popup)
} else if (obj.type == 'follow_request') {
templete = userparse([obj.account], 'request', acct_id, 'notf', -1)
} else {
templete = userparse([obj], obj.type, acct_id, 'notf', popup)
}
@@ -256,7 +263,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
}
}
websocketNotf[acct_id].onerror = function(error) {
console.error('WebSocket Error ' + error)
console.error('WebSocket Error ', error)
errorct++
console.log(errorct)
if (errorct < 3) {
@@ -264,7 +271,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
}
}
websocketNotf[acct_id].onclose = function(error) {
console.error('WebSocket Close ' + error)
console.error('WebSocket Close ', error)
errorct++
console.log(errorct)
if (errorct < 3) {

File diff suppressed because it is too large Load Diff

View File

@@ -25,6 +25,7 @@ function pollToggle() {
}
$('#post-box').css('width', width + 'px')
$('#emoji').addClass('hide')
$('#draft').addClass('hide')
$('#poll').addClass('hide')
$('#pollsta').text(lang.lang_no)
}

View File

@@ -3,7 +3,7 @@
function searchMenu() {
$('#src-contents').html('')
trend()
$('#left-menu div').removeClass('active')
$('#left-menu a').removeClass('active')
$('#searchMenu').addClass('active')
$('.menu-content').addClass('hide')
$('#src-box').removeClass('hide')
@@ -116,8 +116,11 @@ function tsAdd(q) {
parseColumn('add')
}
function tootsearch(tlid, q) {
if(!q || q=='undefined') {
return false
}
var start = 'https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=' + q
console.log('Toot srrach at ' + start)
console.log('Toot search at ' + start)
$('#notice_' + tlid).text('tootsearch(' + q + ')')
$('#notice_icon_' + tlid).text('search')
fetch(start, {
@@ -216,9 +219,9 @@ function moreTs(tlid, q) {
function graphDraw(tag, acct_id) {
var tags = ''
var his = tag.history
return graphDrawCore(his, tag)
return graphDrawCore(his, tag, acct_id)
}
function graphDrawCore(his, tag) {
function graphDrawCore(his, tag, acct_id) {
var max = Math.max.apply(null, [
his[0].uses,
his[1].uses,
@@ -304,7 +307,7 @@ function trend() {
Object.keys(json).forEach(function(keye) {
var tag = json[keye]
var his = tag.history
tags = graphDrawCore(his, tag)
tags = graphDrawCore(his, tag, acct_id)
$('#src-contents').append(tags)
})

View File

@@ -198,3 +198,28 @@ function tagFeature(name, acct_id) {
M.toast({ html: 'Complete: ' + escapeHTML(name), displayLength: 3000 })
})
}
//タグのフィルタ
function addTag(id) {
var columns = JSON.parse(localStorage.getItem('column'))
var column = columns[id]
if(!column.data.name) {
var name = column.data
} else {
var name = column.data.name
}
var col = localStorage.getItem('column')
var o = JSON.parse(col)
var obj = o[id]
obj.data = {
'name': name,
'all': $(`#all_tm-${id}`).val(),
'any': $(`#any_tm-${id}`).val(),
'none': $(`#none_tm-${id}`).val(),
}
o[id] = obj
var json = JSON.stringify(o)
console.log(json)
localStorage.setItem('column',json)
columnReload(id, 'tag')
}

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,7 @@ function imgv(id, key, acct_id) {
$('#imgprog').text(0)
$('#imgsec').text(0)
$('#imgmodal').hide()
rotate(true)
$('#imgmodal').attr('src', '../../img/loading.svg')
var murl = $('#' + id + '-image-' + key).attr('data-url')
var ourl = $('#' + id + '-image-' + key).attr('data-original')
@@ -119,37 +120,10 @@ function imageXhr(id, key, murl) {
var width
element.onload = function() {
var width = element.naturalWidth
if(width < 650) {
width = 650;
}
var height = element.naturalHeight
var windowH = $(window).height()
var windowW = $(window).width()
$('#imagemodal').css('bottom', '0')
$('#imagemodal img').css('width', 'auto')
if (height < windowH) {
$('#imagemodal').css('height', height + 100 + 'px')
$('#imagemodal img').css('height', height + 'px')
if (width > windowW * 0.8) {
$('#imagemodal').css('width', '80vw')
$('#imagemodal img').css('width', 'auto')
var heightS = ((windowW * 0.8) / width) * height
$('#imagemodal').css('height', heightS + 100 + 'px')
} else {
$('#imagemodal').css('width', width + 'px')
}
} else {
$('#imagemodal img').css('width', 'auto')
var widthS = (windowH / height) * width
if (widthS < windowW) {
$('#imagemodal').css('width', widthS + 'px')
} else {
$('#imagemodal').css('width', '100vw')
}
$('#imagemodal').css('height', '100vh')
$('#imagemodal img').css('height', 'calc(100vh - 60px)')
}
calcNiceAspect(width, height)
$('#imagemodal').attr('data-naturalWidth', width)
$('#imagemodal').attr('data-naturalHeight', height)
}
if ($('#' + id + '-image-' + (key * 1 + 1)).length == 0) {
$('#image-next').prop('disabled', true)
@@ -172,6 +146,38 @@ function imageXhr(id, key, murl) {
xhr.responseType = 'blob'
xhr.send()
}
function calcNiceAspect( width, height ) {
if(width < 650) {
width = 650
}
var windowH = $(window).height()
var windowW = $(window).width()
$('#imagemodal').css('bottom', '0')
$('#imagemodal img').css('width', 'auto')
if (height < windowH) {
$('#imagemodal').css('height', height + 100 + 'px')
$('#imagemodal img').css('height', height + 'px')
if (width > windowW * 0.8) {
$('#imagemodal').css('width', '80vw')
$('#imagemodal img').css('width', 'auto')
var heightS = ((windowW * 0.8) / width) * height
$('#imagemodal').css('height', heightS + 100 + 'px')
} else {
$('#imagemodal').css('width', width + 'px')
}
} else {
$('#imagemodal img').css('width', 'auto')
var widthS = (windowH / height) * width
if (widthS < windowW) {
$('#imagemodal').css('width', widthS + 'px')
} else {
$('#imagemodal').css('width', '100vw')
}
$('#imagemodal').css('height', '100vh')
$('#imagemodal img').css('height', 'calc(100vh - 60px)')
}
}
//ズームボタン(z:倍率)
function zoom(z) {
var wdth = $('#imagewrap img').width()
@@ -182,7 +188,7 @@ function zoom(z) {
$('#imagewrap img').css('height', hgt + 'px')
}
//スマホ対応ドラッグ移動システム
;(function() {
(function() {
$.fn.dragScroll = function() {
var target = this
$(this)
@@ -260,6 +266,33 @@ element.onmousewheel = function(e) {
zoom(0.9)
}
}
function rotate(reset) {
if (reset) {
$('#imagewrap img').removeClass('rotate-90')
$('#imagewrap img').removeClass('rotate-180')
$('#imagewrap img').removeClass('rotate-270')
$('#imagemodal').attr('data-naturalWidth', null)
$('#imagemodal').attr('data-naturalWidth', null)
return true
}
var width = $('#imagemodal').attr('data-naturalWidth')
var height = $('#imagemodal').attr('data-naturalHeight')
if ($('#imagewrap img').hasClass('rotate-90')) {
$('#imagewrap img').removeClass('rotate-90')
$('#imagewrap img').addClass('rotate-180')
calcNiceAspect(width, height)
} else if ($('#imagewrap img').hasClass('rotate-180')) {
$('#imagewrap img').removeClass('rotate-180')
$('#imagewrap img').addClass('rotate-270')
calcNiceAspect(height, width)
} else if ($('#imagewrap img').hasClass('rotate-270')) {
$('#imagewrap img').removeClass('rotate-270')
calcNiceAspect(width, height)
} else {
$('#imagewrap img').addClass('rotate-90')
calcNiceAspect(height, width)
}
}
//当該トゥート
function detFromImg() {

View File

@@ -8,13 +8,13 @@ var websocketNotf = []
//カラム追加ボックストグル
function addColumnMenu() {
$('#left-menu div').removeClass('active')
$('#left-menu a').removeClass('active')
$('#addColumnMenu').addClass('active')
$('.menu-content').addClass('hide')
$('#add-box').removeClass('hide')
addselCk()
}
$('.type').click(function() {
$('.type').click(function () {
$('.type').removeClass('active')
$(this).addClass('active')
$('#type-sel').val($(this).attr('data-type'))
@@ -42,18 +42,17 @@ function parseColumn(target, dontclose) {
var multi = localStorage.getItem('multi')
if (multi) {
var obj = JSON.parse(multi)
var templete
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var acct = obj[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)
notf(key, 0)
localStorage.setItem('acct_' + key + '_rt', acct.rt ? acct.rt : null)
if(!target) mastodonBaseStreaming(key)
ckdb(key)
//フィルターデータ読もう
getFilter(key)
@@ -76,7 +75,11 @@ function parseColumn(target, dontclose) {
var obj = [
{
domain: 0,
type: 'local'
type: 'home',
},
{
domain: 0,
type: 'local',
}
]
var json = JSON.stringify(obj)
@@ -122,10 +125,7 @@ function parseColumn(target, dontclose) {
var if_notf = ''
}
if (localStorage.getItem('notification_' + acct.domain)) {
var unique_notf = lang.lang_layout_thisacct.replace(
'{{notf}}',
localStorage.getItem('notification_' + acct.domain)
)
var unique_notf = lang.lang_layout_thisacct.replace('{{notf}}', localStorage.getItem('notification_' + acct.domain))
} else {
if (lang.language == 'ja') {
var notflocale = '通知'
@@ -150,7 +150,6 @@ function parseColumn(target, dontclose) {
icnsert = ' style="color: #' + ichex + '" '
}
}
console.log(acct)
if (acctlist[acct.domain]) {
if (acctlist[acct.domain].background != 'def') {
insert = insert + ' border-bottom:medium solid #' + acctlist[acct.domain].background + ';'
@@ -161,15 +160,21 @@ function parseColumn(target, dontclose) {
} else {
localStorage.removeItem('hasNotfC_' + acct.domain)
}
var css = ''
var width = localStorage.getItem('width')
if (width) {
var css = ' min-width:' + width + 'px;'
css = ' min-width:' + width + 'px;'
}
var maxWidth = localStorage.getItem('max-width')
if (maxWidth) {
css = css +'max-width:' + maxWidth + 'px;'
}
var margin = localStorage.getItem('margin')
if (margin) {
css = css +'margin-right:' + margin + 'px;'
}
if (acct.width) {
var css = ' min-width:' + acct.width + 'px;max-width:' + acct.width + 'px;'
}
if (!css) {
var css = ''
css = css + ' min-width:' + acct.width + 'px !important;max-width:' + acct.width + 'px !important;'
}
if (acct.type == 'webview') {
if (localStorage.getItem('fixwidth')) {
@@ -191,17 +196,7 @@ function parseColumn(target, dontclose) {
} else {
var animecss = ''
}
unstreamingTL(
acct.type,
key,
basekey,
insert,
icnsert,
acct.left_fold,
css,
animecss,
acct.data
)
unstreamingTL(acct.type, key, basekey, insert, icnsert, acct.left_fold, css, animecss, acct.data)
} else if (acct.type == 'bookmark') {
if (!acct.left_fold) {
basekey = key
@@ -213,17 +208,19 @@ function parseColumn(target, dontclose) {
} else {
var animecss = ''
}
unstreamingTL(
acct.type,
key,
basekey,
insert,
icnsert,
acct.left_fold,
css,
animecss,
acct.domain
)
unstreamingTL(acct.type, key, basekey, insert, icnsert, acct.left_fold, css, animecss, acct.domain)
} else if (acct.type == 'utl') {
if (!acct.left_fold) {
basekey = key
}
var anime = localStorage.getItem('animation')
if (anime == 'yes' || !anime) {
var animecss = 'box-anime'
} else {
var animecss = ''
}
unstreamingTL(acct.type, key, basekey, insert, icnsert, acct.left_fold, css, animecss, { acct: acct.domain, data: acct.data })
} else {
var anime = localStorage.getItem('animation')
if (anime == 'yes' || !anime) {
@@ -232,76 +229,91 @@ function parseColumn(target, dontclose) {
var animecss = ''
}
var unread = `<a id="unread_${key}" onclick="showUnread('${key}','${acct.type}','${acct.domain}')"
class="setting nex" title="${lang.lang_layout_unread}">
<i class="material-icons waves-effect nex">more</i>
</a>${lang.lang_layout_unread}<br>`
class="setting nex waves-effect" title="${lang.lang_layout_unread}">
<i class="material-icons waves-effect nex">more</i><br />${lang.lang_layout_unread}
</a>`
var notfDomain = acct.domain
var notfKey = key
var if_tag = ''
var if_tag_btn = ''
if (acct.type == 'notf') {
var exclude =
lang.lang_excluded +
`:<br>
`<div style="border: 1px solid; padding: 5px; margin-top: 5px; margin-bottom: 5px;">${lang.lang_layout_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>
${lang.lang_layout_mention}
</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>
${lang.lang_layout_fav}
</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>
${lang.lang_layout_bt}
</span>
</label>
</label>
<label>
<input type="checkbox" class="filled-in" id="exc-follow-${key}" ${excludeCk(key, 'follow')} />
<span>
<i class="fas fa-users exc-icons"></i>
${lang.lang_status_follow}
</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>
${lang.lang_layout_poll}
</span>
</label>
<button class="btn waves-effect" style="width:60px; padding:0;" onclick="exclude('${key}')">Filter</button>`
</label> <br />
<button class="btn btn-flat waves-effect notf-exclude-btn waves-light" style="width:calc(50% - 11px); 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}')">
`<button class="btn btn-flat red-text waves-effect notf-exclude-btn waves-light" style="width:calc(50% - 11px); padding:0;" onclick="resetNotfFilter('${key}')">
Clear all
</button>`
}
exclude = exclude + '<br>'
exclude = exclude + '</div>'
notfDomain = 'dummy'
notfKey = 'dummy'
} 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-${key}">Off</span>
</a>
var exclude = `<a onclick="ebtToggle('${key}')" class="setting nex waves-effect">
<i class="fas fa-retweet nex" title="${lang.lang_layout_excludingbt}" style="font-size: 24px"></i>
<span id="sta-bt-${key}">Off</span><br />
${lang.lang_layout_excludingbt}
<br>`
</a>`
} else if (acct.type == 'tag') {
if (acct.data.name) {
var name = acct.data.name
var all = acct.data.all
var any = acct.data.any
var none = acct.data.none
} else {
var name = acct.data
var all = ''
var any = ''
var none = ''
}
if_tag = `<div class="column-hide notf-indv-box" id="tag-box_${key}" style="padding:5px;">
Base: ${acct.data}<br>
<div id="tagManager-${key}"></div>
<button onclick="addTag('${key}')" class="btn waves-effect" style="width: 100%">Add</button>
Base: ${name}<br>
<div id="tagManager-${key}">
all: <input type="text" id="all_tm-${key}"" value="${all}">
any: <input type="text" id="any_tm-${key}" value="${any}">
none: <input type="text" id="none_tm-${key}"" value="${none}">
</div>
<button onclick="addTag('${key}')" class="btn waves-effect" style="width: 100%">Refresh</button>
</div>`
if_tag_btn = `<a onclick="setToggleTag('${key}')" class="setting nex"
title="${lang.lang_layout_tagManager}" style="width:30px">
<i class="material-icons waves-effect nex">note_add</i>
</a>`
unread = ''
var exclude = ''
var if_notf = 'hide'
} else {
var exclude = ''
unread = ''
@@ -322,22 +334,18 @@ function parseColumn(target, dontclose) {
var basehtml = `<div style="${css}" class="box ${animecss}" id="timeline_box_${basekey}_parentBox"></div>`
$('#timeline-container').append(basehtml)
}
var left_hold = `<a onclick="leftFoldSet('${key}')" class="setting nex">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftFold}">view_agenda</i>
</a>
${lang.lang_layout_leftFold}<br>`
var left_hold = `<a onclick="leftFoldSet('${key}')" class="setting nex waves-effect">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftFold}">view_agenda</i><br />
${lang.lang_layout_leftFold}</a>`
} else {
var left_hold = `<a onclick="leftFoldRemove('${key}')" class="setting nex">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftUnfold}">view_column</i>
</a>
${lang.lang_layout_leftUnfold}<br>`
var left_hold = `<a onclick="leftFoldRemove('${key}')" class="setting nex waves-effect">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftUnfold}">view_column</i><br />
${lang.lang_layout_leftUnfold}</a>`
}
if (key === 0) {
left_hold = ''
}
if (
localStorage.getItem('mode_' + localStorage.getItem('domain_' + acct.domain)) == 'misskey'
) {
if (localStorage.getItem('mode_' + localStorage.getItem('domain_' + acct.domain)) == 'misskey') {
var isMisRed = ''
exclude = ''
var if_misskey_hide = 'hide'
@@ -350,14 +358,25 @@ function parseColumn(target, dontclose) {
} else {
var addHeight = ''
}
if (acct.type != 'pub' && acct.type != 'pub-media') {
var mediaFil = `<a onclick="mediaToggle('${key}')" class="setting nex waves-effect">
<i class="material-icons nex" title="${lang.lang_layout_mediafil}">perm_media</i>
<span id="sta-media-${key}">On</span><br />
${lang.lang_layout_mediafil}</a>`
} else {
var mediaFil = `<a onclick="remoteOnly('${key}','${acct.type}')" class="setting nex waves-effect">
<i class="material-icons nex" title="${lang.lang_layout_remoteOnly}">perm_media</i><br />
<span id="sta-remote-${key}">Off</span>
${lang.lang_layout_remoteOnly}</a>`
}
var html = `
<div class="boxIn" id="timeline_box_${key}_box" tlid="${key}" data-acct="${acct.domain}" style="${addHeight}">
<div class="notice-box z-depth-2" id="menu_${key}" style="${insert}">
<div class="area-notice">
<i class="material-icons waves-effect ${isMisRed}" id="notice_icon_${key}" ${notf_attr}
<i class="material-icons waves-effect ${isMisRed} notice_icon_acct_${acct.domain}" id="notice_icon_${key}" ${notf_attr}
style="font-size:40px; padding-top:25%;"
onclick="checkStr('${acct.type}','${data}','${acct.domain}', '${key}', '${delc}','${voice}',null)"
title="${lang.lang_layout_gotop}">
title="${lang.lang_layout_gotop}" aria-hidden="true">
</i>
</div>
<div class="area-notice_name">
@@ -366,64 +385,66 @@ function parseColumn(target, dontclose) {
<div class="area-a1">
<a onclick="notfToggle('${acct.domain}','${key}')" class="setting nex ${if_notf}"
title="${unique_notf}" ${icnsert}>
<i class="material-icons waves-effect nex notf-icon_${acct.domain}">notifications</i>
<i class="material-icons waves-effect nex notf-icon_${acct.domain}" aria-hidden="true">notifications</i>
<span class="voice">${unique_notf}</span>
</a>
<span class="cbadge hide notf-announ_${acct.domain}" style="margin-right:0"
onclick="notfToggle('${acct.domain}','${key}')" title="${lang.lang_layout_announ}">
<i class="fas fa-bullhorn"></i>
<span class="notf-announ_${acct.domain}_ct"></span>
<span class="voice">${lang.lang_layout_announ}</span>
</span>
${if_tag_btn}
</div>
<div class="area-sta">
<span class="new badge teal notf-reply_${acct.domain} hide" data-badge-caption="Reply">0</span>
<span class="new badge yellow black-text notf-fav_${acct.domain} hide" data-badge-caption="Fav">0</span>
<span class="new badge blue notf-bt_${acct.domain} hide" data-badge-caption="BT">0</span>
<span class="new badge orange notf-follow_${acct.domain} hide" data-badge-caption="Follow">0</span>
<span class="new badge teal notf-reply_${acct.domain} hide" data-badge-caption="Reply" aria-hidden="true">0</span>
<span class="new badge yellow black-text notf-fav_${acct.domain} hide" data-badge-caption="Fav" aria-hidden="true">0</span>
<span class="new badge blue notf-bt_${acct.domain} hide" data-badge-caption="BT" aria-hidden="true">0</span>
<span class="new badge orange notf-follow_${acct.domain} hide" data-badge-caption="Follow" aria-hidden="true">0</span>
</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>
<i class="material-icons waves-effect nex" title="${lang.lang_layout_delthis}" ${icnsert} aria-hidden="true">cancel</i>
<span class="voice">${lang.lang_layout_delthis}</span>
</a>
</div>
<div class="area-a3">
<a onclick="setToggle('${key}')" class="setting nex" title="${lang.lang_layout_setthis}" ${icnsert}>
<i class="material-icons waves-effect nex">settings</i>
<i class="material-icons waves-effect nex" aria-hidden="true">settings</i>
<span class="voice">${lang.lang_layout_setthis}</span>
</a>
</div>
</div>
<div class="column-hide notf-indv-box z-depth-4" id="notf-box_${notfKey}">
<div id="announce_${notfKey}" style="border: 1px solid"></div>
<div class="announce_${acct.domain}" style="border: 1px solid"></div>
<div id="notifications_${notfKey}" data-notf="${notfDomain}" data-type="notf" class="notf-timeline">
</div>
</div>
<div class="column-hide notf-indv-box" id="util-box_${key}" style="padding:5px;">
${exclude}
${unread}
${exclude}${left_hold}
<a onclick="mediaToggle('${key}')" class="setting nex">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_mediafil}">perm_media</i>
<span id="sta-media-${key}">On</span>
</a>
${lang.lang_layout_mediafil}<br>
<a onclick="cardToggle('${key}')" class="setting nex">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_linkanades}">link</i>
<span id="sta-card-${key}">On</span>
</a>
${left_hold}
${mediaFil}
<a onclick="cardToggle('${key}')" class="setting nex waves-effect">
<i class="material-icons nex" title="${lang.lang_layout_linkanades}">link</i>
<span id="sta-card-${key}">On</span><br />
${lang.lang_layout_linkana}
<br>
<a onclick="voiceToggle('${key}')" class="setting nex">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_tts}">hearing</i>
<span id="sta-voice-${key}">On</span>
</a>
<a onclick="voiceToggle('${key}')" class="setting nex waves-effect">
<i class="material-icons nex" title="${lang.lang_layout_tts}">hearing</i>
<span id="sta-voice-${key}">On</span><br />
${lang.lang_layout_tts}
TL<br>
<a onclick="columnReload('${key}','${acct.type}')" class="setting nex ${if_misskey_hide}">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_reconnect}">refresh</i>
</a>
<span>
TL</a>
<a onclick="columnReload('${key}','${acct.type}')" class="setting nex ${if_misskey_hide} waves-effect">
<i class="material-icons nex" title="${lang.lang_layout_reconnect}">refresh</i>
<br />
${lang.lang_layout_reconnect}
</span>
<br>
</a>
<a onclick="resetWidth('${key}')" class="setting nex waves-effect">
<i class="material-icons nex" title="${lang.lang_layout_resetWidth}">refresh</i>
<br />
${lang.lang_layout_resetWidth}
</a><br />
${lang.lang_layout_headercolor}
<br>
<div id="picker_${key}" class="color-picker"></div>
@@ -496,13 +517,13 @@ function parseColumn(target, dontclose) {
minHeight: 50,
minWidth: 50,
grid: 50,
resize: function(event, ui) {
resize: function (event, ui) {
$(this).css('min-width', ui.size.width + 'px')
$(this).css('max-width', ui.size.width + 'px')
$(this).css('min-height', ui.size.height + 'px')
$(this).css('max-height', ui.size.height + 'px')
},
stop: function(event, ui) {
stop: function (event, ui) {
var col = localStorage.getItem('column')
var o = JSON.parse(col)
var width = ui.size.width
@@ -517,16 +538,14 @@ function parseColumn(target, dontclose) {
} else {
//横幅。その縦幅を持つカラムのidは
console.log('yoko')
var key = $(this)
.find('.boxIn')
.attr('tlid')
var key = $(this).find('.boxIn').attr('tlid')
var obj = o[key]
obj.width = width
o[key] = obj
}
var json = JSON.stringify(o)
localStorage.setItem('column', json)
}
},
})
}
function checkStr(type, data, acct_id, key, delc, voice) {
@@ -576,7 +595,7 @@ function addColumn() {
}
var add = {
domain: acct,
type: type
type: type,
}
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
@@ -610,9 +629,7 @@ function addselCk() {
$('#webview-add').addClass('hide')
}
if (domain == 'knzk.me' || domain == 'mstdn.y-zu.org') {
$('#type-sel').append(
'<option value="dm" data-trans="dm" id="direct-add">' + lang.layout_dm + '</option>'
)
$('#type-sel').append('<option value="dm" data-trans="dm" id="direct-add">' + lang.layout_dm + '</option>')
} else {
$('#direct-add').remove()
}
@@ -629,16 +646,20 @@ function removeColumn(tlid) {
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then(result => {
cancelButtonText: lang.lang_no,
}).then((result) => {
if (result.value) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
var data = obj[tlid]
obj.splice(tlid, 1)
var json = JSON.stringify(obj)
localStorage.setItem('column', json)
sortLoad()
$('#timeline_box_' + tlid + '_parentBox').remove()
$('#timeline_box_' + tlid + '_box').remove()
if (!data.left_fold) {
$('#timeline_box_' + tlid + '_parentBox').remove()
}
}
$('#sort-box').removeClass('hide')
$('#sort-box').addClass('show')
@@ -652,28 +673,28 @@ function setToggle(tlid) {
$('#util-box_' + tlid).css('display', 'block')
$('#util-box_' + tlid).animate(
{
height: '200px'
height: '200px',
},
{
duration: 300,
complete: function() {
complete: function () {
$('#util-box_' + tlid).css('overflow-y', 'scroll')
$('#util-box_' + tlid).removeClass('column-hide')
}
},
}
)
} else {
$('#util-box_' + tlid).css('overflow-y', 'hidden')
$('#util-box_' + tlid).animate(
{
height: '0'
height: '0',
},
{
duration: 300,
complete: function() {
complete: function () {
$('#util-box_' + tlid).addClass('column-hide')
$('#util-box_' + tlid).css('display', 'none')
}
},
}
)
}
@@ -685,28 +706,28 @@ function setToggleTag(tlid) {
$('#tag-box_' + tlid).css('display', 'block')
$('#tag-box_' + tlid).animate(
{
height: '200px'
height: '200px',
},
{
duration: 300,
complete: function() {
complete: function () {
$('#tag-box_' + tlid).css('overflow-y', 'scroll')
$('#tag-box_' + tlid).removeClass('column-hide')
}
},
}
)
} else {
$('#tag-box_' + tlid).css('overflow-y', 'hidden')
$('#tag-box_' + tlid).animate(
{
height: '0'
height: '0',
},
{
duration: 300,
complete: function() {
complete: function () {
$('#tag-box_' + tlid).addClass('column-hide')
$('#tag-box_' + tlid).css('display', 'none')
}
},
}
)
}
@@ -770,7 +791,8 @@ function webviewParse(url, key, insert, icnsert, css) {
<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"></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>
@@ -813,11 +835,16 @@ function unstreamingTL(type, key, basekey, insert, icnsert, left_fold, css, anim
${lang.lang_layout_leftUnfold}
</span><br>`
}
if (type == 'utl') {
var dataHtml = false
} else {
var dataHtml = data
}
var html = `<div class="boxIn" id="timeline_box_${key}_box" tlid="${key}">
<div class="notice-box z-depth-2" id="menu_${key}" style="${insert} ">
<div class="area-notice">
<i class="material-icons waves-effect" id="notice_icon_${key}" style="font-size:40px; padding-top:25%;"
onclick="${type}('${key}','${data}');" title="${lang.lang_layout_gotop}"></i>
onclick="${type}('${key}','${dataHtml}');" title="${lang.lang_layout_gotop}"></i>
</div>
<div class="area-notice_name">
<span id="notice_${key}" class="tl-title"></span>
@@ -858,6 +885,8 @@ function unstreamingTL(type, key, basekey, insert, icnsert, left_fold, css, anim
} else if (type == 'bookmark') {
console.log(key, data)
bookmark(key, data)
} else if (type == 'utl') {
utl(key, data.acct, data.data)
}
cardCheck(key)
ebtCheck(key)
@@ -875,6 +904,22 @@ function bookmark(key, data) {
}
tl('bookmark', '', data, key, 'false', voice, '')
}
function utl(key, acct_id, data) {
if (!data) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
data = obj[key].data
acct_id = obj[key].domain
}
console.log(key, data)
if (localStorage.getItem('voice_' + key)) {
var voice = true
} else {
var voice = false
}
tl('utl', data, acct_id, key, 'false', voice, '')
}
function leftFoldSet(key) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
@@ -891,3 +936,11 @@ function leftFoldRemove(key) {
localStorage.setItem('column', json)
parseColumn()
}
function resetWidth(key) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
obj[key].width = null
var json = JSON.stringify(obj)
localStorage.setItem('column', json)
$(`#timeline_box_${key}_parentBox`).attr('style', '')
}

View File

@@ -1,24 +1,24 @@
function menu() {
localStorage.setItem("menu-done", true);
localStorage.setItem("menu-done", true)
$("#fukidashi").addClass("hide")
if (!$("#menu").hasClass("appear")) {
$("#menu").addClass("appear")
var left = localStorage.getItem("menu-left");
var left = localStorage.getItem("menu-left")
if (left > $('body').width() - $('#menu').width()) {
left = $('body').width() - $('#menu').width();
left = $('body').width() - $('#menu').width()
} else if (left < 0) {
left = 0;
left = 0
}
var top = localStorage.getItem("menu-top");
var top = localStorage.getItem("menu-top")
if (top > $('body').height() - $('#menu').height()) {
top = $('body').height() - $('#menu').height();
top = $('body').height() - $('#menu').height()
} else if (top < 0) {
top = 0;
top = 0
}
$('#menu').css("left", left + "px")
$('#menu').css("top", top + "px")
var height = localStorage.getItem("menu-height");
var width = localStorage.getItem("menu-width");
var height = localStorage.getItem("menu-height")
var width = localStorage.getItem("menu-width")
if(height){
$('#menu').css("height", height + "px")
}else{
@@ -27,12 +27,13 @@ function menu() {
if(width){
$('#menu').css("width", width + "px")
}
$('#menu').fadeIn();
$("#menu-bar").html("TheDesk " + localStorage.getItem("ver"));
$(".menu-content").addClass("hide");
$("#add-box").removeClass("hide");
$("#left-menu div").removeClass("active");
$("#addColumnMenu").addClass("active");
$('#menu').fadeIn()
$("#menu-bar").html("TheDesk " + localStorage.getItem("ver"))
$(".menu-content").addClass("hide")
$("#add-box").removeClass("hide")
$("#left-menu div").removeClass("active")
$("#addColumnMenu").addClass("active")
$("#addColumnMenu").click()
} else {
$('#menu').fadeOut()
$("#menu").removeClass("appear")
@@ -43,35 +44,35 @@ $(function () {
$("#menu").draggable({
handle: "#menu-bar",
stop: function () {
var left = $('#menu').offset().left;
var left = $('#menu').offset().left
if (left > $('body').width() - $('#menu').width()) {
left = $('body').width() - $('#menu').width();
left = $('body').width() - $('#menu').width()
} else if (left < 0) {
left = 0;
left = 0
}
var top = $('#menu').offset().top;
var top = $('#menu').offset().top
if (top > $('body').height() - $('#menu').height()) {
top = $('body').height() - $('#menu').height();
top = $('body').height() - $('#menu').height()
} else if (top < 0) {
top = 0;
top = 0
}
localStorage.setItem("menu-left", left);
localStorage.setItem("menu-top", top);
localStorage.setItem("menu-left", left)
localStorage.setItem("menu-top", top)
}
});
})
$("#menu").resizable({
minHeight: 150,
minWidth: 200,
stop: function (event, ui) {
localStorage.setItem("menu-height", ui.size.height);
localStorage.setItem("menu-width", ui.size.width);
localStorage.setItem("menu-height", ui.size.height)
localStorage.setItem("menu-width", ui.size.width)
}
});
});
})
})
function help() {
$("#left-menu div").removeClass("active");
$("#helpMenu").addClass("active");
$(".menu-content").addClass("hide");
$("#help-box").removeClass("hide");
$("#left-menu a").removeClass("active")
$("#helpMenu").addClass("active")
$(".menu-content").addClass("hide")
$("#help-box").removeClass("hide")
postMessage(["sendSinmpleIpc", "getLogs"], "*")
}

View File

@@ -1,32 +1,32 @@
function pip(id) {
$("#pip-content").html($("[toot-id=" + id + "] .additional").html());
$("#pip").removeClass("hide");
$("#pip-content").html($("[toot-id=" + id + "] .additional").html())
$("#pip").removeClass("hide")
}
function endPip() {
$("#pip-content").html("");
$("#pip").addClass("hide");
$("#pip-content").html("")
$("#pip").addClass("hide")
}
function pipHoriz() {
if ($("#pip").hasClass("pip-left")) {
$("#pip").removeClass("pip-left");
$(".pip-horiz").text("chevron_left");
$("#pip").addClass("pip-right");
$("#pip").removeClass("pip-left")
$(".pip-horiz").text("chevron_left")
$("#pip").addClass("pip-right")
} else {
$("#pip").addClass("pip-left");
$("#pip").removeClass("pip-right");
$(".pip-horiz").text("chevron_right");
$("#pip").addClass("pip-left")
$("#pip").removeClass("pip-right")
$(".pip-horiz").text("chevron_right")
}
}
function pipVert() {
if ($("#pip").hasClass("pip-top")) {
$("#pip").removeClass("pip-top");
$("#pip").addClass("pip-bottom");
$(".pip-vert").text("expand_less");
$("#pip").removeClass("pip-top")
$("#pip").addClass("pip-bottom")
$(".pip-vert").text("expand_less")
} else {
$("#pip").addClass("pip-top");
$("#pip").removeClass("pip-bottom");
$(".pip-vert").text("expand_more");
$("#pip").addClass("pip-top")
$("#pip").removeClass("pip-bottom")
$(".pip-vert").text("expand_more")
}
}

View File

@@ -58,10 +58,10 @@ function show() {
mdCheck()
}
$(function() {
$(function () {
$('#post-box').draggable({
handle: '#post-bar',
stop: function() {
stop: function () {
var left = $('#post-box').offset().left
if (left > $('body').width() - $('#post-box').width()) {
left = $('body').width() - $('#post-box').width()
@@ -76,15 +76,15 @@ $(function() {
}
localStorage.setItem('postbox-left', left)
localStorage.setItem('postbox-top', top)
}
},
})
$('#post-box').resizable({
minHeight: 150,
minWidth: 100,
stop: function(event, ui) {
stop: function (event, ui) {
$('#textarea').blur()
localStorage.setItem('postbox-width', ui.size.width)
}
},
})
})
@@ -101,41 +101,38 @@ if (location.search) {
$('.mini-btn').text('expand_less')
}
}
$('#posttgl').click(function(e) {
if (!$('#post-box').hasClass('appear')) {
show()
} 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')) {
function initPostbox() {
$('#posttgl').click(function (e) {
if (!$('#post-box').hasClass('appear')) {
show()
} else {
hide()
}
}
$('.cvo').removeClass('selectedToot')
selectedColumn = 0
selectedToot = 0
localStorage.removeItem('nohide')
srcBox('close')
})
$('#contextWrap').click(function(e) {
$('#contextWrap').addClass('hide')
$('.contextMenu').addClass('hide')
$('.act-icon').text('expand_more')
})
$('#textarea,#cw-text').focusout(function(e) {
localStorage.setItem('nohide', true)
var countup = function() {
$('.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')
}
//setTimeout(remove, 100);
$('.cvo').removeClass('selectedToot')
selectedColumn = 0
selectedToot = 0
})
srcBox('close')
})
$('#textarea,#cw-text').focusout(function (e) {
localStorage.setItem('nohide', true)
var countup = function () {
localStorage.removeItem('nohide')
}
//setTimeout(remove, 100);
$('.cvo').removeClass('selectedToot')
selectedColumn = 0
selectedToot = 0
})
}

View File

@@ -1,38 +1,38 @@
var r = document.getElementById("radio");
var r = document.getElementById("radio")
function Rtoggle() {
if ($("#radio").hasClass("play")) {
Rstop();
Rstop()
} else {
$("#radio-view").toggleClass("hide");
$("#radio-view").toggleClass("show");
$("#radio-input").addClass("hide");
$("#radio-view").toggleClass("hide")
$("#radio-view").toggleClass("show")
$("#radio-input").addClass("hide")
}
}
function Rplay(url, name) {
$("#radio").attr('src', url);
r.load();
r.play();
$("#radio").addClass("play");
$("#radio-btn").addClass("teal-text");
$("#radio-sta").html("<br>Now Playing:" + name);
$("#radio").attr('src', url)
r.load()
r.play()
$("#radio").addClass("play")
$("#radio-btn").addClass("teal-text")
$("#radio-sta").html("<br>Now Playing:" + name)
}
function Rstop() {
$("#radio").attr("src", "");
r.pause();
$("#radio").removeClass("play");
$("#radio-btn").removeClass("teal-text");
$("#radio-sta").html("");
$("#radio").attr("src", "")
r.pause()
$("#radio").removeClass("play")
$("#radio-btn").removeClass("teal-text")
$("#radio-sta").html("")
}
function Ryourself() {
$("#radio-input").removeClass("hide");
$("#radio-view").addClass("hide");
$("#radio-input").removeClass("hide")
$("#radio-view").addClass("hide")
}
function Rselect() {
$("#radio-input").addClass("hide");
$("#radio-view").removeClass("hide");
$("#radio-input").addClass("hide")
$("#radio-view").removeClass("hide")
}
function Rinput() {
var url = $("#radio-url").val();
var url = $("#radio-url").val()
Rplay(url, url)
}
/*

View File

@@ -3,7 +3,7 @@ var envView = new Vue({
el: '#envView',
data: { config: envConstruction },
methods: {
complete: function(i, val) {
complete: function (i, val) {
var ls = envView.config[i].storage
M.toast({ html: 'Complete', displayLength: 3000 })
if (!val) {
@@ -21,14 +21,14 @@ var envView = new Vue({
frameSet(val)
}
return true
}
}
},
},
})
var tlView = new Vue({
el: '#tlView',
data: { config: tlConstruction },
methods: {
complete: function(i, val) {
complete: function (i, val) {
var ls = tlView.config[i]
if (val) {
localStorage.setItem(ls.storage, val)
@@ -46,18 +46,18 @@ var tlView = new Vue({
}
}
return true
}
}
},
},
})
var postView = new Vue({
el: '#postView',
data: {
config: postConstruction,
kirishima: localStorage.getItem('kirishima'),
quoters: localStorage.getItem('quoters')
quoters: localStorage.getItem('quoters'),
},
methods: {
complete: function(i, val) {
complete: function (i, val) {
var ls = postView.config[i]
if (val) {
localStorage.setItem(ls.storage, val)
@@ -75,38 +75,22 @@ var postView = new Vue({
}
}
return true
}
}
},
},
})
//設定ボタン押した。
function settings() {
var cd = $('[name=theme]:checked').val()
var ct = $('[data-ct=' + 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')) {
M.toast({ html: lang.lang_setting_theme.replace('{{set}}', ct), displayLength: 3000 })
}
//テーマはこの場で設定
themes(cd)
localStorage.setItem('theme', cd)
}
var fontd = $('#font').val()
if (fontd) {
if (fontd != localStorage.getItem('font')) {
M.toast({ html: lang.lang_setting_font.replace('{{set}}', ct), displayLength: 3000 })
M.toast({ html: lang.lang_setting_font.replace('{{set}}', fontd), displayLength: 3000 })
}
localStorage.setItem('font', fontd)
themes()
} else {
if (localStorage.getItem('font')) {
localStorage.removeItem('font')
M.toast({ html: lang.lang_setting_font.replace('{{set}}', ct), displayLength: 3000 })
M.toast({ html: lang.lang_setting_font.replace('{{set}}', '"default"'), displayLength: 3000 })
themes()
}
}
@@ -114,6 +98,10 @@ function settings() {
//読み込み時の設定ロード
function load() {
var currentLang = lang.language
console.log(currentLang)
$(`#langsel-sel`).val(currentLang)
$('#langsel-sel').formSelect()
var max = envView.config.length
for (var i = 0; i < max; i++) {
var ls = envView.config[i].storage
@@ -167,16 +155,17 @@ function load() {
var font = ''
}
$('#font').val(font)
$('#c1-file').text(localStorage.getItem('custom1'))
$('#c2-file').text(localStorage.getItem('custom2'))
$('#c3-file').text(localStorage.getItem('custom3'))
$('#c4-file').text(localStorage.getItem('custom4'))
$('#c1-file').text(localStorage.getItem('custom1') != 'null' ? localStorage.getItem('custom1') : '')
$('#c2-file').text(localStorage.getItem('custom2') != 'null' ? localStorage.getItem('custom2') : '')
$('#c3-file').text(localStorage.getItem('custom3') != 'null' ? localStorage.getItem('custom3') : '')
$('#c4-file').text(localStorage.getItem('custom4') != 'null' ? localStorage.getItem('custom4') : '')
var cvol = localStorage.getItem('customVol')
if (cvol) {
$('#soundvol').val(cvol * 100)
$('#soundVolVal').text(cvol * 100)
}
//$("#log").val(localStorage.getItem("errors"))
$('#lastFmUser').val(localStorage.getItem('lastFmUser'))
}
function customVol() {
var cvol = $('#soundvol').val()
@@ -215,7 +204,7 @@ function climute() {
return
}
var templete
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var cli = obj[key]
var list = key * 1 + 1
templete =
@@ -250,7 +239,7 @@ function wordmute() {
obj = []
}
$('#wordmute').chips({
data: obj
data: obj,
})
}
function wordmuteSave() {
@@ -266,7 +255,7 @@ function wordemp() {
obj = []
}
$('#wordemp').chips({
data: obj
data: obj,
})
}
function wordempSave() {
@@ -278,7 +267,7 @@ function notftest() {
var os = localStorage.getItem('platform')
var options = {
body: lang.lang_setting_notftest + '(' + lang.lang_setting_notftestprof + ')',
icon: localStorage.getItem('prof_0')
icon: localStorage.getItem('prof_0'),
}
var n = new Notification('TheDesk' + lang.lang_setting_notftest, options)
}
@@ -298,12 +287,14 @@ function oksload() {
$('#oks-3').val(localStorage.getItem('oks-3'))
}
}
function changelang(lang) {
postMessage(['lang', lang], '*')
function changeLang() {
const lang = $('#langsel-sel').val()
console.log(lang)
if(lang) postMessage(['lang', lang], '*')
}
function exportSettings() {
var exp = exportSettingsCore()
$("#imp-exp").val(JSON5.stringify(exp))
$('#imp-exp').val(JSON5.stringify(exp))
Swal.fire({
title: lang.lang_setting_exportwarn,
type: 'warning',
@@ -311,8 +302,8 @@ function exportSettings() {
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then(result => {
cancelButtonText: lang.lang_no,
}).then((result) => {
if (result.value) {
postMessage(['exportSettings', ''], '*')
}
@@ -351,11 +342,7 @@ function exportSettingsCore() {
config.font = localStorage.getItem('font')
exp.config = config
//keysc
exp.ksc = [
localStorage.getItem('oks-1'),
localStorage.getItem('oks-2'),
localStorage.getItem('oks-3')
]
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)
@@ -375,8 +362,12 @@ function exportSettingsCore() {
//tags
var tagarr = localStorage.getItem('tag')
var favtag = JSON.parse(tagarr)
exp.favoriteTags = favtag
exp.revisons = 2.1
//plugins
var plugins = localStorage.getItem('plugins')
var plugin = JSON.parse(plugins)
exp.plugins = plugin
exp.revisons = 2.2
exp.meta = {}
exp.meta.date = new Date()
exp.meta.thedesk = localStorage.getItem('ver')
@@ -384,8 +375,8 @@ function exportSettingsCore() {
return exp
}
function importSettings() {
if($("#imp-exp").val()) {
importSettingsCore(JSON5.parse($("#imp-exp").val()))
if ($('#imp-exp').val()) {
importSettingsCore(JSON5.parse($('#imp-exp').val()))
return false
}
Swal.fire({
@@ -395,8 +386,8 @@ function importSettings() {
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then(result => {
cancelButtonText: lang.lang_no,
}).then((result) => {
if (result.value) {
postMessage(['importSettings', ''], '*')
}
@@ -414,6 +405,7 @@ function importSettingsCore(obj) {
localStorage.setItem('prof_' + key, acct.prof)
localStorage.setItem('domain_' + key, acct.domain)
localStorage.setItem('acct_' + key + '_at', acct.at)
localStorage.setItem('acct_' + key + '_rt', acct.rt ? acct.rt : null)
}
localStorage.setItem('column', JSON.stringify(obj.columns))
if (obj.config) {
@@ -490,7 +482,7 @@ function importSettingsCore(obj) {
} else {
Swal.fire({
type: 'error',
title: 'Error'
title: 'Error',
})
}
}
@@ -505,50 +497,45 @@ 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 +
'" onclick="insertFont(\'' +
font +
'\')">' +
font +
'</div>'
)
$('#fonts').append('<div class="font pointer" style="font-family:' + font + '" onclick="insertFont(\'' + font + '\')">' + font + '</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
function copyColor(from, to) {
let props = [
'background', 'subcolor', 'text', 'accent',
'modal', 'modalFooter', 'third', 'forth',
'bottom', 'emphasized', 'postbox', 'active',
'selected', 'selectedWithShared'
]
let i = 0
let color
for (tag of props) {
if (tag == from) {
let used = $(`#use-color_${i}`).prop('checked')
if (!used) {
Swal.fire({
type: 'error',
title: 'Not checked',
})
break
}
},
strings: {
save: 'Save', // Default for save button
clear: 'Clear' // Default for clear button
color = $(`#color-picker${i}_value`).val()
break
}
})
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)
})
i++
}
if (!color) return false
for (tag of props) {
if (tag == to) {
$(`#color-picker${i}_value`).val(color)
$(`#use-color_${i}`).prop('checked', true)
break
}
i++
}
}
function customComp() {
var nameC = $('#custom_name').val()
@@ -556,59 +543,32 @@ function customComp() {
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 bgC = $('#color-picker0_value').val()
var subcolorC = $('#color-picker2_value').val()
var textC = $('#color-picker1_value').val()
var accentC = $('#color-picker3_value').val()
var multi = localStorage.getItem('multi')
if ($('#pickers').hasClass('advanceTheme')) {
var accentC = $('#color-picker3_value').val()
if (!accentC) {
accentC = null
let advanced = [
'modal', 'modalFooter', 'third', 'forth',
'bottom', 'emphasized', 'postbox', 'active',
'selected', 'selectedWithShared'
]
var advanceTheme = {}
let i = 4
for (tag of advanced) {
let used = $(`#use-color_${i}`).prop('checked')
if (used) {
advanceTheme[tag] = $(`#color-picker${i}_value`).val()
}
var activeC = $('#color-picker4_value').val()
if (!activeC) {
activeC = null
}
var modalC = $('#color-picker5_value').val()
if (!modalC) {
modalC = null
}
var bottomC = $('#color-picker6_value').val()
if (!bottomC) {
bottomC = null
}
var postboxC = $('#color-picker7_value').val()
if (!postboxC) {
postboxC = null
}
var subcolorC = $('#color-picker8_value').val()
if (!subcolorC) {
subcolorC = null
}
var advanceTheme = {
TheDeskAccent: accentC,
TheDeskActive: activeC,
TheDeskModal: modalC,
TheDeskBottom: bottomC,
TheDeskPostbox: postboxC,
TheDeskSubcolor: subcolorC
}
} else {
var advanceTheme = {}
i++
}
var my = JSON.parse(multi)[0].name
var id = $('#custom-edit-sel').val()
if (id == 'add_new') {
const defaults = [
'black', 'blue', 'brown', 'green', 'indigo', 'polar', 'snow', 'white'
]
if (id == 'add_new' || defaults.includes(id)) {
id = makeCID()
}
localStorage.setItem('customtheme-id', id)
@@ -617,28 +577,48 @@ function customComp() {
author: my,
desc: descC,
base: $('[name=direction]:checked').val(),
vars: {
primary: primaryC,
secondary: secondaryC,
text: textC
primary: {
background: bgC,
subcolor: subcolorC,
text: textC,
accent: accentC
},
props: advanceTheme,
id: id
advanced: advanceTheme,
id: id,
version: '2'
}
$('#custom_json').val(JSON.stringify(json))
themes('custom')
$('#custom').prop('checked', true)
$('#custom_name').val('')
$('#custom_desc').val('')
$('#dark').prop('checked', true)
$('#custom_json').val('')
for (var i = 0; i <= 8; i++) {
$('#color-picker' + i + '-wrap').html(
'<div class="color-picker" id="color-picker' + i + '"></div>'
)
$('#color-picker' + i + '_value').val('')
pickerDefine(i, 'fff')
}
let timerInterval
Swal.fire({
title: 'Saving...',
html: '',
timer: 1000,
timerProgressBar: true,
onBeforeOpen: () => {
Swal.showLoading()
},
onClose: () => {
clearInterval(timerInterval)
}
}).then((result) => {
themes()
ctLoad()
Swal.fire({
title: 'Refreshing...',
html: '',
timer: 1000,
timerProgressBar: true,
onBeforeOpen: () => {
Swal.showLoading()
},
onClose: () => {
clearInterval(timerInterval)
}
}).then((result) => {
$('#custom-edit-sel').val(id)
$('select').formSelect()
})
})
postMessage(['themeJsonCreate', JSON.stringify(json)], '*')
}
function deleteIt() {
@@ -647,37 +627,34 @@ function deleteIt() {
$('#custom_desc').val('')
$('#dark').prop('checked', true)
$('#custom_json').val('')
for (var i = 0; i <= 8; i++) {
$('#color-picker' + i + '-wrap').html(
'<div class="color-picker" id="color-picker' + i + '"></div>'
)
for (var i = 0; i <= 13; i++) {
if (i >= 4) $(`#use-color_${i}`).prop('checked', false)
$('#color-picker' + i + '_value').val('')
pickerDefine(i, 'fff')
}
postMessage(['themeJsonDelete', id], '*')
postMessage(['themeJsonDelete', id + '.thedesktheme'], '*')
}
function ctLoad() {
postMessage(['sendSinmpleIpc', 'theme-json-list'], '*')
}
function ctLoadCore(args) {
var templete = ''
Object.keys(args).forEach(function(key) {
var template = ''
var editTemplate = ''
Object.keys(args).forEach(function (key) {
var theme = args[key]
var themeid = theme.id
templete = templete + '<option value="' + themeid + '">' + theme.name + '</option>'
template = template + `<option value="${themeid}">${theme.name}${theme.compatible ? `(${lang.lang_setting_compat})` : ''}</option>`
if (!theme.compatible) editTemplate = editTemplate + `<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)
$('#custom-sel-sel').html(template)
editTemplate = '<option value="add_new">' + $('#edit-selector').attr('data-add') + '</option>' + editTemplate
$('#custom-edit-sel').html(editTemplate)
$('#custom-sel-sel').val(localStorage.getItem('customtheme-id'))
$('select').formSelect()
}
function customSel() {
var id = $('#custom-sel-sel').val()
localStorage.setItem('customtheme-id', id)
themes(id)
}
function custom() {
var id = $('#custom-edit-sel').val()
@@ -686,62 +663,47 @@ function custom() {
$('#custom_desc').val('')
$('#dark').prop('checked', true)
$('#custom_json').val('')
for (var i = 0; i <= 8; i++) {
$('#color-picker' + i + '-wrap').html(
'<div class="color-picker" id="color-picker' + i + '"></div>'
)
for (var i = 0; i <= 13; i++) {
if (i >= 4) $(`#use-color_${i}`).prop('checked', false)
$('#color-picker' + i + '_value').val('')
pickerDefine(i, 'fff')
}
$('#delTheme').addClass('disabled')
} else {
$('#delTheme').removeClass('disabled')
postMessage(['themeJsonRequest', id], '*')
postMessage(['themeJsonRequest', id + '.thedesktheme'], '*')
}
}
function customConnect(raw) {
var args = raw[0]
$('#custom_name').val(args.name)
$('#custom_desc').val(args.desc)
$('#custom_name').val(`${args.name} ${args.default ? 'Customed' : ''}`)
$('#custom_desc').val(args.default ? 'TheDesk default theme with some changes by user' : args.desc)
$('#' + args.base).prop('checked', true)
//Primary
$('#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)
//Secondary
$('#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)
//Background
$('#color-picker0_value').val(args.primary.background)
//Text
$('#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))
//TheDesk Only
advancedConncet(args, 'TheDeskAccent', 'secondary', 3)
advancedConncet(args, 'TheDeskActive', 'primary', 4)
advancedConncet(args, 'TheDeskModal', 'secondary', 5)
advancedConncet(args, 'TheDeskBottom', 'primary', 6)
advancedConncet(args, 'TheDeskPostbox', 'primary', 7)
advancedConncet(args, 'TheDeskSubcolor', 'primary', 8)
$('#custom_json').val(raw[1])
}
function advancedConncet(args, tar, sub, i) {
if (args.props) {
if (args.props[tar]) {
var color = args.props[tar]
$('#pickers').addClass('advanceTheme')
$('.advanced').removeClass('hide')
} else {
var color = args.vars[sub]
$('#color-picker1_value').val(args.primary.text)
//Subcolor
$('#color-picker2_value').val(args.primary.subcolor)
//Accent
$('#color-picker3_value').val(args.primary.accent)
let advanced = [
'modal', 'modalFooter', 'third', 'forth',
'bottom', 'emphasized', 'postbox', 'active',
'selected', 'selectedWithShared'
]
let i = 4
for (tag of advanced) {
if (args.advanced[tag]) {
$(`#color-picker${i}_value`).val(args.advanced[tag])
}
} else {
var color = args.vars[sub]
$(`#use-color_${i}`).prop('checked', true)
i++
}
$('#custom_json').val(raw[1])
if (args.default) {
$('#delTheme').addClass('disabled')
}
$('#color-picker' + i + '-wrap').html(
'<div class="color-picker" id="color-picker' + i + '"></div>'
)
$('#color-picker' + i + '_value').val(color)
pickerDefine(i, rgbToHex(color))
}
function customImp() {
var json = $('#custom_import').val()
@@ -750,7 +712,7 @@ function customImp() {
} else {
Swal.fire({
type: 'error',
title: 'Error'
title: 'Error',
})
}
}
@@ -775,9 +737,110 @@ function customSound(key) {
}
function customSoundSave(key, file) {
localStorage.setItem('custom' + key, file)
$('#c1-file').text(file)
$(`#c${key}-file`).text(file)
}
window.onload = function() {
function pluginLoad() {
$('#plugin-edit-sel').val('add_new')
$(".plugin_delete").addClass('disabled')
var template = ''
var pgns = localStorage.getItem('plugins')
var args = JSON.parse(pgns ? pgns : '[]')
Object.keys(args).forEach(function (key) {
var theme = args[key]
var themeid = theme.id
template = template + `<option value="${themeid}">${getMeta(theme.content).name}</option>`
})
template = '<option value="add_new">' + $('#plugin-selector').attr('data-add') + '</option>' + template
$('#plugin-edit-sel').html(template)
$('select').formSelect()
}
function pluginEdit() {
var id = $('#plugin-edit-sel').val()
$('#plugin').attr('data-id', id)
if (id == 'add_new') {
$('#plugin').val('')
$(".plugin_delete").addClass('disabled')
} else {
$(".plugin_delete").removeClass('disabled')
var pgns = localStorage.getItem('plugins')
var args = JSON.parse(pgns ? pgns : '[]')
Object.keys(args).forEach(function (key) {
var plugin = args[key]
var targetId = plugin.id
if (targetId == id) $('#plugin').val(plugin.content)
})
}
}
function completePlugin(comp) {
var pgns = localStorage.getItem('plugins')
var args = JSON.parse(pgns ? pgns : '[]')
var id = $('#plugin').attr('data-id')
var inputPlugin = $('#plugin').val()
var meta = getMeta(inputPlugin)
if (!meta) {
Swal.fire({
icon: 'error',
title: 'error',
})
return false
}
if (!meta.name || !meta.version || !meta.event || !meta.author) {
Swal.fire({
icon: 'error',
title: 'error',
})
return false
}
if (id == 'add_new') {
id = makeCID()
args.push({
id: id,
content: inputPlugin
})
} else {
Object.keys(args).forEach(function (key) {
var plugin = args[key]
var targetId = plugin.id
if (targetId == id) args[key].content = inputPlugin
})
}
var ss = args
localStorage.setItem('plugins', JSON.stringify(ss))
if(comp) return false
$('#plugin').attr('data-id', 'add_new')
$('#plugin').val('')
pluginLoad()
}
async function deletePlugin() {
const alert = await Swal.fire({
title: 'delete',
icon: 'warning',
showCancelButton: true
})
if (!alert) return false
$('#plugin').val('')
var pgns = localStorage.getItem('plugins')
var args = JSON.parse(pgns ? pgns : '[]')
var id = $('#plugin').attr('data-id')
$('#plugin').attr('data-id', 'add_new')
var ss = []
Object.keys(args).forEach(function (key) {
var plugin = args[key]
var targetId = plugin.id
if (targetId != id) ss.push(plugin)
})
localStorage.setItem('plugins', JSON.stringify(ss))
pluginLoad()
}
function execEditPlugin() {
completePlugin(true)
var id = $('#plugin').attr('data-id')
var inputPlugin = $('#plugin').val()
var meta = getMeta(inputPlugin)
execPlugin(id, meta.event, { acct_id: 0, id: null })
}
window.onload = function () {
//最初に読む
load()
climute()
@@ -787,17 +850,15 @@ window.onload = function() {
voiceSettingLoad()
oksload()
ctLoad()
pluginLoad()
$('body').addClass(localStorage.getItem('platform'))
}
//設定画面で未読マーカーは要らない
function asReadEnd() {
postMessage(['asReadComp', ''], '*')
}
function checkupd() {
if (
localStorage.getItem('winstore') == 'brewcask' ||
localStorage.getItem('winstore') == 'snapcraft' ||
localStorage.getItem('winstore') == 'winstore'
) {
if (localStorage.getItem('winstore') == 'brewcask' || localStorage.getItem('winstore') == 'snapcraft' || localStorage.getItem('winstore') == 'winstore') {
var winstore = true
} else {
var winstore = false
@@ -805,22 +866,22 @@ function checkupd() {
var ver = localStorage.getItem('ver')
var start = 'https://thedesk.top/ver.json'
fetch(start, {
method: 'GET'
method: 'GET',
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(mess) {
.then(function (mess) {
console.table(mess)
if (mess) {
var platform = localStorage.getItem('platform')
@@ -833,13 +894,13 @@ function checkupd() {
Swal.fire({
type: 'info',
title: lang.lang_setting_noupd,
html: ver
html: ver,
})
} else if (ver.indexOf('beta') != -1 || winstore) {
Swal.fire({
type: 'info',
title: lang.lang_setting_thisisbeta,
html: ver
html: ver,
})
} else {
localStorage.removeItem('new-ver-skip')
@@ -848,3 +909,13 @@ function checkupd() {
}
})
}
function lastFmSet() {
if ($('#lastFmUser').val()) {
localStorage.setItem('lastFmUser', $('#lastFmUser').val())
} else {
localStorage.removeItem('lastFmUser')
}
M.toast({ html: 'Complete: last.fm', displayLength: 3000 })
}
function stopVideo() { return false }

View File

@@ -1,44 +1,44 @@
//ソートデータ読み込み
function sortLoad () {
$("#sort").html("");
var col = localStorage.getItem("column");
$("#sort").html("")
var col = localStorage.getItem("column")
if (col) {
var obj = JSON.parse(col);
var obj = JSON.parse(col)
}
Object.keys(obj).forEach(function (key) {
var acct = obj[key];
var flag = "false";
var acct = obj[key]
var flag = "false"
if (localStorage.getItem("card_" + key) == "true") {
flag = "true"
}
var insert = "";
var insert = ""
if (acct.background) {
if (acct.text == "def") {
} else {
if (acct.text == "black") {
var txhex = "000000";
var txhex = "000000"
} else if (acct.text == "white") {
var txhex = "ffffff";
var txhex = "ffffff"
}
insert = ' style="background-color:#' + acct.background + '; color: #' + txhex + '" ';
insert = ' style="background-color:#' + acct.background + '; color: #' + txhex + '" '
}
}
var user = localStorage.getItem("user_" + acct.domain);
var domain = localStorage.getItem("domain_" + acct.domain);
var user = localStorage.getItem("user_" + acct.domain)
var domain = localStorage.getItem("domain_" + acct.domain)
if (!user || !domain) {
var acctdata = "";
var acctdata = ""
} else {
var acctdata = user + "@" + domain;
var acctdata = user + "@" + domain
}
var html = '<li class="drag-content" data-id="' + key + '" data-flag="' + flag + '"' + insert + '><div class="sorticon"><i class="material-icons">' + icon(acct.type) + '</i></div><div class="sorttitle">' + cap(acct.type, escapeHTML(acct.data), acct.domain) + '</div><div class="sortaction"><a onclick="goColumn(' + key +
var html = '<li class="drag-content" data-id="' + key + '" data-flag="' + flag + '"' + insert + '><div class="sorticon"><i class="material-icons">' + icon(acct.type) + '</i></div><div class="sorttitle">' + cap(acct.type, acct.data, acct.domain) + '</div><div class="sortaction"><a onclick="goColumn(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_sort_gothis + '">forward</i></a> <a onclick="removeColumn(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムを削除">cancel</i></a></div><div class="sortacct">' + acctdata + '</div></li>';
$("#sort").append(html);
});
drag();
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムを削除">cancel</i></a></div><div class="sortacct">' + acctdata + '</div></li>'
$("#sort").append(html)
})
drag()
}
//TLのタイトル
@@ -62,59 +62,59 @@ function Scap(type, data) {
} else if (type == "tootsearch") {
return "tootsearch(" + data + ")"
} else {
console.error("unknown timeline type: " + type);
console.error("unknown timeline type: " + type)
}
}
//jquery-ui依存
function drag() {
$('#sort').sortable();
$('#sort').disableSelection();
$('#sort').sortable()
$('#sort').disableSelection()
}
//ソート指定
function sort() {
var arr = [];
var flags = [];
var arr = []
var flags = []
$(".drag-content").each(function (i, elem) {
var id = $(this).attr("data-id");
var flag = $(this).attr("data-flag");
var id = $(this).attr("data-id")
var flag = $(this).attr("data-flag")
arr.push(id)
flags.push(flag);
});
var col = localStorage.getItem("column");
var obj = JSON.parse(col);
var newobj = [];
flags.push(flag)
})
var col = localStorage.getItem("column")
var obj = JSON.parse(col)
var newobj = []
for (i = 0; i < arr.length; i++) {
var data = obj[arr[i]];
var data = obj[arr[i]]
var add = {
domain: data.domain,
type: data.type,
data: data.data,
background: data.background,
text: data.text
};
newobj.push(add);
}
newobj.push(add)
if (flags[i] == "true") {
localStorage.setItem("card_" + i, "true");
localStorage.setItem("card_" + i, "true")
} else {
localStorage.removeItem("card_" + i);
localStorage.removeItem("card_" + i)
}
}
var json = JSON.stringify(newobj);
localStorage.setItem("column", json);
$("#sort").html("");
var json = JSON.stringify(newobj)
localStorage.setItem("column", json)
$("#sort").html("")
M.toast({ html: "Sorted", displayLength: 3000 })
sortLoad();
parseColumn();
sortLoad()
parseColumn()
sortMenu()
}
//ソートボタントグル
function sortMenu() {
$("#left-menu div").removeClass("active");
$("#sortMenu").addClass("active");
$(".menu-content").addClass("hide");
$("#sort-box").removeClass("hide");
$("#sort").html("");
sortLoad();
$("#left-menu a").removeClass("active")
$("#sortMenu").addClass("active")
$(".menu-content").addClass("hide")
$("#sort-box").removeClass("hide")
$("#sort").html("")
sortLoad()
}

View File

@@ -1,216 +1,338 @@
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";
var platform = localStorage.getItem("platform");
if (platform == "win32") {
postMessage(["openUrl", auth], "*");
postMessage(["sendSinmpleIpc", "quit"], "*");
} else {
auth = auth + "&state=code";
$("#spotify-code-show").removeClass("hide");
postMessage(["openUrl", auth], "*");
}
var auth = 'https://spotify.thedesk.top/connect'
$('#spotify-code-show').removeClass('hide')
postMessage(['openUrl', auth], '*')
}
function spotifyAuth() {
var code = $("#spotify-code").val();
localStorage.setItem("spotify", "code");
localStorage.setItem("spotify-refresh", code);
$("#spotify-code-show").addClass("hide");
$("#spotify-enable").addClass("disabled");
$("#spotify-disable").removeClass("disabled");
var code = $('#spotify-code').val()
localStorage.setItem('spotify-token', code)
$('#spotify-code-show').addClass('hide')
$('#spotify-enable').addClass('disabled')
$('#spotify-disable').removeClass('disabled')
}
function spotifyDisconnect() {
localStorage.removeItem("spotify");
localStorage.removeItem("spotify-refresh");
checkSpotify();
var start = 'https://spotify.thedesk.top/disconnect?code=' + localStorage.getItem('spotify-token')
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
},
})
.then(function (response) {
if (!response.ok) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
if (!json.success) alert('error')
localStorage.removeItem('spotify-token')
checkSpotify()
})
}
function checkSpotify() {
if (localStorage.getItem("spotify")) {
$("#spotify-enable").addClass("disabled");
$("#spotify-disable").removeClass("disabled");
if (localStorage.getItem('spotify-token')) {
$('#spotify-enable').addClass('disabled')
$('#spotify-disable').removeClass('disabled')
} else {
$("#spotify-enable").removeClass("disabled");
$("#spotify-disable").addClass("disabled");
$('#spotify-enable').removeClass('disabled')
$('#spotify-disable').addClass('disabled')
}
var content = localStorage.getItem("np-temp");
if (!content || content == "" || content == "null") {
var content = "#NowPlaying {song} / {album} / {artist}\n{url} #SpotifyWithTheDesk";
var content = localStorage.getItem('np-temp')
if (!content || content == '' || content == 'null') {
var content = '#NowPlaying {song} / {album} / {artist}\n{url} #SpotifyWithTheDesk'
}
$("#np-temp").val(content);
var flag = localStorage.getItem("artwork");
$('#np-temp').val(content)
var flag = localStorage.getItem('artwork')
if (flag) {
$("#awk_yes").prop("checked", true);
$('#awk_yes').prop('checked', true)
} else {
$("#awk_no").prop("checked", true);
$('#awk_no').prop('checked', true)
}
var flag2 = localStorage.getItem("complete-artwork");
var flag2 = localStorage.getItem('complete-artwork')
if (flag2) {
$("#amw_yes").prop("checked", true);
$('#amw_yes').prop('checked', true)
} else {
$("#amw_no").prop("checked", true);
$('#amw_no').prop('checked', true)
}
var flag3 = localStorage.getItem('control-center-np')
if (flag3) {
$('#cmw_yes').prop('checked', true)
} else {
$('#cmw_no').prop('checked', true)
}
}
function spotifyFlagSave() {
var awk = $("[name=awk]:checked").val();
if (awk == "yes") {
localStorage.setItem("artwork", "yes");
M.toast({ html: lang.lang_spotify_img, displayLength: 3000 });
var awk = $('[name=awk]:checked').val()
if (awk == 'yes') {
localStorage.setItem('artwork', 'yes')
M.toast({ html: lang.lang_spotify_img, displayLength: 3000 })
} else {
localStorage.removeItem("artwork");
M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 });
localStorage.removeItem('artwork')
M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 })
}
}
function aMusicFlagSave() {
var awk = $("[name=amw]:checked").val();
if (awk == "yes") {
localStorage.setItem("complete-artwork", "yes");
M.toast({ html: lang.lang_spotify_img, displayLength: 3000 });
var awk = $('[name=amw]:checked').val()
if (awk == 'yes') {
localStorage.setItem('complete-artwork', 'yes')
M.toast({ html: lang.lang_spotify_img, displayLength: 3000 })
} else {
localStorage.removeItem("complete-artwork");
M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 });
localStorage.removeItem('complete-artwork')
M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 })
}
}
function cMusicFlagSave() {
var awk = $('[name=cmw]:checked').val()
if (awk == 'yes') {
localStorage.setItem('control-center-np', 'yes')
M.toast({ html: 'コントロールセンターNPをオンにしました', displayLength: 3000 })
} else {
localStorage.removeItem('control-center-np')
M.toast({ html: 'コントロールセンターNPをオフにしました', displayLength: 3000 })
}
}
function nowplaying(mode) {
if (mode == "spotify") {
var start = "https://thedesk.top/now-playing?at=" + localStorage.getItem("spotify") + "&rt=" + localStorage.getItem("spotify-refresh");
var at = localStorage.getItem("spotify");
if (mode == 'spotify') {
var start = 'https://spotify.thedesk.top/current-playing?code=' + localStorage.getItem('spotify-token')
var at = localStorage.getItem('spotify-token')
if (at) {
fetch(start, {
method: "GET",
method: 'GET',
headers: {
"content-type": "application/json"
}
'content-type': 'application/json',
},
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text);
});
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json();
return response.json()
})
.catch(function(error) {
todo(error);
setLog(start, "JSON", error);
console.error(error);
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
console.table(json);
.then(function (jsonRaw) {
var code = jsonRaw.token
localStorage.setItem('spotify-token', code)
var json = jsonRaw.data
console.table(json)
if (json.length < 1) {
return false;
return false
}
var item = json.item;
var img = item.album.images[0].url;
var flag = localStorage.getItem("artwork");
var item = json.item
var img = item.album.images[0].url
var flag = localStorage.getItem('artwork')
if (flag) {
postMessage(["bmpImage", [img, 0]], "*");
postMessage(['bmpImage', [img, 0]], '*')
}
var content = localStorage.getItem("np-temp");
if (!content || content == "" || content == "null") {
var content = "#NowPlaying {song} / {album} / {artist}\n{url}";
var content = localStorage.getItem('np-temp')
if (!content || content == '' || content == 'null') {
var content = '#NowPlaying {song} / {album} / {artist}\n{url}'
}
var regExp = new RegExp("{song}", "g");
content = content.replace(regExp, item.name);
var regExp = new RegExp("{album}", "g");
content = content.replace(regExp, item.album.name);
var regExp = new RegExp("{artist}", "g");
content = content.replace(regExp, item.artists[0].name);
var regExp = new RegExp("{url}", "g");
content = content.replace(regExp, item.external_urls.spotify);
var regExp = new RegExp("{composer}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{hz}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{bitRate}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{lyricist}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{bpm}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{genre}", "g");
content = content.replace(regExp, "");
$("#textarea").val(content);
});
var regExp = new RegExp('{song}', 'g')
content = content.replace(regExp, item.name)
var regExp = new RegExp('{album}', 'g')
content = content.replace(regExp, item.album.name)
var regExp = new RegExp('{artist}', 'g')
content = content.replace(regExp, item.artists[0].name)
var regExp = new RegExp('{url}', 'g')
content = content.replace(regExp, item.external_urls.spotify)
var regExp = new RegExp('{composer}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{hz}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{bitRate}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{lyricist}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{bpm}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{genre}', 'g')
content = content.replace(regExp, '')
$('#textarea').val(content)
})
} else {
Swal.fire({
type: "info",
title: lang.lang_spotify_acct
});
type: 'info',
title: lang.lang_spotify_acct,
})
}
} else if (mode == 'itunes') {
postMessage(['itunes', ''], '*')
} else if (mode == 'anynp') {
postMessage(['itunes', 'anynp'], '*')
} else if (mode == 'lastFm') {
var user = localStorage.getItem('lastFmUser')
var start = 'https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=' + user + '&limit=1&api_key=8f113803bfea951b6dde9e56d32458b2&format=json'
if (user) {
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
},
})
.then(function (response) {
if (!response.ok) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
console.table(json)
if (!json || !json.recenttracks) {
console.error('no data')
return false
}
var item = json.recenttracks.track[0]
if (!item['@attr']) return false
var img = item.image[3]['#text']
var flag = localStorage.getItem('artwork')
if (flag && img != 'https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png' && img) {
postMessage(['bmpImage', [img, 0]], '*')
}
var content = localStorage.getItem('np-temp')
if (!content || content == '' || content == 'null') {
var content = '#NowPlaying {song} / {album} / {artist}\n{url}'
}
var regExp = new RegExp('{song}', 'g')
content = content.replace(regExp, item.name)
var regExp = new RegExp('{album}', 'g')
content = content.replace(regExp, item.album['#text'])
var regExp = new RegExp('{artist}', 'g')
content = content.replace(regExp, item.artist['#text'])
var regExp = new RegExp('{url}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{composer}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{hz}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{bitRate}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{lyricist}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{bpm}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{genre}', 'g')
content = content.replace(regExp, '')
$('#textarea').val(content)
})
} else {
Swal.fire({
type: 'info',
title: lang.lang_spotify_acct,
})
}
} else if (mode == "itunes") {
postMessage(["itunes", ""], "*");
}
}
async function npCore(arg) {
console.table(arg);
var content = localStorage.getItem("np-temp");
if (!content || content == "" || content == "null") {
var content = "#NowPlaying {song} / {album} / {artist}\n{url}";
console.table(arg)
if(arg.anynp) {
var flag = localStorage.getItem('artwork')
var q = arg.title
if (flag && localStorage.getItem('complete-artwork')) {
aaw = await getUnknownAA(q)
postMessage(['bmpImage', [aaw.aaw, 0]], '*')
}
$('#textarea').val(q)
return false
}
var flag = localStorage.getItem("artwork");
var platform = localStorage.getItem("platform");
if (platform == "win32") {
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')
var aaw = { aaw: '', album: '' }
if (platform == 'win32') {
if (flag && arg.path) {
media(arg.path, "image/png", "new");
media(arg.path, 'image/png', 'new')
}
} else if (platform == "darwin") {
} else if (platform == 'darwin') {
if (flag && arg.artwork) {
media(arg.artwork, "image/png", "new");
media(arg.artwork, 'image/png', 'new')
} else if (flag && localStorage.getItem('complete-artwork')) {
var q = arg.artist + ' ' + arg.album.name + ' ' + arg.name;
postMessage(["bmpImage", [await getUnknownAA(q), 0]], "*");
var q = arg.artist + ' ' + arg.album.name + ' ' + arg.name
aaw = await getUnknownAA(q)
postMessage(['bmpImage', [aaw.aaw, 0]], '*')
}
}
var regExp = new RegExp("{song}", "g");
content = content.replace(regExp, arg.name);
var regExp = new RegExp("{album}", "g");
var regExp = new RegExp('{song}', 'g')
content = content.replace(regExp, arg.name)
var regExp = new RegExp('{album}', 'g')
if (arg.album) {
if (arg.album.name) {
content = content.replace(regExp, arg.album.name);
content = content.replace(regExp, arg.album.name)
} else {
if (aaw.album) content = content.replace(regExp, aaw.album)
content = content.replace(regExp, '-')
}
} else {
if (aaw.album) content = content.replace(regExp, aaw.album)
content = content.replace(regExp, '-')
}
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);
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);
M.toast({ html: lang.lang_spotify_np, displayLength: 3000 });
var temp = $('#np-temp').val()
localStorage.setItem('np-temp', temp)
M.toast({ html: lang.lang_spotify_np, displayLength: 3000 })
}
if (location.search) {
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
var mode = m[1];
var codex = m[2];
if (mode == "spotify") {
var coder = codex.split(":");
localStorage.setItem("spotify", coder[0]);
localStorage.setItem("spotify-refresh", coder[1]);
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/)
var mode = m[1]
var codex = m[2]
if (mode == 'spotify') {
var coder = codex.split(':')
localStorage.setItem('spotify', coder[0])
localStorage.setItem('spotify-refresh', coder[1])
} else {
}
}
async function getUnknownAA(q) {
const start = 'https://itunes.apple.com/search?term=' + q + '&country=JP&entity=song'
let promise = await fetch(start, {
method: 'GET'
method: 'GET',
})
const json = await promise.json()
if(!json.resultCount) {
if (!json.resultCount) {
return []
}
const data = json.results[0].artworkUrl100
return data.replace(/100x100/, '512x512')
}
return { aaw: data.replace(/100x100/, '512x512'), album: json.results[0].collectionName }
}

View File

@@ -1,35 +1,20 @@
//テーマ適用
function themes(theme) {
if (!theme) {
var theme = localStorage.getItem('theme')
var theme = localStorage.getItem('customtheme-id')
if (!theme) {
var theme = 'black'
localStorage.setItem('theme', 'black')
localStorage.setItem('customtheme-id', 'black')
theme = 'black'
}
}
postMessage(['themeCSSRequest', theme + '.thedesktheme'], '*')
var el = document.getElementsByTagName('html')[0]
el.classList.remove('indigotheme')
el.classList.remove('greentheme')
el.classList.remove('browntheme')
el.classList.remove('blacktheme')
el.classList.remove('bluetheme')
el.classList.remove('polartheme')
el.classList.remove('snowtheme')
el.classList.remove('customtheme')
el.classList.add(theme + 'theme')
el.style.backgroundColor = 'var(--bg)'
var font = localStorage.getItem('font')
if (font) {
font = font.replace(/"(.+)"/, '$1')
el.style.fontFamily = '"' + font + '"'
if(font) {
el.style.fontFamily = font
} else {
el.style.fontFamily = ''
}
if (theme == 'custom') {
if (localStorage.getItem('customtheme-id')) {
postMessage(['themeCSSRequest', localStorage.getItem('customtheme-id')], '*')
}
}
el.style.backgroundColor = 'var(--bg)'
}
themes()

View File

@@ -19,7 +19,7 @@ function bottomReverse() {
localStorage.setItem('reverse', 'true')
}
}
function tips(mode) {
function tips(mode, custom) {
postMessage(['sendSinmpleIpc', 'endmem'], '*')
clearInterval(clockint)
clearInterval(spotStart)
@@ -30,7 +30,7 @@ function tips(mode) {
localStorage.getItem('ver') +
' git: ' +
gitHash +
'\')">TheDesk ' +
'\')"> ' +
localStorage.getItem('ver') +
' {' +
gitHash.slice(0, 7) +
@@ -57,22 +57,31 @@ function tips(mode) {
tipsToggle()
localStorage.setItem('tips', 'itunes')
itunestips()
} else if (mode == 'custom') {
tipsToggle()
localStorage.setItem('tips', `custom:${custom}`)
execPlugin(custom, 'tips', null)
}
}
//メモリ
function startmem() {
postMessage(['sendSinmpleIpc', 'startmem'], '*')
}
function renderMem(use, cpu, total) {
function renderMem(use, cpu, total, core, uptime) {
let day = Math.floor(uptime / 60 / 60 / 24)
let hour = Math.floor(uptime / 60 /60 % 24)
if(hour < 10) hour = '0' + hour
let min = Math.floor(uptime / 60 % 60)
if(min < 10) min = '0' + min
let sec = Math.floor(uptime % 60)
if(sec < 10) sec = '0' + sec
let time = `${day ? day + ' days ' : ''}${hour ? hour + ':' : ''}${min}:${sec}`
//Intel
cpu = cpu.replace('Intel(R)', '').replace('(TM)', '').replace(' CPU', '')
//AMD
cpu = cpu.replace('AMD ', '').replace(/\s[0-9]{1,3}-Core\sProcessor/, '')
$('#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) +
'%)'
`${escapeHTML(cpu)} x ${core}<br />RAM: ${Math.floor(use / 1024 / 1024 / 102.4) / 10}/${Math.floor(total / 1024 / 1024 / 102.4) / 10}GB(${Math.floor((use / total) * 100)}%) UP:${time}`
)
}
//トレンドタグ
@@ -131,12 +140,8 @@ function trendTagonTip() {
spotint = null
function spotifytips() {
if (spotint) clearInterval(spotint)
var start =
'https://thedesk.top/now-playing?at=' +
localStorage.getItem('spotify') +
'&rt=' +
localStorage.getItem('spotify-refresh')
var at = localStorage.getItem('spotify')
var start = 'https://spotify.thedesk.top/current-playing?code=' + localStorage.getItem('spotify-token')
var at = localStorage.getItem('spotify-token')
if (at) {
fetch(start, {
method: 'GET',
@@ -157,8 +162,15 @@ function spotifytips() {
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function(jsonRaw) {
var code = jsonRaw.token
localStorage.setItem('spotify-token', code)
var json = jsonRaw.data
var ms = json.progress_ms
if(!ms) {
tips('ver')
return false
}
var last = 1000 - (ms % 1000)
var item = json.item
var img = item.album.images[0].url
@@ -193,12 +205,10 @@ function spotifytips() {
<i class="material-icons pointer" onclick="nowplaying('spotify');show()" style="font-size:20px">send</i>
</div>
<div id="spot-cover">
<img src="${img}" id="spot-img">
<img src="${img}" id="spot-img" draggable="false">
</div>
<div id="spot-name">
${escapeHTML(item.name)}
</div>
<div id="spot-artist">
<span class="gray sml" id="spot-art">${artisttxt}</span>
</div>
<div id="spot-time">
@@ -218,6 +228,8 @@ function spotifytips() {
type: 'info',
title: lang.lang_spotify_acct
})
tips('ver')
return false
}
}
function spotStart() {
@@ -288,6 +300,4 @@ function tipsToggle() {
$('#tips').toggleClass('hide')
$('#tips-menu').toggleClass('hide')
}
if (localStorage.getItem('tips')) {
tips(localStorage.getItem('tips'))
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,65 +1,65 @@
//プロフ編集
//文字系
function profedit() {
var acct_id = $('#his-data').attr("use-acct");
todo("Updating...");
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/accounts/update_credentials";
var name = $("#his-name-val").val();
var des = $("#his-des-val").val();
var httpreq = new XMLHttpRequest();
httpreq.open('PATCH', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
var acct_id = $('#his-data').attr("use-acct")
todo("Updating...")
var domain = localStorage.getItem("domain_" + acct_id)
var at = localStorage.getItem("acct_" + acct_id + "_at")
var start = "https://" + domain + "/api/v1/accounts/update_credentials"
var name = $("#his-name-val").val()
var des = $("#his-des-val").val()
var httpreq = new XMLHttpRequest()
httpreq.open('PATCH', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = "json"
httpreq.send(JSON.stringify({
display_name: name,
note: des,
}));
}))
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
$('#his-data').modal('close');
todc();
$('#his-data').modal('close')
todc()
}
}
}
//画像系
function imgChange(imgfile, target) {
var acct_id = $('#his-data').attr("use-acct");
var acct_id = $('#his-data').attr("use-acct")
todo("アップロードしています")
if (!imgfile.files.length) {
console.warn("No Image to upload");
return;
console.warn("No Image to upload")
return
}
var file = imgfile.files[0];
var fr = new FileReader();
var file = imgfile.files[0]
var fr = new FileReader()
fr.onload = function (evt) {
var b64 = this.result;
var blob = toBlob(b64, 'image/png');
var fd = new FormData();
fd.append(target, blob);
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/accounts/update_credentials";
var httpreq = new XMLHttpRequest();
httpreq.open('PATCH', start, true);
httpreq.upload.addEventListener("progress", progshow, false);
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send(fd);
var b64 = this.result
var blob = toBlob(b64, 'image/png')
var fd = new FormData()
fd.append(target, blob)
var domain = localStorage.getItem("domain_" + acct_id)
var at = localStorage.getItem("acct_" + acct_id + "_at")
var start = "https://" + domain + "/api/v1/accounts/update_credentials"
var httpreq = new XMLHttpRequest()
httpreq.open('PATCH', start, true)
httpreq.upload.addEventListener("progress", progshow, false)
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = "json"
httpreq.send(fd)
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
if(this.status!==200){ setLog(start, this.status, this.response); }
$('#his-data').modal('close');
todc();
localStorage.removeItem("image");
var json = httpreq.response
if(this.status!==200){ setLog(start, this.status, this.response) }
$('#his-data').modal('close')
todc()
localStorage.removeItem("image")
}
}
}
$("#prof-change").html($("#prof-change").html());
$("#header-change").html($("#header-change").html());
fr.readAsDataURL(file);
$("#prof-change").html($("#prof-change").html())
$("#header-change").html($("#header-change").html())
fr.readAsDataURL(file)
}

View File

@@ -1,31 +1,31 @@
//ユーザーデータ表示
localStorage.removeItem("history");
localStorage.removeItem("history")
//コード受信
if (location.search) {
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
var mode = m[1];
var codex = m[2];
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/)
var mode = m[1]
var codex = m[2]
if (mode == "user") {
udgEx(codex, "main");
udgEx(codex, "main")
}
}
function udgEx(user, acct_id) {
if (user == "selector") {
user = $("#his-acct").attr("fullname");
user = $("#his-acct").attr("fullname")
}
if (acct_id == "selector") {
acct_id = $("#user-acct-sel").val();
acct_id = $("#user-acct-sel").val()
}
if (acct_id == "main") {
acct_id = localStorage.getItem("main");
acct_id = localStorage.getItem("main")
}
console.log("Get user data of " + user);
var domain = localStorage.getItem("domain_" + acct_id);
console.log("Get user data of " + user)
var domain = localStorage.getItem("domain_" + acct_id)
if (localStorage.getItem("mode_" + domain) == "misskey") {
return false;
return false
}
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v2/search?resolve=true&q=" + encodeURIComponent(user);
var at = localStorage.getItem("acct_" + acct_id + "_at")
var start = "https://" + domain + "/api/v2/search?resolve=true&q=" + encodeURIComponent(user)
fetch(start, {
method: "GET",
headers: {
@@ -36,39 +36,39 @@ function udgEx(user, acct_id) {
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text);
});
setLog(response.url, response.status, text)
})
}
return response.json();
return response.json()
})
.catch(function(error) {
todo(error);
setLog(start, "JSON", error);
console.error(error);
todo(error)
setLog(start, "JSON", error)
console.error(error)
})
.then(function(json) {
if (json.accounts[0]) {
var id = json.accounts[0].id;
udg(id, acct_id);
var id = json.accounts[0].id
udg(id, acct_id)
} else {
postMessage(["openUrl", user], "*");
postMessage(["openUrl", user], "*")
}
});
return true;
})
return true
}
function udg(user, acct_id) {
reset();
reset()
if (!user) {
user = localStorage.getItem("user-id_" + acct_id);
user = localStorage.getItem("user-id_" + acct_id)
}
todo("User Data Loading...");
var domain = localStorage.getItem("domain_" + acct_id);
todo("User Data Loading...")
var domain = localStorage.getItem("domain_" + acct_id)
if (localStorage.getItem("mode_" + domain) == "misskey") {
misskeyUdg(user, acct_id);
return;
misskeyUdg(user, acct_id)
return
}
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/accounts/" + user;
var at = localStorage.getItem("acct_" + acct_id + "_at")
var start = "https://" + domain + "/api/v1/accounts/" + user
fetch(start, {
method: "GET",
headers: {
@@ -79,183 +79,188 @@ function udg(user, acct_id) {
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text);
});
setLog(response.url, response.status, text)
})
}
return response.json();
return response.json()
})
.catch(function(error) {
todo(error);
setLog(start, "JSON", error);
console.error(error);
todo(error)
setLog(start, "JSON", error)
console.error(error)
})
.then(function(json) {
//一つ前のユーザーデータ
if (!localStorage.getItem("history")) {
$("#his-history-btn").prop("disabled", true);
$("#his-history-btn").prop("disabled", true)
} else {
$("#his-history-btn").prop("disabled", false);
$("#his-data").attr("history", localStorage.getItem("history"));
$("#his-history-btn").prop("disabled", false)
$("#his-data").attr("history", localStorage.getItem("history"))
}
//moved設定時
if (json.moved) {
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);
$("#his-data").attr("use-acct", acct_id);
$("#his-data").modal("open")
$("#his-data").attr("user-id", user)
$("#his-data").attr("use-acct", acct_id)
if (json.username != json.acct) {
//Remote
$("#his-data").attr("remote", "true");
var fullname = json.acct;
$("#his-data").attr("remote", "true")
var fullname = json.acct
} else {
$("#his-data").attr("remote", "false");
var fullname = json.acct + "@" + domain;
$("#his-data").attr("remote", "false")
var fullname = json.acct + "@" + domain
}
utl(json.id, "", acct_id);
flw(json.id, "", acct_id);
fer(json.id, "", acct_id);
var dis_name = escapeHTML(json.display_name);
dis_name = twemoji.parse(dis_name);
utlShow(json.id, "", acct_id)
flw(json.id, "", acct_id)
fer(json.id, "", acct_id)
var dis_name = escapeHTML(json.display_name)
dis_name = twemoji.parse(dis_name)
var note = json.note;
var note = json.note
if (json.emojis) {
var actemojick = json.emojis[0];
var actemojick = json.emojis[0]
} else {
var actemojick = false;
var actemojick = false
}
//絵文字があれば
if (actemojick) {
Object.keys(json.emojis).forEach(function(key5) {
var emoji = json.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" draggable="false">';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
note = note.replace(regExp, emoji_url);
});
var emoji = json.emojis[key5]
var shortcode = emoji.shortcode
var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" draggable="false">'
var regExp = new RegExp(":" + shortcode + ":", "g")
dis_name = dis_name.replace(regExp, emoji_url)
note = note.replace(regExp, emoji_url)
})
}
//noteの解析
//var tags = '<a onclick="tl(\'tag\',\'$1\',' + acct_id +',\'add\')" class="pointer parsed">#$1</a>';
//var mens = '<a onclick="udgEx(\'$1\',' + acct_id +')" class="pointer parsed">@$1</a>';
//note=note.replace(/#(\S+)/gi, tags)
//note=note.replace(/\s@([a-zA-Z_0-9@.-]+)/gi, mens)
$("#his-name").html(dis_name);
$("#his-acct").text(json.acct);
$("#his-acct").attr("fullname", fullname);
$("#his-prof").attr("src", json.avatar);
$("#his-data").css("background-image", "url(" + json.header + ")");
$("#his-sta").text(json.statuses_count);
$("#his-follow").text(json.following_count);
var flerc = json.followers_count;
$("#his-name").html(dis_name)
$("#his-acct").text(json.acct)
$("#his-acct").attr("fullname", fullname)
$("#his-prof").attr("src", json.avatar)
$("#his-data").css("background-image", "url(" + json.header + ")")
$("#his-sta").text(json.statuses_count)
$("#his-follow").text(json.following_count)
var flerc = json.followers_count
if (flerc < 0) {
flerc = "-";
flerc = "-"
}
$("#his-follower").text(flerc);
$("#his-since").text(crat(json.created_at));
$("#his-openin").attr("data-href", json.url);
$("#his-follower").text(flerc)
$("#his-since").text(crat(json.created_at))
$("#his-openin").attr("data-href", json.url)
if (json.fields) {
var table = "";
var table = ""
if (json.fields.length > 0) {
$("#his-des").css("max-height", "250px");
table = '<table id="his-field">';
$("#his-des").css("max-height", "250px")
table = '<table id="his-field">'
for (var i = 0; i < json.fields.length; i++) {
var fname = json.fields[i].name;
var fval = json.fields[i].value;
var fname = json.fields[i].name
var fval = json.fields[i].value
if (json.fields[i].verified_at) {
var when = lang.lang_showontl_verified + ":" + crat(json.fields[i].verified_at);
var color = "rgba(121,189,154,.25);";
var when = lang.lang_showontl_verified + ":" + crat(json.fields[i].verified_at)
var color = "rgba(121,189,154,.25);"
} else {
var when = "";
var color = "inherit";
var when = ""
var color = "inherit"
}
table = table + '<tr><td class="his-field-title">' + escapeHTML(fname) + '</td><td class="his-field-content" title="' + when + '" style="background-color:' + color + '">' + fval + "</td></tr>";
table = table + '<tr><td class="his-field-title">' + escapeHTML(fname) + '</td><td class="his-field-content" title="' + when + '" style="background-color:' + color + '">' + fval + "</td></tr>"
}
table = table + "</table>";
$("#his-des").html(twemoji.parse(note));
table = table + "</table>"
$("#his-des").html(twemoji.parse(note))
} else {
$("#his-des").css("max-height", "400px");
$("#his-des").css("max-height", "400px")
}
$("#his-table").html(twemoji.parse(table));
$("#his-table").html(twemoji.parse(table))
} else {
$("#his-des").css("max-height", "400px");
$("#his-des").css("max-height", "400px")
}
$("#his-des").html(twemoji.parse(note));
$("#his-des").html(twemoji.parse(note))
if (json.bot) {
$("#his-bot").html(lang.lang_showontl_botacct);
$("#his-bot").html(lang.lang_showontl_botacct)
}
$("#his-des").attr("data-acct", acct_id);
$("#his-data").css("background-size", "cover");
$("#his-float-timeline").css("height", $("#his-data-show").height() + "px");
localStorage.setItem("history", user);
$("#his-des").attr("data-acct", acct_id)
$("#his-data").css("background-size", "cover")
$("#his-float-timeline").css("height", $("#his-data-show").height() + "px")
localStorage.setItem("history", user)
//自分の時
if (json.acct == localStorage.getItem("user_" + acct_id)) {
showFav("", acct_id);
showBlo("", acct_id);
showMut("", acct_id);
showDom("", acct_id);
showReq("", acct_id);
showFrl("", acct_id);
$("#his-name-val").val(json.display_name);
showFav("", acct_id)
showBlo("", acct_id)
showMut("", acct_id)
showDom("", acct_id)
showReq("", acct_id)
showFrl("", acct_id)
$("#his-name-val").val(json.display_name)
if (json.fields.length > 0) {
if (json.fields[0]) {
$("#his-f1-name").val(json.fields[0].name);
$("#his-f1-val").val($.strip_tags(json.fields[0].value));
$("#his-f1-name").val(json.fields[0].name)
$("#his-f1-val").val($.strip_tags(json.fields[0].value))
}
if (json.fields[1]) {
$("#his-f2-name").val(json.fields[1].name);
$("#his-f2-val").val($.strip_tags(json.fields[1].value));
$("#his-f2-name").val(json.fields[1].name)
$("#his-f2-val").val($.strip_tags(json.fields[1].value))
}
if (json.fields[2]) {
$("#his-f3-name").val(json.fields[2].name);
$("#his-f3-val").val($.strip_tags(json.fields[2].value));
$("#his-f3-name").val(json.fields[2].name)
$("#his-f3-val").val($.strip_tags(json.fields[2].value))
}
if (json.fields[3]) {
$("#his-f4-name").val(json.fields[3].name);
$("#his-f4-val").val($.strip_tags(json.fields[3].value));
$("#his-f4-name").val(json.fields[3].name)
$("#his-f4-val").val($.strip_tags(json.fields[3].value))
}
}
var des = json.note;
des = des.replace(/<br \/>/g, "\n");
des = $.strip_tags(des);
$("#his-des-val").val(des);
$("#his-follow-btn").hide();
$("#his-block-btn").hide();
$("#his-mute-btn").hide();
$("#his-notf-btn").hide();
$("#his-domain-btn").hide();
$("#his-emp-btn").hide();
$(".only-my-data").show();
$(".only-his-data").hide();
var des = json.note
des = des.replace(/<br \/>/g, "\n")
des = $.strip_tags(des)
$("#his-des-val").val(des)
$("#his-follow-btn").hide()
$("#his-block-btn").hide()
$("#his-mute-btn").hide()
$("#his-notf-btn").hide()
$("#his-domain-btn").hide()
$("#his-emp-btn").hide()
$(".only-my-data").show()
$(".only-his-data").hide()
if (localStorage.getItem("main") == acct_id) {
$("#his-main-acct").hide();
$("#his-main-acct").hide()
}
} else {
relations(user, acct_id);
$(".only-my-data").hide();
$(".only-his-data").show();
relations(user, acct_id)
$(".only-my-data").hide()
$(".only-his-data").show()
}
todc()
if(json.locked) {
$('#his-data').addClass('locked')
} else {
$('#his-data').removeClass('locked')
}
todc();
//外部データ取得(死かもしれないので)
udAdd(acct_id, user, json.url);
});
udAdd(acct_id, user, json.url)
})
}
function misskeyUdg(user, acct_id) {
reset();
reset()
if (!user) {
user = localStorage.getItem("user-id_" + acct_id);
user = localStorage.getItem("user-id_" + acct_id)
}
todo("User Data Loading...");
var domain = localStorage.getItem("domain_" + acct_id);
todo("User Data Loading...")
var domain = localStorage.getItem("domain_" + acct_id)
if (localStorage.getItem("mode_" + domain) != "misskey") {
udg(user, acct_id);
return;
udg(user, acct_id)
return
}
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/users/show";
var at = localStorage.getItem("acct_" + acct_id + "_at")
var start = "https://" + domain + "/api/users/show"
fetch(start, {
method: "POST",
headers: {
@@ -269,127 +274,127 @@ function misskeyUdg(user, acct_id) {
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text);
});
setLog(response.url, response.status, text)
})
}
return response.json();
return response.json()
})
.catch(function(error) {
todo(error);
setLog(start, "JSON", error);
console.error(error);
todo(error)
setLog(start, "JSON", error)
console.error(error)
})
.then(function(json) {
//一つ前のユーザーデータ
if (!localStorage.getItem("history")) {
$("#his-history-btn").prop("disabled", true);
$("#his-history-btn").prop("disabled", true)
} else {
$("#his-history-btn").prop("disabled", false);
$("#his-data").attr("history", localStorage.getItem("history"));
$("#his-history-btn").prop("disabled", false)
$("#his-data").attr("history", localStorage.getItem("history"))
}
$("#his-data").modal("open");
$("#his-data").attr("user-id", user);
$("#his-data").attr("use-acct", acct_id);
$("#his-data").modal("open")
$("#his-data").attr("user-id", user)
$("#his-data").attr("use-acct", acct_id)
if (json.host) {
//Remote
$("#his-data").attr("remote", "false");
var fullname = json.username + "@" + json.host;
$("#his-data").attr("remote", "false")
var fullname = json.username + "@" + json.host
} else {
$("#his-data").attr("remote", "false");
var fullname = json.acct + "@" + domain;
$("#his-data").attr("remote", "false")
var fullname = json.acct + "@" + domain
}
utl(json.id, "", acct_id);
flw(json.id, "", acct_id);
fer(json.id, "", acct_id);
utlShow(json.id, "", acct_id)
flw(json.id, "", acct_id)
fer(json.id, "", acct_id)
if (json.name) {
var dis_name = escapeHTML(json.name);
dis_name = twemoji.parse(dis_name);
var dis_name = escapeHTML(json.name)
dis_name = twemoji.parse(dis_name)
} else {
var dis_name = json.name;
var dis_name = json.name
}
$("#his-name").html(dis_name);
$("#his-acct").text(json.username);
$("#his-acct").attr("fullname", fullname);
$("#his-prof").attr("src", json.avatarUrl);
$("#his-data").css("background-image", "url(" + json.bannerUrl + ")");
$("#his-sta").text(json.notesCount);
$("#his-follow").text(json.followingCount);
$("#his-follower").text(json.followersCount);
$("#his-since").text(crat(json.createdAt));
var note = escapeHTML(json.description);
$("#his-des").html(twemoji.parse(note));
$("#his-name").html(dis_name)
$("#his-acct").text(json.username)
$("#his-acct").attr("fullname", fullname)
$("#his-prof").attr("src", json.avatarUrl)
$("#his-data").css("background-image", "url(" + json.bannerUrl + ")")
$("#his-sta").text(json.notesCount)
$("#his-follow").text(json.followingCount)
$("#his-follower").text(json.followersCount)
$("#his-since").text(crat(json.createdAt))
var note = escapeHTML(json.description)
$("#his-des").html(twemoji.parse(note))
if (json.isCat) {
$("#his-bot").html("Cat" + twemoji.parse("😺"));
$("#his-bot").html("Cat" + twemoji.parse("😺"))
}
$("#his-data").css("background-size", "cover");
localStorage.setItem("history", user);
$("#his-data").css("background-size", "cover")
localStorage.setItem("history", user)
//自分の時
if (json.username == localStorage.getItem("user_" + acct_id) && !json.host) {
//showFav('', acct_id);
//showMut('', acct_id);
//showReq('', acct_id);
showFrl("", acct_id);
$("#his-name-val").val(json.name);
var des = json.note;
des = nl2br(des);
des = $.strip_tags(des);
$("#his-des-val").val(des);
$("#his-follow-btn").hide();
$("#his-block-btn").hide();
$("#his-mute-btn").hide();
$("#his-notf-btn").hide();
$("#his-domain-btn").hide();
$("#his-emp-btn").hide();
$(".only-my-data").show();
$(".only-his-data").hide();
showFrl("", acct_id)
$("#his-name-val").val(json.name)
var des = json.note
des = nl2br(des)
des = $.strip_tags(des)
$("#his-des-val").val(des)
$("#his-follow-btn").hide()
$("#his-block-btn").hide()
$("#his-mute-btn").hide()
$("#his-notf-btn").hide()
$("#his-domain-btn").hide()
$("#his-emp-btn").hide()
$(".only-my-data").show()
$(".only-his-data").hide()
if (localStorage.getItem("main") == acct_id) {
$("#his-main-acct").hide();
$("#his-main-acct").hide()
}
} else {
if (json.isFollowing) {
//自分がフォローしている
$("#his-data").addClass("following");
$("#his-follow-btn-text").text(lang.lang_status_unfollow);
hisList(user, acct_id);
$("#his-data").addClass("following")
$("#his-follow-btn-text").text(lang.lang_status_unfollow)
hisList(user, acct_id)
} else {
$("#his-follow-btn-text").text(lang.lang_status_follow);
$("#his-follow-btn-text").text(lang.lang_status_follow)
}
if (json.isFollowed) {
//フォローされてる
$("#his-relation").text(lang.lang_showontl_followed);
$("#his-relation").text(lang.lang_showontl_followed)
}
$("#his-block-btn").hide();
$("#his-block-btn").hide()
if (json.isMuted) {
$("#his-data").addClass("muting");
$("#his-mute-btn-text").text(lang.lang_status_unmute);
$("#his-data").addClass("muting")
$("#his-mute-btn-text").text(lang.lang_status_unmute)
} else {
$("#his-mute-btn-text").text(lang.lang_status_mute);
$("#his-mute-btn-text").text(lang.lang_status_mute)
}
$(".only-my-data").hide();
$(".only-his-data").show();
$(".only-my-data").hide()
$(".only-his-data").show()
}
todc();
});
todc()
})
}
//一つ前のユーザーデータ表示
function historyShow() {
var acct_id = $("#his-data").attr("use-acct");
var user = $("#his-data").attr("history");
udg(user, acct_id, "true");
var acct_id = $("#his-data").attr("use-acct")
var user = $("#his-data").attr("history")
udg(user, acct_id, "true")
}
//選択アカウントのプロフ
function profShow() {
var acct_id = $("#post-acct-sel").val();
var user = localStorage.getItem("user-id_" + acct_id);
udg(user, acct_id);
hide();
var acct_id = $("#post-acct-sel").val()
var user = localStorage.getItem("user-id_" + acct_id)
udg(user, acct_id)
hide()
}
//FF関係取得
function relations(user, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/accounts/relationships?id=" + user;
var domain = localStorage.getItem("domain_" + acct_id)
var at = localStorage.getItem("acct_" + acct_id + "_at")
var start = "https://" + domain + "/api/v1/accounts/relationships?id=" + user
fetch(start, {
method: "GET",
headers: {
@@ -400,151 +405,160 @@ function relations(user, acct_id) {
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text);
});
setLog(response.url, response.status, text)
})
}
return response.json();
return response.json()
})
.catch(function(error) {
todo(error);
setLog(start, "JSON", error);
console.error(error);
todo(error)
setLog(start, "JSON", error)
console.error(error)
})
.then(function(json) {
var json = json[0];
var json = json[0]
if(json.requested) {
//フォロリク中
$('#his-data').addClass('following')
$("#his-follow-btn-text").text(lang.lang_status_requesting)
}
if (json.following) {
//自分がフォローしている
$("#his-data").addClass("following");
$("#his-follow-btn-text").text(lang.lang_status_unfollow);
hisList(user, acct_id);
$("#his-data").addClass("following")
$("#his-follow-btn-text").text(lang.lang_status_unfollow)
hisList(user, acct_id)
} else {
$("#his-follow-btn-text").text(lang.lang_status_follow);
$("#his-follow-btn-text").text(lang.lang_status_follow)
}
if (json.followed_by) {
//フォローされてる
$("#his-relation").text(lang.lang_showontl_followed);
$("#his-relation").text(lang.lang_showontl_followed)
}
if (json.blocking) {
$("#his-data").addClass("blocking");
$("#his-block-btn-text").text(lang.lang_status_unblock);
$("#his-data").addClass("blocking")
$("#his-block-btn-text").text(lang.lang_status_unblock)
} else {
$("#his-block-btn-text").text(lang.lang_status_block);
$("#his-block-btn-text").text(lang.lang_status_block)
}
if (json.muting) {
$("#his-data").addClass("muting");
$("#his-mute-btn-text").text(lang.lang_status_unmute);
$("#his-data").addClass("muting")
$("#his-mute-btn-text").text(lang.lang_status_unmute)
} else {
$("#his-mute-btn-text").text(lang.lang_status_mute);
$("#his-mute-btn-text").text(lang.lang_status_mute)
}
if (json.muting_notifications) {
$("#his-data").addClass("mutingNotf");
$("#his-notf-btn-text").text(lang.lang_showontl_notf + lang.lang_status_unmute);
$("#his-data").addClass("mutingNotf")
$("#his-notf-btn-text").text(lang.lang_showontl_notf + lang.lang_status_unmute)
} else {
$("#his-notf-btn-text").text(lang.lang_showontl_notf + lang.lang_status_mute);
$("#his-notf-btn-text").text(lang.lang_showontl_notf + lang.lang_status_mute)
}
if (json.domain_blocking) {
$("#his-data").addClass("blockingDom");
$("#his-domain-btn-text").text(lang.lang_showontl_domain + lang.lang_status_unblock);
$("#his-data").addClass("blockingDom")
$("#his-domain-btn-text").text(lang.lang_showontl_domain + lang.lang_status_unblock)
} else {
$("#his-domain-btn-text").text(lang.lang_showontl_domain + lang.lang_status_block);
$("#his-domain-btn-text").text(lang.lang_showontl_domain + lang.lang_status_block)
}
//Endorsed
if (json.endorsed) {
$("#his-end-btn").addClass("endorsed");
$("#his-end-btn-text").text(lang.lang_status_unendorse);
$("#his-end-btn").addClass("endorsed")
$("#his-end-btn-text").text(lang.lang_status_unendorse)
} else {
$("#his-end-btn").removeClass("endorsed");
$("#his-end-btn-text").text(lang.lang_status_endorse);
$("#his-end-btn").removeClass("endorsed")
$("#his-end-btn-text").text(lang.lang_status_endorse)
}
//Blocked
if (json.blocked_by) {
$("#my-data-nav .btn").addClass("disabled");
$(".his-var-content").hide();
$("#his-float-blocked").show();
$("#his-follow-btn").hide();
$("#my-data-nav .btn").addClass("disabled")
$(".his-var-content").hide()
$("#his-float-blocked").show()
$("#his-follow-btn").hide()
}
});
})
}
function profbrws() {
var url = $("#his-openin").attr("data-href");
postMessage(["openUrl", url], "*");
var url = $("#his-openin").attr("data-href")
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 });
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() {
$("#his-data").modal("close");
reset();
$("#his-data").attr("history", "");
localStorage.removeItem("history");
$("#his-data").modal("close")
reset()
$("#his-data").attr("history", "")
localStorage.removeItem("history")
}
function reset() {
$(".his-var-content:eq(0)").show();
$(".his-var-content:gt(0)").hide();
$("#my-data-nav .btn").removeClass("disabled");
$(".active-back").removeClass("active-back");
$(".column-first").addClass("active-back");
$("#his-name").text("Loading");
$("#his-acct").text("");
$("#his-prof").attr("src", "../../img/loading.svg");
$("#his-data").css("background-image", "url(../../img/loading.svg)");
$("#his-sta").text("");
$("#his-follow").text("");
$("#his-follower").text("");
$("#his-des").html("");
$("#his-data").css("background-size", "cover");
$("#his-since").text("");
$("#his-data").removeClass("following");
$("#his-data").removeClass("muting");
$("#his-data").removeClass("blocking");
$("#his-data").removeClass("mutingNotf");
$("#his-data").removeClass("blockingDom");
$("#his-end-btn").removeClass("endorsed");
$("#his-des").css("max-height", "250px");
$("#his-bot").html("");
$("#his-follow-btn").show();
$("#his-block-btn").show();
$("#his-mute-btn").show();
$("#his-notf-btn").show();
$("#his-domain-btn").show();
$("#his-emp-btn").show();
$("#his-follow-btn-text").text(lang.lang_status_follow);
$("#his-mute-btn-text").text(lang.lang_status_mute);
$("#his-block-btn-text").text(lang.lang_status_block);
$("#his-notf-btn").text(lang.lang_showontl_notf + lang.lang_status_mute);
$("#his-domain-btn").text(lang.lang_showontl_domain + lang.lang_status_block);
$("#his-relation").text("");
$(".cont-series").html("");
$("#domainblock").val("");
$("#his-lists-a").html(lang.lang_showontl_listwarn);
$("#his-lists-b").html("");
$("#his-name-val").val("");
$("#his-des-val").val("");
$("#his-f1-name").val("");
$("#his-f1-val").val("");
$("#his-f2-name").val("");
$("#his-f2-val").val("");
$("#his-f3-name").val("");
$("#his-f3-val").val("");
$("#his-f4-name").val("");
$("#his-f4-val").val("");
$("#his-endorse").html("");
$("#his-openin").attr("data-href", "");
$("#his-float-timeline").show();
$("#his-float-blocked").hide();
$("#his-main-acct").show();
$("#his-proof-prof").html("");
$(".his-var-content:eq(0)").show()
$(".his-var-content:gt(0)").hide()
$("#my-data-nav .btn").removeClass("disabled")
$(".active-back").removeClass("active-back")
$(".column-first").addClass("active-back")
$("#his-name").text("Loading")
$("#his-acct").text("")
$("#his-prof").attr("src", "../../img/loading.svg")
$("#his-data").css("background-image", "url(../../img/loading.svg)")
$("#his-sta").text("")
$("#his-follow").text("")
$("#his-follower").text("")
$("#his-des").html("")
$("#his-data").css("background-size", "cover")
$("#his-since").text("")
$("#his-data").removeClass("following")
$("#his-data").removeClass("muting")
$("#his-data").removeClass("blocking")
$("#his-data").removeClass("mutingNotf")
$("#his-data").removeClass("blockingDom")
$("#his-end-btn").removeClass("endorsed")
$("#his-des").css("max-height", "250px")
$("#his-bot").html("")
$("#his-follow-btn").show()
$("#his-block-btn").show()
$("#his-mute-btn").show()
$("#his-notf-btn").show()
$("#his-domain-btn").show()
$("#his-emp-btn").show()
$("#his-follow-btn-text").text(lang.lang_status_follow)
$("#his-mute-btn-text").text(lang.lang_status_mute)
$("#his-block-btn-text").text(lang.lang_status_block)
$("#his-notf-btn").text(lang.lang_showontl_notf + lang.lang_status_mute)
$("#his-domain-btn").text(lang.lang_showontl_domain + lang.lang_status_block)
$("#his-relation").text("")
$(".cont-series").html("")
$("#domainblock").val("")
$("#his-lists-a").html(lang.lang_showontl_listwarn)
$("#his-lists-b").html("")
$("#his-name-val").val("")
$("#his-des-val").val("")
$("#his-f1-name").val("")
$("#his-f1-val").val("")
$("#his-f2-name").val("")
$("#his-f2-val").val("")
$("#his-f3-name").val("")
$("#his-f3-val").val("")
$("#his-f4-name").val("")
$("#his-f4-val").val("")
$("#his-endorse").html("")
$("#his-openin").attr("data-href", "")
$("#his-float-timeline").show()
$("#his-float-blocked").hide()
$("#his-main-acct").show()
$("#his-proof-prof").html("")
$('#his-data').removeClass('locked')
$('#his-data').removeClass('requesting')
}
$("#my-data-nav .anc-link").on("click", function() {
var target = $(this).attr("go");
var target = $(this).attr("go")
if (target) {
$("#my-data-nav .anc-link").removeClass("active-back");
$(this).addClass("active-back");
$(target).show();
$(".his-var-content:not(" + target + ")").hide();
const title = $(this).html()
$('#his-data-title').html(title)
$("#my-data-nav .anc-link").removeClass("active-back")
$(this).addClass("active-back")
$(target).show()
$(".his-var-content:not(" + target + ")").hide()
}
});
})

View File

@@ -3,6 +3,10 @@ var dir = 'file://' + __dirname
var base = dir + '/view/'
// Electronのモジュール
const electron = require('electron')
// アプリケーションをコントロールするモジュール
const app = electron.app
// Electronの初期化完了後に実行
app.on('ready', createWindow)
const fs = require('fs')
const language = require('./main/language.js')
const css = require('./main/css.js')
@@ -12,9 +16,6 @@ const np = require('./main/np.js')
const systemFunc = require('./main/system.js')
const Menu = electron.Menu
const join = require('path').join
// アプリケーションをコントロールするモジュール
const app = electron.app
// ウィンドウを作成するモジュール
const BrowserWindow = electron.BrowserWindow
// メインウィンドウはGCされないようにグローバル宣言
@@ -36,60 +37,11 @@ if (!gotTheLock) {
})
}
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('If it does not show the window, you might forget `npm run construct`.')
}
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')
var ha_path = join(app.getPath('userData'), 'hardwareAcceleration')
var ua_path = join(app.getPath('userData'), 'useragent')
var frame_path = join(app.getPath('userData'), 'frame')
try {
fs.readFileSync(ha_path, 'utf8')
app.disableHardwareAcceleration()
if (!packaged) console.log('disabled: Hardware Acceleration')
} catch {
if (!packaged) console.log('enabled: Hardware Acceleration')
}
var window_size
try {
window_size = JSON.parse(fs.readFileSync(info_path, 'utf8'))
} catch (e) {
window_size = {
width: 1000,
height: 750
} // デフォルトバリュー
}
var max_window_size
try {
max_window_size = JSON.parse(fs.readFileSync(max_info_path, 'utf8'))
} catch (e) {
max_window_size = {
width: 'string',
height: 'string',
x: 'string',
y: 'string'
} // デフォルトバリュー
}
// 全てのウィンドウが閉じたら終了
app.on('window-all-closed', function () {
electron.session.defaultSession.clearCache(() => {})
app.quit()
})
function isFile(file) {
try {
fs.statSync(file)
@@ -98,24 +50,8 @@ function isFile(file) {
if (err.code === 'ENOENT') return false
}
}
try {
var frameRaw = fs.readFileSync(frame_path, 'utf8')
if(frameRaw == 'false') {
var frame = false
var frameTitle = 'hidden'
} else {
var frame = true
var frameTitle = 'default'
}
} catch {
var frame = true
}
// 全てのウィンドウが閉じたら終了
app.on('window-all-closed', function() {
electron.session.defaultSession.clearCache(() => {})
app.quit()
})
function createWindow() {
var lang_path = join(app.getPath('userData'), 'language')
if (isFile(lang_path)) {
var lang = fs.readFileSync(lang_path, 'utf8')
} else {
@@ -132,73 +68,130 @@ function createWindow() {
} else {
lang = 'en'
}
fs.mkdir(app.getPath('userData'), function(err) {
fs.mkdir(app.getPath('userData'), function (err) {
fs.writeFileSync(lang_path, lang)
})
}
if (!packaged) console.log('your lang:' + app.getLocale())
if (!packaged) console.log('launch:' + lang)
//Opening
const package = fs.readFileSync(__dirname + '/package.json')
if(lang == 'ja') {
const maxims = JSON.parse(fs.readFileSync(__dirname + '/maxim.ja.json'))
var show = maxims[Math.floor(Math.random() * maxims.length)]
} else if(lang == 'ja-KS') {
//ja-KSも作れたらいいね
const maxims = JSON.parse(fs.readFileSync(__dirname + '/maxim.ja.json'))
var show = maxims[Math.floor(Math.random() * maxims.length)]
} else{
var show = 'TheDesk 2018'
}
const data = JSON.parse(package)
const version = data.version
const codename = data.codename
var openingWindow = new BrowserWindow({
width: 300,
height: 400,
transparent: false,
frame: false,
resizable: false,
})
openingWindow.loadURL(`${__dirname}/opening.html?ver=${version}&codename=${codename}&maxim=${encodeURI(show)}`)
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('If it does not show the window, you might forget `npm run construct`.')
}
var info_path = join(app.getPath('userData'), 'window-size.json')
var max_info_path = join(app.getPath('userData'), 'max-window-size.json')
var ha_path = join(app.getPath('userData'), 'hardwareAcceleration')
var ua_path = join(app.getPath('userData'), 'useragent')
try {
fs.readFileSync(ha_path, 'utf8')
app.disableHardwareAcceleration()
if (!packaged) console.log('disabled: Hardware Acceleration')
} catch {
if (!packaged) console.log('enabled: Hardware Acceleration')
}
var window_size
try {
window_size = JSON.parse(fs.readFileSync(info_path, 'utf8'))
} catch (e) {
window_size = {
width: 1000,
height: 750,
} // デフォルトバリュー
}
var max_window_size
try {
max_window_size = JSON.parse(fs.readFileSync(max_info_path, 'utf8'))
} catch (e) {
max_window_size = {
width: 'string',
height: 'string',
x: 'string',
y: 'string',
} // デフォルトバリュー
}
// メイン画面の表示。ウィンドウの幅、高さを指定できる
var platform = process.platform
var bit = process.arch
var arg = {
webPreferences: {
webviewTag: true,
nodeIntegration: false,
contextIsolation: true,
spellcheck: false,
preload: join(__dirname, 'js', 'platform', 'preload.js'),
},
width: window_size.width,
height: window_size.height,
x: window_size.x,
y: window_size.y,
show: false,
}
if (platform == 'linux') {
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',
show: false,
frame: frame,
resizable: true
}
arg.resizable = true
arg.icon = __dirname + '/desk.png'
} else if (platform == 'win32') {
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,
show: false,
frame: frame
}
arg.simpleFullscreen = true
} else if (platform == 'darwin') {
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,
show: false,
titleBarStyle: frameTitle,
frame: frame,
}
arg.simpleFullscreen = true
}
mainWindow = new BrowserWindow(arg)
mainWindow.once('page-title-updated', () => {
openingWindow.close()
mainWindow.show()
console.log('Accessibility: ' + app.accessibilitySupportEnabled)
if (window_size.max) {
mainWindow.maximize()
}
})
mainWindow.webContents.on('page-title-updated', () => {
const url = mainWindow.webContents.getURL()
if(url.match(/https:\/\/crowdin.com\/profile/)) {
app.relaunch()
app.exit()
}
})
if (!packaged) mainWindow.toggleDevTools()
electron.session.defaultSession.clearCache(() => {})
if (process.argv) {
@@ -225,40 +218,38 @@ function createWindow() {
// Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) thedesk/18.11.3 Chrome/76.0.3809.146 Electron/6.0.12 Safari/537.36
const crypto = require('crypto')
const N = 100
var ua =
'Mastodon client: ' +
crypto
.randomBytes(N)
.toString('base64')
.substring(0, N)
var ua = 'Mastodon client: ' + crypto.randomBytes(N).toString('base64').substring(0, N)
}
mainWindow.loadURL(base + lang + '/index.html' + plus, { userAgent: ua })
if (!window_size.x && !window_size.y) {
mainWindow.center()
}
// ウィンドウが閉じられたらアプリも終了
mainWindow.on('closed', function() {
mainWindow.on('closed', function () {
electron.ipcMain.removeAllListeners()
mainWindow = null
})
closeArg = false
mainWindow.on('close', function(e, arg) {
mainWindow.on('close', function (e, arg) {
writePos(mainWindow)
if (!closeArg) {
e.preventDefault()
}
const promise = new Promise(function(resolve) {
const promise = new Promise(function (resolve) {
mainWindow.webContents.send('asReadEnd', '')
setTimeout(function() {
let wait = 3000
const url = mainWindow.webContents.getURL()
if(!url.match(/index.html/)) wait = 0
setTimeout(function () {
resolve()
}, 3000)
}, wait)
})
promise.then(function(response) {
promise.then(function (response) {
closeArg = true
mainWindow.close()
})
})
electron.ipcMain.on('sendMarkersComplete', function(e, arg) {
electron.ipcMain.on('sendMarkersComplete', function (e, arg) {
closeArg = true
mainWindow.close()
})
@@ -274,35 +265,30 @@ function createWindow() {
height: mainWindow.getBounds().height,
x: mainWindow.getBounds().x,
y: mainWindow.getBounds().y,
max: true
max: true,
}
} else {
var size = {
width: mainWindow.getBounds().width,
height: mainWindow.getBounds().height,
x: mainWindow.getBounds().x,
y: mainWindow.getBounds().y
y: mainWindow.getBounds().y,
}
}
fs.writeFileSync(info_path, JSON.stringify(size))
}
mainWindow.on('maximize', function() {
mainWindow.on('maximize', function () {
writePos(mainWindow)
fs.writeFileSync(max_info_path, JSON.stringify(mainWindow.getBounds()))
})
mainWindow.on('minimize', function() {
mainWindow.on('minimize', function () {
writePos(mainWindow)
mainWindow.webContents.send('asRead', '')
})
var platform = process.platform
var bit = process.arch
Menu.setApplicationMenu(
Menu.buildFromTemplate(language.template(lang, mainWindow, packaged, dir, dirname, frame))
)
if(!frame) {
mainWindow.setMenu(null)
}
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang, mainWindow, packaged, dir, dirname)))
//CSS
css.css(mainWindow)
//アップデータとダウンロード
@@ -313,7 +299,7 @@ function createWindow() {
np.TheDeskNowPlaying(mainWindow)
//その他system
systemFunc.system(mainWindow, dir, lang, dirname)
setInterval(function() {
setInterval(function () {
mouseTrack(mainWindow)
}, 1000)
}
@@ -339,10 +325,5 @@ function mouseTrack(mainWindow) {
x = xNow
y = yNow
}
// Electronの初期化完了後に実行
app.on('ready', createWindow)
var onError = function(err, response) {
console.error(err, response)
}
app.setAsDefaultProtocolClient('thedesk')

View File

@@ -31,119 +31,246 @@ function css(mainWindow) {
}
})
ipc.on('theme-json-delete', function (e, arg) {
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
console.log(themecss);
fs.unlink(themecss, function (err) {
e.sender.webContents.send('theme-json-delete-complete', "");
});
try{
var themecss = join(app.getPath("userData"), arg);
console.log(themecss);
fs.unlink(themecss, function (err) {
e.sender.webContents.send('theme-json-delete-complete', "");
});
} catch {
e.sender.webContents.send('theme-json-delete-complete', 'cannot delete');
}
})
ipc.on('theme-json-request', function (e, arg) {
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
var raw = fs.readFileSync(themecss, 'utf8')
var json = JSON5.parse(raw);
try {
var themecss = join(app.getAppPath(), '/source/themes', arg)
var raw = fs.readFileSync(themecss, 'utf8')
var json = JSON5.parse(raw)
} catch {
var themecss = join(app.getPath("userData"), arg)
var raw = fs.readFileSync(themecss, 'utf8')
var json = JSON5.parse(raw)
}
e.sender.webContents.send('theme-json-response', [json, raw]);
})
ipc.on('theme-css-request', function (e, arg) {
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
try {
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'));
var themecss = join(app.getAppPath(), '/source/themes', arg)
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'))
} catch {
var themecss = join(app.getPath("userData"), arg)
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'))
}
var primary = json.vars.primary;
var secondary = json.vars.secondary;
var text = json.vars.text;
if (json.base == "light") {
var drag = "rgba(255, 255, 255, 0.8)";
var beforehover = "#757575";
var selected = "#3f3f3f"
var selectedWithShare = "#b2babd"
var gray = "#757575"
} else {
var drag = "rgba(0, 0, 0, 0.8)";
var beforehover = "#9e9e9e";
var selected = "#c0c0c0"
var selectedWithShare = "#003a30"
var gray = "#cccccc"
}
if (json.props) {
if (json.props.TheDeskAccent) {
var emphasized = json.props.TheDeskAccent
try {
var css
if (json.version) {
var bg = json.primary.background
var subcolor = json.primary.subcolor
var text = json.primary.text
var accent = json.primary.accent
if (json.base == "light") {
var drag = "rgba(255, 255, 255, 0.8)";
var beforehover = "#757575";
var selected = "#3f3f3f"
var selectedWithShare = "#b2babd"
var gray = "#757575"
var hisData = 'rgba(255, 255, 255, 0.9)'
} else {
var emphasized = secondary
var drag = "rgba(0, 0, 0, 0.8)";
var beforehover = "#9e9e9e";
var selected = "#c0c0c0"
var selectedWithShare = "#003a30"
var gray = "#cccccc"
var hisData = 'rgba(0, 0, 0, 0.8)'
}
if (json.props.TheDeskActive) {
var active = json.props.TheDeskActive
if (!json.advanced) {
json.advanced = {}
}
if (json.advanced.modal) {
var modal = json.advanced.modal
} else {
var active = primary
var modal = bg
}
if (json.props.TheDeskModal) {
var modal = json.props.TheDeskModal
if (json.advanced.modalFooter) {
var modalFooter = json.advanced.modalFooter
} else {
var modal = secondary
var modalFooter = bg
if (modal != bg) modalFooter = modal
}
if (json.props.TheDeskBottom) {
var bottom = json.props.TheDeskBottom
if (json.advanced.thirdColor) {
var thirdColor = json.advanced.thirdColor
} else {
var bottom = primary
var thirdColor = subcolor
}
if (json.props.TheDeskPostbox) {
var postbox = json.props.TheDeskPostbox
if (json.advanced.forthColor) {
var forthColor = json.advanced.forthColor
} else {
var postbox = primary
var forthColor = subcolor
if (thirdColor != subcolor) forthColor = thirdColor
}
if (json.props.TheDeskSubcolor) {
var subcolor = json.props.TheDeskSubcolor
if (json.advanced.bottom) {
var bottom = json.advanced.bottom
} else {
var subcolor = primary
var bottom = subcolor
}
if (json.advanced.emphasized) {
var emphasized = json.advanced.emphasized
} else {
var emphasized = accent
}
if (json.advanced.postbox) {
var postbox = json.advanced.postbox
} else {
var postbox = subcolor
}
if (json.advanced.active) {
var active = json.advanced.active
} else {
var active = accent
}
if (json.advanced.selected) {
var selected = json.advanced.selected
}
if (json.advanced.selectedWithShare) {
var selectedWithShare = json.advanced.selectedWithShare
}
} else {
var emphasized = primary
var acs = secondary
var active = primary
var modal = secondary
var bottom = primary
var postbox = primary
var subcolor = primary
}
var css = ".customtheme {--bg:" + secondary + ";--drag:" + drag + ";" +
"--color:" + text + ";--beforehover:" + beforehover + ";--modal:" +
modal + ";--subcolor:" + subcolor + ";--box:" + subcolor +
";--sidebar:" + bottom + ";--shared:" + emphasized + ";" +
"--notfbox:" + secondary + ";--emphasized:" + active + ";--his-data:" +
secondary +
";--active:" + active + ";--postbox:" + postbox + ";--modalfooter:" +
primary +
";--accentbtn:" + subcolor + ";--selected:" + selected + ";--selectedWithShare:" + selectedWithShare + "}"+
"--gray:" + gray + ";"+
".customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
var css = ":root {--bg:" + bg + ";--drag:" + drag + ";" +
"--text:" + text + ";--beforehover:" + beforehover + ";--modal:" +
modal + ";--thirdColor:" + thirdColor + ";--subcolor:" + forthColor +
";--bottom:" + bottom + ";--accent:" + accent + ";" + ";--emphasized:" + emphasized + ";--his-data:" +
hisData +
";--active:" + active + ";--postbox:" + postbox + ";--modalfooter:" +
modalFooter + ";--selected:" + selected + ";--selectedWithShare:" + selectedWithShare +
";--gray:" + gray + ";}" +
".customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
} else {
var css = compatibleTheme(json)
}
e.sender.webContents.send('theme-css-response', css);
} catch (e) {
var css = "";
}
})
ipc.on('theme-json-list', function (e, arg) {
fs.readdir(app.getPath("userData"), function (err, files) {
if (err || !files) throw err;
var fileList = files.filter(function (file) {
if(file.match(/\.thedesktheme$/)){
var tfile = join(app.getPath("userData"), file)
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile)
}else{
return null
}
})
var themes = [];
for (var i = 0; i < fileList.length; i++) {
var themecss = join(app.getPath("userData"), fileList[i]);
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'));
themes.push({
name: json.name,
id: json.id
})
function compatibleTheme(json) {
var primary = json.vars.primary;
var secondary = json.vars.secondary;
var text = json.vars.text;
if (json.base == "light") {
var drag = "rgba(255, 255, 255, 0.8)";
var beforehover = "#757575";
var selected = "#3f3f3f"
var selectedWithShare = "#b2babd"
var gray = "#757575"
} else {
var drag = "rgba(0, 0, 0, 0.8)";
var beforehover = "#9e9e9e";
var selected = "#c0c0c0"
var selectedWithShare = "#003a30"
var gray = "#cccccc"
}
if (json.advanced) {
if (json.advanced.TheDeskAccent) {
var emphasized = json.advanced.TheDeskAccent
} else {
var emphasized = secondary
}
e.sender.webContents.send('theme-json-list-response', themes);
});
if (json.advanced.TheDeskActive) {
var active = json.advanced.TheDeskActive
} else {
var active = primary
}
if (json.advanced.TheDeskModal) {
var modal = json.advanced.TheDeskModal
} else {
var modal = secondary
}
if (json.advanced.TheDeskBottom) {
var bottom = json.advanced.TheDeskBottom
} else {
var bottom = primary
}
if (json.advanced.TheDeskPostbox) {
var postbox = json.advanced.TheDeskPostbox
} else {
var postbox = primary
}
if (json.advanced.TheDeskSubcolor) {
var subcolor = json.advanced.TheDeskSubcolor
} else {
var subcolor = primary
}
} else {
var emphasized = primary
var acs = secondary
var active = primary
var modal = secondary
var bottom = primary
var postbox = primary
var subcolor = primary
}
var css = ".customtheme {--bg:" + secondary + ";--drag:" + drag + ";" +
"--text:" + text + ";--beforehover:" + beforehover + ";--modal:" +
modal + ";--thirdColor:" + subcolor + ";--subcolor:" + subcolor +
";--bottom:" + bottom + ";--accent:" + emphasized + ";" +
"--subcolor:" + secondary + ";--emphasized:" + active + ";--his-data:" +
secondary +
";--active:" + active + ";--postbox:" + postbox + ";--modalfooter:" +
primary +
";--active:" + subcolor + ";--selected:" + selected + ";--selectedWithShare:" + selectedWithShare + "}" +
"--gray:" + gray + ";" +
".customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
return css
}
ipc.on('theme-json-list', function (e, arg) {
var files1 = fs.readdirSync(join(app.getAppPath(), '/source/themes'))
var file1List = files1.filter(function (file) {
if (file.match(/\.thedesktheme$/)) {
var tfile = join(app.getAppPath(), '/source/themes', file)
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile)
} else {
return null
}
})
var themes = [];
for (var i = 0; i < file1List.length; i++) {
var themecss = join(app.getAppPath(), '/source/themes', file1List[i]);
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'));
let compat = true
if (json.version) compat = false
themes.push({
name: json.name,
id: json.id,
compatible: compat,
default: true
})
}
var files2 = fs.readdirSync(app.getPath("userData"))
var file2List = files2.filter(function (file) {
if (file.match(/\.thedesktheme$/)) {
var tfile = join(app.getPath("userData"), file)
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile)
} else {
return null
}
})
for (var i = 0; i < file2List.length; i++) {
var themecss = join(app.getPath("userData"), file2List[i]);
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'));
let compat = true
if (json.version) compat = false
themes.push({
name: json.name,
id: json.id,
compatible: compat,
default: false
})
}
e.sender.webContents.send('theme-json-list-response', themes);
})
}
exports.css = css;

View File

@@ -24,10 +24,15 @@ function dl(mainWindow, lang_path, base, dirname) {
height: 400,
transparent: false, // ウィンドウの背景を透過
frame: false, // 枠の無いウィンドウ
resizable: false
resizable: false,
show: false
})
var lang = fs.readFileSync(lang_path, 'utf8')
//updatewin.toggleDevTools()
updatewin.loadURL(base + lang + '/update.html')
updatewin.webContents.once('dom-ready', () => {
updatewin.show()
})
return 'true'
} else {
return false
@@ -36,13 +41,13 @@ function dl(mainWindow, lang_path, base, dirname) {
//アプデDL
ipc.on('download-btn', async (e, args) => {
function dl(url, file, dir, e) {
e.sender.webContents.send('mess', 'ダウンロードを開始します。')
e.sender.webContents.send('mess', 'Start...')
const opts = {
directory: dir,
filename: file,
openFolderWhenDone: true,
onProgress: function(event) {
e.sender.webContents.send('prog', event)
e.sender.webContents.send('prog', [event, args[2]])
},
saveAs: false
}
@@ -91,6 +96,7 @@ function dl(mainWindow, lang_path, base, dirname) {
var name = ''
var platform = process.platform
var bit = process.arch
const filename = args[0].match(/https:\/\/.+\/(.+\..+)$/)
if (args[1] == '') {
if (platform == 'win32') {
var dir = app.getPath('home') + '\\Pictures\\TheDesk'
@@ -111,11 +117,21 @@ function dl(mainWindow, lang_path, base, dirname) {
}
download(BrowserWindow.getFocusedWindow(), args[0], opts)
.then(dl => {
event.sender.webContents.send('general-dl-message', dir)
if(filename[1]) {
if (platform == 'win32') {
var name = dir + '\\' + filename[1]
} else if (platform == 'linux' || platform == 'darwin') {
var name = dir + '/' + filename[1]
}
} else {
var name = dir
}
event.sender.webContents.send('general-dl-message', name)
})
.catch(console.error)
})
ipc.on('open-finder', (e, folder) => {
ipc.on('openFinder', (e, folder) => {
console.log(folder)
shell.showItemInFolder(folder)
})
}

View File

@@ -6,38 +6,33 @@ function img(mainWindow, dir) {
var ipc = electron.ipcMain
const BrowserWindow = electron.BrowserWindow
ipc.on('file-select', (e, args) => {
dialog.showOpenDialog(
null,
{
properties: ['openFile', 'multiSelections'],
title: '添付ファイルを選択',
defaultPath: '.',
filters: [
{
name: 'メディアファイル',
extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm']
},
{ name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] },
{ name: '動画', extensions: ['mp4', 'webm'] },
{ name: '全てのファイル', extensions: ['*'] }
]
},
fileNames => {
if (!fileNames) {
return false
}
for (var i = 0; i < fileNames.length; i++) {
var path = fileNames[i]
var bin = fs.readFileSync(path, 'base64')
e.sender.webContents.send('resizeJudgement', [bin, 'new'])
}
}
)
let fileNames = dialog.showOpenDialogSync(mainWindow, {
properties: ['openFile', 'multiSelections'],
title: '添付ファイルを選択',
defaultPath: '.',
filters: [
{
name: 'メディアファイル',
extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm'],
},
{ name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] },
{ name: '動画', extensions: ['mp4', 'webm'] },
{ name: '全てのファイル', extensions: ['*'] },
],
})
if (!fileNames) {
return false
}
for (var i = 0; i < fileNames.length; i++) {
var path = fileNames[i]
var bin = fs.readFileSync(path, 'base64')
e.sender.webContents.send('resizeJudgement', [bin, 'new'])
}
})
ipc.on('bmp-image', (e, args) => {
Jimp.read(args[0], function(err, lenna) {
Jimp.read(args[0], function (err, lenna) {
if (err) throw err
lenna.getBase64(Jimp.MIME_PNG, function(err, src) {
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1]])
})
})
@@ -51,9 +46,9 @@ function img(mainWindow, dir) {
}
var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '')
var decodedFile = new Buffer(b64, 'base64')
Jimp.read(decodedFile, function(err, lenna) {
Jimp.read(decodedFile, function (err, lenna) {
if (err) throw err
lenna.scaleToFit(args[1], args[1]).getBase64(Jimp[use], function(err, src) {
lenna.scaleToFit(args[1], args[1]).getBase64(Jimp[use], function (err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1]])
})
})
@@ -63,24 +58,24 @@ function img(mainWindow, dir) {
var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '')
var decodedFile = new Buffer(b64, 'base64')
console.log(text)
Jimp.read(decodedFile, function(err, image) {
Jimp.read(decodedFile, function (err, image) {
if (err) throw err
Jimp.loadFont(Jimp.FONT_SANS_16_BLACK).then(font => {
Jimp.loadFont(Jimp.FONT_SANS_16_BLACK).then((font) => {
var evWidth = Jimp.measureText(font, text)
var width = image.bitmap.width
var height = image.bitmap.height
var left = width - evWidth - 10
var top = height - 30
var color = Jimp.intToRGBA(image.getPixelColor(left, top))
console.log(left, top, color)
var color = Jimp.intToRGBA(image.getPixelColor(left, top))
console.log(left, top, color)
var ave = (color.r + color.g + color.b) / 3
if (ave > 128) {
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function(err, src) {
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function (err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1], true])
})
} else {
Jimp.loadFont(Jimp.FONT_SANS_16_WHITE).then(font => {
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function(err, src) {
Jimp.loadFont(Jimp.FONT_SANS_16_WHITE).then((font) => {
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function (err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1], true])
})
})

View File

@@ -1,5 +1,5 @@
// Create the Application's main menu
function templete(lang, mainWindow, packaged, dir, dirname, frame) {
function templete(lang, mainWindow, packaged, dir, dirname) {
//フレーム
if(lang !="ja" && lang != "en"){
lang = "en"
@@ -9,11 +9,6 @@ function templete(lang, mainWindow, packaged, dir, dirname, frame) {
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
const join = require('path').join;
ipc.on("frameCheck", function(e, arg) {
if(!frame) {
e.sender.webContents.send("frame", "");
}
});
const dict = {
"application": {
"ja": "アプリケーション",

View File

@@ -1,13 +1,24 @@
const { execSync } = require('child_process')
const { join } = require('path')
function np(mainWindow) {
var platform = process.platform
if (platform !== 'darwin') return false
const electron = require('electron')
const ipc = electron.ipcMain
ipc.on('itunes', async (e, args) => {
console.log('Access')
if (args[0] == 'set') {
if (args == 'anynp') {
const dir = join(__dirname, "..", "main", "script", "macOSNP.scpt").replace("app.asar","app.asar.unpacked")
const stdout = execSync(`osascript ${dir}`).toString()
const title = stdout.substring(0, stdout.length - 100).match(/"(.+)?"/)[1].replace('\"','"')
const ret = {
title: title,
anynp: true
}
e.sender.webContents.send('itunes-np', ret)
} else {
var platform = process.platform
var bit = process.arch
if (platform == 'darwin') {
try {
const nowplaying = require('itunes-nowplaying-mac')
let value = await nowplaying()
@@ -27,8 +38,6 @@ function np(mainWindow) {
console.error(error)
e.sender.webContents.send('itunes-np', error)
}
} else {
}
}
})

Binary file not shown.

Binary file not shown.

View File

@@ -1,309 +1,303 @@
function system(mainWindow, dir, lang, dirname) {
const electron = require("electron");
const app = electron.app;
const join = require("path").join;
var Jimp = require("jimp");
const fs = require("fs");
var JSON5 = require("json5");
var ipc = electron.ipcMain;
const clipboard = electron.clipboard;
var tmp_img = join(app.getPath("userData"), "tmp.png");
var ha_path = join(app.getPath("userData"), "hardwareAcceleration");
var ua_path = join(app.getPath("userData"), "useragent");
var lang_path = join(app.getPath("userData"), "language");
var log_dir_path = join(app.getPath("userData"), "logs");
var frame_path = join(app.getPath("userData"), "frame");
const electron = require('electron')
const app = electron.app
const join = require('path').join
var Jimp = require('jimp')
const fs = require('fs')
var JSON5 = require('json5')
var ipc = electron.ipcMain
const clipboard = electron.clipboard
var tmp_img = join(app.getPath('userData'), 'tmp.png')
var ha_path = join(app.getPath('userData'), 'hardwareAcceleration')
var ua_path = join(app.getPath('userData'), 'useragent')
var lang_path = join(app.getPath('userData'), 'language')
var log_dir_path = join(app.getPath('userData'), 'logs')
var frame_path = join(app.getPath('userData'), 'frame')
//ログ
var today = new Date();
var today = new Date()
//今日のやつ
var todayStr = today.getFullYear() + "" + (today.getMonth() + 1) + "" + today.getDate() + ".log";
var todayStr = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate() + '.log'
//昨日のやつ
today.setDate(today.getDate() - 1);
var yestStr = today.getFullYear() + "" + (today.getMonth() + 1) + "" + today.getDate() + ".log";
today.setDate(today.getDate() - 1)
var yestStr = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate() + '.log'
//一昨日のやつ
today.setDate(today.getDate() - 1);
var yest2Str = today.getFullYear() + "" + (today.getMonth() + 1) + "" + today.getDate() + ".log";
today.setDate(today.getDate() - 1)
var yest2Str = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate() + '.log'
const BrowserWindow = electron.BrowserWindow;
const dialog = electron.dialog;
const os = require("os");
const language = require("../main/language.js");
const BrowserWindow = electron.BrowserWindow
const dialog = electron.dialog
const os = require('os')
const language = require('../main/language.js')
//プラットフォーム
ipc.on("getPlatform", function(e, arg) {
ipc.on('getPlatform', function (e, arg) {
try {
var gitHash = fs.readFileSync("git", "utf8");
var gitHash = fs.readFileSync('git', 'utf8')
} catch {
var gitHash = null;
var gitHash = null
}
e.sender.webContents.send("platform", [process.platform, process.arch, process.version, process.versions.chrome, process.versions.electron, gitHash]);
});
e.sender.webContents.send('platform', [process.platform, process.arch, process.version, process.versions.chrome, process.versions.electron, gitHash])
})
//言語
ipc.on("lang", function(e, arg) {
console.log("set:" + arg);
fs.writeFileSync(lang_path, arg);
e.sender.webContents.send("langres", arg);
});
ipc.on('lang', function (e, arg) {
console.log('set:' + arg)
fs.writeFileSync(lang_path, arg)
e.sender.webContents.send('langres', arg)
})
//エクスポートのダイアログ
ipc.on("exportSettings", function(e, args) {
dialog.showSaveDialog(
mainWindow,
{
title: "Export",
properties: ["openFile", "createDirectory"],
defaultPath: "export.thedeskconfig.json5"
},
savedFiles => {
if (!savedFiles) {
return false;
}
e.sender.webContents.send("exportSettingsFile", savedFiles);
}
);
});
ipc.on('exportSettings', function (e, args) {
let savedFiles = dialog.showSaveDialogSync(mainWindow, {
title: 'Export',
properties: ['openFile', 'createDirectory'],
defaultPath: 'export.thedeskconfig.json5',
})
if (!savedFiles) {
return false
}
e.sender.webContents.send('exportSettingsFile', savedFiles)
})
//インポートのダイアログ
ipc.on("importSettings", function(e, args) {
dialog.showOpenDialog(
mainWindow,
{
title: "Import",
properties: ["openFile"],
filters: [{ name: "TheDesk Config", extensions: ["thedeskconfig", "thedeskconfigv2", "json5"] }]
},
fileNames => {
console.log("imported from: ", fileNames)
if (!fileNames) {
return false;
}
e.sender.webContents.send("config", JSON5.parse(fs.readFileSync(fileNames[0], "utf8")));
}
);
});
ipc.on('importSettings', function (e, args) {
let fileNames = dialog.showOpenDialogSync(mainWindow, {
title: 'Import',
properties: ['openFile'],
filters: [{ name: 'TheDesk Config', extensions: ['thedeskconfig', 'thedeskconfigv2', 'json5'] }],
})
console.log('imported from: ', fileNames)
if (!fileNames) {
return false
}
e.sender.webContents.send('config', JSON5.parse(fs.readFileSync(fileNames[0], 'utf8')))
})
//保存フォルダのダイアログ
ipc.on("savefolder", function(e, args) {
dialog.showOpenDialog(
ipc.on('savefolder', function (e, args) {
let fileNames = dialog.showOpenDialogSync(
mainWindow,
{
title: "Save folder",
properties: ["openDirectory"]
},
fileNames => {
e.sender.webContents.send("savefolder", fileNames[0]);
title: 'Save folder',
properties: ['openDirectory'],
}
);
});
)
e.sender.webContents.send('savefolder', fileNames[0])
})
//カスタムサウンドのダイアログ
ipc.on("customSound", function(e, arg) {
dialog.showOpenDialog(
ipc.on('customSound', function (e, arg) {
let fileNames = dialog.showOpenDialogSync(
mainWindow,
{
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]]);
title: 'Custom sound',
properties: ['openFile'],
filters: [
{ name: 'Audio', extensions: ['mp3', 'aac', 'wav', 'flac', 'm4a'] },
{ name: 'All', extensions: ['*'] },
],
}
);
});
)
e.sender.webContents.send('customSoundRender', [arg, fileNames[0]])
})
//ハードウェアアクセラレーションの無効化
ipc.on("ha", function(e, arg) {
if (arg == "true") {
fs.writeFileSync(ha_path, arg);
ipc.on('ha', function (e, arg) {
if (arg == 'true') {
fs.writeFileSync(ha_path, arg)
} else {
fs.unlink(ha_path, function(err) {});
fs.unlink(ha_path, function (err) {})
}
app.relaunch();
app.exit();
});
app.relaunch()
app.exit()
})
//ユーザーエージェント
ipc.on("ua", function(e, arg) {
if (arg == "") {
fs.unlink(ua_path, function(err) {});
ipc.on('ua', function (e, arg) {
if (arg == '') {
fs.unlink(ua_path, function (err) {})
} else {
fs.writeFileSync(ua_path, arg);
fs.writeFileSync(ua_path, arg)
}
app.relaunch();
app.exit();
});
app.relaunch()
app.exit()
})
//フレームのありなし
ipc.on("frameSet", function(e, arg) {
fs.writeFileSync(frame_path, arg);
app.relaunch();
app.exit();
});
ipc.on("quit", (e, args) => {
app.quit();
});
ipc.on("about", (e, args) => {
about();
});
ipc.on('frameSet', function (e, arg) {
fs.writeFileSync(frame_path, arg)
app.relaunch()
app.exit()
})
//スクリーンリーダー
ipc.on('acsCheck', function (e, arg) {
if (app.accessibilitySupportEnabled) {
mainWindow.webContents.send('accessibility', 'true')
}
})
ipc.on('quit', (e, args) => {
app.quit()
})
ipc.on('about', (e, args) => {
about()
})
function about() {
var ver = app.getVersion();
var ver = app.getVersion()
var window = new BrowserWindow({
webPreferences: {
webviewTag: false,
nodeIntegration: false,
contextIsolation: true,
preload: join(dirname, "js", "platform", "preload.js")
preload: join(dirname, 'js', 'platform', 'preload.js'),
},
width: 300,
height: 500,
transparent: false, // ウィンドウの背景を透過
frame: false, // 枠の無いウィンドウ
resizable: false
});
window.loadURL(dir + "/about.html?ver=" + ver);
return "true";
resizable: false,
})
window.loadURL(dir + '/about.html?ver=' + ver)
return 'true'
}
ipc.on("nano", function(e, x, y) {
var nano_info_path = join(app.getPath("userData"), "nano-window-position.json");
var window_pos;
ipc.on('nano', function (e, x, y) {
var nano_info_path = join(app.getPath('userData'), 'nano-window-position.json')
var window_pos
try {
window_pos = JSON.parse(fs.readFileSync(nano_info_path, "utf8"));
window_pos = JSON.parse(fs.readFileSync(nano_info_path, 'utf8'))
} catch (e) {
window_pos = [0, 0]; // デフォルトバリュー
window_pos = [0, 0] // デフォルトバリュー
}
var nanowindow = new BrowserWindow({
webPreferences: {
webviewTag: false,
nodeIntegration: false,
contextIsolation: true,
preload: join(dirname, "js", "platform", "preload.js")
preload: join(dirname, 'js', 'platform', 'preload.js'),
},
width: 350,
height: 140,
transparent: false, // ウィンドウの背景を透過
frame: false, // 枠の無いウィンドウ
resizable: false
});
nanowindow.loadURL(dir + "/nano.html");
nanowindow.setAlwaysOnTop(true);
resizable: false,
})
nanowindow.loadURL(dir + '/nano.html')
nanowindow.setAlwaysOnTop(true)
//nanowindow.toggleDevTools()
nanowindow.setPosition(window_pos[0], window_pos[1]);
nanowindow.on("close", function() {
fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition()));
});
return true;
});
var cbTimer1;
ipc.on("startmem", (e, arg) => {
event = e.sender;
cbTimer1 = setInterval(mems, 1000);
});
nanowindow.setPosition(window_pos[0], window_pos[1])
nanowindow.on('close', function () {
fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition()))
})
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()]);
var mem = os.totalmem() - os.freemem()
if (mainWindow && event.webContents) {
event.webContents.send('memory', [mem, os.cpus()[0].model, os.totalmem(), os.cpus().length, os.uptime()])
}
}
ipc.on("endmem", (e, arg) => {
ipc.on('endmem', (e, arg) => {
if (cbTimer1) {
clearInterval(cbTimer1);
clearInterval(cbTimer1)
}
});
})
ipc.on("export", (e, args) => {
fs.writeFileSync(args[0], JSON5.stringify(args[1]));
e.sender.webContents.send("exportAllComplete", "");
});
ipc.on('export', (e, args) => {
fs.writeFileSync(args[0], JSON5.stringify(args[1]))
e.sender.webContents.send('exportAllComplete', '')
})
//フォント
function object_array_sort(data, key, order, fn) {
//デフォは降順(DESC)
var num_a = -1;
var num_b = 1;
var num_a = -1
var num_b = 1
if (order === "asc") {
if (order === 'asc') {
//指定があれば昇順(ASC)
num_a = 1;
num_b = -1;
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;
});
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 = {};
var arrObj = {}
for (var i = 0; i < data.length; i++) {
arrObj[data[i]["family"]] = data[i];
arrObj[data[i]['family']] = data[i]
}
data = [];
data = []
for (var key in arrObj) {
data.push(arrObj[key]);
data.push(arrObj[key])
}
fn(data); // ソート後の配列を返す
fn(data) // ソート後の配列を返す
}
ipc.on("fonts", (e, arg) => {
var SystemFonts = require('system-font-families').default;
var fm = new SystemFonts();
const fontList = fm.getFontsSync();
e.sender.webContents.send("font-list", fontList);
});
ipc.on('fonts', (e, arg) => {
var SystemFonts = require('system-font-families').default
var fm = new SystemFonts()
const fontList = fm.getFontsSync()
e.sender.webContents.send('font-list', fontList)
})
//コピー
ipc.on("copy", (e, arg) => {
clipboard.writeText(arg);
});
ipc.on('copy', (e, arg) => {
clipboard.writeText(arg)
})
//ログ
ipc.on("log", (e, arg) => {
var today = new Date();
var todayStr = today.getFullYear() + "" + (today.getMonth() + 1) + "" + today.getDate();
var log_path = join(log_dir_path, todayStr + ".log");
fs.appendFile(log_path, "\n" + arg, function(err) {
ipc.on('log', (e, arg) => {
var today = new Date()
var todayStr = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate()
var log_path = join(log_dir_path, todayStr + '.log')
fs.appendFile(log_path, '\n' + arg, function (err) {
if (err) {
throw err;
throw err
}
});
});
ipc.on("getLogs", (e, arg) => {
var logs=""
var todayLog=""
var yestLog=""
var yest2Log=""
fs.readdir(log_dir_path, function(err, files) {
if (err) throw err;
files.filter(function(file) {
})
})
ipc.on('getLogs', (e, arg) => {
var logs = ''
var todayLog = ''
var yestLog = ''
var yest2Log = ''
fs.readdir(log_dir_path, function (err, files) {
if (err) throw err
files.filter(function (file) {
if (file == todayStr) {
todayLog=fs.readFileSync(join(log_dir_path, file), "utf8")
todayLog = fs.readFileSync(join(log_dir_path, file), 'utf8')
}
if (file == yestStr) {
yestLog=logs+fs.readFileSync(join(log_dir_path, file), "utf8")
yestLog = logs + fs.readFileSync(join(log_dir_path, file), 'utf8')
}
if (file == yest2Str) {
yest2Log=fs.readFileSync(join(log_dir_path, file), "utf8")
yest2Log = fs.readFileSync(join(log_dir_path, file), 'utf8')
}
logs = todayLog + yestLog + yest2Log;
});
logs = yest2Log + yestLog + todayLog;
e.sender.webContents.send("logData", logs);
});
});
logs = todayLog + yestLog + yest2Log
})
logs = yest2Log + yestLog + todayLog
e.sender.webContents.send('logData', logs)
})
})
//起動時ログディレクトリ存在確認と作成、古ログ削除
fs.access(log_dir_path, fs.constants.R_OK | fs.constants.W_OK, error => {
fs.access(log_dir_path, fs.constants.R_OK | fs.constants.W_OK, (error) => {
if (error) {
if (error.code === "ENOENT") {
fs.mkdirSync(log_dir_path);
if (error.code === 'ENOENT') {
fs.mkdirSync(log_dir_path)
} else {
return;
return
}
} else {
fs.readdir(log_dir_path, function(err, files) {
if (err) throw err;
files.filter(function(file) {
fs.readdir(log_dir_path, function (err, files) {
if (err) throw err
files.filter(function (file) {
if (file != todayStr && file != yestStr && file != yest2Str) {
fs.unlinkSync(join(log_dir_path, file));
fs.unlinkSync(join(log_dir_path, file))
}
});
});
})
})
}
});
})
}
exports.system = system;
exports.system = system

59
app/maxim.ja.json Normal file
View File

@@ -0,0 +1,59 @@
[
"あと数秒でPCのファンが全力で回り始める",
"カラムの数だけ夢があるがネットワークは逼迫する",
"朝起きたらストリーミングが止まっていた…",
"誰も使ってない機能1: 未読管理",
"誰も使ってない機能2: スタンプ機能",
"誰も使ってない機能3: コードセットアップをオフにしたログイン",
"誰も使ってない機能4: TheDesk上でのプロフィール更新",
"誰も使ってない機能5: フォローレコメンデーション",
"TheDeskは重い(ダブルミーニング)",
"今日も生茶が美味しい(4ケース96本の在庫)",
"jQueryは死すべき(流れ弾)",
"なんでTheDeskのバージョン19は無いの",
"デレマス要素なくない?",
"今日も「TheDesk」でエゴサが捗る",
"開発者はTheDeskのヘビーユーザではない",
"アイコンは猫だが開発者は犬派",
"#TheDeskのアイコンは猫虐待",
"上のアニメーションからしてこの猫は完全に仮想化されている",
"TheDeskの歴史は2016年まで遡ることができる",
"WIP: Croudia, ネコ型SNS",
"リリース間隔は平均1桁日(昔1日に6回アプデを提供したせい)",
"node_modulesをignoreせずに上げてしまったせいでCode Frequencyが破壊された",
"TheDesk XSS Hunt をしなければならない()",
"毎月出る支援お願いしますダイアログで月初めを知る人 #いろいろな人",
"Integrated TLは目玉機能なので消せないが消せるものなら消したいくらい内部構造がヤバい",
"「アンケート」か「投票」か。「時間指定投稿」か「予約投稿」か",
"実装当初は言語を「関西弁」にするとお問い合わせフォームまで関西弁だった",
"Ctrl+Kでメニューが出ます",
"検索ボックスは入力後Enterで確定できる",
"開発者の推しカラーテーマはPolar Night",
"TheDeskのユーザーエージェントは毎回起動時に変わります。TheDeskと確定させることはできません",
"AppData/Roaming/TheDesk(Windows)の中にcutsom.cssを入れるとカスタムCSSを導入できます",
"環境設定の「ウィンドウフレーム」は「オフ」がおすすめ",
"各トゥートの右上の時刻表示を押すとトゥートのリンクがコピーされます",
"各トゥートの左下の公開範囲のアイコンを押すとそのトゥートの本文がコピーされますが挙動にバグがあります",
"TheDeskをMisskeyクライアントだと思って使ってはいけません",
"この迷文を追加したい場合はapp/maxim.ja.jsonを編集",
"本当はTheDesk 21.0.0(Mayu)専用のアイコンを用意していた",
"TheDesk 20.x.xと21.x.xではアイコンがちょっと違う",
"三大見てはいけないもの: TheDeskのコード、TheDeskのDevTool console、あと一つは",
"この画面がずっと出続けているのは多分yarn construct忘れてる",
"たまにここに何も出ないことがあるけど、なんでかはわからない",
"Kawaii->Mayu(今ここ)->Koume->Chieri->Anastasia->Aiko",
"言語設定を日本語以外にするとこの表示はどうなると思う?",
"今日も使ってくれてありがとう。利用者カウンターがキリ番ならご報告を",
"Ctrl+Eで通知の赤くなって「Fav: 1」とかなってるのをリセットできる",
"このアプリケーションの正式な名称は小文字thedeskだけど、内部でしか使われてない",
"N押すとトゥートのボックスが出て、すぐ打ち込める。",
"Xを押すとトゥートのボックスは出るけど、打ち込めない。その代わりもう一度押すと消せる。",
"トゥートした後ボックスを閉じるとかそのままにしておくとかは、設定で変えられます。",
"OpenStickerへの登録データ募集中",
"Microsoft Store版のアップデートは向こうに止められてます",
"いのちの輝き版ロゴ",
"いのちの輝き版ロゴ",
"いのちの輝き版ロゴ",
"いのちの輝き版ロゴ",
"いのちの輝き版ロゴ"
]

View File

@@ -6,6 +6,7 @@
<link href="./css/tl.css" type="text/css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
<link href="./node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="./node_modules/grapheme-splitter/index.js"></script>
<title>TheDesk Nano</title>
<style>
html {
@@ -15,7 +16,7 @@
height: 100vh;
overflow: hidden;
font-family: sans-serif;
color: var(--color) !important;
color: var(--text) !important;
}
body {
@@ -44,7 +45,7 @@
textarea {
-webkit-app-region: no-drag;
color: var(--color) !important;
color: var(--text) !important;
}
::-webkit-scrollbar {
@@ -82,12 +83,16 @@
.cvo {
grid-template-rows: auto 1rem 1fr auto 2rem;
}
.voice {
display: none;
}
</style>
</head>
<body>
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
<script>
var pwa = false
$.strip_tags = function(str, allowed) {
if (!str) {
return "";
@@ -128,7 +133,7 @@
</select>
</div>
<button onclick="set()" id="setting">Setting</button>
<textarea id="textarea" style="width:55%; background-color:transparent" placeholder="Post someyhing new"></textarea>
<textarea id="textarea" style="width:55%; background-color:transparent" placeholder="Post something new"></textarea>
<button class="btn" onclick="post()">Post</button>
<button onclick="window.close()">x</button><br />
<div id="timeline_nano">Click "settings" to show TL</div>
@@ -141,7 +146,7 @@
}
</script>
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="view/en/main.js"></script>
<script type="text/javascript" src="./js/platform/first.js"></script>
<script type="text/javascript" src="./js/post/status.js"></script>
<script type="text/javascript" src="./js/post/post.js"></script>
<script type="text/javascript" src="./js/post/use-txtbox.js"></script>

5
app/netlify.toml Normal file
View File

@@ -0,0 +1,5 @@
[[redirects]]
from = "/"
to = "/app"
status = 301
force = true

97
app/opening.html Normal file
View File

@@ -0,0 +1,97 @@
<!DOCTYPE html>
<html lang="ja">
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
<meta charset="utf-8" />
<style>
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), url('./fonts/OpenSans-Light.ttf') format('truetype');
}
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 5px;
padding-top: 15px;
background-color: #222222;
color: white;
text-align: center;
}
.loading {
animation: throbber-loader 1000ms 300ms infinite ease-out;
background: #3d3d3d;
display: inline-block;
position: relative;
text-indent: -9999px;
width: 0.9em;
height: 0.9em;
margin: 0 .9em;
}
.loading:before,
.loading:after {
background: #3d3d3d;
content: '\x200B';
display: inline-block;
width: 0.9em;
height: 0.9em;
position: absolute;
top: 0;
}
.loading:before {
animation: throbber-loader 1000ms 150ms infinite ease-out;
left: -1.9em;
}
.loading:after {
animation: throbber-loader 1000ms 450ms infinite ease-out;
right: -1.9em;
}
@keyframes throbber-loader {
0% {
background: #3d3d3d;
}
10% {
background: #6b9dc8;
}
40% {
background: #3d3d3d;
}
}
a,
button {
-webkit-app-region: no-drag;
}
h1 {
margin: 0;
}
#maxim {
font-size: 0.7rem;
}
</style>
</head>
<body class="center" style="overflow: hidden;">
<img src="./img/desk-animation.svg" id="leader" style="max-width: 62%;" />
<h1>TheDesk</h1>
<span id="ver"></span><br />
<span class="loading"></span><br />
<div class="cp">
<span id="maxim"></span><br />
<script>
if (location.search) {
var m = location.search.match(/\?ver=([0-9.]+)&codename=([a-zA-Z]+)&maxim=(.+)/)
var maxim = decodeURI(m[3])
if(maxim == 'いのちの輝き版ロゴ') document.getElementById('leader').setAttribute('src', './img/2025.svg')
var ver = m[1]
var code = m[2]
document.getElementById('ver').innerText = `${ver}(${code})`
document.getElementById('maxim').innerText = maxim
}
</script>
</div>
</body>
</html>

View File

@@ -1,130 +1,143 @@
{
"name": "thedesk",
"version": "20.3.0",
"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 --automatic && cd ../../",
"dev": "npx electron ./ --dev",
"dist": "build --linux snap",
"watchview": "node view/make/make.js --automatic --watch",
"build:js": "node build.js",
"build": "node view/make/make.js --automatic && npx electron-builder",
"build:all": "npx electron-builder --win --linux",
"build:win": "npx electron-builder --win",
"build:pwa": "node view/make/make.js --automatic --pwa"
},
"keywords": [
"mastodon",
"client",
"electron",
"thedesk"
],
"bugs": {
"url": "https://github.com/cutls/TheDesk/issues",
"email": "web-pro@cutls.com"
},
"homepage": "https://thedesk.top",
"author": {
"name": "Cutls",
"url": "https://cutls.com/@Cutls",
"email": "web-pro@cutls.com"
},
"contributor": [
{
"name": "とねぢ",
"url": "https://minohdon.jp/@toneji",
"email": "solfa.tono@gmail.com"
"name": "thedesk",
"version": "22.1.0",
"codename": "Koume",
"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 --automatic && cd ../../ && browserify aiscript.js -o js/platform/aiscript.js",
"construct:store": "cd view/make && node make --automatic --store && cd ../../ && browserify aiscript.js -o js/platform/aiscript.js",
"dev": "npx electron ./ --dev",
"dist": "build --linux snap",
"watchview": "node view/make/make.js --automatic --watch",
"build:js": "node build.js",
"build": "node view/make/make.js --automatic && npx electron-builder",
"build:pwa": "node view/make/make.js --automatic --pwa",
"build:win:web": "node view/make/make.js --automatic && npx electron-builder --win",
"build:win:msstore": "node view/make/make.js --automatic --store && npx electron-builder --win appx",
"build:linux:web": "node view/make/make.js --automatic && npx electron-builder --linux",
"build:linux:snapstore": "node view/make/make.js --automatic --store && npx electron-builder --linux",
"build:mac:web": "node view/make/make.js --automatic && npx electron-builder --mac",
"build:mac:homebrew": "node view/make/make.js --automatic --store && npx electron-builder --mac",
"lint:fix": "eslint js --fix",
"lint": "eslint js"
},
{
"name": "ぽぷんじゃ",
"url": "https://popon.pptdn.jp/@popn_ja",
"email": "popn.ja@gmail.com"
},
{
"name": "kPherox",
"url": "https://pl.kpherox.dev/kPherox",
"email": "admin@mail.kr-kp.com"
}
],
"license": "GPL-3.0",
"dependencies": {
"@fortawesome/fontawesome-free": "^5.13.0",
"custom-electron-titlebar": "^3.2.2-hotfix62",
"electron-dl": "^3.0.0",
"jimp": "^0.10.1",
"jquery": "^3.4.1",
"jquery-ui-dist": "^1.12.1",
"json5": "^2.1.3",
"lodash": "^4.17.15",
"materialize-css": "git://github.com/cutls/materialize#v1-dev",
"sumchecker": "^3.0.1",
"sweetalert2": "^9.10.9",
"system-font-families": "^0.4.1",
"vue": "^2.6.11"
},
"optionalDependencies": {
"itunes-nowplaying-mac": "git://github.com/cutls/itunes-nowplaying-mac"
},
"devDependencies": {
"chokidar": "^3.3.1",
"electron": "^8.0.0",
"electron-builder": "^22.4.1",
"electron-rebuild": "^1.10.1",
"readline-sync": "1.4.10"
},
"build": {
"productName": "TheDesk",
"appId": "top.thedesk",
"asarUnpack": [
"node_modules/itunes-nowplaying-mac"
"keywords": [
"mastodon",
"client",
"electron",
"thedesk"
],
"directories": {
"output": "../build"
"bugs": {
"url": "https://github.com/cutls/TheDesk/issues",
"email": "p@cutls.com"
},
"win": {
"icon": "build/thedesk.ico",
"target": [
"nsis",
"portable",
"appx"
]
"homepage": "https://thedesk.top",
"author": {
"name": "Cutls",
"url": "https://cutls.dev",
"email": "p@cutls.com"
},
"appx": {
"identityName": "53491Cutls.TheDesk",
"applicationId": "Cutls.TheDesk",
"publisherDisplayName": "Cutls",
"publisher": "CN=629757F5-A5EE-474F-9562-B304A89A9FD1",
"languages": [
"JA-JP",
"EN-US"
]
"contributor": [
{
"name": "とねぢ",
"url": "https://minohdon.jp/@toneji",
"email": "solfa.tono@gmail.com"
},
{
"name": "ぽぷんじゃ",
"url": "https://popon.pptdn.jp/@popn_ja",
"email": "popn.ja@gmail.com"
},
{
"name": "kPherox",
"url": "https://pl.kpherox.dev/kPherox",
"email": "admin@mail.kr-kp.com"
}
],
"license": "GPL-3.0",
"dependencies": {
"@fortawesome/fontawesome-free": "^5.15.2",
"@syuilo/aiscript": "^0.11.1",
"electron-dl": "^3.0.2",
"jimp": "^0.16.1",
"jquery": "^3.5.1",
"jquery-ui-dist": "^1.12.1",
"json5": "^2.2.0",
"lodash": "^4.17.20",
"materialize-css": "git://github.com/cutls/materialize#v1-dev",
"sanitize-html": "^2.3.2",
"sumchecker": "^3.0.1",
"sweetalert2": "^10.14.0",
"system-font-families": "^0.4.1",
"vue": "^2.6.12"
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"artifactName": "TheDesk-setup.${ext}"
"optionalDependencies": {
"itunes-nowplaying-mac": "0.3.1"
},
"linux": {
"icon": "build/icons",
"target": [
"zip",
"snap",
"deb"
],
"category": "Network"
"devDependencies": {
"browserify": "^17.0.0",
"chokidar": "^3.5.1",
"electron": "^10.1.5",
"electron-builder": "^22.9.1",
"electron-rebuild": "^2.3.2",
"eslint": "^7.13.0",
"readline-sync": "1.4.10"
},
"mac": {
"target": [
"dmg",
"zip"
]
},
"electronDownload": {
"version": "6.0.0"
},
"electronVersion": "6.0.0"
}
"build": {
"productName": "TheDesk",
"appId": "top.thedesk",
"asarUnpack": [
"node_modules/itunes-nowplaying-mac",
"main/script"
],
"directories": {
"output": "../build"
},
"win": {
"icon": "build/thedesk.ico",
"target": [
"nsis",
"appx",
"portable"
]
},
"appx": {
"identityName": "53491Cutls.TheDesk",
"applicationId": "Cutls.TheDesk",
"publisherDisplayName": "Cutls",
"publisher": "CN=629757F5-A5EE-474F-9562-B304A89A9FD1",
"languages": [
"JA-JP",
"EN-US"
]
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"artifactName": "TheDesk-setup.${ext}"
},
"linux": {
"icon": "build/icons",
"target": [
"zip",
"appImage",
"snap",
"deb"
],
"category": "Network"
},
"mac": {
"target": [
"dmg",
"zip"
]
},
"electronDownload": {
"version": "9.0.5"
},
"electronVersion": "9.0.5"
}
}

BIN
app/source/bubble.wav Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More