Compare commits

..

462 Commits

Author SHA1 Message Date
Cutls
74fe12c896 push 2019-09-13 21:54:11 +09:00
Cutls
f250d69af8 package.json 2019-09-12 23:43:10 +09:00
Cutls
25a1db84a4 Add: node_modules 2019-09-12 23:38:13 +09:00
Cutls
4769c83958 Merge branch 'master' into gh-pages 2019-09-12 23:35:42 +09:00
Cutls
8b1d5b3cb4 Change: make.js 2019-09-12 23:35:13 +09:00
Cutls
a448924514 Change: PWA package.json 2019-09-12 23:30:43 +09:00
Cutls
467033a366 Merge branch 'master' into gh-pages 2019-09-12 23:28:02 +09:00
Cutls
bf69d23379 Add: Welcome guide 2019-09-12 23:25:27 +09:00
Cutls
a4e3031796 Add: some CORS error 2019-09-12 21:30:48 +09:00
Cutls
e355d717c5 Merge: master 2019-09-12 21:21:52 +09:00
Cutls
286e7956f2 Add: featured tag 2019-09-09 23:26:57 +09:00
Cutls
e04b64a326 Unread misc 2019-09-08 09:39:26 +09:00
Cutls
c86a99df06 Add: markers and columnReload on notf 2019-09-08 01:44:28 +09:00
Cutls
3b69c4e7c1 Add: quote 2019-09-08 01:33:01 +09:00
Cutls
bc5be9449d Add: some supported instance and add 'quote' support or not info 2019-09-08 01:02:40 +09:00
Cutls
b968e59db1 Merge pull request #110 from cutls/dependabot/npm_and_yarn/app/jimp-tw-0.7.0
Update jimp requirement from ^0.6.4 to ^0.7.0 in /app
2019-09-07 05:28:47 +09:00
dependabot-preview[bot]
fa06c4a729 Update jimp requirement from ^0.6.4 to ^0.7.0 in /app
Updates the requirements on [jimp](https://github.com/oliver-moran/jimp) to permit the latest version.
- [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.6.4...v0.7.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-06 20:26:15 +00:00
Cutls
81b99515cd Add: POST markers 2019-09-07 01:46:50 +09:00
Cutls
5e6c713f9d Merge branch 'master' of https://github.com/cutls/TheDesk 2019-09-07 01:33:41 +09:00
Cutls
376425cc98 Add: demo: unread reader 2019-09-07 01:33:30 +09:00
Cutls
38cff550e1 Add: identity_proof 2019-09-05 23:55:34 +09:00
Cutls
64781c1cca Developer -> Main author 2019-09-03 09:57:56 +09:00
Cutls
e82e85b5ea Fix: replycount 2019-09-02 00:14:33 +09:00
Cutls
2b84a27cdc TheDesk Usain (18.9.2) 2019-09-01 21:27:18 +09:00
Cutls
6f7f5cbabc Fix: poll UI 2019-09-01 01:46:42 +09:00
Cutls
174a8696b0 fix 2019-09-01 01:32:05 +09:00
Cutls
d5a27ba814 TheDesk Usamin (18.9.1) 2019-09-01 01:31:19 +09:00
Cutls
6e2e488565 Fix: instance actor 2019-09-01 00:02:34 +09:00
Cutls
7d02ef2b3e TheDesk Usamin (18.9.0) 2019-08-31 23:35:18 +09:00
Cutls
f8f2719c5d Merge branch 'master' of https://github.com/cutls/TheDesk 2019-08-31 00:10:37 +09:00
Cutls
da6faaf1a5 Add: timeago on acct 2019-08-31 00:10:24 +09:00
Cutls
350068d6f1 Add: locale 2019-08-31 00:10:16 +09:00
Cutls
70bee4265b Add: custom CSS request 2019-08-31 00:10:01 +09:00
Cutls
18ce8cf2f4 Add: show note and last-status on acct 2019-08-31 00:09:37 +09:00
Cutls
b50a55cce7 Add: multi-lang relative time 2019-08-31 00:09:01 +09:00
Cutls
e6f0e18aed Update README.md 2019-08-30 09:59:21 +09:00
Cutls
fd7daa407a Update README_ja.md 2019-08-30 09:58:51 +09:00
Cutls
0dead93606 Add: resizable menu 2019-08-30 01:46:30 +09:00
Cutls
5d6e8cf9b3 Add: search offset 2019-08-30 01:46:19 +09:00
Cutls
a0544e21e3 Add: directory 2019-08-30 01:46:04 +09:00
Cutls
d54112d41c Fix: bottom buttons group padding(top) 2019-08-30 01:45:32 +09:00
Cutls
1a0ba40b43 Introduce: via npm 2019-08-30 01:45:07 +09:00
Cutls
5d8ca9566a Add and fix 2019-08-29 01:33:06 +09:00
Cutls
834fa719b2 Introduce: JSON5 and export v2.1 2019-08-29 01:20:47 +09:00
Cutls
89bde2739a Merge branch 'master' of https://github.com/cutls/TheDesk 2019-08-26 21:06:11 +09:00
Cutls
46dbc9ae62 Add: GIt hash 2019-08-26 21:06:07 +09:00
Cutls
71554fca59 Merge pull request #109 from yzrsng/master
Enforce single instance for linux and windows
2019-08-26 13:10:20 +09:00
yzrsng
1c76b5886f Enforce single instance for linux and windows 2019-08-26 12:58:04 +09:00
Cutls
5007b70683 Add: git hash 2019-08-26 00:09:01 +09:00
Cutls
5694cbd945 Delete: can make file 2019-08-26 00:08:51 +09:00
Cutls
eee3c34dd7 TheDesk Usamin (18.8.3) 2019-08-25 22:40:33 +09:00
Cutls
cac39ad539 Fix: cannot follow at Pawoo 2019-08-25 22:22:44 +09:00
Cutls
1b68cdf7db Change: move user matching to More dropdown 2019-08-24 21:19:52 +09:00
Cutls
845c9a0f2e Merge branch 'master' of https://github.com/cutls/TheDesk 2019-08-24 01:10:08 +09:00
Cutls
24c69af942 Fix and Improve: show user data 2019-08-24 01:09:56 +09:00
Cutls
c656bc4bb6 Fix: toggle actions of toots 2019-08-24 01:09:40 +09:00
Cutls
025b60e564 README 2019-08-24 01:09:20 +09:00
Cutls
1e86964d8f Update issue templates 2019-08-23 02:54:29 +09:00
Cutls
61d4d7005e Fix: #108 NowPlaying of iTunes on macOS 2019-08-23 02:00:22 +09:00
Cutls
d0ed9faf50 TheDesk Usamin (18.8.2) 2019-08-22 01:44:37 +09:00
Cutls
8ed12170de TheDesk Usamin (18.8.2) 2019-08-22 01:34:03 +09:00
Cutls
d2ba5cbe4d Fix: ugly layout when display-area is not wide 2019-08-22 01:30:05 +09:00
Cutls
6b6d3c7307 Fix: when hashtags is not lower case 2019-08-22 00:00:08 +09:00
Cutls
362b5b9c69 NSFW media->sensitive media 2019-08-21 23:07:18 +09:00
Cutls
3cde12e893 TheDesk Usain (18.8.1) 2019-08-21 21:51:36 +09:00
Cutls
d2214480f6 Fix: gray color 2019-08-21 00:36:47 +09:00
Cutls
b8bd1a8ae6 Fix CSS 2019-08-21 00:02:29 +09:00
Cutls
0bfef0c2ce Remove: log 2019-08-19 23:31:42 +09:00
Cutls
f2ce98fda5 Fix: some CSS 2019-08-19 23:27:53 +09:00
Cutls
5f08215571 Fix: muting list 2019-08-19 23:09:46 +09:00
Cutls
9567a6ddf9 Fix: emojis 2019-08-19 23:09:34 +09:00
Cutls
4416c56884 Add: show dialogs when muting and blocking 2019-08-19 22:55:50 +09:00
Cutls
68328a9449 Fix: Fontawesome 2019-08-14 02:49:51 +09:00
Cutls
141f2a3f39 Change: CDN 2019-08-14 02:36:01 +09:00
Cutls
7bbca06033 Add: FOSSA 2019-08-14 02:14:34 +09:00
Cutls
ebb72265b9 package.json update 2019-08-14 01:47:21 +09:00
Cutls
c98f433da6 Delete assets 2019-08-14 01:35:01 +09:00
Cutls
2346ef7089 Remove: NowPlaying on Windows 2019-08-14 01:23:25 +09:00
Cutls
8aac6474da TheDesk Usamin (18.8.0) 2019-08-14 00:53:36 +09:00
Cutls
ffcecf38c8 Add: Change: live column add and remove 2019-08-14 00:40:21 +09:00
Cutls
77342206b1 Add: reload this column 2019-08-14 00:25:58 +09:00
Cutls
b6a44e7a7c Fix: vote display refresh 2019-08-14 00:24:11 +09:00
Cutls
e138d357c7 Remove: /follows 2019-08-14 00:23:34 +09:00
Cutls
66645982e9 Fix: arrow key img selector(reversed) 2019-08-14 00:23:05 +09:00
Cutls
4347f55077 Speed up 2019-08-11 02:52:32 +09:00
Cutls
ab9d45c775 Update: CSS about #InstanceTicker 2019-08-11 00:12:11 +09:00
Cutls
9c0c662f25 Update: icons 2019-08-09 10:58:55 +09:00
Cutls
63abdb2d53 Add: Liberapay 2019-08-08 02:06:13 +09:00
Cutls
47e2693368 Fix: about blue theme 2019-08-08 01:55:47 +09:00
Cutls
b909cbe666 Introduce: TheDesk notice v2 2019-08-07 23:27:00 +09:00
Cutls
95f5ce13ba Add: detecting languages[de/cs/bg] 2019-08-07 23:14:20 +09:00
Cutls
fed1496e68 Update: de and Change: algo of locale 2019-08-07 12:14:07 +09:00
Cutls
da6993730c Add: bg/cs/de locales 2019-08-07 09:24:52 +09:00
Cutls
0a1d462ace Add: trending tags 2019-08-06 23:06:09 +09:00
Cutls
1387482db0 TheDesk Usamin (18.7.1) 2019-08-02 00:02:52 +09:00
Cutls
b7a86324dd Merge pull request #105 from cutls/dependabot/npm_and_yarn/app/readline-sync-1.4.10
Update readline-sync requirement from 1.4.9 to 1.4.10 in /app
2019-08-01 22:56:12 +09:00
Cutls
babc5a6424 Merge pull request #107 from cutls/dependabot/npm_and_yarn/app/electron-tw-6.0.0
Update electron requirement from ^5.0.4 to ^6.0.0 in /app
2019-08-01 22:55:31 +09:00
dependabot-preview[bot]
74a468383c Update electron requirement from ^5.0.4 to ^6.0.0 in /app
Updates the requirements on [electron](https://github.com/electron/electron) to permit the latest version.
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v5.0.4...v6.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-31 20:26:05 +00:00
Cutls
4dcec3f240 Merge branch 'master' of https://github.com/cutls/TheDesk into gh-pages 2019-07-31 00:31:27 +09:00
Cutls
c325d4a8e7 gh-pages 2019-07-31 00:31:01 +09:00
dependabot-preview[bot]
3a48f0ff0d Update readline-sync requirement from 1.4.9 to 1.4.10 in /app
Updates the requirements on [readline-sync](https://github.com/anseki/readline-sync) to permit the latest version.
- [Release notes](https://github.com/anseki/readline-sync/releases)
- [Commits](https://github.com/anseki/readline-sync/compare/1.4.9...1.4.10)

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

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

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

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

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

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-15 16:10:18 +00:00
Cutls
dda9469874 TheDesk Usamin (18.6.0) - fix 2019-06-16 01:08:10 +09:00
Cutls
334fbdab3f TheDesk Usamin (18.6.0) 2019-06-15 23:07:18 +09:00
Cutls
a5f8e34ee6 Fix: 'about' preload #86 2019-06-15 18:52:28 +09:00
Cutls
eba54d0906 Change: some node integration on rend-proc #86 2019-06-15 02:30:29 +09:00
Cutls
070c40a958 Remove: node on update.html #86 2019-06-15 02:23:41 +09:00
Cutls
8d308cae5e Remove: Adobe photo editor 2019-06-15 02:17:28 +09:00
Cutls
848e9fcf99 Change: language.js reload #86 2019-06-15 02:12:55 +09:00
Cutls
d146776b17 Remove: node on spotify/tips/showOnTL.js #86 2019-06-15 02:10:11 +09:00
Cutls
7da16a7428 Remove: node on setting/system.js #86 2019-06-15 02:01:38 +09:00
Cutls
7b46145114 Remove: node on ui/img/layout.js #86 2019-06-15 01:32:59 +09:00
Cutls
725f0f789a Remove: node on notification/parse.js #86 2019-06-15 01:25:51 +09:00
Cutls
772a5438aa Remove: node on details/misskeyparse.js #86 2019-06-15 01:20:12 +09:00
Cutls
3c276b329b Remove: node on post.js #86 2019-06-15 01:15:45 +09:00
Cutls
e2cde71831 Remove: node in firest/img(post).js #86 2019-06-15 01:10:32 +09:00
Cutls
861ee3250d Remove: node in manager.js #86 2019-06-15 01:05:53 +09:00
Cutls
5672ccfa37 Add: login auth open url #86 2019-06-15 01:01:07 +09:00
Cutls
65e691cda8 Add: install source dialog #86 2019-06-15 00:54:44 +09:00
Cutls
56cca8b529 Change: mainWindow to event.sender on IPC #86 2019-06-15 00:51:41 +09:00
Cutls
367f2f656e Add: getPlatform #86 2019-06-14 23:25:27 +09:00
Cutls
7f806bd155 Add: sendSinmpleIpc for 'about' #86 2019-06-14 23:21:08 +09:00
Cutls
a70444e3c7 Introduce: preload and postMessage #86 2019-06-14 23:17:16 +09:00
Cutls
1a72033571 return 2019-06-14 00:59:33 +09:00
Cutls
a475407c27 try 2019-06-14 00:54:22 +09:00
Cutls
b602cd92a9 try 2019-06-14 00:54:08 +09:00
Cutls
2878a4a524 Fix beta 2019-06-14 00:53:19 +09:00
Cutls
8b1ac63343 Introducing: Materialize 1.0.0 2019-06-07 01:11:04 +09:00
Cutls
8d1012c9fb Merge branch 'master' of https://github.com/cutls/TheDesk 2019-06-06 23:42:15 +09:00
Cutls
62f2654358 Fix: Notice "ended" when poll has been ended without your vote 2019-06-06 23:42:02 +09:00
Cutls
e7feb4b2c5 Merge pull request #84 from cutls/dependabot/npm_and_yarn/app/electron-builder-20.43.0
Bump electron-builder from 20.41.0 to 20.43.0 in /app
2019-06-05 23:55:30 +09:00
dependabot-preview[bot]
dcc62b32a2 Bump electron-builder from 20.41.0 to 20.43.0 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 20.41.0 to 20.43.0.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v20.41.0...v20.43.0)
2019-06-04 20:25:43 +00:00
Cutls
26eecd11b6 Fix package 2019-06-04 23:31:39 +09:00
Cutls
8d388bbd4b update and construct script 2019-06-04 23:01:04 +09:00
Cutls
409635b00c Fix: hide filter btns on coll notf pane 2019-06-04 22:41:04 +09:00
Cutls
17a71ddbf6 Fix: Exclude notification 2019-06-04 22:37:03 +09:00
Cutls
d2a86af0e2 Change month logic and English 2019-06-04 22:29:47 +09:00
Cutls
f23dc928b2 WIP: Now Usamin (18.5.1) 2019-06-04 01:26:00 +09:00
Cutls
68e11dc222 WIP support me 2019-06-04 01:01:14 +09:00
Cutls
075c3ef9ca Merge branch 'master' of https://github.com/cutls/TheDesk 2019-06-03 23:39:27 +09:00
Cutls
6b004a3992 Fix visibility on Misskey #83 2019-06-03 23:38:58 +09:00
Cutls
3cf198538a Merge pull request #82 from cutls/dependabot/npm_and_yarn/app/electron-builder-20.41.0
Bump electron-builder from 20.40.2 to 20.41.0 in /app
2019-06-03 01:42:00 +09:00
Cutls
612400944e Fix: Pleroma hashtags unshown 2019-05-29 23:24:50 +09:00
Cutls
5f22d2427e Fix: Pleroma image unshown 2019-05-29 23:13:38 +09:00
Cutls
2692967b7d Fix: emojis select buttons on white-themes 2019-05-29 00:42:06 +09:00
dependabot-preview[bot]
2ed85ab978 Bump electron-builder from 20.40.2 to 20.41.0 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 20.40.2 to 20.41.0.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v20.40.2...v20.41.0)
2019-05-27 23:31:23 +00:00
Cutls
f843872a14 travis final 2019-05-27 02:59:57 +09:00
Cutls
b365b9d15b travis 19 2019-05-27 02:40:48 +09:00
Cutls
938ff926c3 travis 18 2019-05-27 02:28:08 +09:00
Cutls
7a1a6354df travis 17 2019-05-27 02:21:40 +09:00
Cutls
37e9d8242b travis 16 2019-05-27 02:19:09 +09:00
Cutls
8bf03f2809 travis 2019-05-27 02:02:37 +09:00
Cutls
c684a5b0d0 travis 16 2019-05-27 01:40:07 +09:00
Cutls
3281461809 travis 15 2019-05-27 01:38:52 +09:00
Cutls
2cd5cf505d travis 14 2019-05-27 01:34:26 +09:00
Cutls
42334450bf travis 14 2019-05-27 01:24:00 +09:00
Cutls
410633c873 travis 14 2019-05-27 01:18:44 +09:00
Cutls
ee67baf0b4 travis 13 2019-05-27 01:17:15 +09:00
Cutls
7afa959e6c travis 12 2019-05-27 00:45:26 +09:00
Cutls
ca0db95910 travis 11 2019-05-27 00:41:34 +09:00
Cutls
9825a84880 travis 11 2019-05-27 00:33:30 +09:00
Cutls
68260f3d85 travis 10 2019-05-27 00:22:50 +09:00
Cutls
d25fcfadc1 travis 9 2019-05-27 00:10:12 +09:00
Cutls
7059c1bb31 travis 9 2019-05-26 23:59:38 +09:00
Cutls
a4ac0af6e1 travis 8 2019-05-26 23:56:16 +09:00
Cutls
205a3bea44 travis 7 2019-05-26 23:55:16 +09:00
Cutls
748a69b3bd travis 6 2019-05-26 23:42:35 +09:00
Cutls
be36c3dd0b travis run all test 2019-05-26 23:40:03 +09:00
Cutls
13384ed93f travis final 2019-05-26 22:56:37 +09:00
Cutls
92b8a36019 travis windows 2 2019-05-26 22:43:08 +09:00
Cutls
225786e07f travis win 2019-05-26 22:40:37 +09:00
Cutls
8c8cf44ed6 travis 6 2019-05-26 22:22:45 +09:00
Cutls
c3e6e657c9 travis 5 2019-05-26 22:16:16 +09:00
Cutls
04185ea07b travis 4 2019-05-26 22:09:00 +09:00
Cutls
49794e05d0 travis 3 2019-05-26 21:58:31 +09:00
Cutls
b2be1a7bcc travis 2 2019-05-26 21:53:33 +09:00
Cutls
2d167c9c2e travis 1 2019-05-26 21:46:26 +09:00
Cutls
5251ba9b3f update README 2019-05-26 20:57:42 +09:00
Cutls
df443003e4 travis 2019-05-26 20:49:49 +09:00
Cutls
3719b1ed40 travis 2019-05-26 20:47:07 +09:00
Cutls
d4a246ea59 Merge pull request #80 from cutls/WIP-(before-CI)
Wip (before ci)
2019-05-26 20:44:18 +09:00
Cutls
c77b0f5924 Merge branch 'master' into WIP-(before-CI) 2019-05-26 20:44:09 +09:00
Cutls
bb1165ecf9 Merge branch 'WIP-(before-CI)' of https://github.com/cutls/TheDesk into WIP-(before-CI) 2019-05-26 20:43:15 +09:00
Cutls
93d2e8e0d5 Update to Usamin (18.5.0) 2019-05-26 20:42:52 +09:00
Cutls
b0db765f25 Update FUNDING.yml 2019-05-25 16:43:13 +09:00
Cutls
68a3786fb8 Create FUNDING.yml 2019-05-25 14:53:51 +09:00
Cutls
9103ba6af1 Merge pull request #75 from cutls/dependabot/npm_and_yarn/app/WIP-(before-CI)/jimp-0.6.4
Bump jimp from 0.2.28 to 0.6.4 in /app
2019-05-25 13:22:24 +09:00
Cutls
dd8e89234c Fix TheDesk Oshirase 2019-05-22 23:39:55 +09:00
Cutls
bcb358cc8b Merge pull request #77 from kPherox/fix-hidden-timeline-scroll-bottom
Fix the hidden last of the timeline
2019-05-22 07:45:17 +09:00
kPherox
f42c59669f refs cutls#11 Fix the hidden last of the timeline
- 通知TLを一番下までスクロールしても最後の投稿の全文が見えない。(「アクションメニューを非表示」は「いいえ」にしてある)
2019-05-22 02:02:30 +09:00
dependabot[bot]
d656860b2e Bump jimp from 0.2.28 to 0.6.4 in /app
Bumps [jimp](https://github.com/oliver-moran/jimp) from 0.2.28 to 0.6.4.
- [Release notes](https://github.com/oliver-moran/jimp/releases)
- [Commits](https://github.com/oliver-moran/jimp/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-05-21 15:55:10 +00:00
Cutls
30744e402a Merge pull request #76 from cutls/dependabot/npm_and_yarn/app/WIP-(before-CI)/electron-builder-20.40.2
Bump electron-builder from 20.39.0 to 20.40.2 in /app
2019-05-22 00:53:36 +09:00
Cutls
43bac6f3e6 Add: notification filter by user (for head) 2019-05-22 00:00:54 +09:00
dependabot[bot]
dae4371a3f Bump electron-builder from 20.39.0 to 20.40.2 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 20.39.0 to 20.40.2.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v20.39.0...v20.40.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-05-20 20:21:58 +00:00
Cutls
990c2f796e Fix acct-select-box 2019-05-20 22:34:58 +09:00
Cutls
89c3a4f8b1 Delete some 2019-05-20 08:41:24 +09:00
Cutls
ca12884735 WIP: Introduce Electron 5.0.1 2019-05-19 19:24:27 +09:00
Cutls
07e907b599 Add: Astarte marquee BBCode 2019-05-19 18:31:47 +09:00
Cutls
e0bdd1e0b2 japanese README 2019-05-19 18:21:54 +09:00
Cutls
595b1a3c62 reverse 2019-05-19 17:57:07 +09:00
Cutls
236392299b add screenshot 2019-05-19 17:54:04 +09:00
Cutls
418b2e7668 check2 2019-05-19 17:38:46 +09:00
Cutls
052694dbde test readme 2019-05-19 17:30:15 +09:00
Cutls
d529a105c5 Merge branch 'WIP-(before-CI)' of https://github.com/cutls/TheDesk into WIP-(before-CI) 2019-05-19 17:01:18 +09:00
Cutls
40d877682b check dependa 2019-05-19 17:01:15 +09:00
Cutls
5e324f19ae Merge pull request #72 from cutls/dependabot/npm_and_yarn/app/WIP-(before-CI)/vue-2.6.10
Bump vue from 2.6.9 to 2.6.10 in /app
2019-05-19 17:00:45 +09:00
Cutls
9d8b9cbd04 Merge pull request #71 from cutls/dependabot/npm_and_yarn/app/WIP-(before-CI)/electron-dl-1.14.0
Bump electron-dl from 1.11.0 to 1.14.0 in /app
2019-05-19 17:00:35 +09:00
dependabot[bot]
54e5180732 Bump vue from 2.6.9 to 2.6.10 in /app
Bumps [vue](https://github.com/vuejs/vue) from 2.6.9 to 2.6.10.
- [Release notes](https://github.com/vuejs/vue/releases)
- [Commits](https://github.com/vuejs/vue/compare/v2.6.9...v2.6.10)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-05-19 08:00:07 +00:00
Cutls
dbf959782f Merge pull request #70 from cutls/dependabot/npm_and_yarn/app/WIP-(before-CI)/tar-4.4.8
[Security] Bump tar from 2.2.1 to 4.4.8 in /app
2019-05-19 16:58:43 +09:00
Cutls
33114ca3c8 Merge pull request #74 from cutls/dependabot/npm_and_yarn/app/WIP-(before-CI)/sumchecker-3.0.0
Bump sumchecker from 2.0.2 to 3.0.0 in /app
2019-05-19 16:56:54 +09:00
dependabot[bot]
4c2aebc7c1 Bump sumchecker from 2.0.2 to 3.0.0 in /app
Bumps [sumchecker](https://github.com/malept/sumchecker) from 2.0.2 to 3.0.0.
- [Release notes](https://github.com/malept/sumchecker/releases)
- [Changelog](https://github.com/malept/sumchecker/blob/master/NEWS.md)
- [Commits](https://github.com/malept/sumchecker/compare/v2.0.2...v3.0.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-05-19 07:56:12 +00:00
Cutls
b51470f999 Merge pull request #73 from cutls/dependabot/npm_and_yarn/app/WIP-(before-CI)/node-notifier-5.4.0
Bump node-notifier from 5.2.1 to 5.4.0 in /app
2019-05-19 16:54:43 +09:00
Cutls
b2be5f3706 become a patreon 2019-05-19 16:54:23 +09:00
Cutls
06eb347cf8 More prettier 2019-05-19 16:39:30 +09:00
dependabot[bot]
81c5c1d86a Bump node-notifier from 5.2.1 to 5.4.0 in /app
Bumps [node-notifier](https://github.com/mikaelbr/node-notifier) from 5.2.1 to 5.4.0.
- [Release notes](https://github.com/mikaelbr/node-notifier/releases)
- [Changelog](https://github.com/mikaelbr/node-notifier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mikaelbr/node-notifier/compare/v5.2.1...v5.4.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-05-19 07:13:55 +00:00
dependabot[bot]
82858b7b92 Bump electron-dl from 1.11.0 to 1.14.0 in /app
Bumps [electron-dl](https://github.com/sindresorhus/electron-dl) from 1.11.0 to 1.14.0.
- [Release notes](https://github.com/sindresorhus/electron-dl/releases)
- [Commits](https://github.com/sindresorhus/electron-dl/compare/v1.11.0...v1.14.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-05-19 07:12:59 +00:00
dependabot[bot]
b3506aec3c [Security] Bump tar from 2.2.1 to 4.4.8 in /app
Bumps [tar](https://github.com/npm/node-tar) from 2.2.1 to 4.4.8. **This update includes security fixes.**
- [Release notes](https://github.com/npm/node-tar/releases)
- [Commits](https://github.com/npm/node-tar/compare/v2.2.1...v4.4.8)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-05-19 07:12:56 +00:00
Cutls
de6e9c6f11 Update SHA256 lib 2019-05-19 15:47:45 +09:00
Cutls
d3ff1aa17a Debug 2019-05-19 15:17:05 +09:00
Cutls
3cde6d0bff Improved: attached video on Pleroma 2019-05-16 00:17:47 +09:00
Cutls
bfade31849 Add link to unknown media 2019-05-16 00:11:09 +09:00
Cutls
3a06820f1e Fix: follow request 2019-05-16 00:01:54 +09:00
Cutls
c5f712359d Merge pull request #68 from cutls/WIP-(before-CI)
18.4.0
2019-05-11 01:36:07 +09:00
Cutls
c9cca85db3 Add features 2019-05-11 01:32:54 +09:00
Cutls
07b203b719 TheDesk Usamin (18.4.0) 2019-05-11 01:31:15 +09:00
Cutls
a636c745e4 Add: follow request auth/reject 2019-05-09 00:46:26 +09:00
Cutls
e9024312a7 Fix: some Misskey bugs about reaction 2019-05-09 00:31:05 +09:00
Cutls
edbe3c164f Add: Misskey v11 streaming method 2019-05-08 00:48:59 +09:00
Cutls
8991cb5a96 Add: NSFW notice 2019-05-07 22:43:30 +09:00
Cutls
b4aa5aead5 Merge pull request #67 from cutls/WIP-(before-CI)
TheDesk Usamin (18.3.3)
2019-05-07 00:45:08 +09:00
Cutls
873a8fd229 fix typo 2019-05-07 00:44:04 +09:00
Cutls
d0ddc58160 TheDesk Usamin (18.3.3) 2019-05-07 00:43:21 +09:00
Cutls
6eebfed609 get blurhash 2019-05-07 00:42:06 +09:00
Cutls
09b7b8633e Merge pull request #66 from cutls/WIP-(before-CI)
TheDesk Usaimin (18.3.2)
2019-05-06 19:36:08 +09:00
Cutls
c93326d218 Add notestock notice 2019-05-06 19:34:49 +09:00
Cutls
a03c5c0ecf TheDesk Usain (18.3.2) 2019-05-06 19:31:28 +09:00
Cutls
0380251294 Check vulnerability 2019-05-06 19:30:05 +09:00
Cutls
d8f857e05d TheDesk Usamin (18.3.2) 2019-05-06 19:15:54 +09:00
Cutls
7a06a2b192 Add: min_id TL 2019-05-06 19:10:03 +09:00
Cutls
771db8c3ad Notestock 2019-05-06 01:28:00 +09:00
Cutls
9a800639e6 Custom emojis' marign 2019-05-06 01:27:54 +09:00
Cutls
550c7b1805 change to cutls.com from kirishima.cloud 2019-05-03 01:08:46 +09:00
Cutls
ad7c7ffa66 Fix: flag emojis #64 2019-05-03 00:51:10 +09:00
Cutls
57978bd152 TheDesk Minami💛(announce) 2019-04-25 01:10:49 +09:00
Cutls
5cd72a538c add note 2019-04-22 23:19:34 +09:00
Cutls
d439169c63 Merge pull request #61 from kPherox/fix-integrated-tl-reconnect-streaming
Fix integrated tl reconnect streaming
2019-04-22 23:18:12 +09:00
Cutls
da39e0ded6 package 2019-04-22 23:17:46 +09:00
Cutls
823fae5eac TheDesk Usamin (18.3.1) 2019-04-22 23:16:57 +09:00
kPherox
4f3a7c47e3 Change console log level 2019-04-22 03:33:56 +09:00
kPherox
bd8d480e07 Check error count on integrated tl 2019-04-22 03:31:14 +09:00
kPherox
a09c031dbe Add type integrated to reconnector 2019-04-22 03:26:57 +09:00
kPherox
1fee94846d Fix typo 2019-04-22 02:02:23 +09:00
Cutls
4fb37525d5 Merge branch 'WIP-(before-CI)' of https://github.com/cutls/TheDesk into WIP-(before-CI) 2019-04-22 01:51:42 +09:00
Cutls
8f25557f20 wip 2019-04-22 01:51:32 +09:00
Cutls
cb47eabed9 Merge pull request #60 from kPherox/fix-poll-vote-button
Fix poll vote button
2019-04-22 01:50:29 +09:00
kPherox
f8823a4c5a Fix bug that deleting the vote button 2019-04-22 01:34:50 +09:00
kPherox
7fdd5964cc Fix lang_parse_vote for en 2019-04-22 01:00:20 +09:00
Cutls
3aadcaef0f add some notifications sound 2019-04-20 23:40:12 +09:00
Cutls
f58d4f349b TheDesk Usamin (18.3.0) 2019-04-20 00:59:31 +09:00
Cutls
9bb8ec0b66 some security update 2019-04-19 23:02:30 +09:00
Cutls
ec9a14d63b custom emojis when poll 2019-04-16 01:38:29 +09:00
Cutls
82a00f4d1e security 2019-04-16 01:29:44 +09:00
Cutls
af97f88d0a sound 2019-04-15 00:45:04 +09:00
Cutls
e27351481b Merge pull request #58 from cutls/WIP-(before-CI)
Wip (before ci)
2019-04-14 18:58:33 +09:00
Cutls
4c375e2d0a travis 2019-04-14 18:58:12 +09:00
Cutls
53cd49d4e8 travis 2019-04-14 18:55:30 +09:00
Cutls
e36942180e restart 2019-04-14 03:48:44 +09:00
Cutls
6b58c88118 travis 2019-04-14 03:46:15 +09:00
Cutls
d20777ed18 travis 2019-04-14 03:45:30 +09:00
Cutls
202e389c20 travis 2019-04-14 03:38:07 +09:00
Cutls
707a5b2033 change travis 2019-04-14 03:31:19 +09:00
Cutls
0967c93dde Merge pull request #57 from cutls/WIP-(before-CI)
Wip (before ci)
2019-04-14 03:26:44 +09:00
Cutls
b13849a427 readme 2019-04-14 03:26:19 +09:00
Cutls
d0322c7bda TheDesk Usamin (18.2.3) 2019-04-14 03:22:16 +09:00
Cutls
494a4e90d6 fix some undif 2019-04-14 03:06:59 +09:00
Cutls
d1968a2e69 Merge pull request #56 from cutls/mac
miss
2019-04-14 01:43:57 +09:00
Cutls
51e6909f77 #64 fix 2019-04-14 01:42:49 +09:00
Cutls
cec46faf19 keybase 2019-04-14 01:42:18 +09:00
Cutls
53f880ab97 Merge pull request #55 from kPherox/fix-nowplaying-for-asar-packed
Fix nowplaying for asar packed
2019-04-14 01:41:30 +09:00
kPherox
cc20b0a7c0 Replace promise to async/await 2019-04-14 01:33:00 +09:00
kPherox
efac88db4c Change to pass error on itunes-np 2019-04-14 01:32:16 +09:00
Cutls
2e1c076b5f Merge pull request #53 from kPherox/update-package
Update package
2019-04-14 00:36:19 +09:00
kPherox
5a03df6ee9 Change itunes-nowplaying-mac pull request number 2019-04-14 00:13:57 +09:00
kPherox
ade5893183 Unpack asar for itunes-nowplaying-mac 2019-04-14 00:12:35 +09:00
kPherox
8a17e737f9 Add npm scripts for build
Update README.md#buildビルド

初回のcloneするときの流れを修正してからnpm scriptsを利用するように書き換え
2019-04-14 00:09:35 +09:00
kPherox
94c1ff3731 Replace dev dependency electron-packager to electron-builder
Some package update
2019-04-13 23:34:10 +09:00
Cutls
4e5fe2fc91 proof lang 2019-04-13 12:51:54 +09:00
Cutls
f88ed31e38 Add keybase 2019-04-13 12:41:58 +09:00
Cutls
7df51c161b mac 18.2.2 2019-04-13 03:55:05 +09:00
Cutls
b5d1686c12 update package 2019-04-13 02:32:42 +09:00
Cutls
a1048b3243 to linux 2019-04-13 02:31:07 +09:00
Cutls
f9090e261d travis 2019-04-13 02:21:21 +09:00
Cutls
4029f168df readme 2019-04-13 01:55:01 +09:00
Cutls
7965e7c742 pavkage 2019-04-13 01:54:33 +09:00
Cutls
932e6731c9 readme package 2019-04-13 01:49:22 +09:00
Cutls
3c3eb5209b readme 2019-04-13 01:48:26 +09:00
Cutls
a07d6b3172 Merge pull request #52 from cutls/WIP-(before-CI)
travis
2019-04-12 23:39:54 +09:00
Cutls
253f742332 travis 2019-04-12 23:39:28 +09:00
Cutls
35e262293d Merge pull request #51 from cutls/WIP-(before-CI)
Wip (before ci)
2019-04-12 23:37:14 +09:00
Cutls
972ea9f5ed travjs 2019-04-12 23:36:16 +09:00
Cutls
0c1191e362 travis 2019-04-12 23:35:48 +09:00
Cutls
426e48325c osx 2019-04-12 23:35:22 +09:00
Cutls
6c86825732 update travis 2019-04-12 23:33:36 +09:00
Cutls
e0cae78827 Merge pull request #50 from cutls/WIP-(before-CI)
Wip (before ci)
2019-04-12 23:32:37 +09:00
Cutls
09d3643b19 travis 2019-04-12 23:32:14 +09:00
Cutls
ed93d5b4f2 ul 2019-04-12 23:30:59 +09:00
Cutls
f0d7d84f8e travis update 2019-04-12 23:29:30 +09:00
Cutls
05fab4c45c Change 2019-04-12 23:26:38 +09:00
Cutls
3059ec9941 Merge pull request #49 from cutls/WIP-(before-CI)
Wip (before ci)
2019-04-12 23:20:26 +09:00
Cutls
892872869b TheDesk Usamin (18.2.1) 2019-04-12 23:19:27 +09:00
Cutls
0db7ed4a33 TheDesk Usamin (18.2.1) 2019-04-12 23:14:38 +09:00
Cutls
54e12db08b Fix XSS 2019-04-12 23:12:57 +09:00
Cutls
6fb90f0c8e Merge pull request #48 from cutls/WIP-(before-CI)
TheDesk Usamin (18.2.0)
2019-04-11 17:13:20 +09:00
Cutls
5f3257a83b TheDesk Usamin (18.2.0) 2019-04-11 17:11:26 +09:00
Cutls
f333595817 WIP: done some ToDo 2019-04-11 12:52:38 +09:00
Cutls
cc1018c65d next ver 2019-04-11 03:11:03 +09:00
Cutls
1c16a5f4a0 WIP done some ToDO 2019-04-11 02:59:13 +09:00
Cutls
0ad7bf9036 WIP some ToDo 2019-04-11 01:52:01 +09:00
Cutls
1670c0bc08 ToDo: done: ts column/menu .active/ about 2019-04-09 23:12:11 +09:00
Cutls
f1c4276d06 Add list on misskey 2019-04-08 00:14:06 +09:00
Cutls
50bfbbd755 Merge pull request #47 from kPherox/fix-reopen-macos
Fix cannot reopen in macOS
2019-04-05 21:48:24 +09:00
kPherox
f5afafe26a Remove all listener when closed main window 2019-04-05 20:43:37 +09:00
kPherox
c524777505 Fix cannot repoen in macOS 2019-04-05 19:55:13 +09:00
Cutls
8155baa07d fix about window 2019-04-04 01:09:57 +09:00
Cutls
32c56dcf6a Fix link to quesdon 2019-04-04 01:07:07 +09:00
Cutls
9e982dca37 Merge pull request #46 from cutls/WIP-(before-CI)
TheDesk Usamin (18.1.2) Released
2019-04-03 13:14:40 +09:00
Cutls
6f25ece72d TheDesk Usamin (18.1.2) Released 2019-04-03 12:59:29 +09:00
Cutls
b28023bec2 Merge pull request #45 from cutls/WIP-(before-CI)
TheDesk Usamin (18.1.2)
2019-04-02 23:51:17 +09:00
Cutls
0df8baa7bf TheDesk Usamin (18.1.2) Plus 2019-04-02 23:42:25 +09:00
Cutls
14c647ca46 Merge pull request #43 from kPherox/patch-1
Fix TweetDeck height
2019-03-29 19:34:46 +09:00
kPherox
f2ff82c810 Fix TweetDeck height 2019-03-29 18:10:15 +09:00
Cutls
2ce9f55f28 edit margin 2019-03-29 02:37:20 +09:00
Cutls
4c3c1ac56e Merge branch 'WIP-(before-CI)' of https://github.com/cutls/TheDesk into WIP-(before-CI) 2019-03-29 02:12:37 +09:00
Cutls
4aa14a14a2 TheDesk Usain (18.1.2) 2019-03-29 02:12:25 +09:00
Cutls
a398fae023 Merge pull request #42 from kPherox/fix-paste-image
Change the method to chack clipboardData type
2019-03-23 17:32:23 +09:00
kPherox
100bd648a9 Fix paste image when image copied from web browser 2019-03-23 05:51:22 +09:00
Cutls
348c5c31c0 Merge pull request #41 from cutls/WIP-(before-CI)
TheDesk Usamin (18.1.1)
2019-03-22 23:11:18 +09:00
Cutls
7556e5560d TheDesk Usamin (18.1.1) 2019-03-22 23:10:23 +09:00
Cutls
931afc3dd2 Merge pull request #40 from kPherox/fix-duplicate-integrated-tl
Fix duplicate fetch in Integrated TL
2019-03-22 14:47:44 +09:00
kPherox
b25244aa9a Fix duplicate websocket connection 2019-03-22 02:59:04 +09:00
kPherox
abe3a2ccb6 Fix duplicate more loading 2019-03-22 02:58:26 +09:00
Cutls
f7a80da21b Uncrop setting 2019-03-21 23:38:15 +09:00
Cutls
e11f0293fe Merge pull request #39 from kPherox/ignore-update-for-brewcask
Homebrew Caskでインストールした時にアップデート通知を無視できるようにする
2019-03-21 22:14:07 +09:00
Cutls
5ec617a778 Merge pull request #38 from kPherox/dont-fire-itunes-event
'itunes-np' リスナが残っているときにnowplayingのイベントを無視する
2019-03-21 22:13:56 +09:00
kPherox
eb86966d33 Ignore update for homebrew cask 2019-03-21 17:01:55 +09:00
kPherox
e44014a1a9 Don't fire 'itunes' event when 'itunes-np' listener is present
Remove `uploadnow` variable as it is no longer needed
2019-03-21 16:01:36 +09:00
Cutls
c38cc6fd5a Merge pull request #37 from cutls/WIP-(before-CI)
package to travis
2019-03-21 14:59:54 +09:00
Cutls
cdc6840808 package to travis 2019-03-21 14:58:33 +09:00
Cutls
abba6fcaa9 Merge pull request #36 from cutls/WIP-(before-CI)
TheDesk Usamin (18.1.0)
2019-03-21 14:24:49 +09:00
Cutls
293a373632 electron some fix 2019-03-21 14:23:10 +09:00
Cutls
5b3dd86a5e Webview some fixed 2019-03-21 14:21:02 +09:00
cutls
d2719cec41 Toot when nowplaying without artworks 2019-03-20 21:45:34 -07:00
Cutls
153f1aacee check something 2019-03-21 13:39:30 +09:00
Cutls
5d0b5e9c94 Fix(lock when posting artwork) 2019-03-21 05:49:59 +09:00
Cutls
a6cb385375 THeDesk Usamin (18.1.0) 2019-03-21 04:43:01 +09:00
Cutls
ba074dd1b0 Column(Stack/Dock) 2019-03-21 04:42:47 +09:00
Cutls
22d54ab2ab Merge pull request #35 from kPherox/fix-itunes-np-template
Fix NowPlaying template for macOS
2019-03-21 02:36:07 +09:00
Cutls
0dfe864f12 Merge pull request #34 from kPherox/fix-duplicate-listener
Fix duplicate listener for iTunes NowPlaying
2019-03-21 02:35:52 +09:00
Cutls
32a16eb2a4 iTunes templete 2019-03-21 02:26:42 +09:00
kPherox
f35056a916 Fix duplicate "itunes-np" listener 2019-03-20 22:58:38 +09:00
kPherox
6e9b0b4d10 Fix template {hz} 2019-03-20 22:57:59 +09:00
Cutls
216191563e readme update 2019-03-20 20:11:03 +09:00
Cutls
cf827e7c25 some fix 2019-03-20 20:08:33 +09:00
cutls
e36379de44 Nowplaying on macOS with an album artwork 2019-03-20 04:02:59 -07:00
Cutls
25662e8736 prepare for itunes-nowplaying artworks 2019-03-20 15:29:13 +09:00
Cutls
e16c9fba43 compare for itunes-artworks 2019-03-20 13:50:00 +09:00
Cutls
7037f63b44 Merge pull request #33 from cutls/WIP-(before-CI)
TheDesk Usamin (18.0.3)
2019-03-19 00:26:46 +09:00
Cutls
f9e3b4129b vis bug/setting bug 2019-03-19 00:24:46 +09:00
Cutls
f0c89a291e Merge pull request #32 from cutls/WIP-(before-CI)
TheDesk Usamin (18.0.3)
2019-03-18 23:29:51 +09:00
Cutls
abee0bb901 TheDesk Usamin (18.0.3) 2019-03-18 23:14:30 +09:00
Cutls
ef5dbcf040 fix some bugs 2019-03-18 23:01:45 +09:00
Cutls
bacac4486b DM TL improved 2019-03-16 19:06:03 +09:00
Cutls
8d4670d8d9 PR 2019-03-16 14:08:38 +09:00
8120 changed files with 972266 additions and 39501 deletions

8
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,8 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
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

View File

@@ -0,0 +1,27 @@
---
name: Bug report English
about: Create a report to help us improve
title: ''
labels: "\U0001F41Bbug"
assignees: ''
---
Describe the bug: a clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Click on '....'
2. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Environment**
- OS: [e.g. macOS High Sierra , Windows 10 Pro 1903, Ubuntu 19.04]
- Version: [e.g. Usamin (18.0.0)]
Check at 'Application,' 'About TheDesk' at top of the window.
- Your instance: [e.g. mastodon.social]
**Additional context**
Add any other context about the problem here.

View File

@@ -0,0 +1,27 @@
---
name: Bug report Japanese(日本語のバグ報告)
about: 迅速なバグ撲滅のために
title: ''
labels: "\U0001F41Bbug"
assignees: ''
---
バグの簡単な説明を最初に入れます。
**再現方法**
このようにするとバグが発生しました。
1. '....'をクリックすると
2. エラーが出ます
**本来の挙動**
本来どのように動くのが望ましいかを記入
**環境**
- OS: [例 macOS High Sierra , Windows 10 Pro 1903, Ubuntu 19.04]
- バージョン: [例 Usamin (18.0.0)]
TheDesk画面上部の「アプリケーション」から「TheDeskについて」で確認
- インスタンス: [例. mastodon.social]
**追記**
追記

14
.gitignore vendored
View File

@@ -3,15 +3,19 @@
*.7z
*.exe
TheDesk-*
app/build
build
make.js
make_js.js
build/*
app/.DS_Store
.DS_Store
.vs/*
.vscode/*
enq.md
app/.tkn
app/node_modules
app/js/login/tkn.js
app/package-lock.json
app/view/en
app/view/ja
app/view/de
app/view/bg
app/view/cs
app/view/ps
app/git

View File

@@ -1,33 +1,48 @@
os: windows
os:
- windows
- linux
- osx
language: node_js
node_js:
- '10.15.2'
script: node -v
before_deploy:
- cd app
- npm install electron-builder -g
- cd app
- VERSION=$(cat package.json | grep version | head -1 | awk -F= "{ print $2 }" | sed 's/[version:,\",]//g' | tr -d '[[:space:]]')
- npm install
- electron-builder --win --ia32
- mv ../build/TheDesk-setup.exe ../TheDesk-setup-ia32.exe
- mv ../build/TheDesk*.exe ../TheDesk-ia32.exe
- electron-builder --win --x64
- mv ../build/TheDesk-setup.exe ../TheDesk-setup.exe
- mv ../build/TheDesk*.exe ../TheDesk.exe
- npm run 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
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../build;else :;fi
- 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 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
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv TheDesk-setup.exe TheDesk-setup-ia32.exe;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv *$VERSION.exe TheDesk-ia32.exe;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../app;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win --x64 -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then ls;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv ../build/TheDesk-setup.exe ../build/TheDesk-setup.exe;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv ../build/*$VERSION.exe ../build/TheDesk.exe;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../app;else :;fi
- cd ../
- ls
after_deploy: ls
- ls build
deploy:
skip_cleanup: true
provider: releases
# GitHub にリリースするための API KEY を暗号化した値
api_key:
secure: jndR02p5KRTtcJk18b3YsXL2cC+yzEf1AOqXdpWciF8f3lO5oY01jlxd17xdHIcK7VywSsLVZpLToSdqAoIEhJ5OxEQ/FmA3FlmbwwD6ou13gLa4VGIvsBHveCmKGjVu0Z++atIy76tZYU1SOWFWv4B0ZhnVz2ca2VZynvLgw3YNsPJH7rHO966GXgRkGYJAJ4UvLg3sj/iztVh2FSfbUj5IGO1e/JHJO63wAo1MSQtRjkutVgl/djnBLC6vbL4YHkM3Ynpkx/YQEcxwrmeY0Ra8D5yYDq4MNIDMmZahWC+k4u2eA2Cj2ifBFNxbZvTN75vLwRBp6DsTNHsiqkXrSPDBdNeet31RbwTQ6LtsK8jqmL4S/59dmLcj7uCU2WxyBLPbJdbdZWlqW2ZQvfQY8QVAYy7S3MiHQWQN0oP5wqXk89jcgR42ig/zsqFNPpXHM4mExR7l/gDLPg0j9c3XEF6sWtk3FmJN1i4+B+9kn09b6UKlV7EFPKp8XcFNrz4ZcE9/I8lKwsqLVG2jAXIk7Z9LwDRcAmK5eG348X5zwFtOY6raKIvRw2cn92bPnEI+55v8A4WANS2647GFTgxHj30D0d/sOZmJ5BS34zpdWTgE0AlKg7sOqkncjqoW5J5zCh5Ow7b3KXvEvlAts44mAag8tZTectxMP4iguXvTnv4=
file:
- TheDesk.exe
- TheDesk-setup.exe
- TheDesk-ia32.exe
- TheDesk-setup-ia32.exe
# Releases ページにアップロードするファイル
file_glob: true
file:
- build/*
skip_cleanup: true
on:
repo: cutls/TheDesk
branches:
only:
- master
tags: true
all_branches: true

127
README.md
View File

@@ -1,47 +1,55 @@
<img src="https://thedesk.top/img/top.png" width="300" align="left">
<img src="https://thedesk.top/img/desk.png" width="150" align="right">
# TheDesk
[![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk)
[![Server-up time](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com/)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk)
[![FOSSA Status](https://bit.ly/2N4cLd1)](https://bit.ly/31zqMmZ)
[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのWindows/Linuxクライアント
Download:[TheDesk](https://thedesk.top)
オープンソースSNSマストドン/MisskeyのPC向けクライアント[日本語はこちら](README_ja.md)
Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com)
Contact me(bug report...):GitHub Issues, mention to [Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls) or toot with #Desk
<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>
![Screenshots1](https://thedesk.top/img/scr1.png)
バグレポートなど:GitHub Issuesや[Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls)へのリプ,または#Deskでトゥートして下さい.
## License/ライセンス
## License
[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/)/アイコンは[クリエイティブ・コモンズ 表示-非営利-継承](https://creativecommons.org/licenses/by-nc-sa/4.0/)で提供されています。
[Press Kit](https://dl.thedesk.top/press/TheDesk+PressKit.zip)
The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/)
[Press Kit](https://d2upiril6ywqp9.cloudfront.net/press/TheDesk+PressKit.zip)
* [PNG](https://dl.thedesk.top/press/TheDesk.png)
* [Monotone SVG](https://dl.thedesk.top/press/TheDesk.svg)
* [ico](https://dl.thedesk.top/press/TheDesk.ico)
* [icns](https://dl.thedesk.top/press/TheDesk.icns)
* [PNG 512x512](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.png)
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg)
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico)
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns)
* [Illustrator .ai](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ai)
## Terms of Use/利用規約
The default sounds of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/)
## Terms of Use
* [利用規約(Terms of Use(ja))](https://thedesk.top/tos.html)
* [プライバシーポリシー(Privacy Policy(ja))](https://thedesk.top/priv.html)
## Language/言語
## Language
* 日本語(Japanese)
* English(英語)
* English
* de, cs, bg(from Crowdin)
### Translation/翻訳
### Translation
Crowdin project is available! Visit: https://translate.thedesk.top
Crowdinから翻訳に参加してみませんか: https://translate.thedesk.top
Crowdin project is available! Visit: https://translate.thedesk.top
## Requirement/環境
## Requirement and development
* Electron 3.0.10(install yourself)
* Electron 4.2 or above(install yourself)
* electron-dl(in package.json)
* Jimp(in package.json)
* font-manager(in package.json)
@@ -52,24 +60,52 @@ Crowdinから翻訳に参加してみませんか: https://translate.thedesk.
* sumchecker(in package.json)
* Ability to read unformated files!(install yourself)
## Contributors/コントリビューター
### Run on developer mode
macOSビルダー
`npm run dev` on `app` folder.
* [とねぢ](https://minohdon.jp/@toneji)
## Contributors
Linuxビルダー
Build for macOS
* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
* [toneji](https://minohdon.jp/@toneji)
## Build/ビルド
Build for Linux
Misskey(misskey.xyz) application token is not in cutls/TheDesk
Misskey(misskey.xyz)のトークンは含まれておりません。
`git clone https://github.com/cutls/TheDesk`
`npm install electron -g`
`cd TheDesk/app`
`npm install`
* [popn_ja](https://popon.pptdn.jp/@popn_ja)
Fellow coder
* [kPherox](https://pl.kpherox.dev/kPherox)
## Build
```sh
git clone https://github.com/cutls/TheDesk
cd TheDesk/app
npm install
npm install --only=dev
npm run construct
```
### electron-builder(Recommended)
Use npm scripts.
```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
```
Config is all on package.json
### electron-packager
`npm install --save-dev electron-rebuild`
Linux/macOS
@@ -78,12 +114,7 @@ Windows
`.\node_modules\.bin\electron-rebuild.cmd`
To install Python 2.x and Visual C++ for Windows, before running `npm install --save-dev electron-rebuild`
WindowsでPython 2.xやVisualC++を一発でインストールできるツールもあります(`npm install --save-dev electron-rebuild`の前に)
`npm install --global windows-build-tools`
日本語話者向けですが、macOSビルドにはXCodeが要るとの情報があります。([とねぢ](https://minohdon.jp/@toneji)氏談)
### electron-packager
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`
@@ -92,19 +123,13 @@ Linux
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-builder
Config is all on package.json
ビルド設定はすべてpackage.jsonに記載しています。
## Pleroma support
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.
Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。
Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。
Please write issues to improve TheDesk affinity with Pleroma.
## See also/詳しく
## 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.
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)

140
README_ja.md Normal file
View File

@@ -0,0 +1,140 @@
<img src="https://thedesk.top/img/top.png" width="300" align="left">
<img src="https://thedesk.top/img/desk.png" width="150" align="right">
# TheDesk
[![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk)
[![FOSSA Status](https://bit.ly/2N4cLd1)](https://bit.ly/31zqMmZ)
[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント
Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com)
[Pixiv FANBOX](https://www.pixiv.net/fanbox/creator/28105985)
![Screenshots1](https://thedesk.top/img/scr1.png)
## ライセンス
[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
アイコンは[クリエイティブ・コモンズ 表示-非営利-継承](https://creativecommons.org/licenses/by-nc-sa/4.0/)で提供されています。
[プレスキット](https://d2upiril6ywqp9.cloudfront.net/press/TheDesk+PressKit.zip)
* [PNG 512x512](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.png)
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg)
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico)
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns)
* [Illustrator .ai](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ai)
標準の通知音は [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/) で提供されています。
## 利用規約
* [利用規約](https://thedesk.top/tos.html)
* [プライバシーポリシー](https://thedesk.top/priv.html)
## 言語
* 日本語
* English(英語)
* ドイツ語, チェコ語, ブルガリア語(from Crowdin)
### 翻訳
Crowdinから翻訳に参加してみませんか: https://translate.thedesk.top
## 環境
* Electron 4.2以上(自分で入れて)
* electron-dl(in package.json)
* Jimp(in package.json)
* font-manager(in package.json)
* Python 2.x(自分で入れて)
* VisualC++(Windows)(自分で入れて)
* itunes-nowplaying-mac(macOS向け)(in package.json)
* node-notifier(in package.json)
* sumchecker(in package.json)
* Ability to read unformated files!(自分で入れて)
### デベロッパーモード
`npm run dev``app`フォルダ内で実行
## 主なコントリビューター
macOSビルダー
* [とねぢ](https://minohdon.jp/@toneji)
Linuxビルダー
* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
コーダー
* [kPherox](https://pl.kpherox.dev/kPherox)
## ビルド
```sh
git clone https://github.com/cutls/TheDesk
cd TheDesk/app
npm install
npm install --only=dev
npm run construct
```
### electron-builder(推奨)
npm scriptsを利用します
```sh
# 実行している環境向けにビルド
npm run build
# ターゲットを指定してビルド
## Windows
npm run build:win
## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません
npm run build:all
```
ビルド設定はすべてpackage.jsonに記載しています。
### electron-packager(非推奨)
`npm install --save-dev electron-rebuild`
Linux/macOS
`./node_modules/.bin/electron-rebuild`
Windows
`.\node_modules\.bin\electron-rebuild.cmd`
WindowsでPython 2.xやVisualC++を一発でインストールできるツールもあります(`npm install --save-dev electron-rebuild`の前に)
`npm install --global windows-build-tools`
日本語話者向けですが、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`
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`
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`
## Pleromaのサポート
Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。
Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。
## 詳しく
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)
## `npm i`したら脆弱性あるって言われた
materialize-cssの脆弱性(CVE-2019-11002/3/4)については[こちら](https://github.com/Dogfalo/materialize/issues/6286)で本当に脆弱性かどうか議論しています。
実際には害が無いものと思われます。

View File

@@ -1,109 +1,135 @@
<!doctype html>
<html lang="ja">
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="./css/materialize.css" type="text/css" rel="stylesheet">
<link href='./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;
}
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';
text-align:left;
margin:5px;
}
<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;
}
.area-name1 {
grid-area: name1;
}
a,
button {
-webkit-app-region: no-drag;
}
.area-data1 {
grid-area: data1;
}
.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-name2 {
grid-area: name2;
}
.area-name1 {
grid-area: name1;
}
.area-data2 {
grid-area: data2;
}
.area-data1 {
grid-area: data1;
}
.area-name3 {
grid-area: name3;
}
.area-name2 {
grid-area: name2;
}
.area-data3 {
grid-area: data3;
}
.area-data2 {
grid-area: data2;
}
.area-name4 {
grid-area: name4;
}
.area-name3 {
grid-area: name3;
}
.area-data4 {
grid-area: data4;
}
.area-data3 {
grid-area: data3;
}
.area-name5 {
grid-area: name5;
}
.area-name4 {
grid-area: name4;
}
.area-data5 {
grid-area: data5;
}
</style>
.area-data4 {
grid-area: data4;
}
.area-name5 {
grid-area: name5;
}
.area-data5 {
grid-area: data5;
}
.area-name6 {
grid-area: name6;
}
.area-data6 {
grid-area: data6;
}
</style>
</head>
<body class="center " style="overflow:hidden">
<script type="text/javascript" src="./js/common/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
<script type="text/javascript" src="./js/common/materialize.js"></script>
<img src="./img/desk.png" style="max-width:70%;">
<h5>TheDesk</h5>
<div class='container'>
<div class='area-name1'>バージョン</div>
<div class='area-data1' id="now"></div>
<div class='area-name2'>Internal version</div>
<div class='area-data2' id="ver"></div>
<div class='area-name3'>Chromium</div>
<div class='area-data3' id="chrome"></div>
<div class='area-name4'>Electron</div>
<div class='area-data4' id="electron"></div>
<div class='area-name5'>Node.js</div>
<div class='area-data5' id="node"></div>
</div>
<div class="cp">Copyright &copy; TheDesk 2018 All rights reserved.<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>
$("#now").text(localStorage.getItem("ver"));
var electron = require("electron");
var remote=electron.remote;
//JSON.parse(fs.readFileSync(info_path, 'utf8'));
console.log(process.versions);
$("#node").text(process.version);
$("#chrome").text(process.versions.chrome);
$("#electron").text(process.versions.electron);
if(location.search){
var m = location.search.match(/\?ver=([a-zA-Z-0-9.]+)/);
var ver=m[1];
$("#ver").text(ver);
}
</script>
<script type="text/javascript" src="./js/platform/end.js"></script>
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
<script type="text/javascript" src="./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>

View File

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

112
app/build.js Normal file
View File

@@ -0,0 +1,112 @@
const builder = require("electron-builder");
const fs = require('fs');
const os = process.platform;
const Platform = builder.Platform
const Arch = builder.Arch
const targets = new Map();
const archToType = new Map();
const pref = {
productName: "TheDesk",
appId: "top.thedesk",
asarUnpack: [
"node_modules/itunes-nowplaying-mac"
],
directories: {
output: "../build/"
},
win: {
icon: "build/thedesk.ico",
target: [
"nsis",
"portable",
"appx"
]
},
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
},
linux: {
icon: "build/icons",
target: [
"zip",
"snap"
],
category: "Network"
},
mac: {
target: [
"dmg",
"zip"
]
},
electronDownload: {
version: "5.0.1"
},
electronVersion: "5.0.1"
}
const json = JSON.parse(fs.readFileSync("package.json", 'utf8'));
const version = json.version;
if (os == "win32") {
archToType.set(Arch.ia32, []);
targets.set(Platform.WINDOWS, archToType);
} else if (os == "linux") {
archToType.set(Arch.x64, []);
archToType.set(Arch.ia32, []);
targets.set(Platform.LINUX, archToType);
} else if (os == "darwin") {
archToType.set(Arch.x64, []);
targets.set(Platform.MAC, archToType);
} else {
return false
}
builder.build({
targets: targets,
config: pref
})
.then(() => {
console.log("Done on "+os)
if (os == "win32") {
console.log("Windows")
fs.renameSync('../build/TheDesk ' + version + '.exe', '../build/TheDesk-ia32.exe');
fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup-ia32.exe');
retry()
}else if (os == "linux") {
console.log("Linux")
fs.renameSync('../build/thedesk-' + version + '.zip', '../build/TheDesk.zip');
fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup-ia32.exe');
}
})
.catch((error) => {
// handle error
})
function retry(){
console.log("Windows x64")
const targetsAlt = new Map();
const archToTypeAlt = new Map();
targetsAlt.set(Platform.WINDOWS, archToTypeAlt);
archToTypeAlt.set(Arch.x64, []);
builder.build({
targets: targetsAlt,
config: pref
})
.then(() => {
fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup.exe');
fs.renameSync('../build/TheDesk ' + version + '.exe', '../build/TheDesk.exe');
})
.catch((error) => {
// handle error
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

BIN
app/build/thedesk.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -1,2 +1,4 @@
/*このソフトについてを押した時に読み込まれます*/
body{font-family:Open Sans;}
body {
font-family: Open Sans;
}

View File

@@ -5,9 +5,15 @@
/* FONT PATH
* -------------------------- */
@font-face {
font-family: 'FontAwesome';
src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
font-family: "FontAwesome";
src: url("../fonts/fontawesome-webfont.eot?v=4.7.0");
src: url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0")
format("embedded-opentype"),
url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),
url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),
url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),
url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular")
format("svg");
font-weight: normal;
font-style: normal;
}
@@ -60,9 +66,9 @@
left: -1.85714286em;
}
.fa-border {
padding: .2em .25em .15em;
padding: 0.2em 0.25em 0.15em;
border: solid 0.08em #eeeeee;
border-radius: .1em;
border-radius: 0.1em;
}
.fa-pull-left {
float: left;
@@ -71,10 +77,10 @@
float: right;
}
.fa.fa-pull-left {
margin-right: .3em;
margin-right: 0.3em;
}
.fa.fa-pull-right {
margin-left: .3em;
margin-left: 0.3em;
}
/* Deprecated as of 4.4.0 */
.pull-right {
@@ -84,10 +90,10 @@
float: left;
}
.fa.pull-left {
margin-right: .3em;
margin-right: 0.3em;
}
.fa.pull-right {
margin-left: .3em;
margin-left: 0.3em;
}
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;

View File

@@ -1,17 +1,14 @@
/*共通CSS*/
html,body{
html,
body {
/*transform: translate3d(0,0,0);*/
overflow:hidden;
overflow: hidden;
user-select: none;
cursor:default;
font-size:13px;
cursor: default;
font-size: 13px;
height: 100vh;
background-color: var(--bg);
color: var(--color);
}
body{
border: thin solid gray;
}
.btn {
margin: 5px;
text-transform: none;
@@ -30,6 +27,8 @@ option {
}
#mainView {
padding: 10px;
overflow: scroll;
height: auto;
}
#message {
display: none;
@@ -40,23 +39,26 @@ option {
color: white;
z-index: 9999;
}
#imagemodal, #videomodal {
#imagemodal,
#videomodal {
display: none;
max-width: 100vw;
max-height: 100vh;
position: fixed;
z-index: 9;
top: 0 !important;
}
#videomodal, #tootmodal {
#videomodal,
#tootmodal {
background-color: var(--modal);
}
#imagemodal .modal-content {
overflow: hidden;
padding:0;
padding: 0;
}
#imagemodal .modal-footer{
overflow-x:scroll;
overflow-y:hidden;
#imagemodal .modal-footer {
overflow-x: scroll;
overflow-y: hidden;
}
#imagewrap {
@@ -66,11 +68,16 @@ option {
.pointer {
cursor: pointer;
}
.badge{
min-width: 0 !important;
margin-left: 5px !important;
.badge {
min-width: 0 !important;
margin-left: 5px !important;
}
.bbcode-pulse-loadings, .bbcode-pulse-loading, .fa-pulse {
.unvisible{
opacity: 0;
}
.bbcode-pulse-loadings,
.bbcode-pulse-loading,
.fa-pulse {
display: inline-block;
animation-duration: 3s;
animation-fill-mode: both;
@@ -78,10 +85,13 @@ option {
animation-name: pulse;
}
@keyframes pulse {
from, 50%, to {
from,
50%,
to {
opacity: 1;
}
25%, 75% {
25%,
75% {
opacity: 0;
}
}
@@ -117,7 +127,8 @@ option {
animation-iteration-count: infinite;
animation-name: shake;
}
code:before, .pre:before {
code:before,
.pre:before {
content: "Code";
font-size: 1.8rem;
line-height: 1em;
@@ -127,7 +138,8 @@ code:before, .pre:before {
right: 0;
top: 0;
}
code, pre {
code,
pre {
color: white;
display: block;
border-left: 5px solid;
@@ -143,10 +155,12 @@ code, pre {
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
}
blockquote, .quote p {
blockquote,
.quote p {
margin: 0;
}
blockquote, .quote {
blockquote,
.quote {
color: black;
background-color: #ddd;
padding: 1em 1em 1em;
@@ -155,7 +169,8 @@ blockquote, .quote {
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
}
blockquote:before, .quote:before {
blockquote:before,
.quote:before {
content: "Quote";
font-size: 1.8rem;
line-height: 1em;
@@ -205,6 +220,17 @@ blockquote:before, .quote:before {
right: 0;
top: 0;
}
#start {
display: none;
position: fixed;
width: 100vw;
height: calc(100vh - 40px);
background-color: var(--bg);
color: var(--color);
z-index: 99999;
justify-content: center;
align-items: center;
}
#drag {
display: none;
position: fixed;
@@ -219,175 +245,225 @@ blockquote:before, .quote:before {
#drag-content {
font-size: 2rem;
}
.radio{
font-family:'Baloo Bhai'
}
#pip{
z-index:504;
width:418px;
#pip {
z-index: 504;
width: 418px;
background-color: var(--subcolor);
position:absolute;
position: absolute;
}
.pip-bottom{
bottom:10px;
.pip-bottom {
bottom: 10px;
}
.pip-left{
left:10px;
.pip-left {
left: 10px;
}
.pip-top{
top:10px;
.pip-top {
top: 10px;
}
.pip-right{
right:10px;
.pip-right {
right: 10px;
}
#pip-content .material-icons{
display:none;
#pip-content .material-icons {
display: none;
}
.big-text{
font-size:1.2rem;
.big-text {
font-size: 1.2rem;
}
#releasenote {
background-color: var(--modal);
}
#releasenote li{
list-style-type: disc
#releasenote li {
list-style-type: disc;
}
@media only screen and (min-width: 993px){
#toast-container {
top:auto;
right:auto;
@media only screen and (min-width: 993px) {
#toast-container {
top: auto;
right: auto;
bottom: 5%;
left: 4%;
max-width: 86%;
}
}
}
.show{
.show {
animation: show 0.2s linear 0s;
}
@keyframes show{
from{
opacity: 0;
@keyframes show {
from {
opacity: 0;
}
to{
opacity: 1;
to {
opacity: 1;
}
}
.hide-anime{
.hide-anime {
animation: hide 0.2s linear 0s;
display:none;
display: none;
}
@keyframes hide{
from{
opacity: 1;
@keyframes hide {
from {
opacity: 1;
}
to{
opacity: 0;
to {
opacity: 0;
}
}
.collapsible-header,.tabs{
.collapsible-header,
.tabs {
background-color: var(--subcolor);
}
.modal-footer{
.collapsible-header:focus {
background-color: var(--subcolor) !important;
}
.modal-footer {
background-color: var(--modalfooter) !important;
}
.font{
font-size:1.5rem;
margin-bottom:5px;
.font {
font-size: 1.5rem;
margin-bottom: 5px;
}
.font:hover{
.font:hover {
background-color: #999;
}
.release-do{
.release-do {
border: solid 2px;
border-color:var(--color);
padding:5px;
border-color: var(--color);
padding: 5px;
}
#pickers{
display:flex;
#pickers {
display: flex;
flex-wrap: wrap;
}
#menu{
position:fixed;
z-index:9999;
#menu {
position: fixed;
z-index: 9999;
background-color: var(--box);
width:540px;
top:calc(50% - 150px);
left:calc(50% - 250px);
width: 540px;
top: calc(50% - 150px);
left: calc(50% - 250px);
padding: 5px;
border: thin solid gray;
border-radius:5px;
border-radius: 5px;
overflow: hidden;
}
#menu-wrapper{
margin-left:-5px;
display:flex;
#menu-wrapper {
margin-left: -5px;
display: flex;
height: calc(100% - 3.5rem);
overflow: hidden;
}
#left-menu{
width:170px;
#left-menu {
width: 230px;
}
#left-menu div{
padding-left:5px;
width:100%;
height:50px;
display:flex;
align-items:center;
cursor:pointer;
#left-menu div {
padding-left: 5px;
width: 100%;
height: 50px;
display: flex;
align-items: center;
cursor: pointer;
}
#left-menu div:hover {
background-color: var(--beforehover);
}
#left-menu span{
margin-left:5px;
#left-menu span {
margin-left: 5px;
}
#left-menu div.active{
#left-menu div.active {
background-color: var(--emphasized);
}
#right-menu{
width:380px;
max-height:375px;
overflow-y:scroll;
overflow-x:hidden;
padding:5px;
#right-menu {
width: 100%;
overflow-y: scroll;
overflow-x: hidden;
padding: 5px;
}
#tltype{
display:flex;
#tltype {
display: flex;
flex-wrap: wrap;
}
#tltype .type{
display:flex;
#tltype .type {
display: flex;
flex-wrap: wrap;
align-items:center;
width:170px;
height:40px;
cursor:pointer;
align-items: center;
width: 170px;
height: 40px;
cursor: pointer;
}
#tltype .type:hover {
background-color: var(--beforehover);
}
#tltype .active{
#tltype .active {
background-color: var(--emphasized);
}
#tltype i{
font-size:30px;
#tltype i {
font-size: 30px;
}
#tltype i.sub-icon{
#tltype i.sub-icon {
font-size: 20px;
position: relative;
color: var(--beforehover);
left: -15px;
}
.drag-bar{
cursor:move;
text-align:center;
width:calc(100% + 10px);
.drag-bar {
cursor: move;
text-align: center;
width: calc(100% + 10px);
border-radius: 5px;
background-color: var(--bg);
margin-left:-5px;
margin-right:-5px;
margin-top:-5px;
font-size:16px;
padding:4px;
background-color: var(--box);
filter: brightness(80%);
margin-left: -5px;
margin-right: -5px;
margin-top: -5px;
font-size: 16px;
padding: 4px;
}
#something-wrong {
flex-direction: column;
width: 100%;
height: 100%;
position: absolute;
display: flex;
justify-content: center;
align-items: center;
}
#support-btm {
position: fixed;
bottom: -300px;
width: 100vw;
background-color: var(--box);
z-index: 9999;
padding: 10px;
display: grid;
grid-template-columns: 3fr 1fr 1fr;
grid-template-rows: 1fr 36px;
grid-template-areas: "note middle right" "note close close";
}
#support-btm-en,
#support-btm-ja {
grid-area: note;
}
#support-btm-middle {
grid-area: middle;
}
#support-btm-right {
grid-area: right;
}
#support-btm-close {
grid-area: close;
}
.select-wrapper .dropdown-content {
width: 250px !important;
}
input, textarea {
color: var(--color);
font-size: 1rem !important;
font-family: inherit;
}
.swal2-popup{
background-color: var(--notfbox) !important;
}
.swal2-title, .swal2-content{
color: var(--color) !important;
}
/*スクロールバー*/
@@ -406,4 +482,33 @@ blockquote:before, .quote:before {
border-radius: 5px;
background: #607d8b;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
}
/* 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;
}
@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');
}
.material-icons {
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
font-size: 24px;
line-height: 1;
letter-spacing: normal;
text-transform: none;
display: inline-block;
white-space: nowrap;
word-wrap: normal;
direction: ltr;
-webkit-font-feature-settings: 'liga';
-webkit-font-smoothing: antialiased;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,16 +1,23 @@
/*トゥートボックス向けCSS*/
#post-box {
display:none;
display: none;
position: fixed;
left: calc(50vw - 150px);
top: 50vh;
background-color: var(--postbox);
border: thin solid gray;
z-index: 501;
min-width:300px;
max-width:100%;
max-width: 100%;
padding: 5px;
border-radius:5px;
border-radius: 5px;
overflow: hidden;
}
textarea {
min-height: 100px !important;
font-family: inherit;
}
#post-box .ui-resizable-s, #post-box .ui-resizable-se{
display: none !important;
}
.cancel {
@@ -19,8 +26,7 @@
cursor: pointer;
position: absolute;
right: 2px;
top:4px;
top: 4px;
}
.more-show {
display: none;
@@ -42,10 +48,12 @@
display: none;
}
#sch-box input {
width:auto;
width: auto;
}
.picker__close, .picker__today, .picker__clear {
color: #26a69a !important;
.picker__close,
.picker__today,
.picker__clear {
color: #26a69a !important;
}
.cw {
display: none;
@@ -54,10 +62,9 @@
filter: blur(50px);
}
#emoji {
}
#suggest{
max-height:300px;
#suggest {
max-height: 300px;
overflow-y: scroll;
}
#emoji-list {
@@ -68,61 +75,70 @@
#preview-field {
display: none;
}
#default-emoji a{
color:white;
margin-right:2px;
.preview-img {
width: 50px;
max-height: 100px;
}
.character-counter{
.pi-wrap {
display: inline-block;
width: 50px;
max-height: 100px;
}
#default-emoji a {
color: var(--color);
margin-right: 2px;
}
.character-counter {
position: relative;
top: -25px;
}
.trendtag{
overflow-y:scroll;
max-height:100px;
}
#toot-btn-field{
display:flex;
}
#toot-post-btn{
width:calc(100% - 10px); padding:0; margin-top:10px;
}
#toot-sec-btn{
width:30px; padding:0; margin-top:10px;
}
#left-side{
float:left;
width:300px;
}
#right-side{
display:none;
float:left;
width:300px;
padding:5px;
}
#poll{
}
.poll-provider{
position: absolute;
height: calc(100% - 90px);
.trendtag {
overflow-y: scroll;
top: 90px;
max-height: 100px;
}
#toot-btn-field {
display: flex;
}
#toot-post-btn {
width: calc(100% - 10px);
padding: 0;
margin-top: 10px;
}
#toot-sec-btn {
width: 30px;
padding: 0;
margin-top: 10px;
}
#left-side {
float: left;
overflow-x: hidden;
height: calc(100% - 32px);
}
#right-side {
display: none;
float: left;
width: 300px;
padding: 5px;
overflow-x: hidden;
height: calc(100% - 32px);
}
#posttgl,#toot-post-btn {
background-color: var(--accentbtn);
}
/*mini*/
.mini-post .mize{
display:none !important;
.mini-post .mize {
display: none !important;
}
.mini-post #textarea{
padding:0;
.mini-post #textarea {
padding: 0;
}
.mini-post #post-box{
width:200px;
min-width:100px;
.mini-post #post-box {
width: 200px;
min-width: 100px;
}
.mini-post #toot-field{
padding:0;
.mini-post #toot-field {
padding: 0;
}
.mini-post #toot-btn-field {
padding: 0;
}
.mini-post #toot-btn-field{
padding:0;
}

View File

@@ -1,32 +1,31 @@
.drag-content{
text-overflow: ellipsis;
cursor:move;
user-select: none;
background-color:var(--modalfooter);
margin:5px;
border-radius:5px;
color:var(--color);
padding:3px;
display:grid;
grid-template-columns: 43px 1fr 60px;
grid-template-areas: 'sorticon sorttitle sorttitle' 'sorticon sortacct sortaction';
.drag-content {
text-overflow: ellipsis;
cursor: move;
user-select: none;
background-color: var(--modalfooter);
margin: 5px;
border-radius: 5px;
color: var(--color);
padding: 3px;
display: grid;
grid-template-columns: 43px 1fr 60px;
grid-template-areas: "sorticon sorttitle sorttitle" "sorticon sortacct sortaction";
}
.sorticon {
grid-area:sorticon;
grid-area: sorticon;
}
.sorticon i{
font-size:43px;
.sorticon i {
font-size: 43px;
}
.sorttitle {
margin-left:5px;
grid-area:sorttitle;
margin-left: 5px;
grid-area: sorttitle;
}
.sortacct {
margin-left:5px;
grid-area:sortacct;
margin-left: 5px;
grid-area: sortacct;
}
.sortaction {
margin-left:5px;
grid-area:sortaction;
}
margin-left: 5px;
grid-area: sortaction;
}

View File

@@ -1,100 +1,144 @@
: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;
: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");
#imagemodal {
background: url("../img/pixel.white.svg");
}
.blacktheme {
--bg:#212121;
--drag:rgba(0, 0, 0, 0.8);
--color:white;
--beforehover:#9e9e9e;
--modal:black;
--subcolor:#212121;
--box:#424242;
--sidebar:#424242;
--shared:#004d40;
--notfbox:#333333;
--emphasized:#4e342e;
--his-data:rgba(0, 0, 0, 0.8);
--active:#757575;
--postbox:#424242;
--modalfooter:#212121;
--bg: #212121;
--drag: rgba(0, 0, 0, 0.8);
--color: white;
--beforehover: #9e9e9e;
--modal: black;
--subcolor: #212121;
--box: #424242;
--sidebar: #424242;
--shared: #004d40;
--notfbox: #333333;
--emphasized: #4e342e;
--his-data: rgba(0, 0, 0, 0.8);
--active: #757575;
--postbox: #424242;
--modalfooter: #212121;
--accentbtn: #3f51b5;
--selected: #3f3f3f;
--selectedWithShare: #003a30;
--gray: #cccccc;
}
.blacktheme #imagemodal{
background: url("../img/pixel.svg");
.blacktheme #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;
--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");
.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;
--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");
.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:#81c784;
--shared:#ffcc80;
--notfbox:#a5d6a7;
--emphasized:#9e9d24;
--his-data:rgba(255, 255, 255, 0.9);
--active:#e6ee9c;
--postbox:#a5d6a7;
--modalfooter:#81c784;
.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");
}
.greentheme #imagemodal{
background: url("../img/pixel.white.svg");
}

View File

@@ -1,97 +1,111 @@
/*TL CSS(ただしBBCode pulse:master.css/spin:font-awesome*/
#main{
display:flex;
width:100vw;
#main {
width: 100vw;
height: calc(100vh - 40px);
}
#timeline-container {
overflow-x: scroll;
overflow-y: hidden;
display: flex;
height: calc(100vh - 40px);
flex-grow:4;
height: 100%;
}
#bottom{
position:absolute;
bottom:0;
width:100vw;
height:40px;
padding:3px;
padding-right:0;
padding-left:40px;
background-color:var(--sidebar);
display:flex;
#bottom {
position: absolute;
bottom: 0;
width: 100vw;
height: 40px;
padding: 3px;
padding-right: 0;
padding-left: 40px;
background-color: var(--sidebar);
display: flex;
justify-content: space-between;
flex-wrap:wrap;
z-index:500;
flex-wrap: wrap;
z-index: 500;
box-shadow: 10px 0 10px 10px rgba(0, 0, 0, 0.2);
}
#bottom.reverse{
padding-left:0;
padding-right:40px;
#demobottom {
width: 500px;
display: flex;
}
.reverse{
#bottom.reverse {
padding-left: 0;
padding-right: 40px;
}
.reverse {
flex-direction: row-reverse;
}
#bottom #dambox{
width:300px;
margin-right:10px;
#bottom #dambox {
width: 300px;
margin-right: 10px;
}
#bottom.reverse #dambox{
margin-right:0;
#bottom.reverse #dambox {
margin-right: 0;
}
#bottom .trendtag{
height:40px;
#bottom .trendtag {
height: 40px;
}
#bottom #group{
margin-right:40px;
#bottom #group, #demogroup {
margin-right: 40px;
}
#bottom .leftside{
display:flex;
#bottom .leftside {
display: flex;
}
#bottom #tips img{
#tips {
display: flex;
align-items: center;
}
#bottom #tips img {
vertical-align: -3px;
}
#bottom a{
color:var(--color);
#bottom a, #demogroup a {
color: var(--color);
}
#bottom i{
font-size:30px;
#bottom i {
font-size: 30px;
}
.exc-icons{
font-size:20px;
.exc-icons {
font-size: 20px;
}
.exc-chb{
padding-left:24px !important;
.exc-chb {
padding-left: 24px !important;
}
#bottom .btnsgroup{
border:1px solid;
padding:1px;
padding-left:5px;
padding-right:5px;
margin-right:15px;
border-radius:5px;
.btnsgroup {
border: 1px solid;
padding-top: 1px;
padding-left: 5px;
padding-right: 5px;
margin-right: 15px;
border-radius: 5px;
}
#spot-box{
#spot-box {
white-space: nowrap;
text-overflow: ellipsis;
}
#spot-img{
margin-right:2px;
#spot-img {
margin-right: 2px;
}
#spot-art{
margin-right:2px;
margin-left:2px;
#spot-art {
margin-right: 2px;
margin-left: 2px;
}
.btnsgroup .grouptitle{
font-family:Open Sans;
font-size:15px;
.btnsgroup .grouptitle {
font-family: Open Sans;
font-size: 15px;
}
@media screen and (max-width: 890px) {
.btnsgroup .grouptitle{ display: none; }
#tips,#tips-menu{ display: none; }
.btnsgroup .grouptitle {
display: none;
}
#tips,
#tips-menu {
display: none;
}
}
iframe {
max-width:100%;
iframe,
.cvo video {
max-width: 100%;
max-height: 300px;
}
@media screen and (max-width: 600px) {
.mobile #timeline-container {
@@ -108,154 +122,259 @@ iframe {
.box {
overflow: hidden;
min-width: 300px;
height: 100vh;
flex: 1;
border-top: none;
display: flex;
flex-direction: column;
margin-bottom: -10px;
}
.img_FTL {
display: none;
}
.bbcode_FTL {
display: none;
}
.marquee {
width: 100%;
padding: 0.5em 0;
overflow: hidden;
margin-bottom: 0;
position: relative;
}
.marquee .bbcode-marq-lateral {
margin: 0;
padding-left: 100%;
display: inline-block;
white-space: nowrap;
animation-name: marquee;
animation-timing-function: linear;
animation-duration: 10s;
animation-iteration-count: infinite;
}
@keyframes marquee {
0% {
-webkit-transform: translate(0);
transform: translate(0);
}
99%,
100% {
-webkit-transform: translate(-100%);
transform: translate(-100%);
}
}
.boxIn {
display: flex;
flex-direction: column;
height: 100%;
border: thin solid gray;
border-top:none;
overflow: hidden;
border-top: none;
}
.box .pin,#his-data .pin{
display:none;
.box .pin,
#his-data .pin {
display: none;
}
.user{
cursor:text;
font-size:1.1rem;
.user {
cursor: text;
font-size: 1.1rem;
}
.emoji,.emoji-img{
.emoji,
.emoji-img {
width: 15px;
}
.area-toot .emoji,.area-toot .emoji-img{
.area-toot .emoji,
.area-toot .emoji-img {
width: 20px;
vertical-align: middle;
margin: -3px 0 0;
margin: -1px 0;
}
.faicon_FTL{
display:none;
.faicon_FTL {
display: none;
}
.tl-box {
position: relative;
flex: 1;
overflow-y: scroll;
overflow-x: hidden;
}
.tl-box{ height:calc(100% - 40px); overflow-y:scroll; overflow-x:hidden }
.additional {
overflow-x: scroll;
width: 100%;
}
.media-filter .nomedia{
display:none;
.media-filter .nomedia {
display: none;
}
.bt-filter .shared{
display:none;
.bt-filter .shared {
display: none;
}
.except-bt-filter .unshared{
display:none;
.except-bt-filter .unshared {
display: none;
}
.cvo {
user-select: text;
padding-left: 5px;
border-bottom:0.5px solid;
border-bottom: 0.5px solid;
padding-right: 2px;
word-break: break-word;
width: 100%;
display: grid;
grid-template-columns: 43px 2fr 1fr;
grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'icon toot toot' 'vis additional additional' 'actions actions side';
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";
}
.cvo h1,.cvo h2,.cvo h3,.cvo h4,.cvo h5,.cvo h6{
margin:0;
.cvo h1,
.cvo h2,
.cvo h3,
.cvo h4,
.cvo h5,
.cvo h6 {
margin: 0;
}
.area-notice {
margin:2px;
grid-area: notice;
margin: 2px;
grid-area: notice;
}
.area-icon {
width:40px;
margin:2px;
grid-area: icon;
width: 40px;
margin: 2px;
grid-area: icon;
}
.area-display_name {
user-select: text;
height:1.5em;
margin:2px;
margin-left:5px;
overflow:hidden;
grid-area: display_name;
white-space: nowrap;
text-overflow: ellipsis;
display:flex;
justify-content:space-between;
width:100%;
flex-wrap:nowrap
height: 1.5em;
margin: 2px;
margin-left: 5px;
overflow: hidden;
grid-area: display_name;
white-space: nowrap;
text-overflow: ellipsis;
display: flex;
justify-content: space-between;
width: 100%;
flex-wrap: nowrap;
}
.flex-name{
max-width:calc(100% - 60px);
overflow:hidden;
.flex-name {
max-width: calc(100% - 60px);
overflow: hidden;
text-overflow: ellipsis;
}
.area-toot {
cursor:text;
cursor: text;
user-select: auto;
margin:2px;
margin-left:5px;
grid-area: toot;
margin-top: 5px;
margin-bottom: 5px;
margin-left: 5px;
grid-area: toot;
}
.area-date_via {
text-align:right;
text-align: right;
grid-area: date_via;
}
.area-additional {
cursor:text;
cursor: text;
user-select: auto;
grid-area: additional;
}
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.acct-note p {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.area-toot.acct-note p:not(:first-child) {
display: none;
}
.area-toot.acct-note p:first-child:after {
content: "...";
color: var(--gray);
}
.area-actions {
padding:0;
margin:0;
top:-20px;
display:flex;
justify-content:space-around;
width:250px;
max-width:100%;
padding: 0;
margin: 0;
top: -5px;
position: relative;
display: flex;
justify-content: space-around;
max-width: 100%;
grid-area: actions;
}
.area-vis {
margin:2px;
margin: 2px;
grid-area: vis;
}
text-align: center;
}
.area-side {
display:flex;
justify-content:flex-end;
margin:2px;
display: flex;
top: -5px;
position: relative;
justify-content: flex-end;
margin: 2px;
grid-area: side;
}
.btn-flat{
color:var(--color);
.quote-inline {
display: none;
}
.area-side i{
margin-left:10px;
.quote-renote {
display: grid;
grid-template-columns: 43px 2fr 25px;
grid-template-areas: "ricon ruser rdet" "ricon rtext rdet";
border: 1px solid;
margin-top: 3px;
padding: 1px;
border-radius: 3px;
}
.viabadge{
margin-top:10px;
.renote-icon {
grid-area: ricon;
padding: 5px;
}
.action i{
font-size:1.2rem;
margin-right:2px;
.renote-details {
grid-area: rdet;
}
.action .fa-quote-right{
.renote-icon img {
width: 100%;
}
.renote-user {
grid-area: ruser;
}
.renote-text {
grid-area: rtext;
}
.btn-flat {
color: var(--color);
}
.area-side i {
margin-left: 10px;
}
.viabadge {
margin-top: 10px;
}
.action i {
font-size: 1.2rem;
margin-right: 2px;
}
.action .fa-quote-right {
margin-top: 2px;
}
.actct{
color:var(--beforehover);
.actct {
color: var(--beforehover);
}
.actct:hover{
color:var(--color);
.actct:hover {
color: var(--color);
transition: 0.5s;
}
.gray {
color: gray;
color: var(--gray);
}
.sml {
font-size: 0.8em;
@@ -274,7 +393,7 @@ grid-area: toot;
.cbadge {
display: inline-block;
min-width: 10px;
max-width:100px;
max-width: 100px;
padding: 3px 7px;
font-size: 0.8em;
margin-right: 5px;
@@ -288,7 +407,8 @@ grid-area: toot;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
height:calc(0.8em + 8px);
height: calc(0.8em + 8px);
user-select: none;
}
.cbadge-hover {
color: var(--color);
@@ -301,8 +421,9 @@ grid-area: toot;
p {
margin: 0;
margin-bottom: 0px;
line-height: 20px;
}
p:not(:last-child){
p:not(:last-child) {
margin-bottom: 10px;
}
.shared {
@@ -316,19 +437,20 @@ p:not(:last-child){
}
.notice-box {
top: 0;
background-color:var(--notfbox);
background-color: var(--notfbox);
filter: brightness(110%);
position: relative;
margin-right: 10px;
width:100%;
min-height:60px;
z-index:500;
padding:5px;
width: 100%;
min-height: 60px;
z-index: 500;
padding: 5px;
display: grid;
grid-template-columns: 40px 48px 1fr 24px;
grid-template-columns: 40px 1fr 1fr 24px;
grid-template-rows: 30px 30px;
grid-template-areas: 'notice notice_name notice_name a2' 'notice a1 sta a3' 'notf-box notf-box notf-box notf-box';
grid-template-areas: "notice notice_name notice_name a2" "notice a1 sta a3" "notf-box notf-box notf-box notf-box";
}
.emp{
.emp {
font-weight: bold;
text-decoration: underline;
}
@@ -339,6 +461,9 @@ p:not(:last-child){
.area-notice_name {
grid-area: notice_name;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.area-notice_acct {
@@ -346,7 +471,6 @@ p:not(:last-child){
}
.area-a1 {
text-align: center;
grid-area: a1;
}
.area-sta {
@@ -390,93 +514,86 @@ p:not(:last-child){
min-height: 100px;
max-height: 500px;
}
.column-hide{
display:none;
overflow:hidden;
height:0;
.column-hide {
display: none;
overflow: hidden;
height: 0;
}
.prof-img{
.prof-img {
border-radius: 3px;
}
.notf-icon{
.notf-icon {
position: relative;
top: -20px;
width: 20px;
left: 20px;
}
.notf-indv-box {
width:100%;
width: 100%;
max-height: 400px;
overflow-y: scroll;
overflow-x: hidden;
border: thin solid gray;
border-bottom: 2px solid white;
grid-area: notf-box;
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;
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;
}
#src-contents {
min-height: 100px;
max-height: 190px;
overflow-y: scroll;
.type-b {
display: none;
}
.u-url {
color: var(--color);
cursor: text;
}
.type-b{
display:none;
}
.modal-footer{
background-color:var(--box);
}
.ballons{
.modal-footer {
background-color: var(--box);
position:absolute;
bottom:0px;
right:0px;
}
.toot a span.ellipsis:after{
content:"...";
.ballons {
background-color: var(--box);
position: absolute;
bottom: 0px;
right: 0px;
}
.toot a:not(.mention) span:last-of-type{
display:none;
.toot a span.ellipsis:after {
content: "...";
}
.tl-box .via-hide{
display:none;
.toot a:not(.mention) span:last-of-type {
/*display: none;*/
}
.vote{
.tl-box .via-hide {
display: none;
}
.vote {
width: 100%;
border: 1px solid;
margin-top: 3px;
padding: 1px;
border-radius: 3px;
}
.fa-2x>.emoji-img {
width: 36px!important;
height: 36px!important
.fa-2x > .emoji-img {
width: 36px !important;
height: 36px !important;
}
.fa-3x>.emoji-img {
width: 54px!important;
height: 54px!important
.fa-3x > .emoji-img {
width: 54px !important;
height: 54px !important;
}
.fa-4x>.emoji-img {
width: 72px!important;
height: 72px!important
.fa-4x > .emoji-img {
width: 72px !important;
height: 72px !important;
}
.fa-5x>.emoji-img {
width: 90px!important;
height: 90px!important
.fa-5x > .emoji-img {
width: 90px !important;
height: 90px !important;
}
#lists-user{
#lists-user {
overflow-y: scroll;
overflow-x: hidden;
max-height: 200px;
overflow-x: hidden;
max-height: 200px;
}
.votebtn{
.votebtn {
border: 1px solid;
color: var(--bg);
background-color: var(--beforehover);
cursor:pointer;
cursor: pointer;
width: 50px;
padding: 2px;
display: inline-block;
@@ -485,10 +602,75 @@ p:not(:last-child){
border-radius: 10px;
transition-duration: 0.5s;
}
.votebtn:hover{
background-color:var(--color);
.votebtn:hover {
background-color: var(--color);
}
.jump {
display: inline-block;
animation: jump 0.75s linear infinite;
}
.img-link {
position: relative;
display: block;
margin-right: 1px;
float: left;
overflow: hidden;
}
.nsfw-media {
position: absolute;
top: 0;
right: 0;
background-color: black;
color: white;
}
.img-link img {
display: block;
width: 100%;
height: 100%;
}
.shared.selectedToot {
background-color: var(--selectedWithShare);
}
.selectedToot {
background-color: var(--selected);
}
audio {
height: 2rem;
}
.translate {
white-space: normal;
}
.cw_btn {
margin: 3px;
background-color: var(--emphasized);
color: var(--color);
padding-left: 3px;
padding-right: 3px;
border-radius: 3px;
border: 1px solid var(--color);
}
.vis-data {
font-size: 1rem !important;
margin: 5px;
user-select: none;
}
@keyframes jump {
0% {
transform: translateY(0);
}
25% {
transform: translateY(-16px);
}
50% {
transform: translateY(0);
}
75% {
transform: translateY(-8px);
}
100% {
transform: translateY(0);
}
}
@keyframes fadeInDown {
from {
opacity: 0;
@@ -524,4 +706,9 @@ p:not(:last-child){
animation-duration: 0.1s;
animation-name: fadeInDown;
}
.urbadge {
line-height: normal;
height: 2rem;
font-size: 1rem;
background-color: #009688;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,92 +1,126 @@
/*アイコンをクリックした時とかにでてくるユーザーデータ*/
#his-data {
background-repeat: no-repeat;
background-image: url('../../loading.svg');
background-image: url("../../loading.svg");
overflow-y: hidden;
}
#his-name{
font-size:1.5rem;
#his-data-content {
display: flex;
justify-content: center;
}
#his-name {
font-size: 1.5rem;
}
#his-prof {
float: left;
width: 100px;
margin-right:5px;
margin-right: 5px;
}
.his-float {
float: left;
overflow-y: scroll;
padding: 5px;
}
#his-float-data{
width: 400px;
#his-float-data {
height: 100%;
}
#his-float-timeline{
width: calc(100% - 400px);
height:100%;
overflow-y:hidden;
#his-leftside {
width: 500px;
}
#his-basic-prof{
min-height:130px;
#his-float-timeline {
max-width: 775px;
height: 100%;
overflow-y: hidden;
}
#his-matching-list{
#his-basic-prof {
min-height: 130px;
}
#his-matching-list {
overflow-y: scroll;
overflow-x: hidden;
}
#his-field{
#his-field {
vertical-align: baseline;
text-align:center;
padding:0;
text-align: center;
padding: 0;
}
#his-field tr{
height:1.5rem;
#his-field tr {
height: 1.5rem;
}
.his-field-title{
height:1.5rem; padding:0; background-color:#757575; text-align:center;
padding:5px;
margin-bottom:1px;
.his-field-title {
height: 1.5rem;
padding: 0;
background-color: #757575;
text-align: center;
padding: 5px;
margin-bottom: 1px;
width: 30%;
}
.his-field-content{
height:1.5rem; padding:0; padding-left:5px;
.his-field-content {
height: 1.5rem;
padding: 0;
padding-left: 5px;
}
#his-data a span.ellipsis:after{
content:"...";
#his-data a span.ellipsis:after {
content: "...";
}
#his-data a:not(.mention) span:last-of-type{
display:none;
#his-data a:not(.mention) span:last-of-type {
display: none;
}
#his-data a .rep_ct,
#his-data a .rt_ct,
#his-data a .fav_ct {
display: inline !important;
}
#his-data-show {
margin: 20px;
background-color:var(--his-data);
width: calc(100% - 20px);
margin-left: 50px;
margin-right: 50px;
background-color: var(--his-data);
height: calc(100% - 20px);
margin-bottom: 0;
padding: 5px;
}
.tab-content {
#his-data-wrap {
display: flex;
}
.his-var-content {
overflow-y: scroll;
overflow-x: hidden;
height: calc(100% - 240px)
height: calc(100% - 45px);
}
.my-data-width {
width: 10%;
#my-data-nav .btn {
width: 140px;
}
.active-back{
.active-back {
background-color: var(--active);
}
#his-name .emojione,#his-name .emoji-img{
#his-name .emojione,
#his-name .emoji-img {
width: 20px;
}
#his-plus-action .btn{
width:170px
#his-plus-action .btn {
width: 170px;
}
.custom-tabs{
display:flex;
.tabs {
display: flex;
}
.custom-tabs .custom-tab a{
.tabs .tab a {
padding: 8px 12px;
}
#his-des .mention{
#his-des .mention {
color: #039be5;
cursor: pointer;
}
#his-float-blocked {
display: flex;
justify-content: center;
align-items: center;
font-size: 2rem;
height: 100%;
}
#hisdropdown{
background-color: var(--bg);
}
#hisdropdown li:hover{
background-color: var(--active);
}

View File

@@ -0,0 +1,4 @@
directories:
output: dist
buildResources: build
electronVersion: 1.4.13

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 11 KiB

35
app/img/desk.svg Normal file
View File

@@ -0,0 +1,35 @@
<?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>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,122 +1,35 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
width="7.11022in" height="7.11022in"
viewBox="0 0 512 512">
<path id="選択範囲 #1"
fill="white" stroke="white" stroke-width="1"
d="M 96.00,16.00
C 99.85,16.01 102.39,15.12 104.00,19.00
104.00,19.00 97.00,19.00 97.00,19.00
97.00,19.00 108.00,22.07 108.00,22.07
108.00,22.07 144.00,43.08 144.00,43.08
144.00,43.08 181.83,64.31 181.83,64.31
181.83,64.31 223.00,88.26 223.00,88.26
223.00,88.26 247.00,102.22 247.00,102.22
247.00,102.22 257.00,107.00 257.00,107.00
260.09,110.36 266.43,114.39 271.00,115.00
271.00,115.00 298.00,133.00 298.00,133.00
298.00,133.00 300.00,132.00 300.00,132.00
300.00,132.00 312.00,141.00 312.00,141.00
312.00,141.00 314.00,140.00 314.00,140.00
318.40,144.39 334.83,152.80 341.00,156.45
341.00,156.45 404.00,192.94 404.00,192.94
404.00,192.94 425.67,205.63 425.67,205.63
428.70,208.64 426.87,211.86 425.12,215.00
425.12,215.00 412.26,237.00 412.26,237.00
410.65,240.07 409.02,245.62 404.90,245.68
401.70,245.72 396.83,242.47 394.00,240.87
394.00,240.87 370.00,226.89 370.00,226.89
370.00,226.89 282.00,176.51 282.00,176.51
282.00,176.51 271.00,169.52 271.00,169.52
271.00,169.52 261.00,164.31 261.00,164.31
257.45,162.08 251.05,157.46 247.00,157.00
247.00,157.00 234.00,148.55 234.00,148.55
234.00,148.55 208.17,133.78 208.17,133.78
208.17,133.78 190.00,124.00 190.00,124.00
190.00,124.00 163.00,107.60 163.00,107.60
163.00,107.60 103.00,73.00 103.00,73.00
103.00,73.00 103.00,453.00 103.00,453.00
103.00,453.00 127.00,439.42 127.00,439.42
127.00,439.42 170.00,414.58 170.00,414.58
170.00,414.58 237.17,376.24 237.17,376.24
237.17,376.24 256.00,364.59 256.00,364.59
256.00,364.59 264.00,360.53 264.00,360.53
264.00,360.53 285.00,348.20 285.00,348.20
285.00,348.20 292.99,344.12 292.99,344.12
292.99,344.12 299.28,339.83 299.28,339.83
299.28,339.83 320.00,328.41 320.00,328.41
320.00,328.41 362.00,304.05 362.00,304.05
362.00,304.05 371.91,297.68 371.91,297.68
371.91,297.68 379.04,294.41 379.04,294.41
379.04,294.41 410.00,276.00 410.00,276.00
410.00,276.00 416.00,285.00 416.00,285.00
416.81,288.83 421.21,296.21 424.00,299.00
424.00,299.00 423.00,301.00 423.00,301.00
427.24,303.72 430.62,312.17 432.00,317.00
432.00,317.00 388.00,342.67 388.00,342.67
388.00,342.67 317.00,383.55 317.00,383.55
317.00,383.55 279.00,405.32 279.00,405.32
279.00,405.32 264.00,415.00 264.00,415.00
264.00,415.00 262.00,414.00 262.00,414.00
262.00,414.00 250.00,423.00 250.00,423.00
250.00,423.00 248.00,422.00 248.00,422.00
248.00,422.00 238.00,428.92 238.00,428.92
238.00,428.92 218.00,440.67 218.00,440.67
218.00,440.67 207.00,448.00 207.00,448.00
207.00,448.00 193.00,455.18 193.00,455.18
193.00,455.18 176.00,465.08 176.00,465.08
176.00,465.08 166.09,470.31 166.09,470.31
166.09,470.31 137.00,487.31 137.00,487.31
137.00,487.31 103.00,506.00 103.00,506.00
103.00,506.00 104.00,509.00 104.00,509.00
104.00,509.00 57.00,509.00 57.00,509.00
57.00,509.00 57.00,16.00 57.00,16.00
57.00,16.00 96.00,16.00 96.00,16.00 Z
M 102.00,72.00
C 102.00,72.00 103.00,73.00 103.00,73.00
103.00,73.00 103.00,72.00 103.00,72.00
103.00,72.00 102.00,72.00 102.00,72.00 Z
M 261.00,190.61
C 270.30,188.63 274.03,177.15 280.77,179.78
284.36,181.18 284.28,187.65 284.72,191.00
285.35,195.85 287.64,207.99 286.57,212.00
285.51,216.00 282.42,218.30 280.78,222.00
277.54,229.29 282.79,236.85 282.99,245.00
283.38,261.24 274.02,264.52 266.36,276.00
261.36,283.50 258.58,297.05 259.09,306.00
259.91,320.41 263.09,322.38 271.02,333.00
273.09,335.77 275.09,339.39 272.11,342.37
269.94,344.63 266.39,343.51 264.00,342.37
258.40,339.52 252.76,332.51 249.91,327.00
246.61,320.60 248.26,314.37 244.57,310.23
240.72,305.90 235.19,306.50 231.18,310.23
225.69,315.34 221.16,325.22 218.00,332.00
226.04,333.96 232.79,331.61 234.00,342.00
234.00,342.00 175.00,342.00 175.00,342.00
166.62,341.85 166.77,339.11 162.00,338.56
158.39,338.15 148.72,341.68 145.00,343.05
138.31,345.53 120.54,352.22 119.64,360.00
119.01,365.49 125.06,367.91 127.00,374.00
115.41,373.03 104.20,364.93 108.88,352.00
111.36,345.12 117.06,343.57 123.00,340.75
132.86,336.05 141.94,332.38 149.58,323.96
151.40,321.95 154.62,318.26 155.92,316.00
155.92,316.00 166.03,283.00 166.03,283.00
169.87,271.08 179.16,256.26 189.00,248.52
199.37,240.36 208.38,237.36 221.00,234.66
226.45,233.50 237.77,232.36 240.99,227.79
244.55,222.75 241.98,216.26 240.34,211.00
237.46,201.77 234.64,193.69 237.00,184.00
244.82,185.47 252.94,192.32 261.00,190.61 Z
M 102.00,453.00
C 102.00,453.00 103.00,454.00 103.00,454.00
103.00,454.00 103.00,453.00 103.00,453.00
103.00,453.00 102.00,453.00 102.00,453.00 Z
M 102.00,505.00
C 102.00,505.00 103.00,506.00 103.00,506.00
103.00,506.00 103.00,505.00 103.00,505.00
103.00,505.00 102.00,505.00 102.00,505.00 Z" />
<?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:none;}
.st2{fill:#FFFFFF;}
.st3{fill:#FFFFFF;}
.st4{fill:#FFFFFF;}
.st5{fill:#none;}
.st6{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
.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>
</svg>

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

132
app/img/thinking.svg Normal file
View File

@@ -0,0 +1,132 @@
<?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{fill:#040000;}
.st1{fill:#040000;stroke:#040000;stroke-miterlimit:10;}
.st2{clip-path:url(#SVGID_2_);}
.st3{clip-path:url(#SVGID_4_);}
.st4{fill:none;}
.st5{fill:#FFFFFF;}
.st6{fill:#545251;stroke:#040000;stroke-miterlimit:10;}
.st7{fill:#F0842E;}
.st8{fill:#3D4FA0;}
.st9{fill:#63451F;stroke:#FFFFFF;stroke-width:20;stroke-miterlimit:10;}
.st10{fill:#63451F;}
</style>
<g id="DrawBlack">
<polyline id="BG_1_" class="st0" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
<rect id="Left_1_" x="678.5" y="128.48" class="st1" width="450" height="3821.5"/>
<rect id="Top_1_" x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st0" width="450" height="3117.62"/>
<g id="Finger_1_">
<g>
<defs>
<rect id="SVGID_1_" x="-626.54" y="666.18" transform="matrix(0.9063 -0.4226 0.4226 0.9063 -723.8983 1097.2598)" width="5478.6" height="3030.2"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
</clipPath>
<g id="g14_3_" class="st2">
<g id="g44_1_" transform="translate(17.2764,0.8682)">
<path id="path46_1_" class="st0" d="M2605.11,3533.86c0,0,159.85-112.71,149-195.05c-10.68-85.2-127.58-48.89-127.58-48.89
s136.18-82.82,112.7-180.35c-22.17-91.83-167.38-48.54-167.38-48.54s119.56-92.9,85.39-182.75
c-28.87-75.6-188.03-44.94-188.03-44.94s651.47-417.09,718.51-459.5c66.86-42.42,160.29-131.95,87.28-198.12
c-72.76-66.37-205.83-7.85-269.88,32.69c-64.01,40.62-874.42,553.28-1153.93,730.24c-29.84,18.84-169.66,107.16-186.59,118.03
c-69.96,44.42-112.22,42.02-74.07-13.01c51.14-73.63,74.73-139.7,55.45-222.1c-20.44-86.69-114.31-161.6-159.65-186.44
c-84.35-46.21-197.27-61.16-306.71-33.34c-170.83,43.44-256.98,149.65-157.15,218.26c149.29,102.66,148.88,244.02,37.82,381.07
c-261.05,322.06-363.57,512.7-142.28,713.95c241.24,219.53,812.72,166.75,1276.35-126.35
C2218.92,3773.38,2605.11,3533.86,2605.11,3533.86"/>
</g>
</g>
</g>
</g>
<g id="Eyes_1_">
<g>
<defs>
<rect id="SVGID_3_" x="95.01" y="544.01" width="3526.99" height="3526.99"/>
</defs>
<clipPath id="SVGID_4_">
<use xlink:href="#SVGID_3_" style="overflow:visible;"/>
</clipPath>
<g id="g14_2_" class="st3">
<g id="g24_1_" transform="translate(15.4063,25.5)">
<path id="path26_1_" class="st0" d="M1588.99,1547.21c0,135.3-87.78,244.93-195.94,244.93
c-108.16,0-195.94-109.63-195.94-244.93c0-135.2,87.78-244.93,195.94-244.93C1501.21,1302.28,1588.99,1412.01,1588.99,1547.21"
/>
</g>
<g id="g32_1_" transform="translate(9.6709,29.667)">
<path id="path34_1_" class="st0" d="M1032.82,1134.8c-16.07-8.52-29.69-21.85-38.31-38.99c-21.16-42.03-3.92-90.82,38.5-109.04
c417.95-179.29,754.29-4.21,768.39,3.33c42.42,22.63,59.57,73.28,38.31,113.06c-21.16,39.68-72.5,53.49-114.92,31.16
c-12.05-6.27-277.46-140.3-615.07,4.6C1084.54,1149.59,1056.13,1147.24,1032.82,1134.8"/>
</g>
<g id="g36_1_" transform="translate(14.7427,16.4277)">
<path id="path38_1_" class="st0" d="M1524.64,2445.12c-13.32-12.44-23.12-28.71-27.04-47.61c-9.7-45.95,19.4-88.76,65.15-95.42
c449.89-66.43,730.09,188.99,741.94,199.86c35.27,32.72,38.7,85.92,8.03,119.04c-30.57,32.92-83.77,33.11-118.94,0.59
c-10.19-9.01-232.39-206.52-595.87-152.93C1570.78,2472.65,1543.94,2463.15,1524.64,2445.12"/>
</g>
<g id="g40_1_" transform="translate(20.4307,25.917)">
<path id="path42_1_" class="st0" d="M2076.21,1505.94c-15.28-9.6-28.02-23.81-35.47-41.54c-18.32-43.3,2.25-90.92,45.75-106.2
c429.22-150.48,752.91,47.03,766.53,55.55c40.66,25.47,54.28,77.1,30.47,115.41c-23.71,38.21-76.03,48.5-116.68,23.32
c-11.76-7.15-267.27-158.81-613.99-37.23C2126.96,1524.26,2098.75,1519.95,2076.21,1505.94"/>
</g>
<g id="g28_1_" transform="translate(26,24.5)">
<path id="path30_1_" class="st0" d="M2616.28,1646.19c0,135.3-87.69,244.93-195.94,244.93
c-108.16,0-195.94-109.63-195.94-244.93c0-135.2,87.78-244.93,195.94-244.93C2528.6,1401.26,2616.28,1510.99,2616.28,1646.19"
/>
</g>
</g>
</g>
</g>
</g>
<g id="Path">
<path id="CutLine" class="st4" d="M528,128C532-14,669,0,669,0h346l2629,1464c0,0,78,34,28,108s-217,359-217,359s-22,9,9,226
s-204,313-204,313l-545,356c0,0,421.37,492.67,29.68,732.33S1798,4056,1798,4056s28.13,15-290.94,15s-828.56,0-828.56,0
S531,4102,528,3904S528,128,528,128z"/>
</g>
<g id="Draw">
<polyline id="BG" class="st5" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
<rect id="Left" x="678.5" y="128.48" class="st6" width="450" height="3821.5"/>
<rect id="Top" x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st7" width="450" height="3117.62"/>
<g id="Finger">
<g id="g44" transform="translate(17.2764,0.8682)">
<path id="path46" class="st8" d="M2605.11,3533.86c0,0,159.85-112.71,149-195.05c-10.68-85.2-127.58-48.89-127.58-48.89
s136.18-82.82,112.7-180.35c-22.17-91.83-167.38-48.54-167.38-48.54s119.56-92.9,85.39-182.75
c-28.87-75.6-188.03-44.94-188.03-44.94s651.47-417.09,718.51-459.5c66.86-42.42,160.29-131.95,87.28-198.12
c-72.76-66.37-205.83-7.85-269.88,32.69c-64.01,40.62-874.42,553.28-1153.93,730.24c-29.84,18.84-169.66,107.16-186.59,118.03
c-69.96,44.42-112.22,42.02-74.07-13.01c51.14-73.63,74.73-139.7,55.45-222.1c-20.44-86.69-114.31-161.6-159.65-186.44
c-84.35-46.21-197.27-61.16-306.71-33.34c-170.83,43.44-256.98,149.65-157.15,218.26c149.29,102.66,148.88,244.02,37.82,381.07
c-261.05,322.06-363.57,512.7-142.28,713.95c241.24,219.53,812.72,166.75,1276.35-126.35
C2218.92,3773.38,2605.11,3533.86,2605.11,3533.86"/>
</g>
</g>
<g id="Eyes">
<g id="g24" transform="translate(15.4063,25.5)">
<path id="path26" class="st9" d="M1588.99,1547.21c0,135.3-87.78,244.93-195.94,244.93c-108.16,0-195.94-109.63-195.94-244.93
c0-135.2,87.78-244.93,195.94-244.93C1501.21,1302.28,1588.99,1412.01,1588.99,1547.21"/>
</g>
<g id="g32" transform="translate(9.6709,29.667)">
<path id="path34" class="st9" d="M1032.82,1134.8c-16.07-8.52-29.69-21.85-38.31-38.99c-21.16-42.03-3.92-90.82,38.5-109.04
c417.95-179.29,754.29-4.21,768.39,3.33c42.42,22.63,59.57,73.28,38.31,113.06c-21.16,39.68-72.5,53.49-114.92,31.16
c-12.05-6.27-277.46-140.3-615.07,4.6C1084.54,1149.59,1056.13,1147.24,1032.82,1134.8"/>
</g>
<g id="g36" transform="translate(14.7427,16.4277)">
<path id="path38" class="st9" d="M1524.64,2445.12c-13.32-12.44-23.12-28.71-27.04-47.61c-9.7-45.95,19.4-88.76,65.15-95.42
c449.89-66.43,730.09,188.99,741.94,199.86c35.27,32.72,38.7,85.92,8.03,119.04c-30.57,32.92-83.77,33.11-118.94,0.59
c-10.19-9.01-232.39-206.52-595.87-152.93C1570.78,2472.65,1543.94,2463.15,1524.64,2445.12"/>
</g>
<g id="g40" transform="translate(20.4307,25.917)">
<path id="path42" class="st9" d="M2076.21,1505.94c-15.28-9.6-28.02-23.81-35.47-41.54c-18.32-43.3,2.25-90.92,45.75-106.2
c429.22-150.48,752.91,47.03,766.53,55.55c40.66,25.47,54.28,77.1,30.47,115.41c-23.71,38.21-76.03,48.5-116.68,23.32
c-11.76-7.15-267.27-158.81-613.99-37.23C2126.96,1524.26,2098.75,1519.95,2076.21,1505.94"/>
</g>
<g id="g28" transform="translate(26,24.5)">
<path id="path30" class="st10" d="M2616.28,1646.19c0,135.3-87.69,244.93-195.94,244.93c-108.16,0-195.94-109.63-195.94-244.93
c0-135.2,87.78-244.93,195.94-244.93C2528.6,1401.26,2616.28,1510.99,2616.28,1646.19"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.6 KiB

3
app/index.html Normal file
View File

@@ -0,0 +1,3 @@
<script>
location.href="./view/ja"
</script>

View File

@@ -1,5 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL='language.html?mode=redirect'" />
</head>

View File

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

119
app/js/common/blurhash.js Normal file
View File

@@ -0,0 +1,119 @@
var digitCharacters = [
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d",
"e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
"o", "p", "q", "r", "s", "t", "u", "v", "w", "x",
"y", "z", "#", "$", "%", "*", "+", ",", "-", ".",
":", ";", "=", "?", "@", "[", "]", "^", "_", "{",
"|", "}", "~",
];
function decode83(str) {
var value = 0;
for (var i = 0; i < str.length; i++) {
var c = str[i];
var digit = digitCharacters.indexOf(c);
value = value * 83 + digit;
}
return value;
}
function linearTosRGB(value) {
var v = Math.max(0, Math.min(1, value));
if (v <= 0.0031308) {
return Math.round(v * 12.92 * 255 + 0.5);
}
else {
return Math.round((1.055 * Math.pow(v, 1 / 2.4) - 0.055) * 255 + 0.5);
}
}
function sRGBToLinear(value) {
var v = value / 255;
if (v <= 0.04045) {
return v / 12.92;
}
else {
return Math.pow((v + 0.055) / 1.055, 2.4);
}
}
function decodeDC(value) {
var intR = value >> 16;
var intG = (value >> 8) & 255;
var intB = value & 255;
return [sRGBToLinear(intR), sRGBToLinear(intG), sRGBToLinear(intB)];
};
function sign(n) { return (n < 0 ? -1 : 1); }
function signPow(val, exp) { return sign(val) * Math.pow(Math.abs(val), exp); }
function decodeDC2(value, maximumValue) {
var quantR = Math.floor(value / (19 * 19));
var quantG = Math.floor(value / 19) % 19;
var quantB = value % 19;
var rgb = [
signPow((quantR - 9) / 9, 2.0) * maximumValue,
signPow((quantG - 9) / 9, 2.0) * maximumValue,
signPow((quantB - 9) / 9, 2.0) * maximumValue,
];
return rgb;
};
function decodeblur(blurhash, width, height, punch) {
punch = punch | 1;
if (blurhash.length < 6) {
console.error('too short blurhash');
return null;
}
var sizeFlag = decode83(blurhash[0]);
var numY = Math.floor(sizeFlag / 9) + 1;
var numX = (sizeFlag % 9) + 1;
var quantisedMaximumValue = decode83(blurhash[1]);
var maximumValue = (quantisedMaximumValue + 1) / 166;
if (blurhash.length !== 4 + 2 * numX * numY) {
console.error('blurhash length mismatch', blurhash.length, 4 + 2 * numX * numY);
return null;
}
var colors = new Array(numX * numY);
for (var i = 0; i < colors.length; i++) {
if (i === 0) {
var value = decode83(blurhash.substring(2, 6));
colors[i] = decodeDC(value);
}
else {
var value = decode83(blurhash.substring(4 + i * 2, 6 + i * 2));
colors[i] = decodeDC2(value, maximumValue * punch);
}
}
var bytesPerRow = width * 4;
var pixels = new Uint8ClampedArray(bytesPerRow * height);
for (var y = 0; y < height; y++) {
for (var x = 0; x < width; x++) {
var r = 0;
var g = 0;
var b = 0;
for (var j = 0; j < numY; j++) {
for (var i = 0; i < numX; i++) {
var basis = Math.cos(Math.PI * x * i / width) * Math.cos(Math.PI * y * j / height);
var color = colors[i + j * numX];
r += color[0] * basis;
g += color[1] * basis;
b += color[2] * basis;
}
}
var intR = linearTosRGB(r);
var intG = linearTosRGB(g);
var intB = linearTosRGB(b);
pixels[4 * x + 0 + y * bytesPerRow] = intR;
pixels[4 * x + 1 + y * bytesPerRow] = intG;
pixels[4 * x + 2 + y * bytesPerRow] = intB;
pixels[4 * x + 3 + y * bytesPerRow] = 255; // alpha
}
}
return pixels;
}
function parseBlur(blur) {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var pixels = decodeblur(blur, 32, 32)
const imageData = new ImageData(pixels, 32, 32);
ctx.putImageData(imageData, 0, 0);
return canvas.toDataURL()
}

File diff suppressed because one or more lines are too long

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

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

View File

@@ -1,33 +1,96 @@
/*
A JavaScript implementation of the SHA family of hashes, as
defined in FIPS PUB 180-4 and FIPS PUB 202, as well as the corresponding
HMAC implementation as defined in FIPS PUB 198a
var sha256 = function sha256(ascii) {
function rightRotate(value, amount) {
return (value >>> amount) | (value << (32 - amount));
};
Copyright 2008-2018 Brian Turek, 1998-2009 Paul Johnston & Contributors
Distributed under the BSD License
See http://caligatio.github.com/jsSHA/ for more information
*/
'use strict';(function(I){function w(c,a,d){var l=0,b=[],g=0,f,n,k,e,h,q,y,p,m=!1,t=[],r=[],u,z=!1;d=d||{};f=d.encoding||"UTF8";u=d.numRounds||1;if(u!==parseInt(u,10)||1>u)throw Error("numRounds must a integer >= 1");if(0===c.lastIndexOf("SHA-",0))if(q=function(b,a){return A(b,a,c)},y=function(b,a,l,f){var g,e;if("SHA-224"===c||"SHA-256"===c)g=(a+65>>>9<<4)+15,e=16;else throw Error("Unexpected error in SHA-2 implementation");for(;b.length<=g;)b.push(0);b[a>>>5]|=128<<24-a%32;a=a+l;b[g]=a&4294967295;
b[g-1]=a/4294967296|0;l=b.length;for(a=0;a<l;a+=e)f=A(b.slice(a,a+e),f,c);if("SHA-224"===c)b=[f[0],f[1],f[2],f[3],f[4],f[5],f[6]];else if("SHA-256"===c)b=f;else throw Error("Unexpected error in SHA-2 implementation");return b},p=function(b){return b.slice()},"SHA-224"===c)h=512,e=224;else if("SHA-256"===c)h=512,e=256;else throw Error("Chosen SHA variant is not supported");else throw Error("Chosen SHA variant is not supported");k=B(a,f);n=x(c);this.setHMACKey=function(b,a,g){var e;if(!0===m)throw Error("HMAC key already set");
if(!0===z)throw Error("Cannot set HMAC key after calling update");f=(g||{}).encoding||"UTF8";a=B(a,f)(b);b=a.binLen;a=a.value;e=h>>>3;g=e/4-1;if(e<b/8){for(a=y(a,b,0,x(c));a.length<=g;)a.push(0);a[g]&=4294967040}else if(e>b/8){for(;a.length<=g;)a.push(0);a[g]&=4294967040}for(b=0;b<=g;b+=1)t[b]=a[b]^909522486,r[b]=a[b]^1549556828;n=q(t,n);l=h;m=!0};this.update=function(a){var c,f,e,d=0,p=h>>>5;c=k(a,b,g);a=c.binLen;f=c.value;c=a>>>5;for(e=0;e<c;e+=p)d+h<=a&&(n=q(f.slice(e,e+p),n),d+=h);l+=d;b=f.slice(d>>>
5);g=a%h;z=!0};this.getHash=function(a,f){var d,h,k,q;if(!0===m)throw Error("Cannot call getHash after setting HMAC key");k=C(f);switch(a){case "HEX":d=function(a){return D(a,e,k)};break;case "B64":d=function(a){return E(a,e,k)};break;case "BYTES":d=function(a){return F(a,e)};break;case "ARRAYBUFFER":try{h=new ArrayBuffer(0)}catch(v){throw Error("ARRAYBUFFER not supported by this environment");}d=function(a){return G(a,e)};break;default:throw Error("format must be HEX, B64, BYTES, or ARRAYBUFFER");
}q=y(b.slice(),g,l,p(n));for(h=1;h<u;h+=1)q=y(q,e,0,x(c));return d(q)};this.getHMAC=function(a,f){var d,k,t,u;if(!1===m)throw Error("Cannot call getHMAC without first setting HMAC key");t=C(f);switch(a){case "HEX":d=function(a){return D(a,e,t)};break;case "B64":d=function(a){return E(a,e,t)};break;case "BYTES":d=function(a){return F(a,e)};break;case "ARRAYBUFFER":try{d=new ArrayBuffer(0)}catch(v){throw Error("ARRAYBUFFER not supported by this environment");}d=function(a){return G(a,e)};break;default:throw Error("outputFormat must be HEX, B64, BYTES, or ARRAYBUFFER");
}k=y(b.slice(),g,l,p(n));u=q(r,x(c));u=y(k,e,h,u);return d(u)}}function m(){}function D(c,a,d){var l="";a/=8;var b,g;for(b=0;b<a;b+=1)g=c[b>>>2]>>>8*(3+b%4*-1),l+="0123456789abcdef".charAt(g>>>4&15)+"0123456789abcdef".charAt(g&15);return d.outputUpper?l.toUpperCase():l}function E(c,a,d){var l="",b=a/8,g,f,n;for(g=0;g<b;g+=3)for(f=g+1<b?c[g+1>>>2]:0,n=g+2<b?c[g+2>>>2]:0,n=(c[g>>>2]>>>8*(3+g%4*-1)&255)<<16|(f>>>8*(3+(g+1)%4*-1)&255)<<8|n>>>8*(3+(g+2)%4*-1)&255,f=0;4>f;f+=1)8*g+6*f<=a?l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(n>>>
6*(3-f)&63):l+=d.b64Pad;return l}function F(c,a){var d="",l=a/8,b,g;for(b=0;b<l;b+=1)g=c[b>>>2]>>>8*(3+b%4*-1)&255,d+=String.fromCharCode(g);return d}function G(c,a){var d=a/8,l,b=new ArrayBuffer(d),g;g=new Uint8Array(b);for(l=0;l<d;l+=1)g[l]=c[l>>>2]>>>8*(3+l%4*-1)&255;return b}function C(c){var a={outputUpper:!1,b64Pad:"=",shakeLen:-1};c=c||{};a.outputUpper=c.outputUpper||!1;!0===c.hasOwnProperty("b64Pad")&&(a.b64Pad=c.b64Pad);if("boolean"!==typeof a.outputUpper)throw Error("Invalid outputUpper formatting option");
if("string"!==typeof a.b64Pad)throw Error("Invalid b64Pad formatting option");return a}function B(c,a){var d;switch(a){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch(c){case "HEX":d=function(a,b,c){var f=a.length,d,k,e,h,q;if(0!==f%2)throw Error("String of HEX type must be in byte increments");b=b||[0];c=c||0;q=c>>>3;for(d=0;d<f;d+=2){k=parseInt(a.substr(d,2),16);if(isNaN(k))throw Error("String of HEX type contains invalid characters");
h=(d>>>1)+q;for(e=h>>>2;b.length<=e;)b.push(0);b[e]|=k<<8*(3+h%4*-1)}return{value:b,binLen:4*f+c}};break;case "TEXT":d=function(c,b,d){var f,n,k=0,e,h,q,m,p,r;b=b||[0];d=d||0;q=d>>>3;if("UTF8"===a)for(r=3,e=0;e<c.length;e+=1)for(f=c.charCodeAt(e),n=[],128>f?n.push(f):2048>f?(n.push(192|f>>>6),n.push(128|f&63)):55296>f||57344<=f?n.push(224|f>>>12,128|f>>>6&63,128|f&63):(e+=1,f=65536+((f&1023)<<10|c.charCodeAt(e)&1023),n.push(240|f>>>18,128|f>>>12&63,128|f>>>6&63,128|f&63)),h=0;h<n.length;h+=1){p=k+
q;for(m=p>>>2;b.length<=m;)b.push(0);b[m]|=n[h]<<8*(r+p%4*-1);k+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(r=2,n="UTF16LE"===a&&!0||"UTF16LE"!==a&&!1,e=0;e<c.length;e+=1){f=c.charCodeAt(e);!0===n&&(h=f&255,f=h<<8|f>>>8);p=k+q;for(m=p>>>2;b.length<=m;)b.push(0);b[m]|=f<<8*(r+p%4*-1);k+=2}return{value:b,binLen:8*k+d}};break;case "B64":d=function(a,b,c){var f=0,d,k,e,h,q,m,p;if(-1===a.search(/^[a-zA-Z0-9=+\/]+$/))throw Error("Invalid character in base-64 string");k=a.indexOf("=");a=a.replace(/\=/g,
"");if(-1!==k&&k<a.length)throw Error("Invalid '=' found in base-64 string");b=b||[0];c=c||0;m=c>>>3;for(k=0;k<a.length;k+=4){q=a.substr(k,4);for(e=h=0;e<q.length;e+=1)d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(q[e]),h|=d<<18-6*e;for(e=0;e<q.length-1;e+=1){p=f+m;for(d=p>>>2;b.length<=d;)b.push(0);b[d]|=(h>>>16-8*e&255)<<8*(3+p%4*-1);f+=1}}return{value:b,binLen:8*f+c}};break;case "BYTES":d=function(a,b,c){var d,n,k,e,h;b=b||[0];c=c||0;k=c>>>3;for(n=0;n<a.length;n+=
1)d=a.charCodeAt(n),h=n+k,e=h>>>2,b.length<=e&&b.push(0),b[e]|=d<<8*(3+h%4*-1);return{value:b,binLen:8*a.length+c}};break;case "ARRAYBUFFER":try{d=new ArrayBuffer(0)}catch(l){throw Error("ARRAYBUFFER not supported by this environment");}d=function(a,b,c){var d,n,k,e,h;b=b||[0];c=c||0;n=c>>>3;h=new Uint8Array(a);for(d=0;d<a.byteLength;d+=1)e=d+n,k=e>>>2,b.length<=k&&b.push(0),b[k]|=h[d]<<8*(3+e%4*-1);return{value:b,binLen:8*a.byteLength+c}};break;default:throw Error("format must be HEX, TEXT, B64, BYTES, or ARRAYBUFFER");
}return d}function r(c,a){return c>>>a|c<<32-a}function J(c,a,d){return c&a^~c&d}function K(c,a,d){return c&a^c&d^a&d}function L(c){return r(c,2)^r(c,13)^r(c,22)}function M(c){return r(c,6)^r(c,11)^r(c,25)}function N(c){return r(c,7)^r(c,18)^c>>>3}function O(c){return r(c,17)^r(c,19)^c>>>10}function P(c,a){var d=(c&65535)+(a&65535);return((c>>>16)+(a>>>16)+(d>>>16)&65535)<<16|d&65535}function Q(c,a,d,l){var b=(c&65535)+(a&65535)+(d&65535)+(l&65535);return((c>>>16)+(a>>>16)+(d>>>16)+(l>>>16)+(b>>>
16)&65535)<<16|b&65535}function R(c,a,d,l,b){var g=(c&65535)+(a&65535)+(d&65535)+(l&65535)+(b&65535);return((c>>>16)+(a>>>16)+(d>>>16)+(l>>>16)+(b>>>16)+(g>>>16)&65535)<<16|g&65535}function x(c){var a=[],d;if(0===c.lastIndexOf("SHA-",0))switch(a=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428],d=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],c){case "SHA-224":break;case "SHA-256":a=d;break;case "SHA-384":a=[new m,new m,
new m,new m,new m,new m,new m,new m];break;case "SHA-512":a=[new m,new m,new m,new m,new m,new m,new m,new m];break;default:throw Error("Unknown SHA variant");}else throw Error("No SHA variants supported");return a}function A(c,a,d){var l,b,g,f,n,k,e,h,m,r,p,w,t,x,u,z,A,B,C,D,E,F,v=[],G;if("SHA-224"===d||"SHA-256"===d)r=64,w=1,F=Number,t=P,x=Q,u=R,z=N,A=O,B=L,C=M,E=K,D=J,G=H;else throw Error("Unexpected error in SHA-2 implementation");d=a[0];l=a[1];b=a[2];g=a[3];f=a[4];n=a[5];k=a[6];e=a[7];for(p=
0;p<r;p+=1)16>p?(m=p*w,h=c.length<=m?0:c[m],m=c.length<=m+1?0:c[m+1],v[p]=new F(h,m)):v[p]=x(A(v[p-2]),v[p-7],z(v[p-15]),v[p-16]),h=u(e,C(f),D(f,n,k),G[p],v[p]),m=t(B(d),E(d,l,b)),e=k,k=n,n=f,f=t(g,h),g=b,b=l,l=d,d=t(h,m);a[0]=t(d,a[0]);a[1]=t(l,a[1]);a[2]=t(b,a[2]);a[3]=t(g,a[3]);a[4]=t(f,a[4]);a[5]=t(n,a[5]);a[6]=t(k,a[6]);a[7]=t(e,a[7]);return a}var H;H=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,
2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,
2756734187,3204031479,3329325298];"function"===typeof define&&define.amd?define(function(){return w}):"undefined"!==typeof exports?("undefined"!==typeof module&&module.exports&&(module.exports=w),exports=w):I.jsSHA=w})(this);
function sha256(token){
var shaObj = new jsSHA("SHA-256", "TEXT");
shaObj.update(token);
var hash = shaObj.getHash("HEX");
return hash;
}
var mathPow = Math.pow;
var maxWord = mathPow(2, 32);
var lengthProperty = 'length'
var i, j; // Used as a counter across the whole file
var result = ''
var words = [];
var asciiBitLength = ascii[lengthProperty] * 8;
//* caching results is optional - remove/add slash from front of this line to toggle
// Initial hash value: first 32 bits of the fractional parts of the square roots of the first 8 primes
// (we actually calculate the first 64, but extra values are just ignored)
var hash = sha256.h = sha256.h || [];
// Round constants: first 32 bits of the fractional parts of the cube roots of the first 64 primes
var k = sha256.k = sha256.k || [];
var primeCounter = k[lengthProperty];
/*/
var hash = [], k = [];
var primeCounter = 0;
//*/
var isComposite = {};
for (var candidate = 2; primeCounter < 64; candidate++) {
if (!isComposite[candidate]) {
for (i = 0; i < 313; i += candidate) {
isComposite[i] = candidate;
}
hash[primeCounter] = (mathPow(candidate, .5) * maxWord) | 0;
k[primeCounter++] = (mathPow(candidate, 1 / 3) * maxWord) | 0;
}
}
ascii += '\x80' // Append Ƈ' bit (plus zero padding)
while (ascii[lengthProperty] % 64 - 56) ascii += '\x00' // More zero padding
for (i = 0; i < ascii[lengthProperty]; i++) {
j = ascii.charCodeAt(i);
if (j >> 8) return; // ASCII check: only accept characters in range 0-255
words[i >> 2] |= j << ((3 - i) % 4) * 8;
}
words[words[lengthProperty]] = ((asciiBitLength / maxWord) | 0);
words[words[lengthProperty]] = (asciiBitLength)
// process each chunk
for (j = 0; j < words[lengthProperty];) {
var w = words.slice(j, j += 16); // The message is expanded into 64 words as part of the iteration
var oldHash = hash;
// This is now the undefinedworking hash", often labelled as variables a...g
// (we have to truncate as well, otherwise extra entries at the end accumulate
hash = hash.slice(0, 8);
for (i = 0; i < 64; i++) {
var i2 = i + j;
// Expand the message into 64 words
// Used below if
var w15 = w[i - 15], w2 = w[i - 2];
// Iterate
var a = hash[0], e = hash[4];
var temp1 = hash[7]
+ (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25)) // S1
+ ((e & hash[5]) ^ ((~e) & hash[6])) // ch
+ k[i]
// Expand the message schedule if needed
+ (w[i] = (i < 16) ? w[i] : (
w[i - 16]
+ (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15 >>> 3)) // s0
+ w[i - 7]
+ (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2 >>> 10)) // s1
) | 0
);
// This is only used once, so *could* be moved below, but it only saves 4 bytes and makes things unreadble
var temp2 = (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22)) // S0
+ ((a & hash[1]) ^ (a & hash[2]) ^ (hash[1] & hash[2])); // maj
hash = [(temp1 + temp2) | 0].concat(hash); // We don't bother trimming off the extra ones, they're harmless as long as we're truncating when we do the slice()
hash[4] = (hash[4] + temp1) | 0;
}
for (i = 0; i < 8; i++) {
hash[i] = (hash[i] + oldHash[i]) | 0;
}
}
for (i = 0; i < 8; i++) {
for (j = 3; j + 1; j--) {
var b = (hash[i] >> (j * 8)) & 255;
result += ((b < 16) ? 0 : '') + b.toString(16);
}
}
return result;
};

View File

@@ -25,7 +25,7 @@
factory(jQuery);
}
}(function ($) {
$.timeago = function(timestamp) {
$.timeago = function (timestamp) {
if (timestamp instanceof Date) {
return inWords(timestamp);
} else if (typeof timestamp === "string") {
@@ -37,7 +37,6 @@
}
};
var $t = $.timeago;
$.extend($.timeago, {
settings: {
refreshMillis: 60000,
@@ -47,30 +46,30 @@
cutoff: 0,
autoDispose: true,
strings: {
prefixAgo: null,
prefixFromNow: "今から",
suffixAgo: "",
suffixFromNow: "",
inPast: '',
seconds: "%d秒前",
minute: "1分前",
minutes: "%d分前",
hour: "1時間前",
hours: "%d時間前",
day: "昨日",
days: "%d日前",
month: "昨月",
months: "%dヶ月前",
year: "去年",
years: "%d年前",
prefixAgo: lang.lang_time_prefixAgo,
prefixFromNow: lang.lang_time_prefixFromNow,
suffixAgo: lang.lang_time_suffixAgo,
suffixFromNow: lang.lang_time_suffixFromNow,
inPast: lang.lang_time_inPast,
seconds: lang.lang_time_seconds,
minute: lang.lang_time_minute,
minutes: lang.lang_time_minutes,
hour: lang.lang_time_hour,
hours: lang.lang_time_hours,
day: lang.lang_time_day,
days: lang.lang_time_days,
month: lang.lang_time_month,
months: lang.lang_time_months,
year: lang.lang_time_year,
years: lang.lang_time_years,
wordSeparator: " ",
numbers: []
}
},
inWords: function(distanceMillis) {
if (!this.settings.allowPast && ! this.settings.allowFuture) {
throw 'timeago allowPast and allowFuture settings can not both be set to false.';
inWords: function (distanceMillis) {
if (!this.settings.allowPast && !this.settings.allowFuture) {
throw 'timeago allowPast and allowFuture settings can not both be set to false.';
}
var $l = this.settings.strings;
@@ -116,20 +115,20 @@
return $.trim([prefix, words, suffix].join(separator));
},
parse: function(iso8601) {
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
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) {
datetime: function (elem) {
var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
return $t.parse(iso8601);
},
isTime: function(elem) {
isTime: function (elem) {
// jQuery's `is()` doesn't play well with HTML5 in IE
return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
}
@@ -139,7 +138,7 @@
// init is default when no action is given
// functions are called with context of a single element
var functions = {
init: function() {
init: function () {
functions.dispose.call(this);
var refresh_el = $.proxy(refresh, this);
refresh_el();
@@ -148,7 +147,7 @@
this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis);
}
},
update: function(timestamp) {
update: function (timestamp) {
var date = (timestamp instanceof Date) ? timestamp : $t.parse(timestamp);
$(this).data('timeago', { datetime: date });
if ($t.settings.localeTitle) {
@@ -156,8 +155,8 @@
}
refresh.apply(this);
},
updateFromDOM: function() {
$(this).data('timeago', { datetime: $t.parse( $t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title") ) });
updateFromDOM: function () {
$(this).data('timeago', { datetime: $t.parse($t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title")) });
refresh.apply(this);
},
dispose: function () {
@@ -168,13 +167,13 @@
}
};
$.fn.timeago = function(action, options) {
$.fn.timeago = function (action, options) {
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() {
this.each(function () {
fn.call(this, options);
});
return this;
@@ -184,7 +183,7 @@
var $s = $t.settings;
//check if it's still visible
if ($s.autoDispose && !$.contains(document.documentElement,this)) {
if ($s.autoDispose && !$.contains(document.documentElement, this)) {
//stop if it has been removed
$(this).timeago("dispose");
return this;
@@ -193,11 +192,11 @@
var data = prepareData(this);
if (!isNaN(data.datetime)) {
if ( $s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) {
if ($s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) {
$(this).text(inWords(data.datetime));
} else {
if ($(this).attr('title').length > 0) {
$(this).text($(this).attr('title'));
$(this).text($(this).attr('title'));
}
}
}

View File

@@ -1,237 +1,320 @@
//バージョンチェッカー
function verck(ver) {
console.log("Welcome")
if(localStorage.getItem("ver")!=ver){
localStorage.setItem("ver", ver);
console.log("Thank you for your update");
$(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(verp);
if(lang.language=="ja"){
$("#release-"+verp).show();
}else{
localStorage.setItem("ver", ver);
console.log("%c Welcome😊", "color: red;font-size:200%;")
var date = new Date();
var show = false
if (localStorage.getItem("ver") != ver && localStorage.getItem("winstore")) {
//ちょっと削除とリンク解析の都合上アレ(s)
//対象外のアプデ:storageが20の最初まで"Usamin (18.6.5)"
if (!localStorage.getItem("usamin_18_6_5_flag")) {
localStorage.setItem("usamin_18_6_5_flag", true)
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
for (var i = 0; i < obj.length; i++) {
localStorage.removeItem("card_" + i);
}
}
//ちょっと削除とリンク解析の都合上アレ(e)
show = true
console.log("%c Thank you for your update🎉", "color: red;font-size:200%;");
$(document).ready(function () {
if (localStorage.getItem("winstore")) {
$('#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();
}
});
});
}
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
var platform=remote.process.platform;
if(platform=="win32"){
const options = {
type: 'info',
title: "Select your platform",
message: lang.lang_version_platform,
buttons: [lang.lang_no,lang.lang_yesno]
}
if(!localStorage.getItem("winstore")){
dialog.showMessageBox(options, function(arg) {
if(arg==1){
localStorage.setItem("winstore","winstore")
}else{
localStorage.setItem("winstore","localinstall")
}
});
}
}else if(platform=="linux"){
if(localStorage.getItem("winstore")=="unix"){
localStorage.removeItem("winstore")
if (!show) {
console.log(show)
if (date.getMonth() + 1 >= localStorage.getItem("showSupportMe") || !localStorage.getItem("showSupportMe")) {
if (date.getMonth() == 11) {
var nextmonth = 1
} else {
var nextmonth = date.getMonth() + 2
}
if (lang.language != "ja") {
$("#support-btm-ja").addClass("hide");
$("#support-btm-en").removeClass("hide");
}
localStorage.setItem("showSupportMe", nextmonth)
$("#support-btm").removeClass("hide")
$("#support-btm").animate({
'bottom': '0'
}, {
'duration': 300
});
}
if(!localStorage.getItem("winstore")){
const options = {
type: 'info',
title: "Select your platform",
message: lang.lang_version_platform_linux,
buttons: [lang.lang_no,lang.lang_yesno]
}
dialog.showMessageBox(options, function(arg) {
if(arg==1){
localStorage.setItem("winstore","snapcraft")
}else{
localStorage.setItem("winstore","localinstall")
}
});
}
}else{
localStorage.setItem("winstore","unix")
}
if(localStorage.getItem("winstore")=="snapcraft" || localStorage.getItem("winstore")=="winstore"){
var winstore=true;
}else{
var winstore=false;
}
}
var platform = localStorage.getItem("platform");
console.log("Your platform:" + platform)
if (!localStorage.getItem("winstore")) {
$("#start").css('display', 'flex');
}
if (localStorage.getItem("winstore") == "brewcask" || localStorage.getItem("winstore") == "snapcraft" || localStorage.getItem("winstore") == "winstore") {
var winstore = true;
} else {
var winstore = false;
}
var l = 5;
// 生成する文字列に含める文字セット
var c = "abcdefghijklmnopqrstuvwxyz0123456789";
var cl = c.length;
var r = "";
for(var i=0; i<l; i++){
r += c[Math.floor(Math.random()*cl)];
for (var i = 0; i < l; i++) {
r += c[Math.floor(Math.random() * cl)];
}
var start = "https://thedesk.top/ver.json";
fetch(start, {
method: 'GET'
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(mess) {
console.log(mess);
}).then(function (mess) {
console.table(mess);
if (mess) {
var electron = require("electron");
var remote=electron.remote;
var platform=remote.process.platform;
if(platform=="darwin"){
var newest=mess.desk_mac;
}else{
var newest=mess.desk;
var platform = localStorage.getItem("platform");
if (platform == "darwin") {
var newest = mess.desk_mac;
} else {
var newest = mess.desk;
}
if (newest == ver) {
todo(lang.lang_version_usever.replace("{{ver}}" ,mess.desk));
todo(lang.lang_version_usever.replace("{{ver}}", mess.desk));
//betaかWinstoreならアプデチェックしない
} else if (ver.indexOf("beta")!=-1 || winstore) {
}else{
} else if (ver.indexOf("beta") != -1 || winstore) {
} else {
localStorage.removeItem("instance")
if(localStorage.getItem("new-ver-skip")){
if(localStorage.getItem("next-ver")!=newest){
var ipc = electron.ipcRenderer;
ipc.send('update', "true");
}else{
console.log(lang.lang_version_skipver);
if (localStorage.getItem("new-ver-skip")) {
if (localStorage.getItem("next-ver") != newest) {
postMessage(["sendSinmpleIpc", "update"], "*")
} else {
console.warn(lang.lang_version_skipver);
todo(lang.lang_version_skipver);
}
}else{
var ipc = electron.ipcRenderer;
ipc.send('update', "true");
} else {
postMessage(["sendSinmpleIpc", "update"], "*")
}
}
}
});
if(!localStorage.getItem("last-notice-id")){
localStorage.setItem("last-notice-id",0)
if (!localStorage.getItem("last-notice-id")) {
localStorage.setItem("last-notice-id", 0)
}
console.log(localStorage.getItem("last-notice-id"))
var start = "https://thedesk.top/notice?since_id="+localStorage.getItem("last-notice-id");
console.log(start);
var start = "https://thedesk.top/notice?since_id=" + localStorage.getItem("last-notice-id");
fetch(start, {
method: 'GET'
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(mess) {
console.log(mess.length);
if(mess.length<1){
}).then(function (mess) {
if (mess.length < 1) {
return false;
}else{
var last=localStorage.getItem("last-notice-id")
localStorage.setItem("last-notice-id",mess[0].ID)
for(i=0;i<mess.length;i++){
var obj=mess[i];
if(obj.ID*1<=last){
break;
}else{
var show=true;
if(obj.Toot!=""){
var toot='<button class="btn-flat toast-action" onclick="detEx(\''+obj.Toot+'\',\'main\')">Show</button>';
}else{
var toot="";
}
if(obj.Ver!=""){
if(obj.Ver==ver){
show=true;
}else{
show=false;
}
}
if(obj.Domain!=""){
var multi = localStorage.getItem("multi");
if (multi) {
show=false;
var accts = JSON.parse(multi);
Object.keys(accts).forEach(function(key) {
var acct = accts[key];
if(acct.domain==obj.Domain){
show=true;
} else {
var last = localStorage.getItem("last-notice-id")
localStorage.setItem("last-notice-id", mess[0].ID)
for (i = 0; i < mess.length; i++) {
var obj = mess[i];
if (obj.ID * 1 <= last) {
break;
} else {
if (obj.type == "textv2") {
if (~obj.languages.indexOf(lang.language)) {
var show = true;
if (obj.toot != "") {
var toot = '<button class="btn-flat toast-action" onclick="detEx(\'' + obj.toot + '\',\'main\')">Show</button>';
} else {
var toot = "";
}
});
if (obj.ver != "") {
if (obj.ver == ver) {
show = true;
} else {
show = false;
}
}
if (obj.domain != "") {
var multi = localStorage.getItem("multi");
if (multi) {
show = false;
var accts = JSON.parse(multi);
Object.keys(accts).forEach(function (key) {
var acct = accts[key];
if (acct.domain == obj.domain) {
show = true;
}
});
}
}
if (show) {
M.toast({ html: escapeHTML(obj.text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', displayLength: 86400 })
}
}
}
}
if(show){
Materialize.toast(obj.Text+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400);
}
}
}
}
});
}
var infostreaming = false;
function infowebsocket() {
infows = new WebSocket("wss://thedesk.top/ws/");
infows.onopen = function(mess) {
console.log(tlid + ":Connect Streaming Info:");
console.log(mess);
infows.onopen = function (mess) {
console.log([tlid, ":Connect Streaming Info:", mess]);
infostreaming = true;
}
infows.onmessage = function(mess) {
console.log(":Receive Streaming:");
console.log(JSON.parse(mess.data));
var obj=JSON.parse(mess.data);
if(obj.type!="counter"){
if(obj.id*1<=localStorage.getItem("last-notice-id")){
}else{
localStorage.setItem("last-notice-id",obj.id)
var show=true;
if(obj.toot!=""){
var toot='<button class="btn-flat toast-action" onclick="detEx(\''+obj.toot+'\',\'main\')">Show</button>';
}else{
var toot="";
}
if(obj.ver!=""){
if(obj.ver==ver){
show=true;
}else{
show=false;
}
}
if(obj.domain!=""){
var multi = localStorage.getItem("multi");
if (multi) {
show=false;
var accts = JSON.parse(multi);
Object.keys(accts).forEach(function(key) {
var acct = accts[key];
if(acct.domain==obj.domain){
show=true;
infows.onmessage = function (mess) {
console.log([tlid, ":Receive Streaming:", JSON.parse(mess.data)]);
var obj = JSON.parse(mess.data);
if (obj.type != "counter") {
if (obj.type == "textv2") {
if (~obj.languages.indexOf(lang.language)) {
localStorage.setItem("last-notice-id", obj.id)
var show = true;
if (obj.toot != "") {
var toot = '<button class="btn-flat toast-action" onclick="detEx(\'' + obj.toot + '\',\'main\')">Show</button>';
} else {
var toot = "";
}
if (obj.ver != "") {
if (obj.ver == ver) {
show = true;
} else {
show = false;
}
});
}
if (obj.domain != "") {
var multi = localStorage.getItem("multi");
if (multi) {
show = false;
var accts = JSON.parse(multi);
Object.keys(accts).forEach(function (key) {
var acct = accts[key];
if (acct.domain == obj.domain) {
show = true;
}
});
}
}
if (show) {
console.log(obj.text)
console.log(escapeHTML(obj.text))
M.toast({ html: escapeHTML(obj.text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', displayLength: 86400 })
}
}
}
if(show){
Materialize.toast(obj.text+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400);
}
} else {
$("#persons").text(obj.text);
}
}else{
$("#persons").text(obj.text);
}
}
infows.onerror = function(error) {
infows.onerror = function (error) {
infostreaming = false;
console.error("Error closing:info");
console.error(error);
return false;
};
infows.onclose = function() {
infows.onclose = function () {
infostreaming = false;
console.error("Closing:info");
};
}
setInterval(function () {
if (!infostreaming) {
console.log("try to connect to base-streaming")
infowebsocket();
}
}, 10000);
function openRN() {
$('#releasenote').modal('open');
if (lang.language == "ja") {
verp = ver.replace('(', '');
verp = verp.replace('.', '-');
verp = verp.replace('.', '-');
verp = verp.replace('[', '-');
verp = verp.replace(']', '');
verp = verp.replace(')', '');
verp = verp.replace(' ', '_');
$("#release-" + verp).show();
} else {
$("#release-en").show();
}
}
function closeSupport() {
$("#support-btm").animate({
'bottom': '-300px'
}, {
'duration': 300,
'complete': function () {
$("#support-btm").addClass("hide")
}
});
}
function storeDialog(platform, ver) {
if (platform == "win32") {
var mes = lang.lang_version_platform;
} else if (platform == "linux") {
var mes = lang.lang_version_platform_linux;
} else if (platform == "darwin") {
var mes = lang.lang_version_platform_mac;
}
Swal.fire({
title: "Select your platform",
text: mes,
type: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#3085d6',
confirmButtonText: lang.lang_no,
cancelButtonText: lang.lang_yesno
}).then((result) => {
//逆にしてる
if (!result.value) {
localStorage.setItem("winstore", "winstore")
} else {
localStorage.setItem("winstore", "localinstall")
}
localStorage.setItem("ver", ver);
show = true
console.log("%c Thank you for your update🎉", "color: red;font-size:200%;");
$(document).ready(function () {
$('#releasenote').modal('open');
verp = ver.replace('(', '');
verp = verp.replace('.', '-');
verp = verp.replace('.', '-');
verp = verp.replace('[', '-');
verp = verp.replace(']', '');
verp = verp.replace(')', '');
verp = verp.replace(' ', '_');
console.log("%c " + verp, "color: red;font-size:200%;");
if (lang.language == "ja") {
$("#release-" + verp).show();
} else {
$("#release-en").show();
}
});
})
}
function closeStart() {
$("#start").css('display', 'none');
var platform = localStorage.getItem("platform");
var ver = localStorage.getItem("ver");
storeDialog(platform, ver)
}

View File

@@ -1,87 +1,82 @@
var defaultemojiList=["activity","flag","food","nature","object","people","place","symbol"];
var defaultemoji={
activity:activity,
flag:flag,
food:food,
nature:nature,
object:object,
people:people,
place:place,
symbol:symbol
var defaultemojiList = ["activity", "flag", "food", "nature", "object", "people", "place", "symbol"];
var defaultemoji = {
activity: activity,
flag: flag,
food: food,
nature: nature,
object: object,
people: people,
place: place,
symbol: symbol
};
if(lang=="ja"){
var defaultemojiname={
activity:"活動",
flag:"国旗",
food:"食べ物",
nature:"自然",
object:"もの",
people:"ひと",
place:"場所",
symbol:"記号"
if (lang == "ja") {
var defaultemojiname = {
activity: "活動",
flag: "国旗",
food: "食べ物",
nature: "自然",
object: "もの",
people: "ひと",
place: "場所",
symbol: "記号"
};
}else{
var defaultemojiname={
activity:"Activities",
flag:"Flags",
food:"Foods",
nature:"Nature",
object:"Tools",
people:"People",
place:"Places",
symbol:"Symbols"
} else {
var defaultemojiname = {
activity: "Activities",
flag: "Flags",
food: "Foods",
nature: "Nature",
object: "Tools",
people: "People",
place: "Places",
symbol: "Symbols"
};
}
function defaultEmoji(target){
var json=defaultemoji[target];
var emojis="";
Object.keys(json).forEach(function(key) {
function defaultEmoji(target) {
var json = defaultemoji[target];
var emojis = "";
Object.keys(json).forEach(function (key) {
var emoji = json[key];
emojis = emojis + '<a onclick="defEmoji(\''+emoji["shortcode"]+'\')" class="pointer"><span style="width: 20px; height: 20px; display: inline-block; background-image: url(\'../../img/sheet.png\'); background-size: 4900%; background-position: '+emoji["css"]+';"></span></a>';
emojis = emojis + '<a onclick="defEmoji(\'' + emoji["shortcode"] + '\')" class="pointer"><span style="width: 20px; height: 20px; display: inline-block; background-image: url(\'../../img/sheet.png\'); background-size: 4900%; background-position: ' + emoji["css"] + ';"></span></a>';
});
$("#emoji-list").html(emojis);
$("#now-emoji").text(lang.lang_defaultemojis_text.replace("{{cat}}" ,defaultemojiname[target]));
console.log(target);
$("#now-emoji").text(lang.lang_defaultemojis_text.replace("{{cat}}", defaultemojiname[target]));
$(".emoji-control").addClass("hide");
}
function customEmoji(){
function customEmoji() {
$("#emoji-suggest").val("");
$(".emoji-control").removeClass("hide");
emojiList('home')
}
function defEmoji(target){
var emojiraw = newpack.filter(function(item, index){
if (item.short_name == target) return true;
function defEmoji(target) {
var selin = $("#textarea").prop('selectionStart');
if (!selin) {
selin = 0;
}
var emojiraw = newpack.filter(function (item, index) {
if (item.short_name == target) return true;
});
emoji=twemoji.convert.fromCodePoint(emojiraw[0].unified);
var hex = emojiraw[0].unified.split("-");
if (hex.length === 2) {
emoji = twemoji.convert.fromCodePoint(hex[0]) + twemoji.convert.fromCodePoint(hex[1]);
} else {
emoji = twemoji.convert.fromCodePoint(hex[0]);
}
var now = $("#textarea").val();
var selin = localStorage.getItem("cursor");
var now = $("#textarea").val();
if(selin>0){
var before = now.substr(0, selin);
var after = now.substr(selin, now.length);
newt = before+ emoji + after;
}else{
newt = emoji+now;
}
console.log(emoji);
$("#textarea").val(newt);
$("#textarea").focus();
var selin = $("#textarea").prop('selectionStart');
if(!selin){
selin=0;
}
localStorage.setItem("cursor", selin);
var before = now.substr(0, selin);
var after = now.substr(selin, now.length);
newt = before + emoji + after;
$("#textarea").val(newt);
$("#textarea").focus();
}
function faicon(){
var json=faicons;
console.log(json);
var emojis="";
Object.keys(json).forEach(function(key) {
function faicon() {
var json = faicons;
var emojis = "";
Object.keys(json).forEach(function (key) {
var emoji = json[key];
var eje = emoji.replace( /fa-/g , "" ) ;
emojis = emojis + '<a onclick="emojiInsert(\'[faicon]'+eje+'[/faicon]\')" class="pointer white-text" style="font-size:24px"><i class="fa '+emoji+'"></i></a>';
var eje = emoji.replace(/fa-/g, "");
emojis = emojis + '<a onclick="emojiInsert(\'[faicon]' + eje + '[/faicon]\')" class="pointer white-text" style="font-size:24px"><i class="fa ' + emoji + '"></i></a>';
});
$("#emoji-list").html(emojis);
$("#now-emoji").text("faicon");

View File

@@ -0,0 +1,3 @@
const JSON5 = require('json5')
const fs = require("fs")
fs.writeFileSync("main.json", JSON.stringify(JSON5.parse(fs.readFileSync("lang." + process.argv[2] + ".js", 'utf8').replace("var lang = ", ""))))

247
app/js/lang/lang.bg.js Normal file
View File

@@ -0,0 +1,247 @@
var lang={
"language": "en",
"lang_toot": "Раздумай",
"lang_there": "Да",
"lang_nothing": "Няма",
"lang_yesno": "Да",
"lang_no": "Не",
"lang_progress": "Изчакайте...",
"lang_edit": "Редактиране",
"lang_del": "Изтрий",
"lang_add": "Добави",
"lang_fatalerroroccured": "Възникнаха някои грешки, моля рестартирайте Desk.",
"lang_speech": "Google US English",
"lang_lang": "Език",
"lang_langlocale": "Английски",
"lang_back": "Назад",
"lang_set": "Задай",
"lang_langadd": "Преведете TheDesk на други езици или проверете TheDesk на <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\"> GitHub </a>. TheDesk се нуждае от вашата помощ.",
"lang_time_prefixAgo": null,
"lang_time_prefixFromNow": null,
"lang_time_suffixAgo": null,
"lang_time_suffixFromNow": null,
"lang_time_inPast": null,
"lang_time_seconds": "%d s",
"lang_time_minute": "1 m",
"lang_time_minutes": "%d m",
"lang_time_hour": "1 h",
"lang_time_hours": "%d h",
"lang_time_day": "1 d",
"lang_time_days": "%d d",
"lang_time_month": "1 month",
"lang_time_months": "%d months",
"lang_time_year": "y",
"lang_time_years": "%d y",
"lang_version_usever": "Не е намерена актуализация({{ver}})",
"lang_version_skipver": "Актуализацията бе игнорирана.",
"lang_version_platform": "Искате ли автоматични актуализации? (За потребителите инсталирали от Microsoft Store, изберете „Не“)",
"lang_version_platform_linux": "Искате ли автоматични актуализации? (За потребителите инсталирали от Snapcraft, изберете „Не“)",
"lang_version_platform_mac": "Искате ли автоматични актуализации? (За потребителите на Homebrew Cask изберете „Не“)",
"lang_login_noauth": "Показване на TL на нерегистрирани профили",
"lang_manager_info": "За тази инстанция",
"lang_manager_refresh": "Обнови",
"lang_manager_delete": "Излизане",
"lang_manager_color": "Цвят на профила",
"lang_manager_confirm": "е на път да излезе. Продължаване?",
"lang_manager_mainAcct": "Готово: изберете основния профил",
"lang_manager_def": "По подразбиране",
"lang_manager_none": "Няма",
"lang_manager_godev": "Отворете DevCenter на Misskey. Ние показваме официални документи, на които се позоваваме.",
"lang_manager_logout": "Излизане",
"lang_bbmd_misskey": "TheDesk разглежда \"@\" като отговор, но поставя друг параметър. Ако не е включено в Mastodon това означава, че е в Home на Misskey.",
"lang_emoji_get": "Вземи емотикони",
"lang_emoji_custom": "Персонализирани емотикони",
"lang_defaultemojis_text": "Още емотикони {{cat}}",
"lang_postimg_previewdis": "не може да се визуализира",
"lang_postimg_aftupload": "Не можете да променяте профилите след качването.",
"lang_postimg_delete": "Изтрийте това изображение.",
"lang_post_tagTL": "Тази раздумка не съдържа маркер по подразбиране. Тази раздумка няма да се показва в локалния TL. Продължавате?",
"lang_post_tagVis": "Тази раздумка (не е \"публична\") не е показана с този етикет в ТЛ.",
"lang_post_cwtitle": "Авто CW Сигнал",
"lang_post_cwtxt": "На път сте да публикувате по-дълга раздумка, отколкото е зададена.\nТекст на предупреждението:",
"lang_post_btn1": "Отказ (няма да се публикува)",
"lang_post_btn2": "Текстът да се скрива автоматично",
"lang_post_btn3": "Продължете към публикуването",
"lang_status_favWarn": "Ще отнеме минута раздумката отдалечено да стане любима.",
"lang_status_btWarn": "Ще отнеме минута раздумката отдалечено да бъде подсилена.",
"lang_status_follow": "Следване",
"lang_status_unfollow": "Спри следенето",
"lang_status_block": "Блокирай",
"lang_status_unblock": "Отблокирай",
"lang_status_mute": "Без звук",
"lang_status_unmute": "Със звук",
"lang_status_redraftTitle": "Изтрий & върни",
"lang_status_redraft": "Продължете да изтривате & преработвате? Ще изгубите статуса на тази раздумка. В тази функция може да се съдържат някои грешки. Снимките от тази раздумка ще бъдат изтрити на по-стари от Mastodon 2.4.1.",
"lang_status_emphas": "'s toots are emphasized. Please reload after this action.",
"lang_status_unemphas": "'s toots are not emphasized. Please reload after this action.",
"lang_status_unendorse": "Not feature on profile",
"lang_status_endorse": "Feature on profile",
"lang_status_followers": "Followers",
"lang_status_active": "Last status",
"lang_suggest_nodata": "Please get emojis list in order to show suggestion.",
"lang_usetxtbox_reply": "Reply Mode. Ctrl+Shift+C to clear.",
"lang_cards_check": " check",
"lang_cards_pip": "PiP mode",
"lang_details_nodata": "No data",
"lang_details_filtered": "Filtered toot",
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",
"lang_list_show": "Show",
"lang_list_users": "Users list",
"lang_list_nouser": "No users in this list.",
"lang_list_add": "Add to the list",
"lang_list_add_misskey": "(perhaps this user has been listed)",
"lang_list_remove": "Remove from the list",
"lang_notf_new": " new notifications",
"lang_speech_refresh": "Save value about TTS config",
"lang_src_ts": "chronological order",
"lang_src_people": " people toot",
"lang_tags_always": "Always toots with ",
"lang_tags_realtime": "Tag-stream toot",
"lang_tags_tagunpin": "Unpin {{tag}}",
"lang_tags_unrealtime": "Disable TsT",
"lang_tags_tagwarn": "Автоматично попълване на {{tag}}, ако раздумката няма {{tag}}",
"lang_tl_media": "Media",
"lang_tl_reconnect": "Reconnect to streaming API",
"lang_img_DLDone": "Downloaded:",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account",
"lang_layout_delthis": "Remove this column",
"lang_layout_setthis": "Preferences of this column",
"lang_layout_mediafil": "Media filtering",
"lang_layout_linkana": "Auto Link Analyzer",
"lang_layout_linkanades": "Auto link analyzer",
"lang_layout_tts": "Text to speech ",
"lang_layout_reconnect": "Reconnect to streaming API",
"lang_layout_headercolor": "Header color of this column",
"lang_layout_nodata": "[No data]<br>F5/⌘+R to reload",
"lang_layout_dm": "Direct Message",
"lang_layout_webviewmode": "Prefer WebView",
"lang_layout_unread": "Unread",
"lang_excluded": "Excluded type of notification",
"lang_layout_excludingbt": "Показване в BT режим (ИЗКЛ./Изключване BT/ Само в BT)",
"lang_layout_leftFold": "Стъпка наляво",
"lang_layout_leftUnfold": "Док отдясно",
"lang_layout_deleteColumn": "Премахване на тази колона",
"lang_layout_deleteColumnDesc": "Премахване на тази колона",
"lang_sort_gothis": "Отидете в тази колона",
"lang_sort_remthis": "Премахване на тази колона",
"lang_spotify_img": "Attach an album artwork",
"lang_spotify_imgno": "Not attach an album artwork",
"lang_spotify_acct": "Connect TheDesk to Spotify",
"lang_spotify_np": "Готово:шаблон на NowPlaying",
"lang_setting_npprovide": "NowPlaying provider:{{set}}",
"lang_hisdata_frcreq": "Required Mastodon 2.4.3 and above",
"lang_hisdata_frcwarn": "Unfollow accounts will be shown.",
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you",
"lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_parse_mentioned": " replied to you",
"lang_parse_faved": " favourited your toot",
"lang_parse_bted": " boosted your toot",
"lang_parse_btedsimple": " boosted",
"lang_parse_polled": "'s poll",
"lang_parse_notftime": "Actioned at",
"lang_parse_cwshow": "Show",
"lang_parse_fulltext": "Full size text:",
"lang_parse_autofold": "Auto folded",
"lang_parse_more": "More",
"lang_parse_url": "URL Analyzer",
"lang_parse_tagTL": "Timeline of {{tag}}",
"lang_parse_tagtoot": "Toot with {{tag}}",
"lang_parse_tagpin": "Pin {{tag}}",
"lang_parse_public": "Public",
"lang_parse_unlisted": "Unlisted",
"lang_parse_private": "Private",
"lang_parse_direct": "Direct",
"lang_parse_clickcopy": "Click to copy text of this toot",
"lang_parse_clickcopyurl": "Click to copy URL of this toot",
"lang_parse_trans": "Translate to Japanese",
"lang_parse_replyto": "Reply to this toot",
"lang_parse_bt": "Boost this toot",
"lang_parse_fav": "Favourite this toot",
"lang_parse_quote": "Quote this toot",
"lang_parse_del": "Изтрийте тази раздумка",
"lang_parse_pin": "Pin this toot",
"lang_parse_det": "Details via your main account.",
"lang_parse_redraft": "Изтрий & върни",
"lang_parse_followed": "Followed you",
"lang_parse_clientop": "Operation of this client",
"lang_parse_clienttxt": " will be",
"lang_parse_clientno": "done nothing",
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "NSFW media",
"lang_parse_notffilter": "Show this user's notifications",
"lang_misskeyparse_renote": "Repost",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaction",
"lang_misskeyparse_tagnostr": "No streaming API on Tag TLs",
"lang_misskeyparse_listnostr": "No streaming API on List TLs",
"lang_misskeyparse_home": "Home",
"lang_misskeyparse_followers": "Follower",
"lang_misskeyparse_specified": "Specified User",
"lang_misskeyparse_qt": "Misskey renote(quote) mode:Ctrl+Shift+Enter to clear",
"lang_misskeyparse_renoted": " renoted your following post.",
"lang_misskeyparse_quoted": " quoted your following post.",
"lang_misskeyparse_reacted": " reacted your following post.",
"lang_setting_time": "Time format:{{set}}",
"lang_setting_theme": "Theme:{{set}}",
"lang_setting_nsfw": "NSFW:{{set}}",
"lang_setting_cw": "CW:{{set}}",
"lang_setting_cwtext": "Default CW text:{{set}}",
"lang_setting_cws": "Always CW on:{{set}}",
"lang_setting_rp": "Reply counter:{{set}}",
"lang_setting_vis": "Default visibility:{{set}}",
"lang_setting_popup": "Popup notification:{{set}}",
"lang_setting_off": "Off",
"lang_setting_s": "s",
"lang_setting_box": "Default toot box action:{{set}}",
"lang_setting_gif": "GIF:{{set}}",
"lang_setting_selt": "Автоматично сгъване:{{set1}} линии по-нагоре,{{set2}} букви по-нагоре",
"lang_setting_autocw": "Автоматично CW:{{set1}} линии по-нагоре, {{set2}} букви по-нагоре",
"lang_setting_width": "Minimam width:{{set}}",
"lang_setting_fixwidth": "TweetDeck fixed width:{{set}}px",
"lang_setting_img": "After posting an image:{{set}}",
"lang_setting_font": "Fonts:{{set}}",
"lang_setting_default": "default font",
"lang_setting_size": "Font size:{{set}}px",
"lang_setting_imgheight": "Image height:{{set}}px",
"lang_setting_ticker": "#InstanceTicker:{{set}}px",
"lang_setting_animation": "Animation: {{set}}",
"lang_setting_tag": "Tag TL:{{set}}",
"lang_setting_boxConfirm": "Post box:{{set}}",
"lang_setting_ul": "Native locale:{{set}}",
"lang_setting_notf": "Native notification:{{set}}",
"lang_setting_quote": "Quote format:{{set}}",
"lang_setting_via": "Via:{{set}}",
"lang_setting_mov": "Action buttons hiding:{{set}}",
"lang_setting_setasread": "Notification markers:{{set}}",
"lang_setting_main": "Default account:{{set}}",
"lang_setting_sec": "Secondary toot button:{{set}}",
"lang_setting_ksref": "Keyboard shortcuts are refreshed.",
"lang_setting_nomuting": "No client is muted.",
"lang_setting_notftest": " Notification test ",
"lang_setting_notftestprof": "Your icon is shown.",
"lang_setting_exportwarn": "Only important data will be exported. You must keep this data secure.",
"lang_setting_importwarn": "Всички данни ще бъдат изтрити."
}

247
app/js/lang/lang.cs.js Normal file
View File

@@ -0,0 +1,247 @@
var lang={
"language": "cs",
"lang_toot": "Toot",
"lang_there": "Ano",
"lang_nothing": "Nic",
"lang_yesno": "Ano",
"lang_no": "Ne",
"lang_progress": "Čekejte...",
"lang_edit": "Upravit",
"lang_del": "Smazat",
"lang_add": "Přidat",
"lang_fatalerroroccured": "Vyskytly se nějaké chyby, prosím restartujte TheDesk.",
"lang_speech": "Google Čeština",
"lang_lang": "Jazyk",
"lang_langlocale": "Čeština",
"lang_back": "Zpět",
"lang_set": "Nastavit",
"lang_langadd": "Přeložte TheDesk do jiných jazyků nebo opravte existující překlad na <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHubu</a> nebo <a href=\"https://translate.thedesk.top/\" target=\"_blank\">Crowdinu</a>. TheDesk potřebuje vaši pomoc.",
"lang_time_prefixAgo": null,
"lang_time_prefixFromNow": null,
"lang_time_suffixAgo": null,
"lang_time_suffixFromNow": null,
"lang_time_inPast": null,
"lang_time_seconds": "%d s",
"lang_time_minute": "1 m",
"lang_time_minutes": "%d m",
"lang_time_hour": "1 h",
"lang_time_hours": "%d h",
"lang_time_day": "1 d",
"lang_time_days": "%d d",
"lang_time_month": "1 month",
"lang_time_months": "%d months",
"lang_time_year": "y",
"lang_time_years": "%d y",
"lang_version_usever": "Nebyla nalezena žádná aktualizace ({{ver}})",
"lang_version_skipver": "Aktualizace byla ignorována.",
"lang_version_platform": "Do you want auto-updates?(users installed on Microsoft Store select 'No')",
"lang_version_platform_linux": "Do you want auto-updates?(users installed on Snapcraft select 'No')",
"lang_version_platform_mac": "Do you want auto-updates?(Homebrew Cask users select 'No')",
"lang_login_noauth": "Zobrazit časové osy nepřihlášených účtů",
"lang_manager_info": "O tomto serveru",
"lang_manager_refresh": "Obnovit",
"lang_manager_delete": "Odhlásit",
"lang_manager_color": "Barva účtu",
"lang_manager_confirm": "se chce odhlásit. Pokračovat?",
"lang_manager_mainAcct": "Hotovo: vyberte hlavní účet",
"lang_manager_def": "Výchozí",
"lang_manager_none": "Žádný",
"lang_manager_godev": "Otevřené vývojářské centrum softwaru Misskey. Zobrazujeme také oficiální dokumentaci.",
"lang_manager_logout": "Logout",
"lang_bbmd_misskey": "TheDesk považuje „@“ za odpověď, ale vkládá ho do jiných parametrů. „Neuvedeno“ na Mastodonu znamená „Domů“ na Misskey.",
"lang_emoji_get": "Získat emoji",
"lang_emoji_custom": "Vlastní emoji",
"lang_defaultemojis_text": "Emojis about {{cat}}",
"lang_postimg_previewdis": "nelze vytvořit náhled",
"lang_postimg_aftupload": "Po nahrání nemůžete změnit účty.",
"lang_postimg_delete": "Delete this image.",
"lang_post_tagTL": "Tento toot neobsahuje výchozí hashtag. Tento toot nebude zobrazen na výchozí časové ose. Pokračovat?",
"lang_post_tagVis": "Tento toot (ne „veřejný“ toot) není zobrazen na časové ose tohoto hashtagu.",
"lang_post_cwtitle": "Automatické varování o obsahu",
"lang_post_cwtxt": "Chcete napsat delší toot, než jste nastavil/a.\nText varování:",
"lang_post_btn1": "Zrušit (příspěvek nebude publikován)",
"lang_post_btn2": "Skrýt text automaticky",
"lang_post_btn3": "Pokračovat k přispívání",
"lang_status_favWarn": "Oblíbení vzdáleného tootu bude chvíli trvat.",
"lang_status_btWarn": "Boostnutí vzdáleného tootu bude chvíli trvat.",
"lang_status_follow": "Sledovat",
"lang_status_unfollow": "Přestat sledovat",
"lang_status_block": "Blokovat",
"lang_status_unblock": "Odblokovat",
"lang_status_mute": "Ignorovat",
"lang_status_unmute": "Přestat ignorovat",
"lang_status_redraftTitle": "Delete & redraft",
"lang_status_redraft": "Chcete pokračovat k vymazání a přepsání? Ztratíte odpovědi na tento toot. Tato funkce může obashovat několik chyb. Obrázky v tomto tootu budou na verzi Mastodonu starší než 2.4.1 smazány.",
"lang_status_emphas": ": tooty tohoto uživatele jsou zdůrazněny. Po této akci prosím obnovte stránku.",
"lang_status_unemphas": ": tooty tohoto uživatele nejsou zdůrazněny. Po této akci prosím obnovte stránku.",
"lang_status_unendorse": "Nepředstavit na profilu",
"lang_status_endorse": "Představit na profilu",
"lang_status_followers": "Followers",
"lang_status_active": "Last status",
"lang_suggest_nodata": "Pro zobrazení návrhu prosím získejte seznam emoji.",
"lang_usetxtbox_reply": "Režim odpovězení. Pro vymazání stiskněte Ctrl+Shift+C.",
"lang_cards_check": " kontrolovat",
"lang_cards_pip": "Režim PiP",
"lang_details_nodata": "Žádná data",
"lang_details_filtered": "Filtrovaný toot",
"lang_details_embed": "HTML pro vložení je zkopírován.",
"lang_details_url": "URL adresa tohoto tootu je zkopírována.",
"lang_details_txt": "Obsah tohoto tootu je zkopírován.",
"lang_filter_nodata": "Žádná data",
"lang_filter_errordegree": "Prosím zkontrolujte kontext",
"lang_list_nodata": "Žádná data",
"lang_list_show": "Zobrazit",
"lang_list_users": "Seznam uživatelů",
"lang_list_nouser": "Žádní uživatelé na tomto seznamu.",
"lang_list_add": "Přidat na seznam",
"lang_list_add_misskey": "(perhaps this user has been listed)",
"lang_list_remove": "Odstranit ze seznamu",
"lang_notf_new": " nových oznámení",
"lang_speech_refresh": "Uložit hodnotu nastavení TTS",
"lang_src_ts": "chronologické pořadí",
"lang_src_people": " lidí tootují",
"lang_tags_always": "Vždy tootnout s ",
"lang_tags_realtime": "Tag-stream toot",
"lang_tags_tagunpin": "Odepnout {{tag}}",
"lang_tags_unrealtime": "Disable TsT",
"lang_tags_tagwarn": "Auto complete {{tag}}, if toot without {{tag}}",
"lang_tl_media": "Média",
"lang_tl_reconnect": "Reconnect to streaming API",
"lang_img_DLDone": "Downloaded:",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} tohoto účtu",
"lang_layout_delthis": "Odstranit tento sloupec",
"lang_layout_setthis": "Nastavení tohoto sloupce",
"lang_layout_mediafil": "Filtrování médií",
"lang_layout_linkana": "Automatický analyzátor odkazů",
"lang_layout_linkanades": "Automatický analyzátor odkazů",
"lang_layout_tts": "Převod textu na řeč ",
"lang_layout_reconnect": "Reconnect to streaming API",
"lang_layout_headercolor": "Header color of this column",
"lang_layout_nodata": "[Žádná data]<br>Obnovte stránku klávesami F5/⌘+R",
"lang_layout_dm": "Přímá zpráva",
"lang_layout_webviewmode": "Preferovat WebView",
"lang_excluded": "Excluded type of notification",
"lang_layout_excludingbt": "Show BT mode(OFF/Exclude BT/Only BT)",
"lang_layout_leftFold": "Stack to the left",
"lang_layout_leftUnfold": "Dock on the right",
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
"lang_spotify_imgno": "Not attach an album artwork",
"lang_spotify_acct": "Spojit TheDesk se Spotify",
"lang_spotify_np": "Hotovo: šablona NowPlaying",
"lang_setting_npprovide": "NowPlaying provider:{{set}}",
"lang_hisdata_frcreq": "Vyžaduje Mastodon 2.4.3 nebo vyšší verzi",
"lang_hisdata_frcwarn": "Budou zobrazeny již nesledované účty.",
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_movetxt": "Tento účet byl přesunut",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[robot]",
"lang_showontl_followed": "Sledují vás",
"lang_showontl_notf": "Oznámení ",
"lang_showontl_domain": "Doména ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_parse_mentioned": " vám odpověděl/a",
"lang_parse_faved": " si oblíbil/a váš toot",
"lang_parse_bted": " boostnul/a váš toot",
"lang_parse_btedsimple": " boostnul/a",
"lang_parse_polled": "'s poll",
"lang_parse_notftime": "Provedeno",
"lang_parse_cwshow": "Zobrazit",
"lang_parse_fulltext": "Celý text:",
"lang_parse_autofold": "Auto folded",
"lang_parse_more": "Více",
"lang_parse_url": "Analyzátor URL",
"lang_parse_tagTL": "Časová osa {{tag}}",
"lang_parse_tagtoot": "Tootnout s hashtagem {{tag}}",
"lang_parse_tagpin": "Připnout {{tag}}",
"lang_parse_public": "Veřejný",
"lang_parse_unlisted": "Neuvedený",
"lang_parse_private": "Soukromý",
"lang_parse_direct": "Přímý",
"lang_parse_clickcopy": "Klikněte pro zkopírování textu tohoto tootu",
"lang_parse_clickcopyurl": "Klikněte pro zkopírování URL adresy tohoto tootu",
"lang_parse_trans": "Přeložit do japonštiny",
"lang_parse_replyto": "Odpovědět na tento toot",
"lang_parse_bt": "Boostnout tento toot",
"lang_parse_fav": "Oblíbit si tento toot",
"lang_parse_quote": "Citovat tento toot",
"lang_parse_del": "Smazat tento toot",
"lang_parse_pin": "Připnout tento toot",
"lang_parse_det": "Details via your main account.",
"lang_parse_redraft": "Vymazat a přepsat",
"lang_parse_followed": "vás nyní sleduje",
"lang_parse_clientop": "Operace tohoto klienta",
"lang_parse_clienttxt": " bude",
"lang_parse_clientno": "nic nedělat",
"lang_parse_clientemp": "zdůrazněna (nebo nezdůrazněna)",
"lang_parse_clientmute": "ztlumena",
"lang_parse_mute": " bude ztlumena. To můžete odstranit v nastavení.",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "NSFW media",
"lang_parse_notffilter": "Show this user's notifications",
"lang_misskeyparse_renote": "Znovusdílení",
"lang_misskeyparse_renoteqt": "Renotování",
"lang_misskeyparse_reaction": "Reakce",
"lang_misskeyparse_tagnostr": "Žádné streamovací API na časových osách hashtagů",
"lang_misskeyparse_listnostr": "Žádné streamovací API na časových osách seznamů",
"lang_misskeyparse_home": "Domů",
"lang_misskeyparse_followers": "Sledující",
"lang_misskeyparse_specified": "Určený uživatel",
"lang_misskeyparse_qt": "Režim renotování (citace) Misskey: pro vymazání stiskněte Ctrl+Shift+Enter",
"lang_misskeyparse_renoted": " renotoval/a váš následující příspěvek.",
"lang_misskeyparse_quoted": " citoval/a váš následující příspěvek.",
"lang_misskeyparse_reacted": " reagoval/a na váš následující příspěvek.",
"lang_setting_time": "Časový formát: {{set}}",
"lang_setting_theme": "Motiv: {{set}}",
"lang_setting_nsfw": "Citlivý obsah: {{set}}",
"lang_setting_cw": "Varování: {{set}}",
"lang_setting_cwtext": "Výchozí text varování: {{set}}",
"lang_setting_cws": "Vždy zapnout varování na: {{set}}",
"lang_setting_rp": "Počitadlo odpovědí: {{set}}",
"lang_setting_vis": "Výchozí viditelnost: {{set}}",
"lang_setting_popup": "Popupové oznámení: {{set}}",
"lang_setting_off": "Vyl",
"lang_setting_s": "s",
"lang_setting_box": "Výchozí akce tootového pole: {{set}}",
"lang_setting_gif": "GIF: {{set}}",
"lang_setting_selt": "Auto fold:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_autocw": "Auto CW:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_width": "Minimam width:{{set}}",
"lang_setting_fixwidth": "TweetDeck fixed width:{{set}}px",
"lang_setting_img": "After posting an image:{{set}}",
"lang_setting_font": "Písma: {{set}}",
"lang_setting_default": "výchozí písmo",
"lang_setting_size": "Velikost písma: {{set}} px",
"lang_setting_imgheight": "Výška obrázků: {{set}} px",
"lang_setting_ticker": "#InstanceTicker: {{set}} px",
"lang_setting_animation": "Animation: {{set}}",
"lang_setting_tag": "Časová osa hashtagu: {{set}}",
"lang_setting_boxConfirm": "Post box:{{set}}",
"lang_setting_ul": "Native locale:{{set}}",
"lang_setting_notf": "Native notification:{{set}}",
"lang_setting_quote": "Formát citace: {{set}}",
"lang_setting_via": "Přes: {{set}}",
"lang_setting_mov": "Action buttons hiding:{{set}}",
"lang_setting_setasread": "Notification markers:{{set}}",
"lang_setting_main": "Default account:{{set}}",
"lang_setting_sec": "Secondary toot button:{{set}}",
"lang_setting_ksref": "Keyboard shortcuts are refreshed.",
"lang_setting_nomuting": "Žádný klient není ztlumen.",
"lang_setting_notftest": " Test oznámení ",
"lang_setting_notftestprof": "Vaše ikona je zobrazena.",
"lang_setting_exportwarn": "Budou exportována pouze důležitá data. Tato data musíte udržet v bezpečí.",
"lang_setting_importwarn": "Všechna data budou smazána."
}

247
app/js/lang/lang.de.js Normal file
View File

@@ -0,0 +1,247 @@
var lang={
"language": "en",
"lang_toot": "Tröt",
"lang_there": "Ja",
"lang_nothing": "Ohne",
"lang_yesno": "Ja",
"lang_no": "Nein",
"lang_progress": "Warten...",
"lang_edit": "Bearbeiten",
"lang_del": "Löschen",
"lang_add": "Hinzufügen",
"lang_fatalerroroccured": "Ein Fehler ist aufgetreten, bitte starten Sie TheDesk neu.",
"lang_speech": "Google US Englisch",
"lang_lang": "Sprache",
"lang_langlocale": "Englisch",
"lang_back": "Zurück",
"lang_set": "Setzen",
"lang_langadd": "Übersetzen oder korrigieren Sie TheDesk in andere Sprachen auf <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>. TheDesk benötigt Ihre Hilfe.",
"lang_time_prefixAgo": null,
"lang_time_prefixFromNow": null,
"lang_time_suffixAgo": null,
"lang_time_suffixFromNow": null,
"lang_time_inPast": null,
"lang_time_seconds": "%d s",
"lang_time_minute": "1 m",
"lang_time_minutes": "%d m",
"lang_time_hour": "1 h",
"lang_time_hours": "%d h",
"lang_time_day": "1 d",
"lang_time_days": "%d d",
"lang_time_month": "1 month",
"lang_time_months": "%d months",
"lang_time_year": "y",
"lang_time_years": "%d y",
"lang_version_usever": "Keine Aktualisierung gefunden({{ver}})",
"lang_version_skipver": "Update wurde ignoriert.",
"lang_version_platform": "Möchten Sie automatische Updates?(Benutzer im Microsoft Store wählen 'Nein')",
"lang_version_platform_linux": "Möchten Sie automatische Updates?(Benutzer auf Snapcraft wählen 'Nein')",
"lang_version_platform_mac": "Möchten Sie automatische Updates?(Homebrew Cask Benutzer wählen 'Nein')",
"lang_login_noauth": "Verläufe von nicht angemeldeten Konten anzeigen",
"lang_manager_info": "Über diese Instanz",
"lang_manager_refresh": "Aktualisieren",
"lang_manager_delete": "Abmelden",
"lang_manager_color": "Kontofarbe",
"lang_manager_confirm": "ist im Begriff, sich auszuloggen. Fortfahren?",
"lang_manager_mainAcct": "Fertig:Hauptkonto wählen",
"lang_manager_def": "Standard",
"lang_manager_none": "Ohne",
"lang_manager_godev": "Öffnen Sie das DevCenter von Misskey. Wir zeigen auch ein offizielles Dokument als Referenz.",
"lang_manager_logout": "Abmelden",
"lang_bbmd_misskey": "TheDesk betrachtet \"@\" als Antwort, setzt aber einen anderen Parameter. Nicht auf Mastodon gelistet bedeutet Home on Misskey.",
"lang_emoji_get": "Hole Emojis",
"lang_emoji_custom": "Eigene Emojis",
"lang_defaultemojis_text": "Emojis über {{cat}}",
"lang_postimg_previewdis": "keine Vorschau",
"lang_postimg_aftupload": "Sie können die Konten nach dem Hochladen nicht mehr ändern.",
"lang_postimg_delete": "Dieses Bild löschen.",
"lang_post_tagTL": "Dieses Tröt enthält keinen Standard-Tag. Er wird in dem lokalen Verlauf nicht angezeigt. Fortfahren?",
"lang_post_tagVis": "Dieser Tröt (nicht 'öffentlicher' Tröt) wird nicht in diesem Tag-Verlauf angezeigt.",
"lang_post_cwtitle": "Auto CW Alert",
"lang_post_cwtxt": "Du bist dabei, länger zu posten, als du eingestellt hast.\nWarntext:",
"lang_post_btn1": "Abbrechen (wird nicht gesendet)",
"lang_post_btn2": "Text automatisch ausblenden",
"lang_post_btn3": "Weiter mit Senden",
"lang_status_favWarn": "Es braucht einen Moment, um ein entferntes Tröt zu favorisieren.",
"lang_status_btWarn": "Es braucht einen Moment, um ein entferntes Tröt zu verstärken.",
"lang_status_follow": "Folgen",
"lang_status_unfollow": "Nicht mehr folgen",
"lang_status_block": "Blockieren",
"lang_status_unblock": "Freigeben",
"lang_status_mute": "Stummschalten",
"lang_status_unmute": "Stummschalten aufheben",
"lang_status_redraftTitle": "Löschen & Neuentwerfen",
"lang_status_redraft": "Weiter mit löschen & neu entwerfen? Du verlierst den Status dieses Tröts. Diese Aktion kann einige Fehler enthalten. Bilder dieses Tröts werden auf älteren Versionen als Mastodon 2.4.1 gelöscht.",
"lang_status_emphas": "'s Tröts werden hervorgehoben. Bitte laden Sie nach dieser Aktion neu.",
"lang_status_unemphas": "'s Tröts werden nicht hervorgehoben. Bitte laden Sie nach dieser Aktion neu.",
"lang_status_unendorse": "Nicht auf dem Profil zeigen",
"lang_status_endorse": "Auf dem Profil zeigen",
"lang_status_followers": "Followers",
"lang_status_active": "Last status",
"lang_suggest_nodata": "Please get emojis list in order to show suggestion.",
"lang_usetxtbox_reply": "Antwortmodus. Strg+Umschalt+C zum Löschen.",
"lang_cards_check": " überprüfen",
"lang_cards_pip": "PiP mode",
"lang_details_nodata": "Keine Daten",
"lang_details_filtered": "Gefilterter Tröt",
"lang_details_embed": "Eingefügtes HTML wurde entfernt.",
"lang_details_url": "URL dieses Tröts wurde entfernt.",
"lang_details_txt": "Inhalt dieses Tröts wurde entfernt.",
"lang_filter_nodata": "Keine Daten",
"lang_filter_errordegree": "Bitte überprüfen Sie den Kontext",
"lang_list_nodata": "Keine Daten",
"lang_list_show": "Anzeigen",
"lang_list_users": "Benutzerliste",
"lang_list_nouser": "Keine Benutzer in dieser Liste.",
"lang_list_add": "Zur Liste hinzufügen",
"lang_list_add_misskey": "(vielleicht wurde dieser Benutzer aufgelistet)",
"lang_list_remove": "Aus Liste entfernen",
"lang_notf_new": " neue Benachrichtigungen",
"lang_speech_refresh": "Sichern der Vorlesefunktionseinstellungen",
"lang_src_ts": "chronologische Reihenfolge",
"lang_src_people": " Leute Tröt",
"lang_tags_always": "Immer Tröten mit ",
"lang_tags_realtime": "Tag-Stream Tröt",
"lang_tags_tagunpin": "{{tag}} entsperren",
"lang_tags_unrealtime": "Disable TsT",
"lang_tags_tagwarn": "Automatisch {{tag}} anfügen, wenn Tröt ohne {{tag}} ist",
"lang_tl_media": "Medien",
"lang_tl_reconnect": "Mit Streaming API erneut verbinden",
"lang_img_DLDone": "Heruntergeladen:",
"lang_layout_gotop": "Gehen Sie zum Anfang dieser Spalte. Wenn das Symbol rot ist, kann diese Spalte keine Verbindung zur Streaming-API herstellen. Bitte neu laden.",
"lang_layout_thisacct": "{{notf}} dieses Kontos",
"lang_layout_delthis": "Diese Spalte löschen",
"lang_layout_setthis": "Einstellungen dieser Spalte",
"lang_layout_mediafil": "Medien filtern",
"lang_layout_linkana": "Automatische Link-Analyse",
"lang_layout_linkanades": "Automatische Link-Analyse",
"lang_layout_tts": "Sprachausgabe ",
"lang_layout_reconnect": "Mit Streaming API erneut verbinden",
"lang_layout_headercolor": "Kopfzeilenfarbe dieser Spalte",
"lang_layout_nodata": "[Keine Daten]<br>F5/⌘+R zum Neu laden",
"lang_layout_dm": "Direkte Nachricht",
"lang_layout_webviewmode": "Web-Ansicht bevorzugen",
"lang_excluded": "Ausgeschlossene Benachrichtigungsart",
"lang_layout_excludingbt": "Show BT mode(OFF/Exclude BT/Only BT)",
"lang_layout_leftFold": "Nach links Stapeln",
"lang_layout_leftUnfold": "Rechts Anheften",
"lang_layout_deleteColumn": "Diese Spalte löschen",
"lang_layout_deleteColumnDesc": "Diese Spalte löschen",
"lang_layout_unread": "Unread",
"lang_sort_gothis": "Gehe zu dieser Spalte",
"lang_sort_remthis": "Diese Spalte löschen",
"lang_spotify_img": "Albumcover anhängen",
"lang_spotify_imgno": "Kein Albumcover anhängen",
"lang_spotify_acct": "TheDesk mit Spotify verbinden",
"lang_spotify_np": "Done:Vorlage für NowPlaying",
"lang_setting_npprovide": "NowPlaying Provider:{{set}}",
"lang_hisdata_frcreq": "Benötigte Mastodon 2.4.3 und höher",
"lang_hisdata_frcwarn": "Unfollow accounts will be shown.",
"lang_hisdata_taketime": "Es dauert 30s bis mehrere Minuten",
"lang_hisdata_notonmisskey": "Misskey kann nicht angefordert werden.",
"lang_hisdata_key": "Dieser Benutzer ist von {{set}} überprüft",
"lang_showontl_movetxt": "Dieses Konto wurde verschoben",
"lang_showontl_movebtn": "Auf dem neuen Konto fortfahren",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Folgt dir",
"lang_showontl_notf": "Benachrichtigung ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Folgen, um diesen Benutzer zu Listen hinzuzufügen.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_parse_mentioned": " hat dir geantwortet",
"lang_parse_faved": " favorisierte deinen Tröt",
"lang_parse_bted": " hat deinen Tröt verstärkt",
"lang_parse_btedsimple": " verstärkt",
"lang_parse_polled": "'s Umfrage",
"lang_parse_notftime": "Bearbeitet am",
"lang_parse_cwshow": "Anzeigen",
"lang_parse_fulltext": "Full size text:",
"lang_parse_autofold": "Automatisches Zusammenfalten",
"lang_parse_more": "Mehr",
"lang_parse_url": "URL-Analyse",
"lang_parse_tagTL": "Verlauf von {{tag}}",
"lang_parse_tagtoot": "Tröt mit {{tag}}",
"lang_parse_tagpin": "Pin {{tag}}",
"lang_parse_public": "Öffentlich",
"lang_parse_unlisted": "Nicht aufgeführt",
"lang_parse_private": "Privat",
"lang_parse_direct": "Direkt",
"lang_parse_clickcopy": "Klicken, um den Text dieses Tröts zu kopieren",
"lang_parse_clickcopyurl": "Klicken, um die URL dieses Tröts zu kopieren",
"lang_parse_trans": "Übersetzen nach Japanisch",
"lang_parse_replyto": "Auf diesen Tröt antworten",
"lang_parse_bt": "Diesen Tröt verstärken",
"lang_parse_fav": "Diesen Tröt favorisieren",
"lang_parse_quote": "Diesen Tröt zitieren",
"lang_parse_del": "Diesen Tröt löschen",
"lang_parse_pin": "Dieses Tröt fixieren",
"lang_parse_det": "Details über Ihr Hauptkonto.",
"lang_parse_redraft": "Löschen & Neuentwerfen",
"lang_parse_followed": "Folgt dir",
"lang_parse_clientop": "Aktion dieses Clients",
"lang_parse_clienttxt": " wird",
"lang_parse_clientno": "Nichts unternehmen",
"lang_parse_clientemp": "Hervorgehoben(/nicht hervorgehoben)",
"lang_parse_clientmute": "Stumm",
"lang_parse_mute": " wird stumm gemacht. Kann in den Einstellungen wieder entfernt werden.",
"lang_parse_voted": "Abgestimmt",
"lang_parse_vote": "Abstimmen",
"lang_parse_unvoted": "Ergebnis ohne Abstimmung anzeigen",
"lang_parse_endedvote": "Abgelaufen",
"lang_parse_thread": "Konversation anzeigen",
"lang_parse_unknown": "Angehängte Datei",
"lang_parse_nsfw": "NSFW Medien",
"lang_parse_notffilter": "Benachrichtigungen dieses Benutzers anzeigen",
"lang_misskeyparse_renote": "Weiterleiten",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaktion",
"lang_misskeyparse_tagnostr": "Keine Streaming-API für Tag-Verläufe",
"lang_misskeyparse_listnostr": "Keine Streaming-API fpr Listen-Verläufe",
"lang_misskeyparse_home": "Startseite",
"lang_misskeyparse_followers": "Abonnent",
"lang_misskeyparse_specified": "Ausgewählte Benutzer",
"lang_misskeyparse_qt": "Misskey renote(quote) mode:Ctrl+Shift+Enter to clear",
"lang_misskeyparse_renoted": " hat deinen folgenden Beitrag zurückgewiesen.",
"lang_misskeyparse_quoted": " zitierte deinen folgenden Beitrag.",
"lang_misskeyparse_reacted": " hat auf Ihren folgenden Beitrag reagiert.",
"lang_setting_time": "Zeitformat:{{set}}",
"lang_setting_theme": "Design:{{set}}",
"lang_setting_nsfw": "NSFW:{{set}}",
"lang_setting_cw": "CW:{{set}}",
"lang_setting_cwtext": "Default CW text:{{set}}",
"lang_setting_cws": "Always CW on:{{set}}",
"lang_setting_rp": "Antwortzähler:{{set}}",
"lang_setting_vis": "Standardsichtbarkeit:{{set}}",
"lang_setting_popup": "Popup-Benachrichtigung:{{set}}",
"lang_setting_off": "Aus",
"lang_setting_s": "s",
"lang_setting_box": "Standard-Tröt-Box-Aktion:{{set}}",
"lang_setting_gif": "GIF:{{set}}",
"lang_setting_selt": "Auto-Falten:{{set1}} Zeilen und höher, {{set2}} Buchstaben und höher",
"lang_setting_autocw": "Auto CW:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_width": "Minimale Breite:{{set}}",
"lang_setting_fixwidth": "TweetDeck feste Breite:{{set}}px",
"lang_setting_img": "Nach dem Posten eines Bildes:{{set}}",
"lang_setting_font": "Schriftart:{{set}}",
"lang_setting_default": "Standard-Schriftart",
"lang_setting_size": "Schriftgröße:{{set}}px",
"lang_setting_imgheight": "Bildhöhe:{{set}}px",
"lang_setting_ticker": "#InstanceTicker:{{set}}px",
"lang_setting_animation": "Animation: {{set}}",
"lang_setting_tag": "Tag-Verlauf:{{set}}",
"lang_setting_boxConfirm": "Postfach:{{set}}",
"lang_setting_ul": "Muttersprache:{{set}}",
"lang_setting_notf": "System Benachrichtigungen:{{set}}",
"lang_setting_quote": "Zitierformat:{{set}}",
"lang_setting_via": "Via:{{set}}",
"lang_setting_mov": "Aktionstasten verstecken:{{set}}",
"lang_setting_setasread": "Benachrichtigungs-Markierungen:{{set}}",
"lang_setting_main": "Standard-Konto:{{set}}",
"lang_setting_sec": "Zweite Tröt-Taste:{{set}}",
"lang_setting_ksref": "Tastaturkürzel werden aktualisiert.",
"lang_setting_nomuting": "Kein Client ist stumm.",
"lang_setting_notftest": " Benachrichtigungen testen ",
"lang_setting_notftestprof": "Ihr Symbol wird angezeigt.",
"lang_setting_exportwarn": "Nur wichtige Daten werden exportiert. Sie müssen diese Daten sichern.",
"lang_setting_importwarn": "Alle Daten werden gelöscht."
}

View File

@@ -1,241 +1,280 @@
//commonError
var lang={
"language":"en",
"lang_toot":"Toot",
"lang_there":"Yes",
"lang_nothing":"None",
"lang_yesno":"Yes",
"lang_no":"No",
"lang_progress":"Wait...",
"lang_edit":"Edit",
"lang_del":"Delete",
"lang_add":"Add",
"lang_fatalerroroccured":"Some errors are occured, please restart TheDesk.",
"lang_speech":"Google US English",
var lang = {
"language": "en",
"lang_toot": "Toot",
"lang_there": "Yes",
"lang_nothing": "None",
"lang_yesno": "Yes",
"lang_no": "No",
"lang_progress": "Wait...",
"lang_edit": "Edit",
"lang_del": "Delete",
"lang_add": "Add",
"lang_fatalerroroccured": "Some errors are occured, please restart TheDesk.",
"lang_speech": "Google US English",
//language.html
"lang_lang":"Language",
"lang_langlocale":"English",
"lang_back":"Back",
"lang_set":"Set",
"lang_langadd":"Translate TheDesk to other languages or proofread TheDesk on <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>. TheDesk needs your help.",
"lang_lang": "Language",
"lang_langlocale": "English",
"lang_back": "Back",
"lang_set": "Set",
"lang_langadd": "Translate TheDesk to other languages or proofread TheDesk on <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>. TheDesk needs your help.",
//common/time.js
"lang_time_prefixAgo": null,
"lang_time_prefixFromNow": null,
"lang_time_suffixAgo": null,
"lang_time_suffixFromNow": null,
"lang_time_inPast": null,
"lang_time_seconds": "%d s",
"lang_time_minute": "1 m",
"lang_time_minutes": "%d m",
"lang_time_hour": "1 h",
"lang_time_hours": "%d h",
"lang_time_day": "1 d",
"lang_time_days": "%d d",
"lang_time_month": "1 month",
"lang_time_months": "%d months",
"lang_time_year": "y",
"lang_time_years": "%d y",
//common/version.js
"lang_version_usever":"No update is found({{ver}})",
"lang_version_skipver":"Update was ignored.",
"lang_version_platform":"Was this software installed at Microsoft Store? When select 'yes', any update was ignored.",
"lang_version_platform_linux":"Was this software installed at Snapcraft(snapd)? When select 'yes', any update was ignored.",
"lang_version_usever": "No update is found({{ver}})",
"lang_version_skipver": "Update was ignored.",
"lang_version_platform": "Do you want auto-updates?(users installed on Microsoft Store select 'No')",
"lang_version_platform_linux": "Do you want auto-updates?(users installed on Snapcraft select 'No')",
"lang_version_platform_mac": "Do you want auto-updates?(Homebrew Cask users select 'No')",
//login
//login/login.js
"lang_login_noauth":"Show TL of unlogined accounts",
"lang_login_noauth": "Show TL of unlogined accounts",
//login/manager.js
"lang_manager_info":"About this instance",
"lang_manager_refresh":"Refresh",
"lang_manager_delete":"Logout",
"lang_manager_color":"Account Color",
"lang_manager_confirm":"is about to logout. Continue?",
"lang_manager_mainAcct":"Done:choose main account",
"lang_manager_def":"Default",
"lang_manager_none":"None",
"lang_manager_godev":"Open DevCenter of Misskey. We show also an official documents to refer.",
"lang_manager_info": "About this instance",
"lang_manager_refresh": "Refresh",
"lang_manager_delete": "Logout",
"lang_manager_color": "Account Color",
"lang_manager_confirm": "is about to logout. Continue?",
"lang_manager_mainAcct": "Done:choose main account",
"lang_manager_def": "Default",
"lang_manager_none": "None",
"lang_manager_godev": "Open DevCenter of Misskey. We show also an official documents to refer.",
"lang_manager_logout": "Logout",
//post/bb-md.js
"lang_bbmd_misskey":"TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
"lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
//post/emoji.js
"lang_emoji_get":"Get emojis",
"lang_emoji_custom":"Custom emojis",
"lang_defaultemojis_text":"Emojis about {{cat}}",
"lang_emoji_get": "Get emojis",
"lang_emoji_custom": "Custom emojis",
"lang_defaultemojis_text": "Emojis about {{cat}}",
//post/img.js
"lang_postimg_previewdis":"cannot preview",
"lang_postimg_aftupload":"You cannot change accounts after uploading.",
"lang_postimg_previewdis": "cannot preview",
"lang_postimg_aftupload": "You cannot change accounts after uploading.",
"lang_postimg_failupload": "Failed",
"lang_postimg_delete": "Delete this image.",
//post/post.js
"lang_post_tagTL":"This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?",
"lang_post_tagVis":"This toot(not 'public' toot) is not shown on this tag's TL.",
"lang_post_cwtitle":"Auto CW Alert",
"lang_post_cwtxt":"You are about to post longer toot than you set.\nWarning text:",
"lang_post_btn1":"Cancel (will not post)",
"lang_post_btn2":"Make text hidden automatically",
"lang_post_btn3":"Continue to post",
"lang_post_tagTL": "This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?",
"lang_post_tagVis": "This toot(not 'public' toot) is not shown on this tag's TL.",
"lang_post_cwtitle": "Auto CW Alert",
"lang_post_cwtxt": "You are about to post longer toot than you set.\nWarning text:",
"lang_post_btn1": "Cancel (will not post)",
"lang_post_btn2": "Make text hidden automatically",
"lang_post_btn3": "Continue to post",
//post/status.js
"lang_status_favWarn":"It will take a miunte to favourite a remote toot.",
"lang_status_btWarn":"It will take a miunte to boost a remote toot.",
"lang_status_follow":"Follow",
"lang_status_unfollow":"Unfollow",
"lang_status_block":"Block",
"lang_status_unblock":"Unblock",
"lang_status_mute":"Mute",
"lang_status_unmute":"Unmute",
"lang_status_redraft":"Continue to delete & redraft? You lose statuses of this toot. This fanction may contain some bugs. Images of this toot will be deleted on older than Mastodon 2.4.1.",
"lang_status_emphas":"'s toots are emphasized. Please reload after this action.",
"lang_status_unemphas":"'s toots are not emphasized. Please reload after this action.",
"lang_status_unendorse":"Not feature on profile",
"lang_status_endorse":"Feature on profile",
"lang_status_favWarn": "It will take a miunte to favourite a remote toot.",
"lang_status_btWarn": "It will take a miunte to boost a remote toot.",
"lang_status_follow": "Follow",
"lang_status_unfollow": "Unfollow",
"lang_status_block": "Block",
"lang_status_unblock": "Unblock",
"lang_status_mute": "Mute",
"lang_status_unmute": "Unmute",
"lang_status_redraftTitle": "Delete & redraft",
"lang_status_redraft": "Continue to delete & redraft? You lose statuses of this toot. This fanction may contain some bugs. Images of this toot will be deleted on older than Mastodon 2.4.1.",
"lang_status_emphas": "'s toots are emphasized. Please reload after this action.",
"lang_status_unemphas": "'s toots are not emphasized. Please reload after this action.",
"lang_status_unendorse": "Not feature on profile",
"lang_status_endorse": "Feature on profile",
"lang_status_followers": "Followers",
"lang_status_active": "Last status",
//post/suggest.js
"lang_suggest_nodata":"Please get emojis list in order to show suggestion.",
"lang_suggest_nodata": "Please get emojis list in order to show suggestion.",
//post/use-txtbox.js
"lang_usetxtbox_reply":"Reply Mode. Ctrl+Shift+C to clear.",
"lang_usetxtbox_reply": "Reply Mode. Ctrl+Shift+C to clear.",
//tl/card.js
"lang_cards_check":" check",
"lang_cards_pip":"PiP mode",
"lang_cards_check": " check",
"lang_cards_pip": "PiP mode",
//tl/details.js
"lang_details_nodata":"No data",
"lang_details_filtered":"Filtered toot",
"lang_details_embed":"Embed HTML is cliped.",
"lang_details_url":"URL of this toot is cliped.",
"lang_details_txt":"Content of this toot is cliped.",
"lang_details_nodata": "No data",
"lang_details_filtered": "Filtered toot",
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
//tl/filter.js
"lang_filter_nodata":"No data",
"lang_filter_errordegree":"Please check a context",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
//tl/list.js
"lang_list_nodata":"No data",
"lang_list_show":"Show",
"lang_list_users":"Users list",
"lang_list_nouser":"No users in this list.",
"lang_list_add":"Add to the list",
"lang_list_remove":"Remove from the list",
"lang_list_nodata": "No data",
"lang_list_show": "Show",
"lang_list_users": "Users list",
"lang_list_nouser": "No users in this list.",
"lang_list_add": "Add to the list",
"lang_list_add_misskey": "(perhaps this user has been listed)",
"lang_list_remove": "Remove from the list",
//tl/notification.js
"lang_notf_new":" new notifications",
"lang_notf_new": " new notifications",
//tl/speech.js
"lang_speech_refresh":"Save value about TTS config",
"lang_speech_refresh": "Save value about TTS config",
//tl/src.js
"lang_src_ts":"chronological order",
"lang_src_people":" people toot",
"lang_src_ts": "chronological order",
"lang_src_people": " people toot",
//tl/tag.js
"lang_tags_always":"Always toots with ",
"lang_tags_realtime":"Tag-stream toot",
"lang_tags_tagunpin":"Unpin {{tag}}",
"lang_tags_unrealtime":"Disable TsT",
"lang_tags_tagwarn":"Auto complete {{tag}}, if toot without {{tag}}",
"lang_tags_always": "Always toots with ",
"lang_tags_realtime": "Tag-stream toot",
"lang_tags_tagunpin": "Unpin {{tag}}",
"lang_tags_unrealtime": "Disable TsT",
"lang_tags_tagwarn": "Auto complete {{tag}}, if toot without {{tag}}",
//tl/tl.js
"lang_tl_media":"Media",
"lang_tl_reconnect":"Reconnect to streaming API",
"lang_tl_media": "Media",
"lang_tl_reconnect": "Reconnect to streaming API",
//ui/img.js
"lang_img_DLDone": "Downloaded:",
//ui/layout.js
"lang_layout_gotop":"Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct":"{{notf}} of this account",
"lang_layout_delthis":"Remove this column",
"lang_layout_setthis":"Preferences of this column",
"lang_layout_mediafil":"Media filtering",
"lang_layout_linkana":"Auto Link Analyzer",
"lang_layout_linkanades":"Auto link analyzer",
"lang_layout_tts":"Text to speech ",
"lang_layout_reconnect":"Reconnect to streaming API",
"lang_layout_headercolor":"Header color of this column",
"lang_layout_nodata":"[No data]<br>F5/⌘+R to reload",
"lang_layout_dm":"Direct Message",
"lang_layout_webviewmode":"Prefer WebView",
"lang_excluded":"Excluded type of notification",
"lang_layout_excludingbt":"Show BT mode(OFF/Exclude BT/Only BT)",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account",
"lang_layout_delthis": "Remove this column",
"lang_layout_setthis": "Preferences of this column",
"lang_layout_mediafil": "Media filtering",
"lang_layout_linkana": "Auto Link Analyzer",
"lang_layout_linkanades": "Auto link analyzer",
"lang_layout_tts": "Text to speech ",
"lang_layout_reconnect": "Reload this column",
"lang_layout_headercolor": "Header color of this column",
"lang_layout_nodata": "[No data]<br>F5/⌘+R to reload",
"lang_layout_dm": "Direct Message",
"lang_layout_webviewmode": "Prefer WebView",
"lang_excluded": "Excluded type of notification",
"lang_layout_excludingbt": "Show BT mode(OFF/Exclude BT/Only BT)",
"lang_layout_leftFold": "Stack to the left",
"lang_layout_leftUnfold": "Dock on the right",
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_layout_unread": "Unread",
//ui/sort.js
"lang_sort_gothis":"Go to this column",
"lang_sort_remthis":"Delete this column",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
//ui/spotify.js
"lang_spotify_img":"Attach an album artwork",
"lang_spotify_imgno":"Not attach an album artwork",
"lang_spotify_acct":"Connect TheDesk to Spotify",
"lang_spotify_np":"Done:templete of NowPlaying",
"lang_setting_npprovide":"NowPlaying provider:{{set}}",
"lang_spotify_img": "Attach an album artwork",
"lang_spotify_imgno": "Not attach an album artwork",
"lang_spotify_acct": "Connect TheDesk to Spotify",
"lang_spotify_np": "Done:templete of NowPlaying",
"lang_setting_npprovide": "NowPlaying provider:{{set}}",
//userdata/his-data.js
"lang_hisdata_frcreq":"Required Mastodon 2.4.3 and above",
"lang_hisdata_frcwarn":"Unfollow accounts will be shown.",
"lang_hisdata_taketime":"It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey":"Misskey is unable to request.",
"lang_hisdata_frcreq": "Required Mastodon 2.4.3 and above",
"lang_hisdata_frcwarn": "Unfollow accounts will be shown.",
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
//userdata/showOnTL.js
"lang_showontl_movetxt":"This account was moved",
"lang_showontl_movebtn":"Continue on the new account",
"lang_showontl_botacct":"[bot]",
"lang_showontl_followed":"Following you",
"lang_showontl_notf":"Notification ",
"lang_showontl_domain":"Domain ",
"lang_showontl_listwarn":"Follow to add this user to lists.",
//parse
"lang_parse_mentioned":" replied to you",
"lang_parse_faved":" favourited your toot",
"lang_parse_bted":" boosted your toot",
"lang_parse_btedsimple":" boosted",
"lang_parse_notftime":"Actioned at",
"lang_parse_cwshow":"Show",
"lang_parse_fulltext":"Full size text:",
"lang_parse_autofold":"Auto folded",
"lang_parse_more":"More",
"lang_parse_url":"URL Analyzer",
"lang_parse_tagTL":"Timeline of {{tag}}",
"lang_parse_tagtoot":"Toot with {{tag}}",
"lang_parse_tagpin":"Pin {{tag}}",
"lang_parse_public":"Public",
"lang_parse_unlisted":"Unlisted",
"lang_parse_private":"Private",
"lang_parse_direct":"Direct",
"lang_parse_clickcopy":"Click to copy text of this toot",
"lang_parse_clickcopyurl":"Click to copy URL of this toot",
"lang_parse_trans":"Translate to Japanese",
"lang_parse_replyto":"Reply to this toot",
"lang_parse_bt":"Boost this toot",
"lang_parse_fav":"Favourite this toot",
"lang_parse_quote":"Quote this toot",
"lang_parse_del":"Delete this toot",
"lang_parse_pin":"Pin this toot",
"lang_parse_det":"Details via your main account.",
"lang_parse_redraft":"Delete & re-draft",
"lang_parse_followed":"Followed you",
"lang_parse_clientop":"Operation of this client",
"lang_parse_clienttxt":" will be",
"lang_parse_clientno":"done nothing",
"lang_parse_clientemp":"emphasized(/not emphasized)",
"lang_parse_clientmute":"muted",
"lang_parse_mute":" will be muted. You can remove on preferences.",
"lang_parse_voted":"Voted",
"lang_parse_vote":"Voted",
"lang_parse_unvoted":"Show the result without voting",
"lang_parse_endedvote":"Expired",
"lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you",
"lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
//parse
"lang_parse_mentioned": " replied to you",
"lang_parse_faved": " favourited your toot",
"lang_parse_bted": " boosted your toot",
"lang_parse_btedsimple": " boosted",
"lang_parse_polled": "'s poll",
"lang_parse_notftime": "Actioned at",
"lang_parse_cwshow": "Show",
"lang_parse_fulltext": "Full size text:",
"lang_parse_autofold": "Auto folded",
"lang_parse_more": "More",
"lang_parse_url": "URL Analyzer",
"lang_parse_tagTL": "Timeline of {{tag}}",
"lang_parse_tagtoot": "Toot with {{tag}}",
"lang_parse_tagpin": "Pin {{tag}}",
"lang_parse_public": "Public",
"lang_parse_unlisted": "Unlisted",
"lang_parse_private": "Private",
"lang_parse_direct": "Direct",
"lang_parse_clickcopy": "Click to copy text of this toot",
"lang_parse_clickcopyurl": "Click to copy URL of this toot",
"lang_parse_trans": "Translate to Japanese",
"lang_parse_replyto": "Reply to this toot",
"lang_parse_bt": "Boost this toot",
"lang_parse_fav": "Favourite this toot",
"lang_parse_quote": "Quote this toot",
"lang_parse_del": "Delete this toot",
"lang_parse_pin": "Pin this toot",
"lang_parse_det": "Details via your main account.",
"lang_parse_redraft": "Delete & re-draft",
"lang_parse_followed": "Followed you",
"lang_parse_clientop": "Operation of this client",
"lang_parse_clienttxt": " will be",
"lang_parse_clientno": "done nothing",
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",
"lang_parse_notffilter": "Show this user's notifications",
//misskey
"lang_misskeyparse_renote":"Repost",
"lang_misskeyparse_renoteqt":"Renote",
"lang_misskeyparse_reaction":"Reaction",
"lang_misskeyparse_tagnostr":"No streaming API on Tag TLs",
"lang_misskeyparse_listnostr":"No streaming API on List TLs",
"lang_misskeyparse_home":"Home",
"lang_misskeyparse_followers":"Follower",
"lang_misskeyparse_specified":"Specified User",
"lang_misskeyparse_qt":"Misskey renote(quote) mode:Ctrl+Shift+Enter to clear",
"lang_misskeyparse_renoted":" renoted your following post.",
"lang_misskeyparse_quoted":" quoted your following post.",
"lang_misskeyparse_reacted":" reacted your following post.",
//setting
"lang_setting_time":"Time format:{{set}}",
"lang_setting_theme":"Theme:{{set}}",
"lang_setting_nsfw":"NSFW:{{set}}",
"lang_setting_cw":"CW:{{set}}",
"lang_setting_cwtext":"Default CW text:{{set}}",
"lang_setting_cws":"Always CW on:{{set}}",
"lang_setting_rp":"Reply counter:{{set}}",
"lang_setting_vis":"Default visibility:{{set}}",
"lang_setting_popup":"Popup notification:{{set}}",
"lang_setting_off":"Off",
"lang_setting_s":"s",
"lang_setting_box":"Default toot box action:{{set}}",
"lang_setting_gif":"GIF:{{set}}",
"lang_setting_selt":"Auto fold:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_autocw":"Auto CW:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_width":"Minimam width:{{set}}",
"lang_setting_fixwidth":"TweetDeck fixed width:{{set}}px",
"lang_setting_img":"After posting an image:{{set}}",
"lang_setting_font":"Fonts:{{set}}",
"lang_setting_default":"default font",
"lang_setting_size":"Font size:{{set}}px",
"lang_setting_imgheight":"Image height:{{set}}px",
"lang_setting_ticker":"#InstanceTicker:{{set}}px",
"lang_setting_animation":"Animation: {{set}}",
"lang_setting_tag":"Tag TL:{{set}}",
"lang_setting_boxConfirm":"Post box:{{set}}",
"lang_setting_ul":"Native locale:{{set}}",
"lang_setting_notf":"Native notification:{{set}}",
"lang_setting_quote":"Quote format:{{set}}",
"lang_setting_via":"Via:{{set}}",
"lang_setting_mov":"Action buttons hiding:{{set}}",
"lang_setting_setasread":"Notification markers:{{set}}",
"lang_setting_main":"Default account:{{set}}",
"lang_setting_sec":"Secondary toot button:{{set}}",
"lang_setting_ksref":"Keyboard shortcuts are refreshed.",
"lang_setting_nomuting":"No client is muted.",
"lang_setting_notftest":" Notification test ",
"lang_setting_notftestprof":"Your icon is shown.",
"lang_setting_exportwarn":"Only important data will be exported. You must keep this data secure.",
"lang_setting_importwarn":"All data will be deleted.",
"lang_misskeyparse_renote": "Repost",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaction",
"lang_misskeyparse_tagnostr": "No streaming API on Tag TLs",
"lang_misskeyparse_listnostr": "No streaming API on List TLs",
"lang_misskeyparse_home": "Home",
"lang_misskeyparse_followers": "Follower",
"lang_misskeyparse_specified": "Specified User",
"lang_misskeyparse_qt": "Misskey renote(quote) mode:Ctrl+Shift+Enter to clear",
"lang_misskeyparse_renoted": " renoted your following post.",
"lang_misskeyparse_quoted": " quoted your following post.",
"lang_misskeyparse_reacted": " reacted your following post.",
//setting
"lang_setting_time": "Time format:{{set}}",
"lang_setting_theme": "Theme:{{set}}",
"lang_setting_nsfw": "Sensitive media:{{set}}",
"lang_setting_cw": "CW:{{set}}",
"lang_setting_cwtext": "Default CW text:{{set}}",
"lang_setting_cws": "Always CW on:{{set}}",
"lang_setting_rp": "Reply counter:{{set}}",
"lang_setting_vis": "Default visibility:{{set}}",
"lang_setting_popup": "Popup notification:{{set}}",
"lang_setting_off": "Off",
"lang_setting_s": "s",
"lang_setting_box": "Default toot box action:{{set}}",
"lang_setting_gif": "GIF:{{set}}",
"lang_setting_selt": "Auto fold:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_autocw": "Auto CW:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_width": "Minimam width:{{set}}",
"lang_setting_fixwidth": "TweetDeck fixed width:{{set}}px",
"lang_setting_img": "After posting an image:{{set}}",
"lang_setting_font": "Fonts:{{set}}",
"lang_setting_default": "default font",
"lang_setting_size": "Font size:{{set}}px",
"lang_setting_imgheight": "Image height:{{set}}px",
"lang_setting_ticker": "#InstanceTicker:{{set}}px",
"lang_setting_animation": "Animation: {{set}}",
"lang_setting_tag": "Tag TL:{{set}}",
"lang_setting_boxConfirm": "Post box:{{set}}",
"lang_setting_ul": "Native locale:{{set}}",
"lang_setting_notf": "Native notification:{{set}}",
"lang_setting_quote": "Quote format:{{set}}",
"lang_setting_via": "Via:{{set}}",
"lang_setting_mov": "Action buttons hiding:{{set}}",
"lang_setting_setasread": "Notification markers:{{set}}",
"lang_setting_main": "Default account:{{set}}",
"lang_setting_sec": "Secondary toot button:{{set}}",
"lang_setting_ksref": "Keyboard shortcuts are refreshed.",
"lang_setting_nomuting": "No client is muted.",
"lang_setting_notftest": " Notification test ",
"lang_setting_notftestprof": "Your icon is shown.",
"lang_setting_exportwarn": "Only important data will be exported. You must keep this data secure.",
"lang_setting_importwarn": "All data will be deleted.",
}

View File

@@ -1,241 +1,280 @@
//commonError
var lang={
"language":"ja",
"lang_toot":"トゥート",
"lang_there":"あり",
"lang_nothing":"なし",
"lang_yesno":"はい",
"lang_no":"いいえ",
"lang_progress":"処理中",
"lang_edit":"編集",
"lang_del":"削除",
"lang_add":"追加",
"lang_fatalerroroccured":"エラーが発生しました。しばらく待ってから再起動してください。",
"lang_speech":"Google 日本語",
//language.html
"lang_lang":"言語",
"lang_langlocale":"日本語",
"lang_back":"戻る",
"lang_set":"設定",
"lang_langadd":"<a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>から翻訳に参加できます。英語の校正(緊急)や他言語に翻訳していただける方を募集しております。",
//common/version.js
"lang_version_usever":"お使いのバージョン{{ver}}は最新です。",
"lang_version_skipver":"アップデートはスキップされました。",
"lang_version_platform":"このソフトウェアはMicrosoft Storeからダウンロードされましたか(「はい」を選択すると次回からアップデート通知を無視します。)",
"lang_version_platform_linux":"このソフトウェアはSnapcraft(snapd)からインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
//login
//login/login.js
"lang_login_noauth":"認証せずに見る",
//login/manager.js
"lang_manager_info":"インスタンス情報",
"lang_manager_refresh":"情報更新",
"lang_manager_delete":"削除",
"lang_manager_color":"アカウントカラーを選択",
"lang_manager_confirm":"を削除します。",
"lang_manager_mainAcct":"メインアカウントを設定しました。",
"lang_manager_def":"既定",
"lang_manager_none":"なし",
"lang_manager_godev":"MisskeyのDevセンターに移動します。同時に開かれるドキュメントを参考にログインしてください。",
//post/bb-md.js
"lang_bbmd_misskey":"TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。",
//post/emoji.js
"lang_emoji_get":"絵文字リストを取得",
"lang_emoji_custom":"カスタム絵文字",
"lang_defaultemojis_text":"{{cat}}の絵文字",
//post/img.js
"lang_postimg_previewdis":"プレビューできません。",
"lang_postimg_aftupload":"アップロード後はアカウントを切り替えられません。",
//post/post.js
"lang_post_tagTL":"デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
"lang_post_tagVis":"公開範囲が「公開」以外だと、タグTLに表示されません。(一部インスタンスを除く)",
"lang_post_cwtitle":"長文投稿の警告",
"lang_post_cwtxt":"指定文字数、行数を超えるトゥートを行おうとしています。\n自動CWのタイトル:",
"lang_post_btn1":"キャンセル(投稿しない)",
"lang_post_btn2":"自動でCWを付ける",
"lang_post_btn3":"そのまま投稿",
//post/status.js
"lang_status_favWarn":"お気に入り登録しました。インスタンスが違うときは時間がかかる場合があります。",
"lang_status_btWarn":"ブーストしました。インスタンスが違うときは時間がかかる場合があります。",
"lang_status_follow":"フォロー",
"lang_status_unfollow":"フォロー解除",
"lang_status_block":"ブロック",
"lang_status_unblock":"ブロック解除",
"lang_status_mute":"ミュート",
"lang_status_unmute":"ミュート解除",
"lang_status_redraft":"削除して再編集しますか?そのトゥートの全てのデータがリセットされます。この機能はベータ版です。画像は~v2.4.1で破棄されます。",
"lang_status_emphas":"を強調します。リロードしてください。",
"lang_status_unemphas":"を強調解除します。リロードしてください。",
"lang_status_unendorse":"紹介解除",
"lang_status_endorse":"プロフで紹介する",
//post/suggest.js
"lang_suggest_nodata":"サジェストのために絵文字リストを取得してください。",
//post/use-txtbox.js
"lang_usetxtbox_reply":"返信モードです。クリアするときはCtrl+Shift+Cを押してください。",
//tl/card.js
"lang_cards_check":"チェック",
"lang_cards_pip":"ながら観モード",
//tl/details.js
"lang_details_nodata":"データなし",
"lang_details_filtered":"フィルターされました。",
"lang_details_embed":"埋め込みHTMLがコピーされました。",
"lang_details_url":"トゥートURLがコピーされました。",
"lang_details_txt":"トゥート本文がコピーされました。",
//tl/filter.js
"lang_filter_nodata":"フィルターはありません",
"lang_filter_errordegree":"適応範囲を最低一つ以上チェックしてください。",
//tl/list.js
"lang_list_nodata":"リストはありません",
"lang_list_show":"表示",
"lang_list_users":"ユーザー一覧",
"lang_list_nouser":"ユーザーはいません",
"lang_list_add":"リストに追加",
"lang_list_remove":"リストから削除",
//tl/notification.js
"lang_notf_new":"件の新しい通知",
//tl/speech.js
"lang_speech_refresh":"音声読み上げ設定を更新しました。",
//tl/src.js
"lang_src_ts":"時系列",
"lang_src_people":"人がトゥート",
//tl/tag.js
"lang_tags_always":"常に",
"lang_tags_realtime":"実況",
"lang_tags_tagunpin":"{{tag}}をよく使うタグから削除",
"lang_tags_unrealtime":"実況解除",
"lang_tags_tagwarn":"{{tag}}がない場合自動で補完されま。",
//tl/tl.js
"lang_tl_media":"メディア",
"lang_tl_reconnect":"Streamingに再接続しました",
//ui/layout.js
"lang_layout_gotop":"一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。",
"lang_layout_thisacct":"このアカウントの{{notf}}",
"lang_layout_delthis":"このカラムを削除",
"lang_layout_setthis":"このカラムの設定",
"lang_layout_mediafil":"メディアフィルター",
"lang_layout_linkana":"リンク解析",
"lang_layout_linkanades":"リンクの解析を切り替え",
"lang_layout_tts":"読み上げ",
"lang_layout_reconnect":"ストリーミング再接続",
"lang_layout_headercolor":"TLヘッダーカラー",
"lang_layout_nodata":"[ここにトゥートはありません。]<br>F5/⌘+Rで再読込できます。",
"lang_layout_dm":"ダイレクトメッセージ",
"lang_layout_webviewmode":"WebView優先",
"lang_excluded":"除外する通知",
"lang_layout_excludingbt":"BT表示(OFF/BT除外/BTのみ)",
//ui/sort.js
"lang_sort_gothis":"このカラムへ",
"lang_sort_remthis":"このカラムを削除",
//ui/spotify.js
"lang_spotify_img":"アルバムアートワークを添付します。",
"lang_spotify_imgno":"アルバムアートワークを添付しません。",
"lang_spotify_acct":"アカウント連携をしてください。",
"lang_spotify_np":"NowPlaying文書を更新しました。",
"lang_setting_npprovide":"NowPlayingのソースを{{set}}に設定しました",
//userdata/his-data.js
"lang_hisdata_frcreq":"Mastodon 2.4.3~が必要です",
"lang_hisdata_frcwarn":"非フォローだけど絡みがある時に表示されます。",
"lang_hisdata_taketime":"30秒から数分かかります",
"lang_hisdata_notonmisskey":"このシステムはMisskeyにはありません。",
//userdata/showOnTL.js
"lang_showontl_movetxt":"このアカウントは移行しています",
"lang_showontl_movebtn":"移行先を見る",
"lang_showontl_botacct":"botアカウント",
"lang_showontl_followed":"フォローされています",
"lang_showontl_notf":"通知",
"lang_showontl_domain":"ドメイン",
"lang_showontl_listwarn":"リストに追加するためにはフォローが必要です。",
//parse
"lang_parse_mentioned":"が返信しました",
"lang_parse_faved":"がお気に入り登録しました",
"lang_parse_bted":"がブーストしました",
"lang_parse_btedsimple":"がブースト",
"lang_parse_notftime":"通知された時間",
"lang_parse_cwshow":"見る",
"lang_parse_fulltext":"以下全文",
"lang_parse_autofold":"自動折り畳み",
"lang_parse_more":"続き...",
"lang_parse_url":"URL解析",
"lang_parse_tagTL":"{{tag}}のタイムライン",
"lang_parse_tagtoot":"{{tag}}でトゥート",
"lang_parse_tagpin":"{{tag}}をよく使うタグへ",
"lang_parse_public":"公開",
"lang_parse_unlisted":"未収載",
"lang_parse_private":"非公開",
"lang_parse_direct":"ダイレクト",
"lang_parse_clickcopy":"クリックして本文をコピー",
"lang_parse_clickcopyurl":"クリックしてトゥートURLをコピー",
"lang_parse_trans":"このトゥートを日本語に翻訳",
"lang_parse_replyto":"このトゥートに返信",
"lang_parse_bt":"このトゥートをブースト",
"lang_parse_fav":"このトゥートをお気に入り登録",
"lang_parse_quote":"このトゥートを引用",
"lang_parse_del":"このトゥートを削除",
"lang_parse_pin":"このトゥートをピン留め",
"lang_parse_det":"詳細(メインアカウント経由)",
"lang_parse_redraft":"このトゥートを削除して再編集",
"lang_parse_followed":"フォローされました。",
"lang_parse_clientop":"クライアント処理",
"lang_parse_clienttxt":"に対する処理を選択してください。",
"lang_parse_clientno":"何もしない",
"lang_parse_clientemp":"強調表示/解除",
"lang_parse_clientmute":"ミュート",
"lang_parse_mute":"ミュートします。設定から解除できます。",
"lang_parse_voted":"投票済みです",
"lang_parse_vote":"投票",
"lang_parse_unvoted":"結果だけ見る",
"lang_parse_endedvote":"終了済み",
//commonError
var lang = {
"language": "ja",
"lang_toot": "トゥート",
"lang_there": "あり",
"lang_nothing": "なし",
"lang_yesno": "はい",
"lang_no": "いいえ",
"lang_progress": "処理中",
"lang_edit": "編集",
"lang_del": "削除",
"lang_add": "追加",
"lang_fatalerroroccured": "エラーが発生しました。しばらく待ってから再起動してください。",
"lang_speech": "Google 日本語",
//language.html
"lang_lang": "言語",
"lang_langlocale": "日本語",
"lang_back": "戻る",
"lang_set": "設定",
"lang_langadd": "<a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>から翻訳に参加できます。英語の校正(緊急)や他言語に翻訳していただける方を募集しております。",
//common/time.js
"lang_time_prefixAgo": null,
"lang_time_prefixFromNow": "今から",
"lang_time_suffixAgo": "",
"lang_time_suffixFromNow": "",
"lang_time_inPast": '',
"lang_time_seconds": "%d秒前",
"lang_time_minute": "1分前",
"lang_time_minutes": "%d分前",
"lang_time_hour": "1時間前",
"lang_time_hours": "%d時間前",
"lang_time_day": "昨日",
"lang_time_days": "%d日前",
"lang_time_month": "昨月",
"lang_time_months": "%dヶ月前",
"lang_time_year": "去年",
"lang_time_years": "%d年前",
//common/version.js
"lang_version_usever": "お使いのバージョン{{ver}}は最新です。",
"lang_version_skipver": "アップデートはスキップされました。",
"lang_version_platform": "このソフトウェアはMicrosoft Storeからダウンロードされましたか通常はホームページからインストールするため「いいえ」を選んでください。「はい」を選ぶとMicrosoft Storeからアップデートが提供され、アップデートの通知を出しません。",
"lang_version_platform_linux": "このソフトウェアはSnapcraft(snapd)からインストールしましたか通常はホームページからインストールするため「いいえ」を選んでください。「はい」を選ぶとSnapcraftからアップデートが提供され、アップデートの通知を出しません。",
"lang_version_platform_mac": "このソフトウェアはHomebrew Caskからインストールしましたか通常はホームページからインストールするため「いいえ」を選んでください。「はい」を選ぶとアップデートの通知を出しません。",
//login
//login/login.js
"lang_login_noauth": "認証せずに見る",
//login/manager.js
"lang_manager_info": "インスタンス情報",
"lang_manager_refresh": "情報更新",
"lang_manager_delete": "削除",
"lang_manager_color": "アカウントカラーを選択",
"lang_manager_confirm": "を削除します。",
"lang_manager_mainAcct": "メインアカウントを設定しました。",
"lang_manager_def": "既定",
"lang_manager_none": "なし",
"lang_manager_godev": "MisskeyのDevセンターに移動します。同時に開かれるドキュメントを参考にログインしてください。",
"lang_manager_logout": "ログアウト",
//post/bb-md.js
"lang_bbmd_misskey": "TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。",
//post/emoji.js
"lang_emoji_get": "絵文字リストを取得",
"lang_emoji_custom": "カスタム絵文字",
"lang_defaultemojis_text": "{{cat}}の絵文字",
//post/img.js
"lang_postimg_previewdis": "プレビューできません。",
"lang_postimg_aftupload": "アップロード後はアカウントを切り替えられません。",
"lang_postimg_failupload": "アップロードに失敗しました。",
"lang_postimg_delete": "この画像を削除します",
//post/post.js
"lang_post_tagTL": "デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
"lang_post_tagVis": "公開範囲が「公開」以外だと、タグTLに表示されません。(一部インスタンスを除く)",
"lang_post_cwtitle": "長文投稿の警告",
"lang_post_cwtxt": "指定文字数、行数を超えるトゥートを行おうとしています。\n自動CWのタイトル:",
"lang_post_btn1": "キャンセル(投稿しない)",
"lang_post_btn2": "自動でCWを付ける",
"lang_post_btn3": "そのまま投稿",
//post/status.js
"lang_status_favWarn": "お気に入り登録しました。インスタンスが違うときは時間がかかる場合があります。",
"lang_status_btWarn": "ブーストしました。インスタンスが違うときは時間がかかる場合があります。",
"lang_status_follow": "フォロー",
"lang_status_unfollow": "フォロー解除",
"lang_status_block": "ブロック",
"lang_status_unblock": "ブロック解除",
"lang_status_mute": "ミュート",
"lang_status_unmute": "ミュート解除",
"lang_status_redraftTitle": "削除して再編集",
"lang_status_redraft": "削除して再編集しますか?そのトゥートの全てのデータがリセットされます。この機能はベータ版です。画像は~v2.4.1で破棄されます。",
"lang_status_emphas": "を強調します。リロードしてください。",
"lang_status_unemphas": "を強調解除します。リロードしてください。",
"lang_status_unendorse": "紹介解除",
"lang_status_endorse": "プロフで紹介する",
"lang_status_followers": "フォロワー",
"lang_status_active": "最新トゥート",
//post/suggest.js
"lang_suggest_nodata": "サジェストのために絵文字リストを取得してください。",
//post/use-txtbox.js
"lang_usetxtbox_reply": "返信モードです。クリアするときはCtrl+Shift+Cを押してください。",
//tl/card.js
"lang_cards_check": "チェック",
"lang_cards_pip": "ながら観モード",
//tl/details.js
"lang_details_nodata": "データなし",
"lang_details_filtered": "フィルターされました。",
"lang_details_embed": "埋め込みHTMLがコピーされました。",
"lang_details_url": "トゥートURLがコピーされました。",
"lang_details_txt": "トゥート本文がコピーされました。",
//tl/filter.js
"lang_filter_nodata": "フィルターはありません",
"lang_filter_errordegree": "適応範囲を最低一つ以上チェックしてください。",
//tl/list.js
"lang_list_nodata": "リストはありません",
"lang_list_show": "表示",
"lang_list_users": "ユーザー一覧",
"lang_list_nouser": "ユーザーはいません",
"lang_list_add": "リストに追加",
"lang_list_add_misskey": "(重複追加の可能性があります)",
"lang_list_remove": "リストから削除",
//tl/notification.js
"lang_notf_new": "件の新しい通知",
//tl/speech.js
"lang_speech_refresh": "音声読み上げ設定を更新しました。",
//tl/src.js
"lang_src_ts": "時系列",
"lang_src_people": "人がトゥート",
//tl/tag.js
"lang_tags_always": "常に",
"lang_tags_realtime": "実況",
"lang_tags_tagunpin": "{{tag}}をよく使うタグから削除",
"lang_tags_unrealtime": "実況解除",
"lang_tags_tagwarn": "{{tag}}がない場合自動で補完されます。",
//tl/tl.js
"lang_tl_media": "メディア",
"lang_tl_reconnect": "Streamingに再接続しました",
//ui/img.js
"lang_img_DLDone": "ダウンロード先:",
//ui/layout.js
"lang_layout_gotop": "一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。",
"lang_layout_thisacct": "このアカウントの{{notf}}",
"lang_layout_delthis": "このカラムを削除",
"lang_layout_setthis": "このカラムの設定",
"lang_layout_mediafil": "メディアフィルター",
"lang_layout_linkana": "リンク解析",
"lang_layout_linkanades": "リンクの解析を切り替え",
"lang_layout_tts": "読み上げ",
"lang_layout_reconnect": "カラム再読込",
"lang_layout_headercolor": "TLヘッダーカラー",
"lang_layout_nodata": "[ここにトゥートはありません。]<br>F5/⌘+Rで再読込できます。",
"lang_layout_dm": "ダイレクトメッセージ",
"lang_layout_webviewmode": "WebView優先",
"lang_excluded": "除外する通知",
"lang_layout_excludingbt": "BT表示(OFF/BT除外/BTのみ)",
"lang_layout_leftFold": "左へ重ねる",
"lang_layout_leftUnfold": "右へ出す",
"lang_layout_deleteColumn": "カラム削除",
"lang_layout_deleteColumnDesc": "カラムを削除しますか?",
"lang_layout_unread": "未読",
//ui/sort.js
"lang_sort_gothis": "このカラムへ",
"lang_sort_remthis": "このカラムを削除",
//ui/spotify.js
"lang_spotify_img": "アルバムアートワークを添付します。",
"lang_spotify_imgno": "アルバムアートワークを添付しません。",
"lang_spotify_acct": "アカウント連携をしてください。",
"lang_spotify_np": "NowPlaying文書を更新しました。",
"lang_setting_npprovide": "NowPlayingのソースを{{set}}に設定しました。",
//userdata/his-data.js
"lang_hisdata_frcreq": "Mastodon 2.4.3~が必要です",
"lang_hisdata_frcwarn": "非フォローだけど絡みがある時に表示されます。",
"lang_hisdata_taketime": "30秒から数分かかります",
"lang_hisdata_notonmisskey": "このシステムはMisskeyにはありません。",
"lang_hisdata_key": "このユーザーの信頼性は{{set}}によって示されています",
//userdata/showOnTL.js
"lang_showontl_movetxt": "このアカウントは移行しています",
"lang_showontl_movebtn": "移行先を見る",
"lang_showontl_botacct": "botアカウント",
"lang_showontl_followed": "フォローされています",
"lang_showontl_notf": "通知",
"lang_showontl_domain": "ドメイン",
"lang_showontl_listwarn": "リストに追加するためにはフォローが必要です。",
"lang_showontl_verified": "このユーザーの所持するWebサイトであると証明されています。",
//parse
"lang_parse_mentioned": "が返信しました",
"lang_parse_faved": "がお気に入り登録しました",
"lang_parse_bted": "がブーストしました",
"lang_parse_btedsimple": "がブースト",
"lang_parse_polled": "のアンケート",
"lang_parse_notftime": "通知された時間",
"lang_parse_cwshow": "見る",
"lang_parse_fulltext": "以下全文",
"lang_parse_autofold": "自動折り畳み",
"lang_parse_more": "続き...",
"lang_parse_url": "URL解析",
"lang_parse_tagTL": "{{tag}}のタイムライン",
"lang_parse_tagtoot": "{{tag}}でトゥート",
"lang_parse_tagpin": "{{tag}}をよく使うタグへ",
"lang_parse_public": "公開",
"lang_parse_unlisted": "未収載",
"lang_parse_private": "非公開",
"lang_parse_direct": "ダイレクト",
"lang_parse_clickcopy": "クリックして本文をコピー",
"lang_parse_clickcopyurl": "クリックしてトゥートURLをコピー",
"lang_parse_trans": "このトゥートを日本語に翻訳",
"lang_parse_replyto": "このトゥートに返信",
"lang_parse_bt": "このトゥートをブースト",
"lang_parse_fav": "このトゥートをお気に入り登録",
"lang_parse_quote": "このトゥートを引用",
"lang_parse_del": "このトゥートを削除",
"lang_parse_pin": "このトゥートをピン留め",
"lang_parse_det": "詳細(メインアカウント経由)",
"lang_parse_redraft": "このトゥートを削除して再編集",
"lang_parse_followed": "フォローされました。",
"lang_parse_clientop": "クライアント操作",
"lang_parse_clienttxt": " に対する処理を選択してください。",
"lang_parse_clientno": "何もしない",
"lang_parse_clientemp": "強調表示/解除",
"lang_parse_clientmute": "ミュート",
"lang_parse_mute": "ミュートします。設定から解除できます。",
"lang_parse_voted": "投票済みです",
"lang_parse_vote": "投票",
"lang_parse_unvoted": "結果だけ見る",
"lang_parse_endedvote": "終了済み",
"lang_parse_thread": "会話を表示",
"lang_parse_unknown": "添付ファイル",
"lang_parse_nsfw": "閲覧注意",
"lang_parse_notffilter": "このユーザーの通知のみを表示",
//misskey
"lang_misskeyparse_renote":"再投稿",
"lang_misskeyparse_renoteqt":"引用",
"lang_misskeyparse_reaction":"リアクション",
"lang_misskeyparse_tagnostr":"タグTLはストリーミング非対応です。",
"lang_misskeyparse_listnostr":"リストTLはストリーミング非対応です。",
"lang_misskeyparse_home":"ホーム",
"lang_misskeyparse_followers":"フォロワー",
"lang_misskeyparse_specified":"ユーザー指定",
"lang_misskeyparse_qt":"MisskeyのRenote(引用モード)中:Ctrl+Shift+Cでクリア",
"lang_misskeyparse_renoted":"がRepost",
"lang_misskeyparse_quoted":"が引用",
"lang_misskeyparse_reacted":"がリアクション",
//setting
"lang_setting_time":"時間設定を{{set}}に設定しました。",
"lang_setting_theme":"テーマ設定を{{set}}に設定しました。",
"lang_setting_nsfw":"画像表示設定を{{set}}に設定しました。",
"lang_setting_cw":"テキスト表示設定を{{set}}に設定しました。",
"lang_setting_cwtext":"デフォルトの警告文を「{{set}}」に設定しました。",
"lang_setting_cws":"標準でCW:{{set}}",
"lang_setting_rp":"リプライ数表示:{{set}}",
"lang_setting_vis":"デフォルトの公開設定を{{set}}に設定しました。",
"lang_setting_popup":"ポップアップお知らせを{{set}}に設定しました。",
"lang_setting_off":"オフ",
"lang_setting_s":"秒",
"lang_setting_box":"デフォルトでのボックスの挙動を{{set}}に設定しました。",
"lang_setting_gif":"アイコンアニメーション再生を{{set}}に設定しました。",
"lang_setting_selt":"{{set1}}行以上または{{set2}}文字以上でテキストを隠します。",
"lang_setting_autocw":"{{set1}}行以上または{{set2}}文字以上で警告を表示します。",
"lang_setting_width":"横幅最低を{{set}}pxに設定しました。",
"lang_setting_fixwidth":"TweetDeckの横幅を{{set}}pxに設定しました。",
"lang_setting_img":"画像投稿後の設定を「{{set}}」に設定しました。",
"lang_setting_font":"フォントを{{set}}に設定しました。",
"lang_setting_default":"デフォルト",
"lang_setting_size":"フォントサイズを{{set}}pxに設定しました。",
"lang_setting_imgheight":"画像高さを{{set}}pxに設定しました。",
"lang_setting_ticker":"#InstanceTicker使用を{{set}}に設定しました。",
"lang_setting_animation":"アニメーションを{{set}}に設定しました。",
"lang_setting_tag":"タグの取得範囲を「{{set}}」に設定しました。",
"lang_setting_boxConfirm":"投稿ボックスを{{set}}",
"lang_setting_ul":"独自ロケール設定を{{set}}に設定しました。",
"lang_setting_notf":"ネイティブ通知を{{set}}に設定しました。",
"lang_setting_quote":"引用形式を{{set}}に設定しました。",
"lang_setting_via":"via表示を{{set}}に設定しました。",
"lang_setting_mov":"アクションボタン非表示を{{set}}に設定しました。",
"lang_setting_setasread":"通知カラム存在時新着非表示を{{set}}に設定しました。",
"lang_setting_main":"起動時・投稿時のアカウントを{{set}}に設定しました。",
"lang_setting_sec":"セカンダリートゥートボタン:{{set}}",
"lang_setting_ksref":"キーボードショートカットが更新されました。",
"lang_setting_nomuting":"ミュートしているクライアントはありません。",
"lang_setting_notftest":"通知テスト",
"lang_setting_notftestprof":"アイコンはあなたのアカウントのものです。",
"lang_setting_exportwarn":"重要なデータのみエクスポートされます。エクスポートされたデータは外部に公開しないでください。全ての認証データが含まれています。",
"lang_setting_importwarn":"全てのデータがリセットされます。"
"lang_misskeyparse_renote": "再投稿",
"lang_misskeyparse_renoteqt": "引用",
"lang_misskeyparse_reaction": "リアクション",
"lang_misskeyparse_tagnostr": "タグTLはストリーミング非対応です。",
"lang_misskeyparse_listnostr": "リストTLはストリーミング非対応です。",
"lang_misskeyparse_home": "ホーム",
"lang_misskeyparse_followers": "フォロワー",
"lang_misskeyparse_specified": "ユーザー指定",
"lang_misskeyparse_qt": "MisskeyのRenote(引用モード)中:Ctrl+Shift+Cでクリア",
"lang_misskeyparse_renoted": "がRepost",
"lang_misskeyparse_quoted": "が引用",
"lang_misskeyparse_reacted": "がリアクション",
//setting
"lang_setting_time": "時間設定を{{set}}に設定しました。",
"lang_setting_theme": "テーマ設定を{{set}}に設定しました。",
"lang_setting_nsfw": "画像表示設定を{{set}}に設定しました。",
"lang_setting_cw": "テキスト表示設定を{{set}}に設定しました。",
"lang_setting_cwtext": "デフォルトの警告文を「{{set}}」に設定しました。",
"lang_setting_cws": "標準でCW:{{set}}",
"lang_setting_rp": "リプライ数表示:{{set}}",
"lang_setting_vis": "デフォルトの公開設定を{{set}}に設定しました。",
"lang_setting_popup": "ポップアップお知らせを{{set}}に設定しました。",
"lang_setting_off": "オフ",
"lang_setting_s": "秒",
"lang_setting_box": "デフォルトでのボックスの挙動を{{set}}に設定しました。",
"lang_setting_gif": "アイコンアニメーション再生を{{set}}に設定しました。",
"lang_setting_selt": "{{set1}}行以上または{{set2}}文字以上でテキストを隠します。",
"lang_setting_autocw": "{{set1}}行以上または{{set2}}文字以上で警告を表示します。",
"lang_setting_width": "横幅最低を{{set}}pxに設定しました。",
"lang_setting_fixwidth": "TweetDeckの横幅を{{set}}pxに設定しました。",
"lang_setting_img": "画像投稿後の設定を「{{set}}」に設定しました。",
"lang_setting_font": "フォントを{{set}}に設定しました。",
"lang_setting_default": "デフォルト",
"lang_setting_size": "フォントサイズを{{set}}pxに設定しました。",
"lang_setting_imgheight": "画像高さを{{set}}pxに設定しました。",
"lang_setting_ticker": "#InstanceTicker使用を{{set}}に設定しました。",
"lang_setting_animation": "アニメーションを{{set}}に設定しました。",
"lang_setting_tag": "タグの取得範囲を「{{set}}」に設定しました。",
"lang_setting_boxConfirm": "投稿ボックスを{{set}}",
"lang_setting_ul": "独自ロケール設定を{{set}}に設定しました。",
"lang_setting_notf": "ネイティブ通知を{{set}}に設定しました。",
"lang_setting_quote": "引用形式を{{set}}に設定しました。",
"lang_setting_via": "via表示を{{set}}に設定しました。",
"lang_setting_mov": "アクションボタン非表示を{{set}}に設定しました。",
"lang_setting_setasread": "通知カラム存在時新着非表示を{{set}}に設定しました。",
"lang_setting_main": "起動時・投稿時のアカウントを{{set}}に設定しました。",
"lang_setting_sec": "セカンダリートゥートボタン:{{set}}",
"lang_setting_ksref": "キーボードショートカットが更新されました。",
"lang_setting_nomuting": "ミュートしているクライアントはありません。",
"lang_setting_notftest": "通知テスト",
"lang_setting_notftestprof": "アイコンはあなたのアカウントのものです。",
"lang_setting_exportwarn": "重要なデータのみエクスポートされます。エクスポートされたデータは外部に公開しないでください。全ての認証データが含まれています。",
"lang_setting_importwarn": "全てのデータがリセットされます。"
}

View File

@@ -1,4 +1,4 @@
var lang={
var lang = {
"language": "crwdns1960:0crwdne1960:0",
"lang_toot": "crwdns1962:0crwdne1962:0",
"lang_there": "crwdns1964:0crwdne1964:0",

View File

@@ -1,110 +1,88 @@
//インスタンスリスト
var idata={
"kirishima.cloud":"instance",
"kirishima.cloud_name":"アスタルテ",
"kirishima.cloud_letters":"6229",
"kirishima.cloud_bbcode":"enabled",
"kirishima.cloud_markdown":"enabled",
"kirishima.cloud_glitch":"enabled",
"kirishima.cloud_public":"パブリックタイムライン",
"minohdon.jp":"instance",
"minohdon.jp_name":"箕面",
"minohdon.jp_letters":"500",
"minohdon.jp_bbcode":"disabled",
"minohdon.jp_markdown":"disabled",
"minohdon.jp_glitch":"disabled",
"knzk.me":"instance",
"knzk.me_name":"神崎丼",
"knzk.me_letters":"5000",
"knzk.me_bbcode":"disabled",
"knzk.me_markdown":"disabled",
"knzk.me_glitch":"enabled",
"mastodos.com":"instance",
"mastodos.com_name":"マストどす",
"mastodos.com_letters":"500",
"mastodos.com_bbcode":"disabled",
"mastodos.com_markdown":"disabled",
"mastodos.com_glitch":"disabled",
"dev.kirishima.cloud":"hidden",
"dev.kirishima.cloud_name":"アスタルテ(Dev)",
"dev.kirishima.cloud_letters":"6229",
"dev.kirishima.cloud_bbcode":"enabled",
"dev.kirishima.cloud_markdown":"enabled",
"dev.kirishima.cloud_glitch":"enabled",
"mstdn.y-zu.org":"instance",
"mstdn.y-zu.org_name":"Yづドン!(502 BadGateway)",
"mstdn.y-zu.org_letters":"500",
"mstdn.y-zu.org_bbcode":"disabled",
"mstdn.y-zu.org_markdown":"enabled",
"mstdn.y-zu.org_glitch":"disabled",
"imastodon.net":"instance",
"imastodon.net_name":"im@stodon",
"imastodon.net_letters":"500",
"imastodon.net_bbcode":"disabled",
"imastodon.net_markdown":"disabled",
"imastodon.net_home":"オフィス",
"imastodon.net_local":"楽屋",
"imastodon.net_notification":"ホワイトボード",
"imastodon.net_public":"ライブステージ",
"imastodon.net_post":"あふぅ",
"imastodon.net_fav":"の頭にティンときたようです",
"imastodon.net_bt":":「わかるわ」",
"imastodon.net_follow":"名刺をいただきました",
"imastodon.net_glitch":"disabled",
"mstdn.osaka":"instance",
"mstdn.osaka_name":"大阪丼",
"mstdn.osaka_letters":"500",
"mstdn.osaka_bbcode":"disabled",
"mstdn.osaka_markdown":"disabled",
"mstdn.osaka_home":"ウチ",
"mstdn.osaka_local":"近所",
"mstdn.osaka_notification":"あめちゃん",
"mstdn.osaka_public":"新世界",
"mstdn.osaka_post":"なんや!",
"mstdn.osaka_fav":"がええやん言いました",
"mstdn.osaka_bt":"がしばいた",
"mstdn.osaka_follow":"ツルまれました",
"mstdn.osaka_glitch":"disabled",
"mstdn.kemono-friends.info":"instance",
"mstdn.kemono-friends.info_name":"ますとどんちほー",
"mstdn.kemono-friends.info_letters":"1024",
"mstdn.kemono-friends.info_bbcode":"disabled",
"mstdn.kemono-friends.info_markdown":"disabled",
"mstdn.kemono-friends.info_home":"なわばり",
"mstdn.kemono-friends.info_local":"ますとどんちほー",
"mstdn.kemono-friends.info_notification":"ねえねえ!",
"mstdn.kemono-friends.info_public":"ジャパリパーク",
"mstdn.kemono-friends.info_post":"がおー!",
"mstdn.kemono-friends.info_fav":":「すごーい」",
"mstdn.kemono-friends.info_bt":":「たーのしー」",
"mstdn.kemono-friends.info_glitch":"disabled",
"itabashi.0j0.jp":"instance",
"itabashi.0j0.jp_name":"板橋丼",
"itabashi.0j0.jp_letters":"1024",
"itabashi.0j0.jp_bbcode":"disabled",
"itabashi.0j0.jp_markdown":"disabled",
"itabashi.0j0.jp_glitch":"disabled",
"theboss.tech":"instance",
"theboss.tech_name":"theboss.tech",
"theboss.tech_letters":"1000",
"theboss.tech_bbcode":"disabled",
"theboss.tech_markdown":"disabled",
"theboss.tech_glitch":"disabled",
"dtp-mstdn.jp":"instance",
"dtp-mstdn.jp_name":"DTP鯖",
"dtp-mstdn.jp_letters":"500",
"dtp-mstdn.jp_bbcode":"disabled",
"dtp-mstdn.jp_markdown":"disabled",
"dtp-mstdn.jp_glitch":"disabled",
"misskey.xyz":"instance",
"misskey.xyz_name":"Misskey",
"misskey.xyz_letters":"1000",
"misskey.xyz_bbcode":"disabled",
"misskey.xyz_markdown":"enabled",
"misskey.xyz_public":"Global",
"misskey.xyz_post":"Post",
"misskey.xyz_fav":" reacted your post.",
"misskey.xyz_bt":" reposted your post.",
var idata = {
"kirishima.cloud": "instance",
"kirishima.cloud_name": "アスタルテ",
"kirishima.cloud_letters": "6229",
"kirishima.cloud_bbcode": "enabled",
"kirishima.cloud_markdown": "enabled",
"kirishima.cloud_glitch": "enabled",
"kirishima.cloud_public": "パブリックタイムライン",
"minohdon.jp": "instance",
"minohdon.jp_name": "箕面どん",
"fedibird.com":"instance",
"fedibird.com_name":"Fedibird",
"fedibird.com_quote":"enabled",
"mastodos.com": "instance",
"mastodos.com_name": "マストどす",
"dev.kirishima.cloud": "hidden",
"dev.kirishima.cloud_name": "アスタルテ(Dev)",
"dev.kirishima.cloud_letters": "6229",
"dev.kirishima.cloud_bbcode": "enabled",
"dev.kirishima.cloud_markdown": "enabled",
"dev.kirishima.cloud_glitch": "enabled",
"mstdn.y-zu.org": "instance",
"mstdn.y-zu.org_name": "Yづドン(Y-zuDon)",
"imastodon.net": "instance",
"imastodon.net_name": "im@stodon",
"imastodon.net_home": "オフィス",
"imastodon.net_local": "楽屋",
"imastodon.net_notification": "ホワイトボード",
"imastodon.net_public": "ライブステージ",
"imastodon.net_post": "あふぅ",
"imastodon.net_fav": "の頭にティンときたようです",
"imastodon.net_bt": ":「わかるわ」",
"imastodon.net_follow": "名刺をいただきました",
"mstdn.osaka_home": "ウチ",
"mstdn.osaka_local": "近所",
"mstdn.osaka_notification": "あめちゃん",
"mstdn.osaka_public": "新世界",
"mstdn.osaka_post": "なんや!",
"mstdn.osaka_fav": "がええやん言いました",
"mstdn.osaka_bt": "がしばいた",
"mstdn.osaka_follow": "ツルまれました",
"mstdn.kemono-friends.info": "instance",
"mstdn.kemono-friends.info_name": "ますとどんちほー",
"mstdn.kemono-friends.info_letters": "1024",
"mstdn.kemono-friends.info_home": "なわばり",
"mstdn.kemono-friends.info_local": "ますとどんちほー",
"mstdn.kemono-friends.info_notification": "ねえねえ!",
"mstdn.kemono-friends.info_public": "ジャパリパーク",
"mstdn.kemono-friends.info_post": "がおー!",
"mstdn.kemono-friends.info_fav": ":「すごーい」",
"mstdn.kemono-friends.info_bt": ":「たーのしー」",
"itabashi.0j0.jp": "instance",
"itabashi.0j0.jp_name": "板橋丼",
"itabashi.0j0.jp_letters": "1024",
"itabashi.0j0.jp_quote":"enabled",
"dtp-mstdn.jp": "instance",
"dtp-mstdn.jp_name": "dtp-mstdn.jp",
"dtp-mstdn.jp_quote":"enabled",
"misskey.io": "misskey",
"misskey.io_name": "misskey.io",
"misskey.io_letters": "1000",
"misskey.io_bbcode": "disabled",
"misskey.io_markdown": "enabled",
"misskey.io_public": "Global",
"misskey.io_post": "Post",
"misskey.io_fav": " reacted your post.",
"misskey.io_bt": " reposted your post.",
"misskey.dev": "misskey",
"misskey.dev_name": "misskey.dev",
"misskey.dev_letters": "1024",
"misskey.dev_bbcode": "disabled",
"misskey.dev_markdown": "enabled",
"misskey.dev_public": "Global",
"misskey.dev_post": "Post",
"misskey.dev_fav": " reacted your post.",
"misskey.dev_bt": " reposted your post.",
"precure.ml": "instance",
"precure.ml_name": "キュアスタ!",
"precure.ml_letters": "1024",
"precure.ml_post": "キュア!",
"odakyu.app_quote":"enabled",
"nitiasa.com_quote":"enabled",
"biwakodon.com_quote":"enabled",
"comm.cx_quote":"enabled"
};
localStorage.setItem("instance", JSON.stringify(idata));

View File

@@ -3,74 +3,59 @@
//アスタルテ判定初期化
localStorage.removeItem("kirishima")
localStorage.removeItem("quoters")
localStorage.removeItem("imas")
localStorage.removeItem("image");
localStorage.removeItem("stable")
localStorage.setItem("mode_misskey.xyz","misskey")
localStorage.setItem("mode_misskey.xyz", "misskey")
function ck() {
var main = localStorage.getItem("main");
if(!main){
localStorage.setItem("main",0)
if (!main) {
localStorage.setItem("main", 0)
}
var domainz = localStorage.getItem("domain_0");
var at = localStorage.getItem("acct_0_at");
var oldat = localStorage.getItem(domainz + "_at");
if(oldat){
console.log("Move to New Account Management System")
var multi = localStorage.getItem("multi");
if (!multi) {
var acctlen=1;
} else {
var obj = JSON.parse(multi);
var acctlen=obj.length;
}
for(i=0;acctlen>i;i++){
var domain = localStorage.getItem("domain_"+i);
var oldat = localStorage.getItem(domain + "_at");
var newat = localStorage.setItem("acct_"+ i + "_at",oldat);
localStorage.removeItem(domain + "_at");
}
}
//コード受信
if(location.search){
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=="manager" || mode=="login"){
code(codex,mode);
}else{
var mode = m[1];
var codex = m[2];
if (mode == "manager" || mode == "login") {
code(codex, mode);
} else {
}
}
var multi = localStorage.getItem("multi");
if (!multi) {
var obj = [];
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
if (!multi || multi == "[]") {
var date = new Date();
localStorage.setItem("showSupportMe", date.getMonth() + 2)
location.href = "acct.html?mode=first&code=true"
} else {
var obj = JSON.parse(multi);
}
Object.keys(obj).forEach(function(key) {
var acct=obj[key];
if(acct.domain){
refresh(key,true)
Object.keys(obj).forEach(function (key) {
var acct = obj[key];
if (acct.domain) {
refresh(key, true)
}
});
if (obj[0].domain) {
$("#tl").show();
ticker();
multiSelector(false);
verck(ver);
$(".stw").show()
$("#something-wrong img").attr("src", "../../img/thinking.svg")
}
});
console.log(obj);
if (obj[0].domain) {
$("#tl").show();
ticker();
multiSelector();
} else {
$("#tl").show();
$("#post-box").hide();
}
}
ck();
//ログインポップアップ
function login(url) {
if($('#linux:checked').val()=="on"){
if ($('#linux:checked').val() == "on") {
var red = "urn:ietf:wg:oauth:2.0:oob"
}else{
} else {
var red = 'thedesk://login';
}
localStorage.setItem("redirect", red);
@@ -85,28 +70,23 @@ function login(url) {
redirect_uris: red,
website: "https://thedesk.top"
}));
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
var auth = "https://" + url + "/oauth/authorize?client_id=" + json[
"client_id"] + "&client_secret=" + json["client_secret"] +
"&response_type=code&redirect_uri="+red+"&scope=read+write+follow";
localStorage.setItem("domain_" + acct_id, url);
localStorage.setItem("client_id", json["client_id"]);
localStorage.setItem("client_secret", json["client_secret"]);
$("#auth").show();
$("#masara").hide();
const { shell } = require('electron');
"&response_type=code&redirect_uri=" + red + "&scope=read+write+follow";
localStorage.setItem("domain_" + acct_id, url);
localStorage.setItem("client_id", json["client_id"]);
localStorage.setItem("client_secret", json["client_secret"]);
$("#auth").show();
$("#masara").hide();
postMessage(["openUrl", auth], "*")
shell.openExternal(auth);
if($('#linux:checked').val()=="on"){
}else{
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('quit', 'go');
}
if ($('#linux:checked').val() == "on") {
} else {
postMessage(["sendSinmpleIpc", "quit"], "*")
}
}
}
}
@@ -119,15 +99,15 @@ function instance() {
//コードを入れた後認証
function code(code,mode) {
function code(code, mode) {
var red = localStorage.getItem("redirect");
localStorage.removeItem("redirect")
if(!code){
if (!code) {
var code = $("#code").val();
}
if(localStorage.getItem("domain_tmp")){
if (localStorage.getItem("domain_tmp")) {
var url = localStorage.getItem("domain_tmp");
}else{
} else {
var url = localStorage.getItem("domain_" + acct_id);
}
var start = "https://" + url + "/oauth/token";
@@ -145,21 +125,21 @@ function code(code,mode) {
client_secret: secret,
code: code
})
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
}).then(function (json) {
todo(json);
if (json["access_token"]) {
localStorage.setItem(url + "_at", json["access_token"]);
if(mode=="manager"){
if (mode == "manager") {
getdataAdv(url, json["access_token"]);
}else{
} else {
getdata();
}
}
});
}
@@ -168,7 +148,7 @@ function code(code,mode) {
function getdata() {
var acct_id = 0;
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/accounts/verify_credentials";
fetch(start, {
method: 'GET',
@@ -176,23 +156,21 @@ function getdata() {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
}).then(function (json) {
if (json.error) {
console.error("Error:" + json.error);
Materialize.toast(lang.lang_fatalerroroccured+"Error:" + json.error,
5000);
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 })
return;
}
var avatar=json["avatar"];
var avatar = json["avatar"];
//missingがmissingなやつ
if(avatar=="/avatars/original/missing.png"){
avatar="./img/missing.svg";
if (avatar == "/avatars/original/missing.png") {
avatar = "./img/missing.svg";
}
var obj = [{
at: at,
@@ -204,7 +182,6 @@ function getdata() {
vis: json["source"]["privacy"]
}];
var json = JSON.stringify(obj);
console.log(obj);
localStorage.setItem("multi", json);
localStorage.setItem("name_" + acct_id, json["display_name"]);
localStorage.setItem("user_" + acct_id, json["acct"]);
@@ -226,28 +203,26 @@ function getdataAdv(domain, at) {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
}).then(function (json) {
if (json.error) {
console.error("Error:" + json.error);
Materialize.toast(lang.lang_fatalerroroccured+"Error:" + json.error,
5000);
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 })
return;
}
var avatar=json["avatar"];
var avatar = json["avatar"];
//missingがmissingなやつ
if(avatar=="/avatars/original/missing.png"){
avatar="../../img/missing.svg";
if (avatar == "/avatars/original/missing.png") {
avatar = "../../img/missing.svg";
}
if(json["source"]["privacy"]){
var priv=json["source"]["privacy"];
}else{
var priv="public";
if (json["source"]["privacy"]) {
var priv = json["source"]["privacy"];
} else {
var priv = "public";
}
var add = {
at: at,
@@ -266,45 +241,41 @@ function getdataAdv(domain, at) {
localStorage.setItem("user_" + target, json["acct"]);
localStorage.setItem("user-id_" + target, json["id"]);
localStorage.setItem("prof_" + target, avatar);
console.log(obj);
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
location.href="index.html";
location.href = "index.html";
});
}
//ユーザーデータ更新
function refresh(target,loadskip) {
function refresh(target, loadskip) {
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
if(obj[target].mode=="misskey"){
if (obj[target].mode == "misskey") {
return
}
var start = "https://" + obj[target].domain +
"/api/v1/accounts/verify_credentials";
console.log(start);
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + obj[target].at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
}).then(function (json) {
if (json.error) {
console.error("Error:" + json.error);
Materialize.toast(lang.lang_fatalerroroccured+"Error:" + json.error,
5000);
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 })
return;
}
var avatar=json["avatar"];
var avatar = json["avatar"];
//missingがmissingなやつ
if(avatar=="/avatars/original/missing.png" || !avatar){
avatar="./img/missing.svg";
if (avatar == "/avatars/original/missing.png" || !avatar) {
avatar = "./img/missing.svg";
}
var ref = {
at: obj[target].at,
@@ -318,14 +289,12 @@ function refresh(target,loadskip) {
localStorage.setItem("name_" + target, json["display_name"]);
localStorage.setItem("user_" + target, json["acct"]);
localStorage.setItem("user-id_" + target, json["id"]);
console.log("user-id_" + target+":"+json["id"])
console.log(localStorage.getItem("user-id_"+target));
localStorage.setItem("prof_" + target, avatar);
localStorage.setItem("follow_" + target, json["following_count"]);
obj[target] = ref;
console.log(obj)
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
if(!loadskip){
if (!loadskip) {
load();
}
});
@@ -344,100 +313,103 @@ function ckdb(acct_id) {
localStorage.removeItem("fav_" + acct_id);
localStorage.removeItem("bt_" + acct_id);
localStorage.removeItem("followlocale_" + acct_id);
if(domain=="kirishima.cloud"){
if (domain == "kirishima.cloud") {
localStorage.setItem("kirishima", "true");
$("#ranking-btn").show();
}else if(domain=="imastodon.net"){
} else if (domain == "imastodon.net") {
localStorage.setItem("imas", "true");
$(".imasonly").show();
}
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var bbcode = domain + "_bbcode";
var letters = domain + "_letters";
if(localStorage.getItem("instance")){
var json=JSON.parse(localStorage.getItem("instance"));
if (json[bbcode]) {
if (json[bbcode] == "enabled") {
localStorage.setItem("bb_" + acct_id, "true");
} else {
localStorage.removeItem("bb_" + acct_id);
$("[data-activates='bbcode']").addClass("disabled");
$("[data-activates='bbcode']").prop("disabled", true);
}
var quoteMarker = domain + "_quote";
if (localStorage.getItem("instance")) {
var json = JSON.parse(localStorage.getItem("instance"));
if (json[quoteMarker] == "enabled") {
localStorage.setItem("quoters", "true");
localStorage.setItem("quote_" + acct_id, "true");
}
if (json[bbcode]) {
if (json[bbcode] == "enabled") {
localStorage.setItem("bb_" + acct_id, "true");
} else {
localStorage.removeItem("bb_" + acct_id);
$("[data-activates='bbcode']").addClass("disabled");
$("[data-activates='bbcode']").addClass("disabled", true);
}
if (json[domain + "_markdown"] == "enabled") {
localStorage.setItem("md_" + acct_id, "true");
$(".markdown").show();
}else{
$(".anti-markdown").hide();
$(".markdown").hide();
localStorage.removeItem("bb_" + acct_id);
}
if(json[domain + "_home"]){
console.log("unique name:"+json[domain + "_home"]);
localStorage.setItem("home_" + acct_id, json[domain + "_home"]);
}
if(json[domain + "_local"]){
localStorage.setItem("local_" + acct_id, json[domain + "_local"]);
}
if(json[domain + "_public"]){
localStorage.setItem("public_" + acct_id, json[domain + "_public"]);
}
if(json[domain + "_notification"]){
localStorage.setItem("notification_" + acct_id, json[domain + "_notification"]);
}
if(json[domain + "_post"]){
localStorage.setItem("post_" + acct_id, json[domain + "_post"]);
}
if(json[domain + "_fav"]){
localStorage.setItem("fav_" + acct_id, json[domain + "_fav"]);
}
if(json[domain + "_bt"]){
localStorage.setItem("bt_" + acct_id, json[domain + "_bt"]);
}
if(json[domain + "_follow"]){
localStorage.setItem("followlocale_" + acct_id, json[domain + "_follow"]);
$("[data-activates='bbcode']").prop("disabled", true);
}
} else {
localStorage.removeItem("bb_" + acct_id);
$("[data-activates='bbcode']").addClass("disabled");
$("[data-activates='bbcode']").addClass("disabled", true);
}
if (json[domain + "_markdown"] == "enabled") {
localStorage.setItem("md_" + acct_id, "true");
$(".markdown").show();
} else {
$(".anti-markdown").hide();
$(".markdown").hide();
localStorage.removeItem("bb_" + acct_id);
}
if (json[domain + "_home"]) {
localStorage.setItem("home_" + acct_id, json[domain + "_home"]);
}
if (json[domain + "_local"]) {
localStorage.setItem("local_" + acct_id, json[domain + "_local"]);
}
if (json[domain + "_public"]) {
localStorage.setItem("public_" + acct_id, json[domain + "_public"]);
}
if (json[domain + "_notification"]) {
localStorage.setItem("notification_" + acct_id, json[domain + "_notification"]);
}
if (json[domain + "_post"]) {
localStorage.setItem("post_" + acct_id, json[domain + "_post"]);
}
if (json[domain + "_fav"]) {
localStorage.setItem("fav_" + acct_id, json[domain + "_fav"]);
}
if (json[domain + "_bt"]) {
localStorage.setItem("bt_" + acct_id, json[domain + "_bt"]);
}
if (json[domain + "_follow"]) {
localStorage.setItem("followlocale_" + acct_id, json[domain + "_follow"]);
}
}
if(localStorage.getItem("mode_" + domain)!="misskey"){
if (localStorage.getItem("mode_" + domain) != "misskey") {
var start = "https://" + domain + "/api/v1/instance";
fetch(start, {
method: 'GET',
headers: {
'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) {
console.log(json);
}).then(function (json) {
if (json.error) {
console.error(json.error);
return;
}
if(json){
if(json["max_toot_chars"]){
if (json) {
if (json["max_toot_chars"]) {
localStorage.setItem("letters_" + acct_id, json["max_toot_chars"]);
}
if(json["urls"]["streaming_api"]){
if (json["urls"]["streaming_api"]) {
localStorage.setItem("streaming_" + acct_id, json["urls"]["streaming_api"]);
}
}
});
}else{
} else {
}
}
//アカウントを選択…を実装
function multiSelector() {
function multiSelector(parseC) {
var multi = localStorage.getItem("multi");
if (!multi) {
var obj = [];
@@ -447,92 +419,97 @@ function multiSelector() {
var obj = JSON.parse(multi);
}
var templete;
if(localStorage.getItem("mainuse")=="main"){
if (localStorage.getItem("mainuse") == "main") {
var last = localStorage.getItem("main");
}else if(localStorage.getItem("last-use")){
} else if (localStorage.getItem("last-use")) {
var last = localStorage.getItem("last-use");
}else{
var last=0;
}
var sel;
if(obj.length<1){
$("#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) {
var acct = obj[key];
var list = key * 1 + 1;
if (key == last) {
sel = "selected";
var domain = acct.domain;
localStorage.setItem("domain_" + key, domain);
if(idata[domain+"_letters"]){
$("#textarea").attr("data-length", idata[domain+"_letters"])
}else{
var maxletters = localStorage.getItem("letters_" + key);
if(maxletters>0){
$("#textarea").attr("data-length", maxletters)
}else{
$("#textarea").attr("data-length", 500)
}
}
if(idata[domain+"_glitch"]){
$("#local-button").removeClass("hide")
}
var profimg = acct.prof;
localStorage.setItem("prof_" + key, profimg);
console.log(profimg);
if(!profimg){
profimg="../../img/missing.svg";
}
$("#acct-sel-prof").attr("src",profimg);
console.log(domain);
if(domain){
var cc="("+domain+")";
}else{
var cc="";
}
$("#toot-post-btn").text(lang.lang_toot+cc);
if(acct.background && acct.background!="def" && acct.text && acct.text!="def"){
$("#toot-post-btn").removeClass("indigo");
$("#toot-post-btn").css("background-color","#"+acct.background);
$("#toot-post-btn").css("color",acct.text);
}else{
}
if(domain=="kirishima.cloud"){
$("#faicon-btn").show();
}else{
$("#faicon-btn").hide();
}
if(domain=="imastodon.net"){
trendTag();
}else{
$("#trendtag").html("");
}
} else {
sel = "";
if (last == "webview" || last == "noauth") {
last = "0";
}
templete = '<option value="' + key + '" data-icon="' + acct.prof +
'" class="left circle" ' + sel + '>' + acct.user + '@' + acct.domain +
'</option>';
$(".acct-sel").append(templete);
});
$("#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>');
} else {
var last = "0";
}
last = last + "";
var sel;
if (obj.length < 1) {
$("#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) {
var acct = obj[key];
var list = key * 1 + 1;
if (key+"" === last) {
sel = "selected";
var domain = acct.domain;
localStorage.setItem("domain_" + key, domain);
if (idata[domain + "_letters"]) {
$("#textarea").attr("data-length", idata[domain + "_letters"])
} else {
var maxletters = localStorage.getItem("letters_" + key);
if (maxletters > 0) {
$("#textarea").attr("data-length", maxletters)
} else {
$("#textarea").attr("data-length", 500)
}
}
if (idata[domain + "_glitch"]) {
$("#local-button").removeClass("hide")
}
var profimg = acct.prof;
//localStorage.setItem("prof_" + key, profimg);
if (!profimg) {
profimg = "../../img/missing.svg";
}
$("#acct-sel-prof").attr("src", profimg);
if (domain) {
var cc = "(" + domain + ")";
} else {
var cc = "";
}
$("#toot-post-btn").text(lang.lang_toot + cc);
if (acct.background && acct.background != "def" && acct.text && acct.text != "def") {
$("#toot-post-btn").removeClass("indigo");
$("#toot-post-btn").css("background-color", "#" + acct.background);
$("#toot-post-btn").css("color", acct.text);
} else {
}
if (domain == "kirishima.cloud") {
$("#faicon-btn").show();
} else {
$("#faicon-btn").hide();
}
if (domain == "imastodon.net") {
trendTag();
} else {
$("#trendtag").html("");
}
} else {
sel = "";
}
templete = '<option value="' + key + '" data-icon="' + acct.prof +
'" class="left circle" ' + sel + '>' + acct.user + '@' + acct.domain +
'</option>';
$(".acct-sel").append(templete);
});
$("#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>');
$("#dir-acct-sel").append('<option value="noauth">' + lang.lang_login_noauth + '</option>');
}
$('select').formSelect();
if(!parseC){
parseColumn(null, true);
}
$('select').material_select('update');
parseColumn();
}
//バージョンエンコ
function enc(ver){
var ver = ver.replace( /\s/g , "" );
var ver = ver.replace( /\(/g , "-" );
var ver = ver.replace( /\)/g , "" );
var ver = ver.replace( /\[/g , "_" );
var ver = ver.replace( /\]/g , "" );
return ver;
function enc(ver) {
var ver = ver.replace(/\s/g, "");
var ver = ver.replace(/\(/g, "-");
var ver = ver.replace(/\)/g, "");
var ver = ver.replace(/\[/g, "_");
var ver = ver.replace(/\]/g, "");
return ver;
}
//インスタンスティッカー
function ticker() {
@@ -542,15 +519,14 @@ function ticker() {
headers: {
'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) {
if (json.error) {
return;
}
if(json){
}).then(function (json) {
console.log(json)
if (json) {
localStorage.setItem("ticker", 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";
function logout() {
localStorage.removeItem("acct_" + acct_id + "_at");
localStorage.removeItem("domain_" + acct_id);
location.href = "index.html";
todc();
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,167 +1,105 @@
//プラットフォーム別 最後に読むやつ
//リンクを外部で開くか内部で出すか
$(document).on('click', 'a', e => {
var $a = $(e.target);
var url = $a.attr('href');
if (!url) {
var url = $a.parent().attr('href');
}
var urls=[];
if(url){
$(document).on('click', 'a', e => {
var $a = $(e.target);
var url = $a.attr('href');
if (!url) {
var url = $a.parent().attr('href');
}
var urls = [];
if (url) {
urls = url.match(/https?:\/\/(.+)/);
//トゥートのURLぽかったら
toot = url.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
toot = url.match(/https:\/\/([^+_]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
if(!toot){
//Pleroma対策
toot = url.match(/https:\/\/([^+_]+)\/users\/([a-zA-Z0-9_]+)\/statuses\/([0-9]+)/);
}
//タグのURLぽかったら
var tags=[];
tags = url.match(
/https:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
);
var tags = [];
tags = url.match(
/https:\/\/([^+_]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
);
//メンションっぽかったら
var ats=[];
ats = url.match(
/https:\/\/([-a-zA-Z0-9@.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
);
console.log(toot);
if(toot){
if(toot[1]){
var acct_id=$a.parent().attr("data-acct");
if(!acct_id){
acct_id=0;
var ats = [];
ats = url.match(
/https:\/\/([^+_]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/
);
if (toot) {
if (toot[1]) {
var acct_id = $a.parent().attr("data-acct");
if (!acct_id) {
acct_id = 0;
}
$a.parent().addClass("loadp")
$a.parent().text("Loading...")
detEx(url,acct_id);
detEx(url, acct_id);
}
}else if(tags){
if(tags[2]){
tagShow(tags[2]);
Materialize.toast('<a class="btn-flat toast-action" href="detEx(\''+url+'\')">Open in browser</a>', 86400);
}
}else if(ats){
console.log(ats);
if(ats[2]){
if(ats[1]!="quesdon.rinsuki.net"){
udgEx(ats[2]+"@"+ats[1],"main");
return false
}else{
const {
shell
} = require('electron');
shell.openExternal(url);
}
}
}else{
//hrefがhttp/httpsならブラウザで
if(urls){
if (urls[0]) {
const {shell} = require('electron');
if(~url.indexOf("thedeks.top")){
//alert("If you recieve this alert, let the developer(Cutls@kirishima.cloud) know it with a screenshot.");
url="https://thedesk.top";
}
shell.openExternal(url);
} else {
location.href = url;
}
}else{
location.href = url;
}
}
}
return false;
});
//よく使うライブラリ
/*マルチバイト用切り出し*/
$.isSurrogatePear = function(upper, lower) {
return 0xD800 <= upper && upper <= 0xDBFF && 0xDC00 <= lower && lower <= 0xDFFF;
};
$.mb_strlen = function(str) {
var ret = 0;
for (var i = 0; i < str.length; i++, ret++) {
var upper = str.charCodeAt(i);
var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0;
if ($.isSurrogatePear(upper, lower)) {
i++;
}
}
return ret;
};
$.mb_substr = function(str, begin, end) {
var ret = '';
for (var i = 0, len = 0; i < str.length; i++, len++) {
var upper = str.charCodeAt(i);
var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0;
var s = '';
if ($.isSurrogatePear(upper, lower)) {
i++;
s = String.fromCharCode(upper, lower);
} else {
s = String.fromCharCode(upper);
}
if (begin <= len && len < end) {
ret += s;
}
}
return ret;
};
//コピー
function execCopy(string){
} else if (tags) {
if (tags[2]) {
var acct_id = $a.parent().attr("data-acct");
if (!acct_id) {
acct_id = 0;
}
tl('tag', decodeURI(tags[2]), acct_id, 'add')
}
} else if (ats) {
if (ats[2]) {
//Quesdon判定
if (!~ats[2].indexOf("@")) {
udgEx(ats[2] + "@" + ats[1], "main");
return false
} else {
postMessage(["openUrl", url], "*")
}
}
} else {
//hrefがhttp/httpsならブラウザで
if (urls) {
if (urls[0]) {
if (~url.indexOf("thedeks.top")) {
//alert("If you recieve this alert, let the developer(Cutls@kirishima.cloud) know it with a screenshot.");
url = "https://thedesk.top";
}
postMessage(["openUrl", url], "*")
} else {
location.href = url;
}
} else {
location.href = url;
}
}
}
return false;
});
//よく使うライブラリ
//コピー
function execCopy(string) {
var temp = $("#copy");
temp.val(string);
temp.select();
var result = document.execCommand('copy');
return result;
}
//Nano
function nano(){
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('nano', "");
}
function progshow(e) {
if (e.lengthComputable) {
var percent = e.loaded / e.total;
console.log(percent * 100);
$("#imgsel").hide();
if(percent<1){
$("#imgup").text(Math.floor(percent*100)+"%");
}else{
$("#imgup").text(lang.lang_progress);
}
}
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.on('reload', function (event, arg) {
location.reload();
})
ipc.on('mess', function (event, arg) {
if(arg=="unzip"){
if(lang=="ja"){
$("body").text("アップデートを展開中です。");
}else{
$("body").text("Unzipping...");
var percent = e.loaded / e.total;
console.log("Progress: " + percent * 100);
$("#imgsel").hide();
if (percent < 1) {
$("#imgup").text(Math.floor(percent * 100) + "%");
} else {
$("#imgup").text(lang.lang_progress);
}
}
})
//Native Notf
ipc.on('shownotf', function (event, args) {
if(args["type"]=="toot"){
details(id, acct_id)
}else if(args["type"]=="userdata"){
udg(user, acct_id)
}
})
function opendev(){
}
function opendev() {
var webview = document.getElementById("webview");
webview.openDevTools();
/*webview.sendInputEvent({
@@ -170,11 +108,79 @@ function opendev(){
});
*/
}
var webview = document.getElementById('webview');
const {
shell
} = require('electron');
webview.addEventListener('new-window', function(e) {
shell.openExternal(e.url);
});
function playSound() {
window.AudioContext = window.AudioContext || window.webkitAudioContext;
context = new AudioContext();
context.createBufferSource().start(0);
context.decodeAudioData(request.response, function (buf) {
console.log("Playing:" + source)
source.buffer = buf;
source.loop = false;
});
source = context.createBufferSource();
volumeControl = context.createGain();
source.connect(volumeControl);
volumeControl.connect(context.destination);
volumeControl.gain.value = 0.8
source.start(0);
}
function nano() {
postMessage(["nano", null], "*")
}
onmessage = function (e) {
if (e.data[0] == "details") {
details(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "udg") {
udg(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "media") {
media(e.data[1][0], e.data[1][1], e.data[1][2])
} else if (e.data[0] == "post") {
post("pass")
} else if (e.data[0] == "toastSaved") {
M.toast({ html: lang.lang_img_DLDone + e.data[1][0] + '<button class="btn-flat toast-action" onclick="openFinder(\'' + e.data[1][1] + '\')">Show</button>', displayLength: 5000 })
} else if (e.data[0] == "parseColumn") {
parseColumn(e.data[1])
} else if (e.data[0] == "exportSettingsCore") {
var exp = exportSettingsCore()
postMessage(["exportSettingsCoreComplete", [e.data[1], exp]], "*")
} else if (e.data[0] == "importSettingsCore") {
importSettingsCore(e.data[1])
}else if (e.data[0] == "fontList") {
fontList(e.data[1])
} else if (e.data[0] == "customSoundSave") {
customSoundSave(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "ctLoadCore") {
ctLoadCore(e.data[1])
} else if (e.data[0] == "ctLoad") {
ctLoad()
} else if (e.data[0] == "customConnect") {
customConnect(e.data[1])
} else if (e.data[0] == "clearCustomImport") {
clearCustomImport()
} else if (e.data[0] == "npCore") {
npCore(e.data[1]);
} else if (e.data[0] == "renderMem") {
renderMem(e.data[1][0], e.data[1][1], e.data[1][2])
} else if (e.data[0] == "updateProg") {
updateProg(e.data[1]);
} else if (e.data[0] == "updateMess") {
updateMess(e.data[1]);
} else if (e.data[0] == "renderAbout") {
renderAbout(e.data[1]);
} else if (e.data[0] == "alert") {
Swal.fire({
type: 'info',
title: e.data[1]
})
}
}
window.addEventListener('load', function() {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register("/sw.js")
.then(function(registration) {
console.log("serviceWorker registed.");
}).catch(function(error) {
console.warn("serviceWorker error.", error);
});
}
});

View File

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

View File

@@ -1,160 +1,205 @@
//jQuery読む
window.jQuery = window.$ = require('../../js/common/jquery.js');
var Hammer = require('../../js/common/hammer.min.js');
$.strip_tags = function(str, allowed) {
if(!str){
function postMessage(e){
if(e[0]=="openUrl"){
window.open(e[1])
}
return false;
}
document.title="TheDesk"
$.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 allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
};
function escapeHTML(str) {
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 allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
};
function escapeHTML(str) {
if(!str){
return "";
}
return str.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
}
//PHPのnl2brと同様
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
}
//PHPのnl2brと同様
function nl2br(str) {
if(!str){
if (!str) {
return "";
}
str = str.replace(/\r\n/g, "<br />");
str = str.replace(/\r\n/g, "<br />");
str = str.replace(/(\n|\r)/g, "<br />");
return str;
}
function formattime(date){
var str=date.getFullYear()+"-";
if(date.getMonth()+1<10){
str=str+"0"+(date.getMonth()+1)+"-";
}else{
str=str+(date.getMonth()+1)+"-";
}
if(date.getDate()<10){
str=str+"0"+date.getDate()
}else{
str=str+date.getDate()
}
str=str+"T";
if(date.getHours()<10){
str=str+"0"+date.getHours()+":"
}else{
str=str+date.getHours()+":"
}
if(date.getMinutes()<10){
str=str+"0"+date.getMinutes()
}else{
str=str+date.getMinutes()
}
return str;
}
function formattimeutc(date){
var str=date.getUTCFullYear()+"-";
if(date.getUTCMonth()+1<10){
str=str+"0"+(date.getUTCMonth()+1)+"-";
}else{
str=str+(date.getUTCMonth()+1)+"-";
}
if(date.getUTCDate()<10){
str=str+"0"+date.getUTCDate()
}else{
str=str+date.getUTCDate()
}
str=str+"T";
if(date.getUTCHours()<10){
str=str+"0"+date.getUTCHours()+":"
}else{
str=str+date.getUTCHours()+":"
}
if(date.getUTCMinutes()<10){
str=str+"0"+date.getUTCMinutes()
}else{
str=str+date.getUTCMinutes()
function br2nl(str) {
if (!str) {
return "";
}
str = str.replace(/<br \/>/g, "\r\n");
return str;
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('custom-css-request', "");
ipc.on('custom-css-response', function (event, arg) {
if(arg==""){ return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type","text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
ipc.on('theme-css-response', function (event, arg) {
if(arg==""){ return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type","text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
function makeCID(){
return randomStr(8)+"-"+randomStr(4)+"-"+randomStr(4)+"-"+randomStr(4)+"-"+randomStr(12);
function formattime(date) {
var str = date.getFullYear() + "-";
if (date.getMonth() + 1 < 10) {
str = str + "0" + (date.getMonth() + 1) + "-";
} else {
str = str + (date.getMonth() + 1) + "-";
}
if (date.getDate() < 10) {
str = str + "0" + date.getDate()
} else {
str = str + date.getDate()
}
str = str + "T";
if (date.getHours() < 10) {
str = str + "0" + date.getHours() + ":"
} else {
str = str + date.getHours() + ":"
}
if (date.getMinutes() < 10) {
str = str + "0" + date.getMinutes()
} else {
str = str + date.getMinutes()
}
return escapeHTML(str);
}
function randomStr(l){
function formattimeutc(date) {
var str = date.getUTCFullYear() + "-";
if (date.getUTCMonth() + 1 < 10) {
str = str + "0" + (date.getUTCMonth() + 1) + "-";
} else {
str = str + (date.getUTCMonth() + 1) + "-";
}
if (date.getUTCDate() < 10) {
str = str + "0" + date.getUTCDate()
} else {
str = str + date.getUTCDate()
}
str = str + "T";
if (date.getUTCHours() < 10) {
str = str + "0" + date.getUTCHours() + ":"
} else {
str = str + date.getUTCHours() + ":"
}
if (date.getUTCMinutes() < 10) {
str = str + "0" + date.getUTCMinutes()
} else {
str = str + date.getUTCMinutes()
}
return escapeHTML(str);
}
postMessage(["sendSinmpleIpc", "custom-css-request"], "*")
function makeCID() {
return randomStr(8) + "-" + randomStr(4) + "-" + randomStr(4) + "-" + randomStr(4) + "-" + randomStr(12);
}
function randomStr(l) {
// 生成する文字列に含める文字セット
var c = "abcdefghijklmnopqrstuvwxyz0123456789";
var cl = c.length;
var r = "";
for(var i=0; i<l; i++){
r += c[Math.floor(Math.random()*cl)];
for (var i = 0; i < l; i++) {
r += c[Math.floor(Math.random() * cl)];
}
return r;
}
function rgbToHex(color)
{
// HEXに変換したものを代入する変数
var hex = '';
// 第1引数がHEXのとき変換処理は必要ないのでそのままreturn
// IE8の場合はjQueryのcss()関数でHEXを返すので除外
if (color.match(/^#[a-f\d]{3}$|^#[a-f\d]{6}$/i))
{
return color;
}
// 正規表現
var regex = color.match(/^rgb\(([0-9.]+),\s*([0-9.]+),\s*([0-9.]+)\)$/);
// 正規表現でマッチしたとき
if (regex)
{
var rgb =
[
// RGBからHEXへ変換
parseInt(regex[1]).toString(16),
parseInt(regex[2]).toString(16),
parseInt(regex[3]).toString(16)
];
for (var i = 0; i < rgb.length; ++i)
{
// rgb(1,1,1)のようなときHEXに変換すると1桁になる
// 1桁のときは前に0を足す
if (rgb[i].length == 1)
{
rgb[i] = '0' + rgb[i];
}
hex += rgb[i];
}
return hex;
}
console.error(color+':第1引数はRGB形式で入力');
}
function rgbToHex(color) {
// HEXに変換したものを代入する変数
var hex = '';
// 第1引数がHEXのとき変換処理は必要ないのでそのままreturn
// IE8の場合はjQueryのcss()関数でHEXを返すので除外
if (color.match(/^#[a-f\d]{3}$|^#[a-f\d]{6}$/i)) {
return color;
}
// 正規表現
var regex = color.match(/^rgb\(([0-9.]+),\s*([0-9.]+),\s*([0-9.]+)\)$/);
// 正規表現でマッチしたとき
if (regex) {
var rgb =
[
// RGBからHEXへ変換
parseInt(regex[1]).toString(16),
parseInt(regex[2]).toString(16),
parseInt(regex[3]).toString(16)
];
for (var i = 0; i < rgb.length; ++i) {
// rgb(1,1,1)のようなときHEXに変換すると1桁になる
// 1桁のときは前に0を足す
if (rgb[i].length == 1) {
rgb[i] = '0' + rgb[i];
}
hex += rgb[i];
}
return hex;
}
console.error(color + ':第1引数はRGB形式で入力');
}
/*マルチバイト用切り出し*/
$.isSurrogatePear = function (upper, lower) {
return 0xD800 <= upper && upper <= 0xDBFF && 0xDC00 <= lower && lower <= 0xDFFF;
};
$.mb_strlen = function (str) {
var ret = 0;
for (var i = 0; i < str.length; i++ , ret++) {
var upper = str.charCodeAt(i);
var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0;
if ($.isSurrogatePear(upper, lower)) {
i++;
}
}
return ret;
};
$.mb_substr = function (str, begin, end) {
var ret = '';
for (var i = 0, len = 0; i < str.length; i++ , len++) {
var upper = str.charCodeAt(i);
var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0;
var s = '';
if ($.isSurrogatePear(upper, lower)) {
i++;
s = String.fromCharCode(upper, lower);
} else {
s = String.fromCharCode(upper);
}
if (begin <= len && len < end) {
ret += s;
}
}
return ret;
};
//ソートするやつ
function object_array_sort(data, key, order, fn) {
var num_a = -1;
var num_b = 1;
if (order === 'asc') {
num_a = 1;
num_b = -1;
}
data = data.sort(function (a, b) {
var x = a[key];
var y = b[key];
if (x > y) return num_a;
if (x < y) return num_b;
return 0;
});
var arrObj = {};
for (var i = 0; i < data.length; i++) {
arrObj[data[i]['family']] = data[i];
}
data = [];
for (var key in arrObj) {
data.push(arrObj[key]);
}
fn(data);
}
localStorage.removeItem("errors");

View File

@@ -1,38 +1,37 @@
//TL取得
function tl(data) {
var tlid=0;
var acct_id = $("#post-acct-sel").val();
var type = $("#type-sel").val();
var tlid = 0;
var acct_id = $("#post-acct-sel").val();
var type = $("#type-sel").val();
var domain = localStorage.getItem("domain_" + acct_id);
//タグの場合はカラム追加して描画
if (!type) {
//デフォルト
var type = "local";
}
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if (!type) {
//デフォルト
var type = "local";
}
var at = localStorage.getItem("acct_" + acct_id + "_at");
$("#notice_nano").text(cap(type, data) + " TL(" + localStorage.getItem(
"user_" + acct_id) + "@" + domain + ")");
var start = "https://" + domain + "/api/v1/timelines/" + com(type, data);
console.log(start);
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
console.error(error);
}).then(function(json) {
}).then(function (json) {
var templete = parse([json[0]], '', acct_id, tlid);
$("#timeline_nano").html(templete);
jQuery("time.timeago").timeago();
});
//Streaming接続
var websocket=[];
var tlid=0;
//Streaming接続
var websocket = [];
var tlid = 0;
if (type == "home") {
var start = "wss://" + domain +
"/api/v1/streaming/?stream=user&access_token=" + at;
@@ -44,19 +43,14 @@ var websocket=[];
"/api/v1/streaming/?stream=public:local&access_token=" + at;
} else if (type == "tag") {
var start = "wss://" + domain +
"/api/v1/streaming/?stream=hashtag&tag=" + data +"&access_token=" + at;
}
console.log(start);
"/api/v1/streaming/?stream=hashtag&tag=" + data + "&access_token=" + at;
}
var wsid = websocket.length;
websocket[wsid] = new WebSocket(start);
websocket[wsid].onopen = function(mess) {
console.log(tlid + ":Connect Streaming API:" + type);
console.log(mess);
websocket[wsid].onopen = function (mess) {
$("#notice_icon_" + tlid).removeClass("red-text");
}
websocket[wsid].onmessage = function(mess) {
console.log(tlid + ":Receive Streaming API:");
console.log(websocket[wsid]);
websocket[wsid].onmessage = function (mess) {
var typeA = JSON.parse(mess.data).event;
if (typeA == "delete") {
var obj = JSON.parse(mess.data).payload;
@@ -64,15 +58,14 @@ var websocket=[];
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
} else if (typeA == "update") {
var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj);
var templete = parse([obj], '', acct_id, tlid);
$("#timeline_nano").html(templete);
var templete = parse([obj], '', acct_id, tlid);
$("#timeline_nano").html(templete);
}
websocket[wsid].onclose = function(mess) {
console.log("Close Streaming API:" + type);
websocket[wsid].onclose = function (mess) {
console.error("Close Streaming API:" + type);
}
}
websocket[wsid].onerror = function(error) {
websocket[wsid].onerror = function (error) {
console.error('WebSocket Error ' + error);
};
}
@@ -124,12 +117,12 @@ function icon(type) {
return "subject"
}
}
function todo(){}
function todc(){}
function hide(){}
$(function($) {
function todo() { }
function todc() { }
function hide() { }
$(function ($) {
//キーボードショートカット
$(window).keydown(function(e) {
$(window).keydown(function (e) {
var hasFocus = $('input').is(':focus');
var hasFocus2 = $('textarea').is(':focus');
//Ctrl+Enter:投稿

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

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

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

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

View File

@@ -1,51 +0,0 @@
var electron = require("electron");
const fs = require("fs");
const os = require('os')
const shell = electron.shell;
const path = require('path')
function shot(){
//screenshotMsg.textContent = 'Gathering screens...'
$(window).height
let options = {
types: ['screen'],
thumbnailSize: {
width: window.parent.screen.width,
height: window.parent.screen.height
}
}
const desktopCapturer = electron.desktopCapturer;
desktopCapturer.getSources(options, function(error, sources) {
if (error) return console.log(error)
sources.forEach(function(source) {
if(location.search){
var m = location.search.match(/\?id=([a-zA-Z-0-9]+)/);
var title=m[1];
}else{
var title="screenshot";
}
if (source.name === 'Screen 1' || source.name === 'TheDesk') {
var durl=source.thumbnail.toDataURL();
var b64 = durl.match(
/data:image\/png;base64,(.+)/
);
const screenshotPath = path.join(os.tmpdir(), 'screenshot.png');
const savePath = path.join(os.tmpdir(), 'screenshot.png');
var ipc = electron.ipcRenderer;
var h = $(window).height()-150;
var w = $(window).width();
ipc.send('shot', ['file://' + screenshotPath,w,h,b64[1],title]);
if($(".img-parsed").length>0){
for(i=0;i<$(".img-parsed").length;i++){
var url=$(".img-parsed").eq(i).attr("data-url");
ipc.send('shot-img-dl', [url,title+"_img"+i+".png"]);
}
}
window.close();
return;
const message = `Saved screenshot to: ${screenshotPath}`
//screenshotMsg.textContent = message
}
})
})
}

View File

@@ -12,33 +12,33 @@ function _classCallCheck(a, e) {
if (!(a instanceof e)) throw new TypeError("Cannot call a class as a function")
}
var TJScrollTask = function () {
function a(e, f, g) {
_classCallCheck(this, a), this.tjDeck = e, this.$t = e.$wrap, this.x = f, this.d = g, this.sl = e.wrapL, this.sTime = Date.now(), this.ended = !1, this._bindAnim = this._anim.bind(this);
var h = e.getClms();
0 > f || f > h[0].offsetWidth * (h.length - 1) ? this.ended = !0 : requestAnimationFrame(this._bindAnim)
function a(e, f, g) {
_classCallCheck(this, a), this.tjDeck = e, this.$t = e.$wrap, this.x = f, this.d = g, this.sl = e.wrapL, this.sTime = Date.now(), this.ended = !1, this._bindAnim = this._anim.bind(this);
var h = e.getClms();
0 > f || f > h[0].offsetWidth * (h.length - 1) ? this.ended = !0 : requestAnimationFrame(this._bindAnim)
}
return _createClass(a, [{
key: "stop",
value: function stop() {
this.ended || (this.ended = !0, cancelAnimationFrame(this._bindAnim))
}
return _createClass(a, [{
key: "stop",
value: function stop() {
this.ended || (this.ended = !0, cancelAnimationFrame(this._bindAnim))
}, {
key: "_anim",
value: function _anim() {
if (!this.ended) {
var e = (Date.now() - this.sTime) / this.d,
f = this.sl,
g = this.x - this.sl;
1 < e && !this.ended && (this.stop(), e = 1), this.tjDeck.scrollWrap(this._easeOut(e, f, g, 1)), 1 > e && requestAnimationFrame(this._bindAnim)
}
}, {
key: "_anim",
value: function _anim() {
if (!this.ended) {
var e = (Date.now() - this.sTime) / this.d,
f = this.sl,
g = this.x - this.sl;
1 < e && !this.ended && (this.stop(), e = 1), this.tjDeck.scrollWrap(this._easeOut(e, f, g, 1)), 1 > e && requestAnimationFrame(this._bindAnim)
}
}
}, {
key: "_easeOut",
value: function _easeOut(e, f, g, h) {
return e /= h, --e, g * (e * e * e + 1) + f
}
}]), a
}(),
}
}, {
key: "_easeOut",
value: function _easeOut(e, f, g, h) {
return e /= h, --e, g * (e * e * e + 1) + f
}
}]), a
}(),
TJDeck = function () {
function a() {
_classCallCheck(this, a), this.version = "0.0.9", this.$wrap = document.querySelector(".js-app-columns"), this.wrapL = 0, this.scrollTask = null, this.options = this.getOptionObj(), this.setOptionFromObj(this.options), this.$options = this.createOptionPanel(), document.body.appendChild(this.$options), this.updateBlur(), this.updateLight()
@@ -117,22 +117,22 @@ var TJScrollTask = function () {
key: "observeModals",
value: function observeModals() {
for (var e = new MutationObserver(function (j) {
for (var k, l, m = 0; m < j.length; m++) {
k = j[m];
for (var o = 0; o < k.addedNodes.length; o++) l = k.addedNodes[m], this.stopAnkerFromModal(l)
}
}.bind(this)), f = {
attributes: !1,
characterData: !0,
childList: !0
}, g = document.querySelectorAll(".js-modals-container, .js-modal"), h = 0; h < g.length; h++) e.observe(g[h], f)
for (var k, l, m = 0; m < j.length; m++) {
k = j[m];
for (var o = 0; o < k.addedNodes.length; o++) l = k.addedNodes[m], this.stopAnkerFromModal(l)
}
}.bind(this)), f = {
attributes: !1,
characterData: !0,
childList: !0
}, g = document.querySelectorAll(".js-modals-container, .js-modal"), h = 0; h < g.length; h++) e.observe(g[h], f)
}
}, {
key: "stopAnkerFromModal",
value: function stopAnkerFromModal(e) {
for (var g, f = e.querySelectorAll("a"), h = function (k) {
return k.preventDefault(), k.target.removeEventListener("click", h), !1
}, j = 0; j < f.length; j++) g = f[j], g.href && g.href.match(/#$/) && g.addEventListener("click", h)
return k.preventDefault(), k.target.removeEventListener("click", h), !1
}, j = 0; j < f.length; j++) g = f[j], g.href && g.href.match(/#$/) && g.addEventListener("click", h)
}
}, {
key: "observeClms",
@@ -160,7 +160,7 @@ var TJScrollTask = function () {
if (j) {
if (0 > j) {
var l = this._getPosObj(k);
if (Math.abs(l.x - e.x) < Math.abs(l.y - e.y)) return void(j = 0);
if (Math.abs(l.x - e.x) < Math.abs(l.y - e.y)) return void (j = 0);
j = 1
}
if (1 == j) {
@@ -217,7 +217,7 @@ var TJScrollTask = function () {
}
}, {
key: "showTJSetting",
value: function showTJSetting() {}
value: function showTJSetting() { }
}, {
key: "addTJNav",
value: function addTJNav() {
@@ -298,7 +298,7 @@ var TJScrollTask = function () {
}
}, {
key: "refreshStyle",
value: function refreshStyle() {}
value: function refreshStyle() { }
}, {
key: "addStyle",
value: function addStyle() {

View File

@@ -1,67 +1,67 @@
//BBCodeとMarkdownの入力・パーサー
//アカウント変えた時にBBとかMDとか
function mdCheck(){
function mdCheck() {
var acct_id = $("#post-acct-sel").val();
var profimg=localStorage.getItem("prof_"+acct_id);
if(!profimg){
profimg="../../img/missing.svg";
var profimg = localStorage.getItem("prof_" + acct_id);
if (!profimg) {
profimg = "../../img/missing.svg";
}
$("#acct-sel-prof").attr("src",profimg);
if(localStorage.getItem("post_" + acct_id)){
$("#toot-post-btn").text(localStorage.getItem("post_" + acct_id)+"("+localStorage.getItem("domain_"+acct_id)+")");
}else{
$("#toot-post-btn").text(lang.lang_toot+"("+localStorage.getItem("domain_"+acct_id)+")");
}
if(!localStorage.getItem("bb_"+acct_id) && !localStorage.getItem("md_"+acct_id)){
$(".markdown").addClass("hide");
$("#acct-sel-prof").attr("src", profimg);
if (localStorage.getItem("post_" + acct_id)) {
$("#toot-post-btn").text(localStorage.getItem("post_" + acct_id) + "(" + localStorage.getItem("domain_" + acct_id) + ")");
} else {
$("#toot-post-btn").text(lang.lang_toot + "(" + localStorage.getItem("domain_" + acct_id) + ")");
}
if (!localStorage.getItem("bb_" + acct_id) && !localStorage.getItem("md_" + acct_id)) {
$(".markdown").addClass("hide");
$(".anti-markdown").addClass("hide");
}else{
} else {
$(".anti-markdown").removeClass("hide");
}
if($(".markdown").hasClass("hide")){
localStorage.setItem("md","hide");
}else{
}
if ($(".markdown").hasClass("hide")) {
localStorage.setItem("md", "hide");
} else {
localStorage.removeItem("md");
}
var domain = localStorage.getItem("domain_" + acct_id);
if(domain=="itabashi.0j0.jp"){
if (domain == "itabashi.0j0.jp") {
$("#limited-button").removeClass("hide");
}else{
} else {
$("#limited-button").addClass("hide");
}
if(domain=="kirishima.cloud"){
if (domain == "kirishima.cloud") {
$("#faicon-btn").show();
}else{
} else {
$("#faicon-btn").hide();
}
if(domain=="imastodon.net"){
if (domain == "imastodon.net") {
trendTag();
}else{
} else {
$("#trendtag").html("");
}
if(localStorage.getItem("mode_" + domain)=="misskey"){
Materialize.toast(lang.lang_bbmd_misskey, 5000);
if (localStorage.getItem("mode_" + domain) == "misskey") {
M.toast({ html: lang.lang_bbmd_misskey, displayLength: 5000 })
}
if(idata[domain+"_letters"]){
$("#textarea").attr("data-length", idata[domain+"_letters"])
}else{
if (idata[domain + "_letters"]) {
$("#textarea").attr("data-length", idata[domain + "_letters"])
} else {
$("#textarea").attr("data-length", 500)
}
if(idata[domain+"_glitch"]==="true"){
if (idata[domain + "_glitch"] === "true") {
$("#local-button").removeClass("hide");
}else{
} else {
$("#local-button").addClass("hide");
}
var multi = localStorage.getItem("multi");
if (multi) {
var obj = JSON.parse(multi);
if(obj[acct_id].background && obj[acct_id].background!="def" && obj[acct_id].text && obj[acct_id].text!="def"){
if (obj[acct_id].background && obj[acct_id].background != "def" && obj[acct_id].text && obj[acct_id].text != "def") {
$("#toot-post-btn").removeClass("indigo");
$("#toot-post-btn").css("background-color","#"+obj[acct_id].background);
$("#toot-post-btn").css("color",obj[acct_id].text);
}else{
$("#toot-post-btn").css("background-color","");
$("#toot-post-btn").css("color","");
$("#toot-post-btn").css("background-color", "#" + obj[acct_id].background);
$("#toot-post-btn").css("color", obj[acct_id].text);
} else {
$("#toot-post-btn").css("background-color", "");
$("#toot-post-btn").css("color", "");
$("#toot-post-btn").addClass("indigo");
}
@@ -69,248 +69,248 @@ function mdCheck(){
loadVis();
}
//BOXのトグルボタン
function mdToggle(){
function mdToggle() {
$(".markdown").toggleClass("hide");
$(".anti-markdown").toggleClass("hide");
if($(".markdown").hasClass("hide")){
localStorage.setItem("md","hide");
}else{
if ($(".markdown").hasClass("hide")) {
localStorage.setItem("md", "hide");
} else {
localStorage.removeItem("md");
}
}
//最初に読み込みます(MD対応インスタンスかチェック)
if(localStorage.getItem("md")=="hide"){
if (localStorage.getItem("md") == "hide") {
$(".markdown").addClass("hide");
$(".anti-markdown").removeClass("hide");
}
//タグを選んだ時に(BB版)
function tagsel(tag){
var acct_id = $("#post-acct-sel").val();
if(!localStorage.getItem("bb_"+acct_id)){
return false;
}
if(tag=="large" || tag=="size" || tag=="color" || tag=="colorhex"){
var sub=$("#"+tag).val();
var sub = sub.replace( /#/g , "" ) ;
surroundHTML(tag+"="+sub,tag);
}else if(tag=="flip=vertical" || tag=="flip=horizontal"){
surroundHTML(tag,"flip");
}else{
surroundHTML(tag,tag);
}
$("#textarea").focus();
}
//HTMLをエスケープしてXSSを防ぐ
function escape_html (string) {
if(typeof string !== 'string') {
return string;
}
return string.replace(/[&'`"<>]/g, function(match) {
return {
'&': '&amp;',
"'": '&#x27;',
'`': '&#x60;',
'"': '&quot;',
'<': '&lt;',
'>': '&gt;',
}[match]
});
function tagsel(tag) {
var acct_id = $("#post-acct-sel").val();
if (!localStorage.getItem("bb_" + acct_id)) {
return false;
}
if (tag == "large" || tag == "size" || tag == "color" || tag == "colorhex") {
var sub = $("#" + tag).val();
var sub = sub.replace(/#/g, "");
surroundHTML(tag + "=" + sub, tag);
} else if (tag == "flip=vertical" || tag == "flip=horizontal") {
surroundHTML(tag, "flip");
} else {
surroundHTML(tag, tag);
}
$("#textarea").focus();
}
//HTMLをエスケープしてXSSを防ぐ
function escape_html(string) {
if (typeof string !== 'string') {
return string;
}
return string.replace(/[&'`"<>]/g, function (match) {
return {
'&': '&amp;',
"'": '&#x27;',
'`': '&#x60;',
'"': '&quot;',
'<': '&lt;',
'>': '&gt;',
}[match]
});
}
//テキストボックスで選択したやつをタグで囲む(BB版)
function surroundHTML(tagS,tagE) {
function surroundHTML(tagS, tagE) {
var acct_id = $("#post-acct-sel").val();
if(!localStorage.getItem("bb_"+acct_id)){
return false;
}
var target = document.getElementById("textarea");
var pos = getAreaRange(target);
var val = target.value;
var range = val.slice(pos.start, pos.end);
var beforeNode = val.slice(0, pos.start);
var afterNode = val.slice(pos.end);
var insertNode;
if (range || pos.start != pos.end) {
insertNode = '[' + tagS + ']' + range + '[/' + tagE + ']';
target.value = beforeNode + insertNode + afterNode;
}
else if (pos.start == pos.end) {
insertNode = '[' + tagS + ']' + '[/' + tagE + ']';
target.value = beforeNode + insertNode + afterNode;
}
}
function markdown(tag,ck,br,space){
if(space=="before"){
tagE=tag;
tag=" "+tag;
}else{
tagE=tag;
}
surroundMD(tag,tagE,ck,br);
$("#textarea").focus();
}
function surroundMD(tagS,tagE,ck,br) {
var acct_id = $("#post-acct-sel").val();
if(!localStorage.getItem("md_"+acct_id)){
return false;
}
var target = document.getElementById("textarea");
var pos = getAreaRange(target);
var val = target.value;
var range = val.slice(pos.start, pos.end);
var beforeNode = val.slice(0, pos.start);
var afterNode = val.slice(pos.end);
var insertNode;
if(br=="yes"){
var br="\n";
}else{
var br="";
if (!localStorage.getItem("bb_" + acct_id)) {
return false;
}
var target = document.getElementById("textarea");
var pos = getAreaRange(target);
var val = target.value;
var range = val.slice(pos.start, pos.end);
var beforeNode = val.slice(0, pos.start);
var afterNode = val.slice(pos.end);
var insertNode;
if (range || pos.start != pos.end) {
insertNode = '[' + tagS + ']' + range + '[/' + tagE + ']';
target.value = beforeNode + insertNode + afterNode;
}
else if (pos.start == pos.end) {
insertNode = '[' + tagS + ']' + '[/' + tagE + ']';
target.value = beforeNode + insertNode + afterNode;
}
}
function markdown(tag, ck, br, space) {
if (space == "before") {
tagE = tag;
tag = " " + tag;
} else {
tagE = tag;
}
surroundMD(tag, tagE, ck, br);
$("#textarea").focus();
}
function surroundMD(tagS, tagE, ck, br) {
var acct_id = $("#post-acct-sel").val();
if (!localStorage.getItem("md_" + acct_id)) {
return false;
}
var target = document.getElementById("textarea");
var pos = getAreaRange(target);
var val = target.value;
var range = val.slice(pos.start, pos.end);
var beforeNode = val.slice(0, pos.start);
var afterNode = val.slice(pos.end);
var insertNode;
if (br == "yes") {
var br = "\n";
} else {
var br = "";
}
if ((range || pos.start != pos.end) && ck == "yes") {
insertNode = tagS + range + tagE;
target.value = beforeNode + insertNode + br + afterNode;
}
else if (pos.start == pos.end || ck == "no") {
insertNode = tagS + range;
target.value = beforeNode + insertNode + br + afterNode;
}
if ((range || pos.start != pos.end )&& ck=="yes") {
insertNode = tagS + range + tagE ;
target.value = beforeNode + insertNode + br + afterNode;
}
else if (pos.start == pos.end || ck=="no") {
insertNode = tagS + range;
target.value = beforeNode + insertNode + br + afterNode;
}
}
//テキストボックスの前後チェック
function getAreaRange(obj) {
var pos = new Object();
if(window.getSelection()) {
if (window.getSelection()) {
pos.start = obj.selectionStart;
pos.end = obj.selectionEnd;
pos.end = obj.selectionEnd;
}
return pos;
}
//Markdownのリンク挿入
function markdownLink(){
function markdownLink() {
var acct_id = $("#post-acct-sel").val();
if(!localStorage.getItem("md_"+acct_id)){
return false;
}
var linkIns="["+$("#linkt").val()+"]"+"("+$("#link2").val()+")";
if(linkIns!="[]()"){
$("#textarea").val($("#textarea").val()+linkIns);
$("#linkt").val("");
$("#link2").val("");
$("#textarea").focus();
if (!localStorage.getItem("md_" + acct_id)) {
return false;
}
var linkIns = "[" + $("#linkt").val() + "]" + "(" + $("#link2").val() + ")";
if (linkIns != "[]()") {
$("#textarea").val($("#textarea").val() + linkIns);
$("#linkt").val("");
$("#link2").val("");
$("#textarea").focus();
}
}
//Markdownのimg挿入
function markdownImage(){
function markdownImage() {
var acct_id = $("#post-acct-sel").val();
if(!localStorage.getItem("md_"+acct_id)){
return false;
}
var imgIns="!["+$("#image").val()+"]"+"("+$("#image2").val()+")";
if(imgIns!="![]()"){
$("#textarea").val($("#textarea").val()+imgIns);
$("#image").val("");
$("#image2").val("");
$("#textarea").focus();
if (!localStorage.getItem("md_" + acct_id)) {
return false;
}
var imgIns = "![" + $("#image").val() + "]" + "(" + $("#image2").val() + ")";
if (imgIns != "![]()") {
$("#textarea").val($("#textarea").val() + imgIns);
$("#image").val("");
$("#image2").val("");
$("#textarea").focus();
}
}
//文字数をチェック(hタグ用)
function str_count(all, part) {
return (all.match(new RegExp(part, "g")) || []).length;
return (all.match(new RegExp(part, "g")) || []).length;
}
//プレビュー
function preview(){
$("#preview-field").show();
$("#toot-field").hide();
$("#preview-btn").hide();
var bb=escape_html($("#textarea").val());
function preview() {
$("#preview-field").show();
$("#toot-field").hide();
$("#preview-btn").hide();
var bb = escape_html($("#textarea").val());
//quote
var bb=bb.replace(/>(.+)$/g,'<blockquote>$1<\/blockquote>');
var bb = bb.replace(/>(.+)$/g, '<blockquote>$1<\/blockquote>');
//spin
var bb=bb.replace(/\[spin\](.+)\[\/spin\]/g,'<span class="fa fa-spin">$1<\/span>');
var bb = bb.replace(/\[spin\](.+)\[\/spin\]/g, '<span class="fa fa-spin">$1<\/span>');
//pulse
var bb=bb.replace(/\[pulse\](.+)\[\/pulse\]/g,'<span class="bbcode-pulse-loading">$1<\/span>');
var bb = bb.replace(/\[pulse\](.+)\[\/pulse\]/g, '<span class="bbcode-pulse-loading">$1<\/span>');
//large
var bb=bb.replace(/\[large=([0-9]{1,2})x\](.+)\[\/large\]/g,'<span class="fa fa-$1x">$2<\/span>');
var bb = bb.replace(/\[large=([0-9]{1,2})x\](.+)\[\/large\]/g, '<span class="fa fa-$1x">$2<\/span>');
//vertical
var bb=bb.replace(/\[flip=vertical\](.+)\[\/flip\]/g,'<span class="fa fa-flip-vertical">$1<\/span>');
var bb = bb.replace(/\[flip=vertical\](.+)\[\/flip\]/g, '<span class="fa fa-flip-vertical">$1<\/span>');
//horizontal
var bb=bb.replace(/\[flip=horizontal\](.+)\[\/flip\]/g,'<span class="fa fa-flip-horizontal">$1<\/span>');
var bb = bb.replace(/\[flip=horizontal\](.+)\[\/flip\]/g, '<span class="fa fa-flip-horizontal">$1<\/span>');
//b
var bb=bb.replace(/\[b\](.+)\[\/b\]/g,'<b>$1<\/b>');
var bb = bb.replace(/\[b\](.+)\[\/b\]/g, '<b>$1<\/b>');
//i
var bb=bb.replace(/\[i\](.+)\[\/i\]/g,'<i>$1<\/i>');
var bb = bb.replace(/\[i\](.+)\[\/i\]/g, '<i>$1<\/i>');
//u
var bb=bb.replace(/\[u\](.+)\[\/u\]/g,'<u>$1<\/u>');
var bb = bb.replace(/\[u\](.+)\[\/u\]/g, '<u>$1<\/u>');
//s
var bb=bb.replace(/\[s\](.+)\[\/s\]/g,'<s>$1<\/s>');
var bb = bb.replace(/\[s\](.+)\[\/s\]/g, '<s>$1<\/s>');
//size
var bb=bb.replace(/\[size=([0-9]{1,2})\](.+)\[\/size\]/g,'<span style="font-size:$1px">$2<\/span>');
var bb = bb.replace(/\[size=([0-9]{1,2})\](.+)\[\/size\]/g, '<span style="font-size:$1px">$2<\/span>');
//colorhex
var bb=bb.replace(/\[colorhex=([A-Fa-f0-9]+)\](.+)\[\/colorhex\]/g,'<span style="color:#$1">$2<\/span>');
var bb = bb.replace(/\[colorhex=([A-Fa-f0-9]+)\](.+)\[\/colorhex\]/g, '<span style="color:#$1">$2<\/span>');
//code
var bb=bb.replace(/`(.+)`/g,'<code>$1<\/code>');
var bb = bb.replace(/`(.+)`/g, '<code>$1<\/code>');
//head
var m;
m=bb.match(/^#{1,6}(.+)$/gm);
if(m){
for(let i = 0; i < m.length; i++) {
var t=m[i].match(/^#{1,6}(.+)$/);
var indexct='<h'+str_count(m[i],"#")+'>'+t[1]+'</h'+str_count(m[i],"#")+'>';
var bb=bb.replace(new RegExp(m[i], ""),indexct);
}
m = bb.match(/^#{1,6}(.+)$/gm);
if (m) {
for (let i = 0; i < m.length; i++) {
var t = m[i].match(/^#{1,6}(.+)$/);
var indexct = '<h' + str_count(m[i], "#") + '>' + t[1] + '</h' + str_count(m[i], "#") + '>';
var bb = bb.replace(new RegExp(m[i], ""), indexct);
}
}
//list(ul)
var li;
li=bb.match(/^\- (.+)$/gm);
if(li){
for(let l = 0; l < li.length; l++) {
var u=li[l].match(/^\- (.+)$/);
var listUl='<li>'+u[1]+'</li>';
if(l == 0){
listUl='<ul>'+listUl;
li = bb.match(/^\- (.+)$/gm);
if (li) {
for (let l = 0; l < li.length; l++) {
var u = li[l].match(/^\- (.+)$/);
var listUl = '<li>' + u[1] + '</li>';
if (l == 0) {
listUl = '<ul>' + listUl;
}
if (l == li.length - 1) {
listUl = listUl + '</ul>';
}
var bb = bb.replace(new RegExp(li[l], ""), listUl);
}
if(l==li.length-1){
listUl=listUl+'</ul>';
}
var bb=bb.replace(new RegExp(li[l], ""),listUl);
}
}
//list(ol)
var li;
li=bb.match(/^1\. (.+)$/gm);
if(li){
for(let l = 0; l < li.length; l++) {
var u=li[l].match(/^1\. (.+)$/);
var listUl='<li>'+u[1]+'</li>';
if(l === 0){
listUl='<ol>'+listUl;
li = bb.match(/^1\. (.+)$/gm);
if (li) {
for (let l = 0; l < li.length; l++) {
var u = li[l].match(/^1\. (.+)$/);
var listUl = '<li>' + u[1] + '</li>';
if (l === 0) {
listUl = '<ol>' + listUl;
}
if (l === li.length - 1) {
listUl = listUl + '</ol>';
}
var bb = bb.replace(new RegExp(li[l], ""), listUl);
}
if(l===li.length-1){
listUl=listUl+'</ol>';
}
var bb=bb.replace(new RegExp(li[l], ""),listUl);
}
}
//img
var bb=bb.replace(/!\[(.+)\]\((https:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g,'<img src="$2" text="$1" style="width:100%">');
var bb = bb.replace(/!\[(.+)\]\((https:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g, '<img src="$2" text="$1" style="width:100%">');
//link
var bb=bb.replace(/\[(.+)\]\((https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g,'<a href="$2" target="_blank">$1<\/a>');
bb=nl2br(bb);
bb=bb.replace(new RegExp("</li><br />", "g"),"");
var bb = bb.replace(/\[(.+)\]\((https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g, '<a href="$2" target="_blank">$1<\/a>');
bb = nl2br(bb);
bb = bb.replace(new RegExp("</li><br />", "g"), "");
$("#md-preview").html(bb);
}
//Editで戻る
function previewEdit(){
$("#preview-field").hide();
$("#toot-field").show();
$("#preview-btn").show();
$("#md-preview").html("");
}
}
//Editで戻る
function previewEdit() {
$("#preview-field").hide();
$("#toot-field").show();
$("#preview-btn").show();
$("#md-preview").html("");
}

View File

@@ -4,73 +4,143 @@ $("#emoji-before").addClass("disabled");
$("#emoji-next").addClass("disabled");
//絵文字ボタンのトグル
function emojiToggle() {
function emojiToggle(reaction) {
var acct_id = $("#post-acct-sel").val();
var selin = $("#textarea").prop('selectionStart');
if(!selin){
selin=0;
if (!selin) {
selin = 0;
}
localStorage.setItem("cursor", selin);
if ($("#emoji").hasClass("hide")) {
$("#emoji").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("");
if (!localStorage.getItem("emoji_" + 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>';
'<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);
} else {
emojiList('home');
emojiList('home', reaction);
}
} else {
$("#poll").addClass("hide")
$("#right-side").hide()
$("#right-side").css("width", "300px")
$("#emoji").addClass("hide")
$("#suggest").html("");
$("#right-side").hide()
$("#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 emojiGet(parse) {
$('#emoji-list').html('Loading...');
function emojiGet(parse, started) {
$('#emoji-list').text('Loading...');
var acct_id = $("#post-acct-sel").val();
var domain = localStorage.getItem("domain_" + acct_id);
var start = "https://" + domain + "/api/v1/custom_emojis";
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
if (parse == "true") {
$('#emoji-list').html('Parsing...');
//絵文字をマストドン公式と同順にソート
json.sort(function(a, b) {
if (a.shortcode < b.shortcode) return -1;
if (a.shortcode > b.shortcode) return 1;
return 0;
if (localStorage.getItem("mode_" + domain) != "misskey") {
var start = "https://" + domain + "/api/v1/custom_emojis";
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (parse == "true") {
$('#emoji-list').text('Parsing...');
//絵文字をマストドン公式と同順にソート
json.sort(function (a, b) {
if (a.shortcode < b.shortcode) return -1;
if (a.shortcode > b.shortcode) return 1;
return 0;
});
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
} else {
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
}
localStorage.setItem("emojiseek", 0);
if (!started) {
emojiList('home')
}
});
} else {
var start = "https://" + domain + "/api/meta";
fetch(start, {
method: 'POST',
headers: {
'content-type': 'application/json'
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (json.enableEmojiReaction) {
localStorage.setItem("emojiReaction_" + acct_id, "true");
} else {
localStorage.setItem("emojiReaction_" + acct_id, "disabled");
}
var emojis = json.emojis;
var md = [];
Object.keys(emojis).forEach(function (key) {
var emoji = emojis[key];
md.push({
"shortcode": emoji.name,
"url": emoji.url
})
});
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
} else {
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
}
localStorage.setItem("emojiseek", 0);
emojiList('home')
});
if (parse == "true") {
$('#emoji-list').text('Parsing...');
//絵文字をマストドン公式と同順にソート
md.sort(function (a, b) {
if (a.shortcode < b.shortcode) return -1;
if (a.shortcode > b.shortcode) return 1;
return 0;
});
localStorage.setItem("emoji_" + acct_id, JSON.stringify(md));
} else {
localStorage.setItem("emoji_" + acct_id, JSON.stringify(md));
}
localStorage.setItem("emojiseek", 0);
if (!started) {
emojiList('home')
}
});
}
}
//リストの描画
function emojiList(target) {
function emojiList(target, reaction) {
$("#now-emoji").text(lang.lang_emoji_custom);
var acct_id = $("#post-acct-sel").val();
if (reaction && localStorage.getItem("emojiReaction_" + acct_id) != "true") {
console.error("Disabled")
clear()
hide();
return false;
}
var start = localStorage.getItem("emojiseek");
if (target == "next") {
var start = start * 1 + 127;
@@ -103,8 +173,14 @@ function emojiList(target) {
for (i = start; i < start + 126; i++) {
var emoji = obj[i];
if (emoji) {
html = html + '<a onclick="emojiInsert(\':' + emoji.shortcode +
': \')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
if (reaction) {
html = html + '<a onclick="emojiReaction(\':' + emoji.shortcode +
':\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
} else {
html = html + '<a onclick="emojiInsert(\':' + emoji.shortcode +
':\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
}
}
}
$("#emoji-list").html(html);
@@ -113,36 +189,36 @@ function emojiList(target) {
//絵文字など様々なものをテキストボックスに挿入
function emojiInsert(code, del) {
var now = $("#textarea").val();
var selin = localStorage.getItem("cursor");
console.log(selin);
var now = $("#textarea").val();
if(selin>0){
var before = now.substr(0, selin);
var after = now.substr(selin, now.length);
newt = before + " "+ code+" " + after;
}else{
newt = code+" ";
var selin = $("#textarea").prop('selectionStart');
if (localStorage.getItem("emoji-zero-width") == "yes") {
var blank = "";
} else {
var blank = " ";
}
var before = now.substr(0, selin);
if (before.slice(-1) != " ") {
before = before + blank
}
var after = now.substr(selin, now.length);
if (after.slice(-1) != " ") {
after = blank + after
}
newt = before + code + after;
if (!del) {
$("#textarea").val(newt);
//emoji();
} else {
var regExp = new RegExp(del, "g");
var regExp = new RegExp(del.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
var now = now.replace(regExp, "");
$("#textarea").val(now + " " + code);
$("#textarea").val(now + blank + code);
}
$("#textarea").focus();
var selin = $("#textarea").prop('selectionStart');
if(!selin){
selin=0;
}
localStorage.setItem("cursor", selin);
}
//改行挿入
function brInsert(code) {
if(!$('#post-box').hasClass("appear")){
localStorage.setItem("nohide",true);
if (!$('#post-box').hasClass("appear")) {
localStorage.setItem("nohide", true);
show();
}
var now = $("#textarea").val();

View File

@@ -2,26 +2,26 @@
var obj = $("body");
var system;
//ドラッグスタート
obj.on('dragstart', function(e) {
obj.on('dragstart', function (e) {
system = "locked"
});
//何もなくファイルが通過
obj.on('dragend', function(e) {
obj.on('dragend', function (e) {
system = "";
});
//ドラッグファイルが画面上に
obj.on('dragenter', function(e) {
obj.on('dragenter', function (e) {
if (system != "locked") {
$("#drag").css('display', 'flex');
}
});
$("body").on('dragover', function(e) {
$("body").on('dragover', function (e) {
e.stopPropagation();
e.preventDefault();
});
//ドロップした
$("body").on('drop', function(e) {
$("body").on('drop', function (e) {
if (system != "locked") {
$("#drag").css('display', 'none');
e.preventDefault();
@@ -30,44 +30,37 @@ $("body").on('drop', function(e) {
}
});
//何もなくファイルが通過
$("#drag").on('dragleave', function(e) {
$("#drag").on('dragleave', function (e) {
$("#drag").css('display', 'none');
});
//複数アップ
function pimg(files) {
console.log(files);
console.table(files);
for (i = 0; i < files.length; i++) {
var dot=files[i].path.match(/\.(.+)$/)[1];
if(dot=="bmp" || dot=="BMP"){
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('bmp-image', [files[i].path,i]);
todo(lang.lang_progress);
}else{
handleFileUpload(files[i], obj,i);
var dot = files[i].path.match(/\.(.+)$/)[1];
if (dot == "bmp" || dot == "BMP") {
postMessage(["bmpImage", [files[i].path, i]], "*")
todo(lang.lang_progress);
} else {
handleFileUpload(files[i], obj, i);
}
}
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.on('bmp-img-comp', function (event, b64) {
media(b64[0],"image/png",b64[1]);
});
//ドラッグ・アンド・ドロップを終了
function closedrop() {
$("#drag").css('display', 'none');
}
//ファイル選択
function fileselect() {
ipc.send('file-select', "");
postMessage(["sendSinmpleIpc", "file-select"], "*")
}
//ファイル読み込み
function handleFileUpload(files, obj, no) {
var fr = new FileReader();
fr.onload = function(evt) {
fr.onload = function (evt) {
var b64 = evt.target.result;
$('#b64-box').val(b64);
var ret = media(b64, files["type"], no)
@@ -82,27 +75,26 @@ function media(b64, type, no) {
var c = "abcdefghijklmnopqrstuvwxyz0123456789";
var cl = c.length;
var r = "";
for(var i=0; i<l; i++){
r += c[Math.floor(Math.random()*cl)];
for (var i = 0; i < l; i++) {
r += c[Math.floor(Math.random() * cl)];
}
if ($("#media").val()) {
$("#media").val($("#media").val() + ',' + "tmp_"+r);
$("#media").val($("#media").val() + ',' + "tmp_" + r);
} else {
$("#media").val("tmp_"+r);
$("#media").val("tmp_" + r);
}
$(".toot-btn-group").prop("disabled", true);
$("#post-acct-sel").prop("disabled", true);
localStorage.setItem("image","busy");
localStorage.setItem("image", "busy");
todo("Image Upload...");
var media = toBlob(b64, type);
console.log(media);
var fd = new FormData();
fd.append('file', media);
var acct_id = $("#post-acct-sel").val();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var httpreq = new XMLHttpRequest();
if(localStorage.getItem("mode_" + domain)=="misskey"){
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/api/drive/files/create";
httpreq.open('POST', start, true);
httpreq.upload.addEventListener("progress", progshow, false);
@@ -112,12 +104,12 @@ function media(b64, type, no) {
} else {
var nsfw = false;
}
var previewer="url"
var previewer = "url"
fd.append('i', at);
//fd.append('isSensitive', nsfw);
httpreq.send(fd);
}else{
var previewer="preview_url"
} else {
var previewer = "preview_url"
var start = "https://" + domain + "/api/v1/media";
httpreq.open('POST', start, true);
httpreq.upload.addEventListener("progress", progshow, false);
@@ -125,13 +117,22 @@ function media(b64, type, no) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.send(fd);
}
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
if (!json.id) {
todc();
$("#imgup").text("");
$(".toot-btn-group").prop("disabled", false);
$("#post-acct-sel").prop("disabled", false);
$('select').formSelect();
$("#imgsel").show();
M.toast({ html: lang.lang_postimg_failupload, displayLength: 5000 })
return false
}
var img = localStorage.getItem("img");
if (json.type.indexOf("image")!=-1) {
var html = '<img src="' + json[previewer] + '" style="width:50px; max-height:100px;">';
if (json.type.indexOf("image") != -1) {
var html = '<img src="' + json[previewer] + '" class="preview-img pointer" data-media="' + json["id"] + '" onclick="deleteImage(\'' + json["id"] + '\')" title="' + lang.lang_postimg_delete + '">';
$('#preview').append(html);
} else {
$('#preview').append(lang.lang_postimg_previewdis);
@@ -140,20 +141,20 @@ function media(b64, type, no) {
var img = "no-act";
}
if (img != "inline") {
var mediav=$("#media").val();
var regExp = new RegExp("tmp_"+r, "g");
var mediav = $("#media").val();
var regExp = new RegExp("tmp_" + r, "g");
mediav = mediav.replace(regExp, json["id"]);
$("#media").val(mediav);
}
if (img == "url") {
$("#textarea").val($("#textarea").val() + " " + json["text_url"])
}
todc();
$(".toot-btn-group").prop("disabled", false);
$('select').material_select();
$('select').formSelect();
$("#mec").text(lang.lang_there);
Materialize.toast(lang.lang_postimg_aftupload, 1000);
M.toast({ html: lang.lang_postimg_aftupload, displayLength: 1000 })
$("#imgup").text("");
$("#imgsel").show();
localStorage.removeItem("image");
@@ -180,46 +181,61 @@ function toBlob(base64, type) {
return blob;
}
//画像を貼り付けたら…
var element = document.querySelector("#textarea");
element.addEventListener("paste", function(e){
console.log(e)
// 画像の場合
// e.clipboardData.types.length == 0
// かつ
// e.clipboardData.types[0] == "Files"
// となっているので、それ以外を弾く
if (!e.clipboardData
|| !e.clipboardData.types
|| (e.clipboardData.types.length != 1)
|| (e.clipboardData.types[0] != "Files")) {
console.log("not image")
return true;
}
var element = document.querySelector("#textarea");
element.addEventListener("paste", function (e) {
if (!e.clipboardData || !e.clipboardData.items) {
return true;
}
// DataTransferItemList に画像が含まれいない場合は終了する
var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith('image'));
if (imageItems.length == 0) {
console.warn("it is not image")
return true;
}
// ファイルとして得る
// (なぜかgetAsStringでは上手くいかなかった)
var imageFile = e.clipboardData.items[0].getAsFile();
// ファイルとして得る
// DataTransferItem の kind は file なので getAsString ではなく getAsFile を呼ぶ
var imageFile = imageItems[0].getAsFile();
var imageType = imageItems[0].type;
// FileReaderで読み込む
var fr = new FileReader();
fr.onload = function(e) {
// onload内ではe.target.resultにbase64が入っているのであとは煮るなり焼くなり
// FileReaderで読み込む
var fr = new FileReader();
fr.onload = function (e) {
// onload内ではe.target.resultにbase64が入っているのであとは煮るなり焼くなり
var base64 = e.target.result;
var mediav = $("#media").val();
if(mediav){
var i=mediav.split(",").length;
if (mediav) {
var i = mediav.split(",").length;
}
media(base64, "image/png", i)
};
fr.readAsDataURL(imageFile);
// DataTransferItem の type に mime tipes があるのでそれを使う
media(base64, imageType, i)
};
fr.readAsDataURL(imageFile);
// 画像以外がペーストされたときのために、元に戻しておく
// 画像以外がペーストされたときのために、元に戻しておく
});
//Adobeフォトエディタ
function adobe(){
var agree = localStorage.getItem("adobeagree");
ipc.send('adobe', agree);
}
ipc.on('adobeagree', function (event, arg) {
localStorage.setItem("adobeagree",arg);
});
function deleteImage(key) {
Swal.fire({
title: lang.lang_postimg_delete,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
var media = $("#media").val();
var arr = media.split(",");
for (var i = 0; i < media.length; i++) {
if (arr[i] == key) {
arr.splice(i, 1);
break;
}
}
$("#media").val(arr.join(","));
$('#preview [data-media=' + key + ']').remove();
}
})
}

View File

@@ -1,217 +1,241 @@
//Renpost
function renote(id, acct_id, remote) {
if ($("#pub_" + id).hasClass("rted")) {
return false;
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/notes/create";
if(localStorage.getItem("mode_" + domain)!="misskey"){
if ($("#pub_" + id).hasClass("rted")) {
return false;
}
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/notes/create";
if (localStorage.getItem("mode_" + domain) != "misskey") {
return false;
}
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = "json";
httpreq.send(JSON.stringify({i:at,renoteId:id}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
httpreq.send(JSON.stringify({ i: at, renoteId: id }));
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
console.log(["Success: renote", json]);
$("[toot-id=" + id + "]").addClass("rted");
$(".rt_"+id).toggleClass("teal-text");
}
}
$(".rt_" + id).toggleClass("teal-text");
}
}
}
//Renote
function renoteqt(id, acct_id) {
localStorage.setItem("nohide",true);
show();
$("#reply").val("renote_"+id);
$("#rec").text("Renote");
$("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true);
$('select').material_select();
$("#textarea").attr("placeholder",lang.lang_misskeyparse_qt);
$("#textarea").focus();
localStorage.setItem("nohide", true);
show();
$("#reply").val("renote_" + id);
$("#rec").text("Renote");
$("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true);
$('select').formSelect();
$("#textarea").attr("placeholder", lang.lang_misskeyparse_qt);
$("#textarea").focus();
}
//Reply
function misskeyreply(id, acct_id) {
localStorage.setItem("nohide",true);
show();
$("#reply").val(id);
$("#rec").text("Renote");
$("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true);
$('select').material_select();
$("#textarea").attr("placeholder",lang.lang_misskeyparse_qt);
$("#textarea").focus();
localStorage.setItem("nohide", true);
show();
$("#reply").val(id);
$("#rec").text("Renote");
$("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true);
$('select').formSelect();
$("#textarea").attr("placeholder", lang.lang_misskeyparse_qt);
$("#textarea").focus();
}
//Reaction
function reactiontoggle(id,acct_id,tlid){
function reactiontoggle(id, acct_id, tlid) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/notes/show";
if(localStorage.getItem("mode_" + domain)!="misskey"){
if (localStorage.getItem("mode_" + domain) != "misskey") {
return false;
}
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = "json";
httpreq.send(JSON.stringify({i:at,noteId:id}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
httpreq.send(JSON.stringify({ i: at, noteId: id }));
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
if(json.reactionCounts){
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"];
for(var i=0;i<reactions.length;i++){
if(json.reactionCounts[reactions[i]]){
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
}else{
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(0)
if($("#pub_" + id +" .reactions").hasClass("fullreact")){
$("#pub_" + id +" .re-"+reactions[i]).addClass("hide")
}else{
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
console.log(["Success: reaction", json]);
if (json.reactions) {
var reactions = ["like", "love", "laugh", "hmm", "surprise", "congrats", "angry", "confused", "pudding", "rip"];
for (var i = 0; i < reactions.length; i++) {
if (json.reactions[reactions[i]]) {
$("#pub_" + id + " .re-" + reactions[i] + "ct").text(json.reactions[reactions[i]])
$("#pub_" + id + " .re-" + reactions[i]).removeClass("hide")
} else {
$("#pub_" + id + " .re-" + reactions[i] + "ct").text(0)
if ($("#pub_" + id + " .reactions").hasClass("fullreact")) {
$("#pub_" + id + " .re-" + reactions[i]).addClass("hide")
} else {
$("#pub_" + id + " .re-" + reactions[i]).removeClass("hide")
}
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
$("#pub_" + id + " .re-" + reactions[i] + "ct").text(json.reactions[reactions[i]])
}
}
$("#pub_" + id +" .reactions").removeClass("hide");
$("#pub_" + id +" .reactions").toggleClass("fullreact")
}else{
if($("#pub_" + id +" .reactions").hasClass("fullreact")){
$("#pub_" + id +" .reactions").addClass("hide")
$("#pub_" + id +" .reactions").removeClass("fullreact")
}else{
$("#pub_" + id +" .reactions").removeClass("hide");
$("#pub_" + id +" .reaction").removeClass("hide");
$("#pub_" + id +" .reactions").addClass("fullreact");
$("#pub_" + id + " .reactions").removeClass("hide");
$("#pub_" + id + " .reactions").toggleClass("fullreact")
} else {
if ($("#pub_" + id + " .reactions").hasClass("fullreact")) {
$("#pub_" + id + " .reactions").addClass("hide")
$("#pub_" + id + " .reactions").removeClass("fullreact")
} else {
$("#pub_" + id + " .reactions").removeClass("hide");
$("#pub_" + id + " .reaction").removeClass("hide");
$("#pub_" + id + " .reactions").addClass("fullreact");
}
}
}
}
}
}
$("#pub_" + id + " .freeReact").toggleClass("hide");
}
function reactRefresh(acct_id,id){
//reactioncustom
function reactioncustom(acct_id, id) {
$("#reply").val(id);
$("#unreact").hide();
$("#addreact").removeClass("hide");
$("#post-acct-sel").val(acct_id);
$('select').formSelect();
localStorage.setItem("nohide", true);
show()
emojiToggle(true)
$("#left-side").hide();
$("#default-emoji").hide();
}
function reactRefresh(acct_id, id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/notes/show";
var req={};
req.i=at;
req.noteId=id;
var i={
var req = {};
req.i = at;
req.noteId = id;
var i = {
method: "POST",
body: JSON.stringify(req),
}
console.log(req)
fetch(start, i,
).then(function(response) {
).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
if(!json){
}).then(function (json) {
if (!json) {
return false;
}
var poll="";
console.log(json);
reactRefreshCore(json)
var poll = "";
if (json.error) {
$("[toot-id=" + id + "]").hide();
$("[toot-id=" + id + "]").remove();
} else {
reactRefreshCore(json)
}
});
}
function reactRefreshCore(json){
var id=json.id;
if(json.reactionCounts){
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"];
$("#pub_" + id +" .reactions").removeClass("hide")
for(var i=0;i<reactions.length;i++){
if(json.reactionCounts[reactions[i]]){
console.log(json.reactionCounts[reactions[i]])
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
}else{
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(0)
if($("#pub_" + id +" .reactions").hasClass("fullreact")){
$("#pub_" + id +" .re-"+reactions[i]).addClass("hide")
function reactRefreshCore(json) {
var id = json.id;
if (json.reactions) {
$("#pub_" + id + " .reactions").removeClass("hide")
var regExp = new RegExp(":", "g");
Object.keys(json.reactions).forEach(function (keye) {
keyeClass = keye.replace(regExp, '');
if (json.reactions[keye]) {
$("#pub_" + id + " .re-" + keyeClass + "ct").text(json.reactions[keye])
$("#pub_" + id + " .re-" + keyeClass).removeClass("hide")
} else {
$("#pub_" + id + " .re-" + keyeClass + "ct").text(0)
if ($("#pub_" + id + " .reactions").hasClass("fullreact")) {
$("#pub_" + id + " .re-" + keyeClass).addClass("hide")
}
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
$("#pub_" + id + " .re-" + keyeClass + "ct").text(json.reactions[keye])
}
});
}
}
function emojiReaction(emoji) {
var acct_id = $("#post-acct-sel").val();
var id = $("#reply").val();
reaction(emoji, id, acct_id, null)
clear();
hide();
}
function reaction(mode, id, acct_id, tlid) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
if ($(".fav_" + id).hasClass("yellow-text")) {
var flag = "delete";
} else {
var flag = "create";
}
var start = "https://" + domain + "/api/notes/reactions/" + flag;
if (localStorage.getItem("mode_" + domain) != "misskey") {
return false;
}
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = "json";
httpreq.send(JSON.stringify({ i: at, noteId: id, reaction: mode }));
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
$(".fav_" + id).toggleClass("yellow-text");
}
}
}
function reaction(mode,id,acct_id,tlid){
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if($(".fav_"+id).hasClass("yellow-text")){
var flag="delete";
}else{
var flag="create";
}
var start = "https://" + domain + "/api/notes/reactions/"+flag;
if(localStorage.getItem("mode_" + domain)!="misskey"){
return false;
}
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = "json";
httpreq.send(JSON.stringify({i:at,noteId:id,reaction:mode}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
$(".fav_"+id).toggleClass("yellow-text");
}
}
}
//Vote
function vote(acct_id,id,to){
function vote(acct_id, id, to) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/notes/polls/vote";
if(localStorage.getItem("mode_" + domain)!="misskey"){
if (localStorage.getItem("mode_" + domain) != "misskey") {
return false;
}
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = "json";
httpreq.send(JSON.stringify({i:at,noteId:id,choice:to}));
httpreq.onreadystatechange = function() {
voterefresh(acct_id,id)
}
httpreq.send(JSON.stringify({ i: at, noteId: id, choice: to }));
httpreq.onreadystatechange = function () {
voterefresh(acct_id, id)
}
}
function voterefresh(acct_id,id){
function voterefresh(acct_id, id) {
var httpreqd = new XMLHttpRequest();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/notes/show";
httpreqd.open('POST', start, true);
httpreqd.setRequestHeader('Content-Type', 'application/json');
httpreqd.open('POST', start, true);
httpreqd.setRequestHeader('Content-Type', 'application/json');
httpreqd.responseType = 'json';
httpreqd.send(JSON.stringify({i:at,noteId:id}));
httpreqd.onreadystatechange = function() {
if (httpreqd.readyState == 4) {
httpreqd.send(JSON.stringify({ i: at, noteId: id }));
httpreqd.onreadystatechange = function () {
if (httpreqd.readyState == 4) {
var json = httpreqd.response;
if(!json){
if (!json) {
return false;
}
var poll="";
if(json.poll){
var choices=json.poll.choices;
Object.keys(choices).forEach(function(keyc) {
var poll = "";
if (json.poll) {
var choices = json.poll.choices;
Object.keys(choices).forEach(function (keyc) {
var choice = choices[keyc];
if(choice.isVoted){
var myvote=twemoji.parse("✅");
}else{
var myvote="";
if (choice.isVoted) {
var myvote = twemoji.parse("✅");
} else {
var myvote = "";
}
poll=poll+'<div class="pointer vote" onclick="vote(\''+acct_id+'\',\''+json.id+'\','+choice.id+')">'+choice.text+'('+choice.votes+''+myvote+')</div>';
poll = poll + '<div class="pointer vote" onclick="vote(\'' + acct_id + '\',\'' + json.id + '\',' + choice.id + ')">' + escapeHTML(choice.text) + '(' + choice.votes + '' + myvote + ')</div>';
});
$(".vote_"+json.id).html(poll)
}
}
}
$(".vote_" + json.id).html(poll)
}
}
}
}

View File

@@ -1,177 +1,156 @@
/*投稿系*/
/*投稿系*/
//投稿
function sec(){
var mode=localStorage.getItem("sec");
function sec() {
var mode = localStorage.getItem("sec");
var acct_id = $("#post-acct-sel").val();
var domain = localStorage.getItem("domain_" + acct_id);
if(~domain.indexOf("kirishima.cloud")>=0 && mode=="local"){
mode="unlisted";
if (~domain.indexOf("kirishima.cloud") >= 0 && mode == "local") {
mode = "unlisted";
}
post(null,mode);
post(null, mode);
}
function post(mode,postvis) {
if($("#toot-post-btn").prop("disabled")){
function post(mode, postvis) {
if ($("#toot-post-btn").prop("disabled")) {
return false;
}
var str = $("#textarea").val();
var acct_id = $("#post-acct-sel").val();
localStorage.setItem("last-use", acct_id);
var domain = localStorage.getItem("domain_" + acct_id);
if(domain=="theboss.tech"){
if(~str.indexOf("#")){
if(str.indexOf("#theboss_tech")=="-1"){
if(!confirm(lang.lang_post_tagTL)){
return false;
if (!localStorage.getItem("cw_sentence")) {
var cw_sent = 500;
} else {
var cw_sent = localStorage.getItem("cw_sentence");
}
if (!localStorage.getItem("cw_letters")) {
var cw_ltres = 7000;
} else {
var cw_ltres = localStorage.getItem("cw_letters");
}
if (domain != "kirishima.cloud") {
if (mode != "pass" && !$("#cw").hasClass("cw-avail") && (str.length > cw_sent || (str.split("\n").length - 1) > cw_ltres)) {
var plus = str.replace(/\n/g, "").slice(0, 10) + "...";
Swal.fire({
title: lang.lang_post_cwtitle,
text: lang.lang_post_cwtxt + plus,
type: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#3085d6',
confirmButtonText: lang.lang_post_btn2,
cancelButtonText: lang.lang_post_btn3,
showCloseButton: true,
focusConfirm: false,
}).then((result) => {
if (result.dismiss == "cancel") {
//btn3:sonomama
post("pass")
} else if (result.value) {
//btn2:auto-CW
$("#cw-text").show();
$("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail");
$("#cw-text").val(plus);
post("pass")
}
}
})
return false;
}
}
if(domain=="dtp-mstdn.jp"){
if(~str.indexOf("#")){
if(str.indexOf("#dtp")=="-1"){
if(!confirm(lang.lang_post_tagTL)){
return false;
}
}
}
}
if(!localStorage.getItem("cw_sentence")){
var cw_sent=500;
}else{
var cw_sent=localStorage.getItem("cw_sentence");
}
if(!localStorage.getItem("cw_letters")){
var cw_ltres=500;
}else{
var cw_ltres=localStorage.getItem("cw_letters");
}
if(domain!="kirishima.cloud"){
if(mode!="pass" && !$("#cw").hasClass("cw-avail") && (str.length>cw_sent || (str.split("\n").length - 1)>cw_ltres)){
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
var plus=str.replace(/\n/g,"").slice(0,10)+"...";
const options = {
type: 'info',
title: lang.lang_post_cwtitle,
message: lang.lang_post_cwtxt+plus,
buttons: [lang.lang_post_btn1,lang.lang_post_btn2, lang.lang_post_btn3]
}
dialog.showMessageBox(options, function(arg) {
if(arg===1){
$("#cw-text").show();
$("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail");
$("#cw-text").val(plus);
post("pass");
}else if(arg===2){
post("pass");
}
})
return false;
}
}
if(localStorage.getItem("mode_" + domain)=="misskey"){
if (localStorage.getItem("mode_" + domain) == "misskey") {
misskeyPost();
return;
}
$(".toot-btn-group").prop("disabled", true);
todo("Posting");
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/statuses";
var reply = $("#reply").val();
if(str.indexOf(localStorage.getItem("stable"))==-1){
str+" #"+localStorage.getItem("stable");
if (str.indexOf(localStorage.getItem("stable")) == -1) {
str + " #" + localStorage.getItem("stable");
}
var toot={
var toot = {
status: str
}
if(reply){
toot.in_reply_to_id=reply
if (reply) {
toot.in_reply_to_id = reply
}
var media = $("#media").val();
if(media){
toot.media_ids=media.split(",");
if (media) {
toot.media_ids = media.split(",");
}
var quote = $("#quote").val();
if (quote) {
toot.quote_id = quote;
}
if ($("#nsfw").hasClass("nsfw-avail")) {
var nsfw = "true";
toot.sensitive=nsfw;
toot.sensitive = nsfw;
} else {
var nsfw = "false";
}
if(postvis){
if (postvis) {
var vis = postvis;
}else{
} else {
var vis = $("#vis").text();
}
if(vis!="inherit" && vis!="local"){
toot.visibility=vis;
}else if(vis=="local"){
toot.status=str+"👁️";
if (vis != "inherit" && vis != "local") {
toot.visibility = vis;
} else if (vis == "local") {
toot.status = str + "👁️";
}
//ここに非公開・未収載タグについてwarn
if(domain!="kirishima.cloud" && domain!="imastodon.net"){
if(~str.indexOf("#")){
if(vis == "local" || vis=="unlisted" || vis=="direct" || vis=="private"){
if(!confirm(lang.lang_post_tagVis)){
return false;
}
}
}
}
if ($("#cw").hasClass("cw-avail")) {
var spo = $("#cw-text").val();
cw();
toot.spoiler_text=spo;
toot.spoiler_text = spo;
} else {
var spo = "";
}
if ($("#sch-box").hasClass("sch-avail")) {
var scheduled=formattimeutc(new Date(Date.parse($("#sch-date").val())))
console.log(scheduled)
var scheduled = formattimeutc(new Date(Date.parse($("#sch-date").val())))
console.log("This toot will be posted at:" + scheduled)
schedule();
toot.scheduled_at=scheduled;
toot.scheduled_at = scheduled;
} else {
var scheduled = "";
}
if ($("#poll-sel").val()=="mastodon-poll") {
var options=[];
$(".mastodon-choice").map(function() {
var choice=$(this).val();
if(choice!=""){
if (!$("#poll").hasClass("hide")) {
var options = [];
$(".mastodon-choice").map(function () {
var choice = $(this).val();
if (choice != "") {
options.push(choice);
}
});
if($("#poll-multiple:checked").val()=="1"){
var mul=true;
}else{
var mul=false;
if ($("#poll-multiple:checked").val() == "1") {
var mul = true;
} else {
var mul = false;
}
if($("#poll-until:checked").val()=="1"){
var htt=true;
}else{
var htt=false;
if ($("#poll-until:checked").val() == "1") {
var htt = true;
} else {
var htt = false;
}
var exin=pollCalc();
if(!exin){
var exin = pollCalc();
if (!exin) {
todc("Error: Poll expires_in param")
}
toot.poll={
toot.poll = {
options: options,
expires_in: exin,
multiple: mul,
hide_totals: htt
}
}
console.log(toot);
console.table(toot);
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send(JSON.stringify(toot));
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
var box = localStorage.getItem("box");
@@ -185,71 +164,71 @@ function post(mode,postvis) {
}
}
}
function misskeyPost(){
function misskeyPost() {
var str = $("#textarea").val();
var acct_id = $("#post-acct-sel").val();
localStorage.setItem("last-use", acct_id);
var domain = localStorage.getItem("domain_" + acct_id);
$(".toot-btn-group").prop("disabled", true);
todo("Posting");
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/notes/create";
var reply = $("#reply").val();
var toot={
var toot = {
text: str
}
if(reply){
if(reply.indexOf("renote")!== -1){
toot.renoteId=reply.replace("renote_","")
}else{
toot.replyId=reply
if (reply) {
if (reply.indexOf("renote") !== -1) {
toot.renoteId = reply.replace("renote_", "")
} else {
toot.replyId = reply
}
}
var media = $("#media").val();
if(media){
toot.mediaIds=media.split(",");
if (media) {
toot.mediaIds = media.split(",");
}
if ($("#nsfw").hasClass("nsfw-avail")) {
var nsfw = "true";
toot.sensitive=nsfw;
toot.sensitive = nsfw;
} else {
var nsfw = "false";
}
var vis = $("#vis").text();
if(vis=="unlisted"){
vis=="home"
}else if(vis=="direct"){
vis=="specified";
toot.visibleUserIds=str.match(/@([a-zA-Z0-9_@.-]+)(\s|$)/g).join('').split("@");
if (vis == "unlisted") {
vis = "home"
} else if (vis == "direct") {
vis = "specified";
toot.visibleUserIds = str.match(/@([a-zA-Z0-9_@.-]+)(\s|$)/g).join('').split("@");
}
if(vis!="inherit"){
toot.visibility=vis;
if (vis != "inherit") {
toot.visibility = vis;
}
if ($("#cw").hasClass("cw-avail")) {
var spo = $("#cw-text").val();
cw();
toot.cw=spo;
toot.cw = spo;
} else {
var spo = "";
}
toot.i=at;
toot.i = at;
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
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){
if (str.indexOf(localStorage.getItem("stable")) == -1) {
localStorage.removeItem("stable")
}
var json = httpreq.response;
console.log(json);
console.log(["Success: toot", json]);
var box = localStorage.getItem("box");
if (box == "yes") {
hide();
}else if (box == "hide"){
} else if (box == "hide") {
$("body").addClass("mini-post");
$(".mini-btn").text("expand_less");
}
@@ -263,11 +242,12 @@ function misskeyPost(){
//クリア(Shift+C)
function clear() {
$("#textarea").val("");
if(localStorage.getItem("stable")){
$("#textarea").val("#"+localStorage.getItem("stable")+" ")
if (localStorage.getItem("stable")) {
$("#textarea").val("#" + localStorage.getItem("stable") + " ")
}
$("#textarea").attr("placeholder", lang.lang_toot);
$("#reply").val("");
$("#quote").val("");
$("#media").val("");
var cwt = localStorage.getItem("cw-text");
if (cwt) {
@@ -280,7 +260,7 @@ function clear() {
$("#cw").removeClass("yellow-text");
$("#cw").removeClass("cw-avail");
$("#cw-text").hide();
}else{
} else {
$("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail");
$("#cw-text").show();
@@ -297,14 +277,20 @@ function clear() {
$(".toot-btn-group").prop("disabled", false);
$("#post-acct-sel").prop("disabled", false);
$("#days_poll").val(0);
$("#hours_poll").val(0);
$("#mins_poll").val(0);
$(".mastodon-choice").map(function() {
$("#hours_poll").val(0);
$("#mins_poll").val(6);
$("#poll").addClass("hide")
$("#pollsta").text(lang.lang_no)
$(".mastodon-choice").map(function () {
$(this).val("");
});
localStorage.removeItem("image");
if(localStorage.getItem("mainuse")=="main"){
if (localStorage.getItem("mainuse") == "main") {
$("#post-acct-sel").val(localStorage.getItem("main"));
}
$('select').material_select();
$('select').formSelect();
$("#left-side").show();
$("#default-emoji").show();
$("#unreact").show();
$("#addreact").addClass("hide");
}

View File

@@ -1,11 +1,11 @@
/*保護系*/
//画像保護
function nsfw(){
if($("#nsfw").hasClass("nsfw-avail")){
function nsfw() {
if ($("#nsfw").hasClass("nsfw-avail")) {
$("#nsfw").removeClass("yellow-text");
$("#nsfw").html("visibility_off");
$("#nsfw").removeClass("nsfw-avail");
}else{
} else {
$("#nsfw").addClass("yellow-text");
$("#nsfw").html("visibility");
$("#nsfw").addClass("nsfw-avail");
@@ -13,7 +13,7 @@ function nsfw(){
}
//投稿公開範囲
function vis(set){
function vis(set) {
$("#vis").text(set);
$("#vis-icon").removeClass("red-text");
$("#vis-icon").removeClass("orange-text");
@@ -21,109 +21,110 @@ function vis(set){
$("#vis-icon").removeClass("purple-text");
$("#vis-icon").removeClass("light-blue-text");
$("#vis-icon").removeClass("teal-text");
if(set=="public"){
if (set == "public") {
$("#vis-icon").text("public");
$("#vis-icon").addClass("purple-text");
}else if(set=="unlisted"){
} else if (set == "unlisted") {
$("#vis-icon").text("lock_open");
$("#vis-icon").addClass("blue-text");
}else if(set=="private"){
} else if (set == "private") {
$("#vis-icon").text("lock");
$("#vis-icon").addClass("orange-text");
}else if(set=="direct"){
} else if (set == "direct") {
$("#vis-icon").text("mail");
$("#vis-icon").addClass("red-text");
}else if(set=="limited"){
} else if (set == "limited") {
$("#vis-icon").text("group");
$("#vis-icon").addClass("teal-text");
}else if(set=="local"){
} else if (set == "local") {
$("#vis-icon").text("visibility");
$("#vis-icon").addClass("light-blue-text");
}
var vis=localStorage.getItem("vis");
if(vis=="memory"){
var acct_id = $("#post-acct-sel").val();
localStorage.setItem("vis-memory-"+acct_id,set);
}
$('.dropdown-button').dropdown('close');
var vis = localStorage.getItem("vis");
if (vis == "memory") {
var acct_id = $("#post-acct-sel").val();
localStorage.setItem("vis-memory-" + acct_id, set);
}
var ins = M.Dropdown.getInstance($('#dropdown1'))
if(ins){
ins.close();
}
}
function loadVis(){
var vist = localStorage.getItem("vis");
console.log(vist);
if (!vist) {
vis("public");
} else {
if (vist == "memory") {
var acct_id = $("#post-acct-sel").val();
var memory = localStorage.getItem("vis-memory-"+acct_id);
if (!memory) {
memory = "public";
}
vis(memory);
} else if(vist == "server") {
var acct_id = $("#post-acct-sel").val();
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
var memory = obj[acct_id]["vis"];
if (!memory) {
memory = "public";
}
vis(memory);
} else {
vis(vist);
function loadVis() {
var vist = localStorage.getItem("vis");
if (!vist) {
vis("public");
} else {
if (vist == "memory") {
var acct_id = $("#post-acct-sel").val();
var memory = localStorage.getItem("vis-memory-" + acct_id);
if (!memory) {
memory = "public";
}
vis(memory);
} else if (vist == "useapi") {
var acct_id = $("#post-acct-sel").val();
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
var memory = obj[acct_id]["vis"];
if (!memory) {
memory = "public";
}
vis(memory);
} else {
vis(vist);
}
}
}
loadVis();
//コンテントワーニング
function cw(){
if($("#cw").hasClass("cw-avail")){
function cw() {
if ($("#cw").hasClass("cw-avail")) {
$("#cw-text").val();
$("#cw-text").hide();
$("#cw").removeClass("yellow-text");
$("#cw").removeClass("cw-avail");
}else{
} else {
$("#cw-text").show();
$("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail");
var cwt=localStorage.getItem("cw-text");
if(cwt){
var cwt = localStorage.getItem("cw-text");
if (cwt) {
$("#cw-text").val(cwt);
}
}
}
//TLでコンテントワーニングを表示トグル
function cw_show(id){
$(".cw_hide_"+id).toggleClass("cw");
$(".cw-long-"+id).toggleClass("hide");
function cw_show(id) {
$(".cw_hide_" + id).toggleClass("cw");
$(".cw-long-" + id).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;
var cwlen = $('#cw-text').val().length;
if(idata[domain+"_letters"]){
$("#textarea").attr("data-length", idata[domain+"_letters"]-cwlen)
}else{
$("#textarea").attr("data-length", 500-cwlen)
if (idata[domain + "_letters"]) {
$("#textarea").attr("data-length", idata[domain + "_letters"] - cwlen)
} else {
$("#textarea").attr("data-length", 500 - cwlen)
}
});
});
});
//スケジュール
function schedule(){
if($("#sch-box").hasClass("sch-avail")){
function schedule() {
if ($("#sch-box").hasClass("sch-avail")) {
$("#sch-box").hide();
$("#sch-box").removeClass("sch-avail");
}else{
} else {
var date = new Date();
$("#sch-box").show();
$("#sch-date").val(formattime(date));
console.log(formattime(date));
$("#sch-box").addClass("sch-avail");
}
}

View File

@@ -7,7 +7,7 @@ function fav(id, acct_id, remote) {
var flag = "favourite";
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/" + flag;
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
@@ -15,19 +15,19 @@ function fav(id, acct_id, remote) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response;
if(remote!="remote"){
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
if (remote != "remote") {
//APIのふぁぼカウントがおかしい
if ($("[toot-id=" + id + "] .fav_ct").text() == json.favourites_count){
if(flag=="unfavourite"){
var fav=json.favourites_count - 1;
}else{
var fav=json.favourites_count + 1;
if ($("[toot-id=" + id + "] .fav_ct").text() == json.favourites_count) {
if (flag == "unfavourite") {
var fav = json.favourites_count - 1;
} else {
var fav = json.favourites_count + 1;
//var fav = json.favourites_count;
}
}else{
} else {
var fav = json.favourites_count;
}
$("[toot-id=" + id + "] .fav_ct").text(fav);
@@ -35,17 +35,17 @@ function fav(id, acct_id, remote) {
} else {
$("[toot-id=" + id + "] .rt_ct").text(fav);
}
if ($("[toot-id=" + id +"]").hasClass("faved")) {
$("[toot-id=" + id +"]").removeClass("faved");
if ($("[toot-id=" + id + "]").hasClass("faved")) {
$("[toot-id=" + id + "]").removeClass("faved");
$(".fav_" + id).removeClass("yellow-text");
} else {
$("[toot-id=" + id +"]").addClass("faved");
$("[toot-id=" + id + "]").addClass("faved");
$(".fav_" + id).addClass("yellow-text");
}
}else{
Materialize.toast(lang.lang_status_favWarn, 1000);
}
}
} else {
M.toast({ html: lang.lang_status_favWarn, displayLength: 1000 })
}
}
}
}
@@ -57,7 +57,7 @@ function rt(id, acct_id, remote) {
var flag = "reblog";
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/" + flag;
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
@@ -65,10 +65,10 @@ function rt(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;
console.log(json);
console.log(["Success: boost", json]);
if (remote != "remote") {
$("[toot-id=" + id + "] .fav_ct").text(json.favourites_count);
if (!json.reblog) {
@@ -84,23 +84,23 @@ function rt(id, acct_id, remote) {
if ($("[toot-id=" + id + "]").hasClass("rted")) {
$("[toot-id=" + id + "]").removeClass("rted");
$(".rt_" + id).removeClass("teal-text");
$(".rt_" + id).removeClass("light-blue-text");
} else {
$("[toot-id=" + id + "]").addClass("rted");
$(".rt_" + id).addClass("teal-text");
$(".rt_" + id).addClass("light-blue-text");
}
} else {
Materialize.toast(lang.lang_status_btWarn, 1000);
M.toast({ html: lang.lang_status_btWarn, displayLength: 1000 })
}
}
}
}
//フォロー
function follow(acct_id,remote) {
if (!acct_id && acct_id!="selector") {
function follow(acct_id, remote) {
if (!acct_id && acct_id != "selector") {
var acct_id = $('#his-data').attr("use-acct");
}else if (acct_id=="selector") {
} else if (acct_id == "selector") {
var acct_id = $("#user-acct-sel").val();
}
if (!remote && $("#his-data").hasClass("following")) {
@@ -111,34 +111,29 @@ function follow(acct_id,remote) {
var flagm = "create";
}
var id = $("#his-data").attr("user-id");
if(!remote){
if (!remote) {
var remote = $("#his-data").attr("remote");
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/following/"+flagm;
var user=$("#his-acct").text();
var ent={"i":at,"userId":id}
}else if(remote=="true" && flag=="follow"){
var start = "https://" + domain + "/api/v1/follows";
var user=$("#his-acct").text();
var ent={"uri":user}
}else{
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
var ent={}
var at = localStorage.getItem("acct_" + acct_id + "_at");
var user = $("#his-acct").text();
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/api/following/" + flagm;
var ent = { "i": at, "userId": id }
} else if (remote == "true" && flag == "follow") {
var ent = {}
}
console.log(ent);
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
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;
console.log(json);
console.log(["Success: folllow", json]);
if ($("#his-data").hasClass("following")) {
$("#his-data").removeClass("following");
$("#his-follow-btn").text(lang.lang_status_follow);
@@ -152,91 +147,125 @@ function follow(acct_id,remote) {
//ブロック
function block(acct_id) {
if (!acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var id = $("#his-data").attr("user-id");
if ($("#his-data").hasClass("blocking")) {
var flag = "unblock";
var txt = lang.lang_status_unmute
} else {
var flag = "block";
var txt = lang.lang_status_block
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
if ($("#his-data").hasClass("blocking")) {
$("#his-data").removeClass("blocking");
$("#his-block-btn").text(lang.lang_status_block);
} else {
$("#his-data").addClass("blocking");
$("#his-block-btn").text(lang.lang_status_unblock);
Swal.fire({
title: txt,
text: "",
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
if (!acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var id = $("#his-data").attr("user-id");
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if ($("#his-data").hasClass("blocking")) {
$("#his-data").removeClass("blocking");
$("#his-block-btn").text(lang.lang_status_block);
} else {
$("#his-data").addClass("blocking");
$("#his-block-btn").text(lang.lang_status_unblock);
}
}
}
}
}
});
}
//ミュート
function mute(acct_id) {
if (!acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var id = $("#his-data").attr("user-id");
function muteDo(acct_id) {
if ($("#his-data").hasClass("muting")) {
var flag = "unmute";
var flagm = "delete";
var txt = lang.lang_status_unmute
} else {
var flag = "mute";
var flagm = "create";
var txt = lang.lang_status_mute
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/mute/"+flagm;
var ent={"i":at,"userId":id}
var rq=JSON.stringify(ent);
}else{
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
var rq="";
}
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send(rq);
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
if ($("#his-data").hasClass("muting")) {
$("#his-data").removeClass("muting");
$("#his-mute-btn").text(lang.lang_status_mute);
Swal.fire({
title: txt,
text: "",
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
if (!acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var id = $("#his-data").attr("user-id");
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/api/mute/" + flagm;
var ent = { "i": at, "userId": id }
var rq = JSON.stringify(ent);
} else {
$("#his-data").addClass("muting");
$("#his-mute-btn").text(lang.lang_status_unmute);
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
var rq = "";
}
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send(rq);
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if ($("#his-data").hasClass("muting")) {
$("#his-data").removeClass("muting");
$("#his-mute-btn").text(lang.lang_status_mute);
} else {
$("#his-data").addClass("muting");
$("#his-mute-btn").text(lang.lang_status_unmute);
}
}
}
}
}
});
}
//投稿削除
function del(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/api/notes/delete";
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = "json";
httpreq.send(JSON.stringify({i:at,noteId:id}));
}else{
httpreq.send(JSON.stringify({ i: at, noteId: id }));
$("[toot-id=" + id + "]").hide();
$("[toot-id=" + id + "]").remove();
} else {
var start = "https://" + domain + "/api/v1/statuses/" + id;
var httpreq = new XMLHttpRequest();
httpreq.open('DELETE', start, true);
@@ -245,46 +274,57 @@ function del(id, acct_id) {
httpreq.responseType = "json";
httpreq.send();
}
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
}
}
}
//redraft
function redraft(id, acct_id){
if(confirm(lang.lang_status_redraft)){
show();
del(id, acct_id);
$("#post-acct-sel").prop("disabled", true);
var medias=$("[toot-id="+id+"]").attr("data-medias");
var vismode=$("[toot-id="+id+"] .vis-data").attr("data-vis");
vis(vismode);
$("#media").val(medias);
var ct=medias.split(",").length;
$("[toot-id="+id+"] img.toot-img").each(function(i, elem) {
if(i<ct){
var url=$(elem).attr("src");
console.log(url);
$('#preview').append('<img src="' + url + '" style="width:50px; max-height:100px;">');
function redraft(id, acct_id) {
Swal.fire({
title: lang.lang_status_redraftTitle,
text: lang.lang_status_redraft,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then((result) => {
if (result.value) {
show();
del(id, acct_id);
$("#post-acct-sel").prop("disabled", true);
var medias = $("[toot-id=" + id + "]").attr("data-medias");
var vismode = $("[toot-id=" + id + "] .vis-data").attr("data-vis");
vis(vismode);
$("#media").val(medias);
var ct = medias.split(",").length;
$("[toot-id=" + id + "] img.toot-img").each(function (i, elem) {
if (i < ct) {
var url = $(elem).attr("src");
console.log("Play back image data:" + url);
$('#preview').append('<img src="' + url + '" style="width:50px; max-height:100px;">');
}
});
var html = $("[toot-id=" + id + "] .toot").html();
html = html.replace(/^<p>(.+)<\/p>$/, "$1");
html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n");
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
html = $.strip_tags(html);
localStorage.setItem("nohide", true);
show();
$("#textarea").val(html);
var cwtxt = $("[toot-id=" + id + "] .cw_text").html();
if (cwtxt != "") {
cwtxt = $.strip_tags(cwtxt);
cw();
$("#cw-text").val(cwtxt);
}
});
var html=$("[toot-id="+id+"] .toot").html();
html = html.replace(/^<p>(.+)<\/p>$/,"$1");
html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n");
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
html=$.strip_tags(html);
localStorage.setItem("nohide",true);
show();
$("#textarea").val(html);
var cwtxt=$("[toot-id="+id+"] .cw_text").html();
if(cwtxt!=""){
cwtxt=$.strip_tags(cwtxt);
cw();
$("#cw-text").val(cwtxt);
}
}
})
}
//ピン留め
function pin(id, acct_id) {
@@ -294,7 +334,7 @@ function pin(id, acct_id) {
var flag = "pin";
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/" + flag;
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
@@ -302,10 +342,10 @@ 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;
console.log(json);
console.log(["Success: pinned", json]);
if ($("[toot-id=" + id + "]").hasClass("pined")) {
$("[toot-id=" + id + "]").removeClass("pined");
$(".pin_" + id).removeClass("blue-text");
@@ -320,7 +360,7 @@ function pin(id, acct_id) {
//フォロリク
function request(id, flag, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/follow_requests/" + id + "/" + flag;
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
@@ -328,10 +368,10 @@ 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;
console.log(json);
console.log(["Success: request", "type:" + flag, json]);
showReq();
}
}
@@ -343,7 +383,7 @@ function domainblock(add, flag, acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/domain_blocks"
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
@@ -351,10 +391,10 @@ 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;
console.log(json);
console.log(["Success: domain block", json]);
showDom();
}
}
@@ -365,25 +405,24 @@ function addDomainblock() {
domainblock(domain, 'POST');
}
//ユーザー強調
function empUser(){
function empUser() {
var usr = localStorage.getItem("user_emp");
var obj = JSON.parse(usr);
var id=$("#his-acct").attr("fullname");
console.log(id);
if(!obj){
var obj=[];
var id = $("#his-acct").attr("fullname");
if (!obj) {
var obj = [];
obj.push(id);
Materialize.toast(id+lang.lang_status_emphas, 4000);
}else{
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;
}else{
can=true;
if (usT != id && !can) {
can = false;
} else {
can = true;
obj.splice(key, 1);
Materialize.toast(id+lang.lang_status_unemphas, 4000);
M.toast({ html: id + lang.lang_status_unemphas, displayLength: 4000 })
}
});
}
@@ -391,16 +430,16 @@ function empUser(){
localStorage.setItem("user_emp", json);
}
//Endorse
function pinUser(){
var id=$("#his-data").attr("user-id");
var acct_id=$("#his-data").attr("use-acct");
function pinUser() {
var id = $("#his-data").attr("user-id");
var acct_id = $("#his-data").attr("use-acct");
if ($("#his-end-btn").hasClass("endorsed")) {
var flag = "unpin";
} else {
var flag = "pin";
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
@@ -408,73 +447,74 @@ 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;
console.log(json);
if ($("#his-end-btn").hasClass("endorsed")) {
$("#his-end-btn").removeClass("endorsed")
$("#his-end-btn").text(lang.lang_status_endorse)
} else {
$("#his-end-btn").addClass("endorsed")
$("#his-end-btn").text(lang.lang_status_unendorse)
}
}
}
}
//URLコピー
function tootUriCopy(url){
function tootUriCopy(url) {
execCopy(url);
Materialize.toast(lang.lang_details_url, 1500);
M.toast({ html: lang.lang_details_url, displayLength: 1500 })
}
//他のアカウントで…
function staEx(mode){
var url=$("#tootmodal").attr("data-url");
function staEx(mode) {
var url = $("#tootmodal").attr("data-url");
var acct_id = $("#status-acct-sel").val();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/search?resolve=true&q="+url
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/search?resolve=true&q=" + url
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
}
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
var id=json.statuses[0].id;
if(mode=="rt"){
}).then(function (json) {
var id = json.statuses[0].id;
if (mode == "rt") {
rt(id, acct_id, 'remote')
}else if(mode=="fav"){
} else if (mode == "fav") {
fav(id, acct_id, 'remote')
}else if(mode=="reply"){
} else if (mode == "reply") {
reEx(id)
}
});
return;
}
function toggleAction(id,tlid,acct_id){
if(tlid=="notf"){
var tlide="[data-notf="+acct_id+"]";
}else{
var tlide="[tlid="+tlid+"]";
function toggleAction(id, tlid, acct_id) {
if (tlid == "notf") {
var tlide = "[data-acct=" + acct_id + "] .notf-timeline";
} else if (tlid == "user") {
var tlide = "#his-tl-contents";
} else {
var tlide = "[tlid=" + tlid + "]";
}
if(!$(tlide+" [toot-id="+id+"]").hasClass("ext-mode")){
$(tlide+" [toot-id="+id+"] .type-a").hide();
$(tlide+" [toot-id="+id+"] .type-b").show();
$(tlide+" [toot-id="+id+"]").addClass("ext-mode")
$(tlide+" [toot-id="+id+"] .act-icon").text("expand_less");
}else{
$(tlide+" [toot-id="+id+"] .type-b").hide();
$(tlide+" [toot-id="+id+"] .type-a").show();
$(tlide+" [toot-id="+id+"]").removeClass("ext-mode")
$(tlide+" [toot-id="+id+"] .act-icon").text("expand_more");
if (!$(tlide + " [toot-id=" + id + "]").hasClass("ext-mode")) {
$(tlide + " [toot-id=" + id + "] .type-a").hide();
$(tlide + " [toot-id=" + id + "] .type-b").show();
$(tlide + " [toot-id=" + id + "]").addClass("ext-mode")
$(tlide + " [toot-id=" + id + "] .act-icon").text("expand_less");
} else {
$(tlide + " [toot-id=" + id + "] .type-b").hide();
$(tlide + " [toot-id=" + id + "] .type-a").show();
$(tlide + " [toot-id=" + id + "]").removeClass("ext-mode")
$(tlide + " [toot-id=" + id + "] .act-icon").text("expand_more");
}
}

View File

@@ -7,120 +7,203 @@ var prev_val = input.value;
var oldSuggest;
var suggest;
input.addEventListener("focus", function() {
input.addEventListener("focus", function () {
localStorage.removeItem("cursor");
var acct_id = $("#post-acct-sel").val();
$("#suggest").html("");
window.clearInterval(timer);
timer = window.setInterval(function() {
timer = window.setInterval(function () {
var new_val = input.value;
if(new_val==""){
if (new_val == "") {
$("#suggest").html("");
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) {
$("#right-side").hide()
$("#right-side").css("width", "300px")
$("#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")
}
return;
}
if (prev_val != new_val) {
var semoji = new_val.match(/:(\S{3,})/);
if(semoji){
if (semoji) {
var obj = JSON.parse(localStorage.getItem("emoji_" + acct_id));
if(!obj){
var ehtml=lang.lang_suggest_nodata;
}else{
if (!obj) {
var ehtml = lang.lang_suggest_nodata;
} else {
var num = obj.length;
var ehtml="";
var ehtml = "";
for (i = 0; i < num; i++) {
var emoji = obj[i];
if ( ~emoji.shortcode.indexOf(semoji[1])) {
if (~emoji.shortcode.indexOf(semoji[1])) {
if (emoji) {
ehtml = ehtml+'<a onclick="emojiInsert(\':' + emoji.shortcode +
': \',\':'+semoji[1]+'\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
ehtml = ehtml + '<a onclick="emojiInsert(\':' + emoji.shortcode +
': \',\':' + semoji[1] + '\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
}
}
}
}
}
if(ehtml!=""){
if (ehtml != "") {
$("#right-side").show()
$("#right-side").css("width", "200px")
$("#left-side").css("width", "calc(100% - 200px)")
var width = localStorage.getItem("postbox-width");
if (width) {
width = width.replace("px", "") * 1 + 200
} else {
width = 600
}
$("#post-box").css("width", width + "px")
$("#poll").addClass("hide")
$("#emoji").addClass("hide")
}else{
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
} else {
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) {
$("#right-side").hide()
$("#right-side").css("width", "300px")
$("#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")
}
}
$("#suggest").html(ehtml);
}
var tag = new_val.match(/#(\S{3,})/);
var acct = new_val.match(/@(\S{3,})/);
if(localStorage.getItem("imas")){
//セルフNP
var cpnp = new_val.match(/^(?!.*http)\/\/(\S{1,})/);
}else{
var cpnp=[];
}
if (cpnp && cpnp[1]) {
var q = cpnp[1];
cgNPs(q);
} else if (tag && tag[1]) {
if (tag && tag[1]) {
var q = tag[1];
} else if (acct && acct[1]) {
var q = acct[1];
}else {
} else {
$("#suggest").html("");
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) {
$("#right-side").hide()
$("#right-side").css("width", "300px")
$("#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")
}
return;
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
suggest = "https://" + domain + "/api/v1/search?q=" + q
var at = localStorage.getItem("acct_" + acct_id + "_at");
suggest = "https://" + domain + "/api/v2/search?q=" + q
if (suggest != oldSuggest) {
console.log(suggest)
console.log("Try to get suggest at " + suggest)
fetch(suggest, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
}).then(function (json) {
console.log(["Search", json]);
//ハッシュタグ
if (json.hashtags[0] && tag) {
if(tag[1]){
var tags = "";
Object.keys(json.hashtags).forEach(function(key4) {
var tag = json.hashtags[key4];
if(tag!=q){
tags = tags + '<a onclick="tagInsert(\'#' + tag + '\',\'#' + q +
'\')" class="pointer">#' + tag + '</a><br>';
if (tag[1]) {
var tags = [];
Object.keys(json.hashtags).forEach(function (key4) {
var tag = json.hashtags[key4];
var his = tag.history;
var uses = his[0].uses * 1 + his[1].uses * 1 + his[2].uses * 1 + his[3].uses * 1 + his[4].uses * 1 + his[5].uses * 1 + his[6].uses * 1;
tagHTML = '<br><a onclick="tagInsert(\'#' + escapeHTML(tag.name) + '\',\'#' + q + '\')" class="pointer">#' +
escapeHTML(tag.name) + '</a>&nbsp;' + uses + 'toot(s)'
var item = {
"uses": uses,
"html": tagHTML
}
tags.push(item)
});
var num_a = -1;
var num_b = 1;
tags = tags.sort(function (a, b) {
var x = a["uses"];
var y = b["uses"];
if (x > y) return num_a;
if (x < y) return num_b;
return 0;
});
var ins = ""
var nev = false
Object.keys(tags).forEach(function (key7) {
ins = ins + tags[key7].html
if (key7 <= 0 && !nev) {
ins = ins + '<br>'
nev = true
}
});
$("#suggest").html(ins);
$("#right-side").show()
$("#right-side").css("width", "200px")
$("#left-side").css("width", "calc(100% - 200px)")
var width = localStorage.getItem("postbox-width");
if (width) {
width = width.replace("px", "") * 1 + 200
} else {
width = 600
}
});
$("#right-side").show()
$("#suggest").html("Tags:<br>" + tags);
$("#poll").addClass("hide")
$("#emoji").addClass("hide")
$("#post-box").css("width", width + "px")
$("#poll").addClass("hide")
$("#emoji").addClass("hide")
}
} else if (json.accounts[0] && acct[1]) {
var accts = "";
Object.keys(json.accounts).forEach(function(key3) {
Object.keys(json.accounts).forEach(function (key3) {
var acct = json.accounts[key3];
if(acct.acct!=q){
accts = accts + '<a onclick="tagInsert(\'@' + acct.acct +
'\',\'@' + q + '\')" class="pointer">@' + acct.acct + '</a><br>';
if (acct.acct != q) {
//Instance Actorって…
if (acct.username.indexOf(".") < 0) {
accts = accts + '<a onclick="tagInsert(\'@' + acct.acct +
'\',\'@' + q + '\')" class="pointer">@' + acct.acct + '</a><br>';
}
}
});
$("#right-side").show()
$("#suggest").html("@:<br>" + accts);
$("#right-side").css("width", "200px")
$("#left-side").css("width", "calc(100% - 200px)")
var width = localStorage.getItem("postbox-width");
if (width) {
width = width.replace("px", "") * 1 + 200
} else {
width = 600
}
$("#post-box").css("width", width + "px")
$("#suggest").html(accts);
$("#poll").addClass("hide")
$("#emoji").addClass("hide")
} else {
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) {
$("#right-side").hide()
$("#right-side").css("width", "300px")
$("#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")
}
}
});
@@ -131,7 +214,7 @@ input.addEventListener("focus", function() {
}, 1000);
}, false);
input.addEventListener("blur", function() {
input.addEventListener("blur", function () {
window.clearInterval(timer);
favTag();
}, false);
@@ -140,50 +223,56 @@ function tagInsert(code, del) {
var selin = $("#textarea").prop('selectionStart');
if (!del) {
} else {
var regExp = new RegExp(del, "g");
var regExp = new RegExp(del.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
var now = now.replace(regExp, "");
selin=selin-del.length;
selin = selin - del.length;
}
if(selin>0){
var before = now.substr(0, selin);
var after = now.substr(selin, now.length);
newt = before + " "+ code+" " + after;
}else{
newt = code+" "+now;
if (selin > 0) {
var before = now.substr(0, selin);
var after = now.substr(selin, now.length);
newt = before + " " + code + " " + after;
} else {
newt = code + " " + now;
}
$("#textarea").val(newt);
$("#textarea").focus();
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) {
$("#right-side").hide()
$("#right-side").css("width", "300px")
$("#left-side").css("width", "50%")
var width = localStorage.getItem("postbox-width").replace("px", "") * 1;
if (!width) {
width = 300
}
$("#post-box").css("width", width + "px")
}
$("#suggest").html("");
}
function cgNPs(q){
function cgNPs(q) {
suggest = "https://cg.toot.app/api/v1/search/light?q=" + q
if (suggest != oldSuggest) {
console.log(suggest)
fetch(suggest, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
if (json[0]) {
var tags = "";
Object.keys(json).forEach(function(key4) {
var tag = json[key4];
tags = tags + '<a onclick="cgNP(\''+json[key4]+'\')" class="pointer">' + json[key4] + '</a> ';
});
$("#suggest").html("Cinderella NowPlaying:" + tags);
}else{
$("#suggest").html("Cinderella NowPlaying:Not Found");
}
if (suggest != oldSuggest) {
console.log("Try to get suggest at " + suggest)
fetch(suggest, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (json[0]) {
var tags = "";
Object.keys(json).forEach(function (key4) {
var tag = json[key4];
tags = tags + '<a onclick="cgNP(\'' + json[key4] + '\')" class="pointer">' + escapeHTML(json[key4]) + '</a> ';
});
$("#suggest").html("Cinderella NowPlaying:" + tags);
} else {
$("#suggest").html("Cinderella NowPlaying:Not Found");
}
});
}
}

View File

@@ -1,62 +1,79 @@
/*リプライ*/
function re(id,ats_cm,acct_id,mode){
function re(id, ats_cm, acct_id, mode) {
clear();
var ats=ats_cm.split(',');
localStorage.setItem("nohide",true);
var ats = ats_cm.split(',');
localStorage.setItem("nohide", true);
show();
$("#reply").val(id);
for(var i=0;i<ats.length;i++){
var at=ats[i];
var te=$("#textarea").val();
$("#textarea").val("@"+at+" "+te);
for (var i = 0; i < ats.length; i++) {
var at = ats[i];
var te = $("#textarea").val();
if (at != localStorage.getItem("user_" + acct_id)) {
$("#textarea").val("@" + at + " " + te);
}
}
$("#rec").text(lang.lang_yesno);
$("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true);
$('select').material_select();
$("#textarea").attr("placeholder",lang.lang_usetxtbox_reply);
$('select').formSelect();
$("#textarea").attr("placeholder", lang.lang_usetxtbox_reply);
$("#textarea").focus();
var profimg=localStorage.getItem("prof_"+acct_id);
if(!profimg){
profimg="../../img/missing.svg";
var profimg = localStorage.getItem("prof_" + acct_id);
if (!profimg) {
profimg = "../../img/missing.svg";
}
$("#acct-sel-prof").attr("src",profimg);
$("#acct-sel-prof").attr("src", profimg);
vis(mode);
}
function reEx(id){
function reEx(id) {
$('#tootmodal').modal('close');
var at=$("#tootmodal").attr("data-user");
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 mode = $("#tootmodal .vis-data").attr("data-vis");
re(id, at, acct_id, mode);
}
//引用
function qt(id,acct_id,at,url){
localStorage.setItem("nohide",true);
function qt(id, acct_id, at, url) {
localStorage.setItem("nohide", true);
var qt = localStorage.getItem("quote");
if(!qt){
var qt="simple";
if (!qt) {
var qt = "simple";
}
if(qt=="nothing"){
if (qt == "nothing") {
return false;
}
if(qt=="simple"){
if (qt == "simple") {
show();
$("#textarea").val("\n"+url);
}else if(qt=="mention"){
$("#textarea").val("\n" + url);
} else if (qt == "mention") {
show();
$("#textarea").val("\n"+url+" From:@"+at);
}else if(qt=="full"){
$("#textarea").val("\n" + url + " From:@" + at);
} else if (qt == "full") {
show();
var html=$("[toot-id="+id+"] .toot").html();
var html = $("[toot-id=" + id + "] .toot").html();
html = html.match(/^<p>(.+)<\/p>$/)[1];
html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n");
html=$.strip_tags(html);
$("#textarea").val("\n"+"@"+at+" "+html+"\n"+url);
html = $.strip_tags(html);
$("#textarea").val("\n" + "@" + at + " " + html + "\n" + url);
} else if (qt == "apiQuote") {
clear();
localStorage.setItem("nohide", true);
show();
$("#quote").val(id);
$("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true);
$('select').formSelect();
$("#textarea").attr("placeholder", lang.lang_usetxtbox_reply);
$("#textarea").focus();
var profimg = localStorage.getItem("prof_" + acct_id);
if (!profimg) {
profimg = "../../img/missing.svg";
}
$("#acct-sel-prof").attr("src", profimg);
}
$("#textarea").focus();
$("#post-acct-sel").val(acct_id);
$('select').material_select();
$('select').formSelect();
$("#textarea").focus();
}

View File

@@ -3,212 +3,209 @@
function additional(acct_id, tlid) {
//メンション系
//$(".mention").attr("href", "");
$(".mention").addClass("parsed");
$(".hashtag").each(function(i, elem) {
$("#timeline-container .mention").addClass("parsed");
$("#timeline-container .hashtag").each(function (i, elem) {
var tags = $(this).attr("href").match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
);
$(this).attr("href","#");
if(tags){
if(tags[2]){
$(this).attr("onclick",'tagShow(\'' + tags[2] + '\')');
$(this).attr("href", "#");
if (tags) {
if (tags[2]) {
$(this).attr("onclick", 'tagShow(\'' + tags[2] + '\')');
}
}
});
//トゥートサムネ
$("#timeline_" + tlid + " .toot a:not(.parsed)").each(function(i, elem) {
$("#timeline_" + tlid + " .toot a:not(.parsed)").each(function (i, elem) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var card = localStorage.getItem("card_" + tlid);
var text = $(this).attr('href');
if(text){
if(text.indexOf("twimg.com")=== -1){
if (text) {
if (text.indexOf("twimg.com") === -1) {
var urls = text.match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
);
}
}else{
var urls =[]
} else {
text = ""
var urls = []
}
//トゥートのURLぽかったら
toot = text.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
if(toot){
if(toot[1]){
$(this).attr("data-acct",acct_id);
if (toot) {
if (toot[1]) {
$(this).attr("data-acct", acct_id);
}
}
if (urls) {
$(this).remove();
} else if (!card) {
var id = $(this).parents('.cvo').attr("toot-id");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/url?url="+text;
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/url?url=" + text;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
//body: JSON.stringify({})
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
}).then(function (json) {
if (json.title) {
$("[toot-id=" + id + "] .additional").html(
"<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + json.title + "<br>" +
json.description + "</span>");
"<span class=\"gray\">URL" + lang.lang_cards_check + ":<br>Title:" + escapeHTML(json.title) + "<br>" +
escapeHTML(json.description) + "</span>");
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
$("[toot-id=" + id + "]").addClass("parsed");
}
});
}
}else{
$(this).attr("title",text);
} else {
$(this).attr("title", text);
}
});
$("i.unparsed").each(function(i, elem) {
var dem=$(this).text();
var dom=$(this);
$("i.unparsed").each(function (i, elem) {
var dem = $(this).text();
var dom = $(this);
var start = "./js/emoji/emoji-map.json";
var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.onreadystatechange = function()
{
if( this.readyState === 4 && this.status === 200 ) {
if( this.response){
var json=this.response;
var emojis=json.emojis;
for (i = 0; i < emojis.length; i++) {
var emojie = emojis[i];
var regExp = new RegExp(dem, "g");
if (emojie.emoji.match(regExp)) {
var sc=emojie.name;
var sc="twa-"+sc.replace(/_/g,"-");
dom.addClass(sc);
dom.text("");
dom.removeClass("unparsed");
break;
}
}
}
}
}
xmlHttpRequest.open( 'GET', start, true );
xmlHttpRequest.responseType = 'json';
xmlHttpRequest.send( null );
xmlHttpRequest.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
if (this.response) {
var json = this.response;
var emojis = json.emojis;
for (i = 0; i < emojis.length; i++) {
var emojie = emojis[i];
var regExp = new RegExp(dem, "g");
if (emojie.emoji.match(regExp)) {
var sc = emojie.name;
var sc = "twa-" + sc.replace(/_/g, "-");
dom.addClass(sc);
dom.text("");
dom.removeClass("unparsed");
break;
}
}
}
}
}
xmlHttpRequest.open('GET', start, true);
xmlHttpRequest.responseType = 'json';
xmlHttpRequest.send(null);
});
$("#timeline_" + tlid + " .toot:not(:has(a:not(.add-show,.parsed)))").each(function(i, elem) {
$("#timeline_" + tlid + " .toot:not(:has(a:not(.add-show,.parsed)))").each(function (i, elem) {
$(this).parent().find(".add-show").hide();
});
//Markdownイメージビューワー
$("#timeline_" + tlid + " .toot a:not(.img-parsed):has(img)").each(function(i, elem) {
var ilink=$(this).attr("href");
var id = $(this).parents('.cvo').attr("toot-id");
$(this).attr("href","#");
$(this).attr("onclick","imgv('"+id+"','"+i+"')");
$(this).attr("data-type","image");
$(this).attr("id",id+"-image-"+i);
$(this).attr("data-url",ilink);
$(this).addClass("img-parsed");
$("#timeline_" + tlid + " .toot a:not(.img-parsed):has(img)").each(function (i, elem) {
var ilink = $(this).attr("href");
var id = $(this).parents('.cvo').attr("toot-id");
$(this).attr("href", "#");
$(this).attr("onclick", "imgv('" + id + "','" + i + "')");
$(this).attr("data-type", "image");
$(this).attr("id", id + "-image-" + i);
$(this).attr("data-url", ilink);
$(this).addClass("img-parsed");
});
}
function additionalIndv(tlid, acct_id, id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var text = $("[toot-id="+id+"] .toot a").attr('href');
var urls = text.match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
);
if (urls) {
$("[toot-id="+id+"] .toot a").remove();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var text = $("[toot-id=" + id + "] .toot a").attr('href');
var urls = text.match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
);
if (urls) {
$("[toot-id=" + id + "] .toot a").remove();
} else {
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/url?url=" + text;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
//body: JSON.stringify({})
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (json.title) {
$("[toot-id=" + id + "] .additional").html(
"<span class=\"gray\">URL" + lang.lang_cards_check + ":<br>Title:" + escapeHTML(json.title) + "<br>" +
escapeHTML(json.description) + "</span>");
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
$("[toot-id=" + id + "]").addClass("parsed");
}
});
} else {
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/url?url="+text;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
//body: JSON.stringify({})
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
var id = $("[toot-id=" + id + "] .toot a").parents('.cvo').attr("toot-id");
var start = "https://" + domain + "/api/v1/statuses/" + id;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
//body: JSON.stringify({})
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
json = json.card;
//このリンク鳥やんけ、ってとき
if (json.provider_name == "Twitter") {
if (json.image) {
var twiImg = '<br><img src="' + json.image + '" style="max-width:100%" onclick="imgv(\'twi_' + id + '\', 0, \'twitter\');" id="twi_' + id + '-image-0" data-url="' + json.image + '" data-type="image">';
} else {
var twiImg = '';
}
$("[toot-id=" + id + "] .additional").html(
'<div class="twitter-tweet"><b>' + escapeHTML(json.author_name) + '</b><br>' + escapeHTML(json.description) + twiImg + '</div>');
} else if (json.provider_name == "pixiv") {
if (json.image) {
var pxvImg = '<br><img src="' + json.image + '" style="max-width:100%" onclick="imgv(\'pixiv_' + id + '\', 0, \'pixiv\');" id="pixiv_' + id + '-image-0" data-url="' + json.embed_url + '" data-type="image">';
} else {
var pxvImg = '';
}
$("[toot-id=" + id + "] .additional").html(
'<div class="pixiv-post"><b><a href="' + json.author_url + '" target="_blank">' + escapeHTML(json.author_name) + '</a></b><br>' + escapeHTML(json.title) + pxvImg + '</div>');
} else {
if (json.title) {
$("[toot-id=" + id + "] .additional").html(
"<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + json.title + "<br>" +
json.description + "</span>");
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
$("[toot-id=" + id + "]").addClass("parsed");
"<span class=\"gray\">URL" + lang.lang_cards_check + ":<br>Title:" + escapeHTML(json.title) + "<br>" +
escapeHTML(json.description) + "</span>");
}
});
}else{
var id = $("[toot-id="+id+"] .toot a").parents('.cvo').attr("toot-id");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/card";
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
//body: JSON.stringify({})
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
//このリンク鳥やんけ、ってとき
console.log(json.provider_name);
if (json.provider_name=="Twitter"){
if(json.image){
var twiImg='<br><img src="'+json.image+'" style="max-width:100%" onclick="imgv(\'twi_'+id+'\', 0, \'twitter\');" id="twi_'+id+'-image-0" data-url="'+json.image+'" data-type="image">';
}else{
var twiImg='';
}
$("[toot-id=" + id + "] .additional").html(
'<div class="twitter-tweet"><b>'+escapeHTML(json.author_name)+'</b><br>'+escapeHTML(json.description)+twiImg+'</div>');
}else if (json.provider_name=="pixiv"){
if(json.image){
var pxvImg='<br><img src="'+json.image+'" style="max-width:100%" onclick="imgv(\'pixiv_'+id+'\', 0, \'pixiv\');" id="pixiv_'+id+'-image-0" data-url="'+json.embed_url+'" data-type="image">';
}else{
var pxvImg='';
}
$("[toot-id=" + id + "] .additional").html(
'<div class="pixiv-post"><b><a href="'+json.author_url+'" target="_blank">'+escapeHTML(json.author_name)+'</a></b><br>'+escapeHTML(json.title)+pxvImg+'</div>');
}else{
if (json.title) {
$("[toot-id=" + id + "] .additional").html(
"<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + escapeHTML(json.title) + "<br>" +
escapeHTML(json.description) + "</span>");
}
if (json.html) {
$("[toot-id=" + id + "] .additional").html(json.html+'<i class="material-icons sml pointer" onclick="pip(\''+id+'\')" title="'+lang.lang_cards_pip+'">picture_in_picture_alt</i>');
}
if (json.html) {
$("[toot-id=" + id + "] .additional").html(json.html + '<i class="material-icons sml pointer" onclick="pip(\'' + id + '\')" title="' + lang.lang_cards_pip + '">picture_in_picture_alt</i>');
}
if (json.title) {
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
$("[toot-id=" + id + "]").addClass("parsed");
}
});
}
}
if (json.title) {
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
$("[toot-id=" + id + "]").addClass("parsed");
}
});
}
}
}
//各TL上方のLink[On/Off]
@@ -217,11 +214,11 @@ function cardToggle(tlid) {
if (!card) {
localStorage.setItem("card_" + tlid, "true");
$("#sta-card-" + tlid).text("Off");
$("#sta-card-" + tlid).css("color",'red');
$("#sta-card-" + tlid).css("color", 'red');
} else {
localStorage.removeItem("card_" + tlid);
$("#sta-card-" + tlid).text("On");
$("#sta-card-" + tlid).css("color",'#009688');
$("#sta-card-" + tlid).css("color", '#009688');
}
}
//各TL上方のLink[On/Off]をチェック
@@ -229,57 +226,56 @@ function cardCheck(tlid) {
var card = localStorage.getItem("card_" + tlid);
if (!card) {
$("#sta-card-" + tlid).text("On");
$("#sta-card-" + tlid).css("color",'#009688');
$("#sta-card-" + tlid).css("color", '#009688');
} else {
$("#sta-card-" + tlid).text("Off");
$("#sta-card-" + tlid).css("color",'red');
$("#sta-card-" + tlid).css("color", 'red');
}
}
function mov(id,tlid,type){
if(tlid=="notf"){
var tlide="[data-notf="+acct_id+"]";
}else if(tlid=="user"){
var tlide="#his-data";
}else{
var tlide="[tlid="+tlid+"]";
function mov(id, tlid, type) {
if (tlid == "notf") {
var tlide = "[data-notf=" + acct_id + "]";
} else if (tlid == "user") {
var tlide = "#his-data";
} else {
var tlide = "[tlid=" + tlid + "]";
}
console.log(tlid)
var mouseover=localStorage.getItem("mouseover");
if(!mouseover){
mouseover="";
var mouseover = localStorage.getItem("mouseover");
if (!mouseover) {
mouseover = "";
}
if(mouseover=="yes"){
mouseover="hide";
}else if(mouseover=="click"){
if(type=="mv"){
mouseover="";
}else{
mouseover="hide";
if (mouseover == "yes") {
mouseover = "hide";
} else if (mouseover == "click") {
if (type == "mv") {
mouseover = "";
} else {
mouseover = "hide";
}
}else if(mouseover=="no"){
mouseover="";
} else if (mouseover == "no") {
mouseover = "";
}
if(mouseover=="hide"){
$(tlide+" [toot-id="+id+"] .area-actions").toggleClass("hide")
$(tlide+" [toot-id="+id+"] .area-side").toggleClass("hide")
if (mouseover == "hide") {
$(tlide + " [toot-id=" + id + "] .area-actions").toggleClass("hide")
$(tlide + " [toot-id=" + id + "] .area-side").toggleClass("hide")
}
}
function resetmv(type){
var mouseover=localStorage.getItem("mouseover");
if(!mouseover){
mouseover="";
}else if(mouseover=="yes"){
mouseover="hide";
}else if(mouseover=="no"){
mouseover="";
}else if(mouseover=="click" && type!="mv"){
mouseover="hide";
function resetmv(type) {
var mouseover = localStorage.getItem("mouseover");
if (!mouseover) {
mouseover = "";
} else if (mouseover == "yes") {
mouseover = "hide";
} else if (mouseover == "no") {
mouseover = "";
} else if (mouseover == "click" && type != "mv") {
mouseover = "hide";
}
if(mouseover=="hide"){
if (mouseover == "hide") {
$(".area-actions").addClass("hide");
$(".area-side").addClass("hide");
}
}

View File

@@ -1,26 +1,31 @@
//トゥートの詳細
function details(id, acct_id, tlid) {
$(".toot-reset").html(lang.lang_details_nodata);
var html = $("#timeline_"+tlid+" [toot-id=" + id + "]").html();
function details(id, acct_id, tlid, mode) {
if (mode == "dm") {
$(".dm-hide").hide();
} else {
$(".dm-hide").show();
}
$(".toot-reset").html('<span class="no-data">' + lang.lang_details_nodata + '</span>');
var html = $("#timeline_" + tlid + " [toot-id=" + id + "]").html();
$("#toot-this").html(html);
$('#tootmodal').modal('open');
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/api/notes/show";
var i={
var i = {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify({
i:at,
noteId:id
body: JSON.stringify({
i: at,
noteId: id
})
}
}else{
} else {
var start = "https://" + domain + "/api/v1/statuses/" + id;
var i={
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
@@ -28,160 +33,147 @@ function details(id, acct_id, tlid) {
},
}
}
fetch(start, i).then(function(response) {
fetch(start, i).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
if(!$("#timeline_"+tlid+" #pub_" + id).length){
}).then(function (json) {
console.log(["Toot data:", json]);
if (!$("#timeline_" + tlid + " #pub_" + id).length) {
var html = parse([json], '', acct_id);
$("#toot-this").html(html);
jQuery("time.timeago").timeago();
}
if(localStorage.getItem("mode_" + domain)=="misskey"){
var url="https://"+domain+"/notes/"+json.id;
var scn=json.user.username;
if(!json.user.host){
var local=true;
}else{
var local=false;
scn=scn+"@"+host;
if (localStorage.getItem("mode_" + domain) == "misskey") {
var url = "https://" + domain + "/notes/" + json.id;
var scn = json.user.username;
if (!json.user.host) {
var local = true;
} else {
var local = false;
scn = scn + "@" + host;
}
var rep="";
var uid=json.user.id;
if(json._replyIds){
var rep = "";
var uid = json.user.id;
if (json._replyIds) {
replyTL(json._replyIds[0], acct_id);
}
}else{
var url=json.url
if(json.account.acct==json.account.username){
var local=true;
}else{
var local=false;
} else {
var url = json.url
if (json.account.acct == json.account.username) {
var local = true;
} else {
var local = false;
}
var scn=json.account.acct;
var uid=json.account.id;
var scn = json.account.acct;
var uid = json.account.id;
if (json["in_reply_to_id"]) {
replyTL(json["in_reply_to_id"], acct_id);
}
}
$("#toot-this .fav_ct").text(json.favourites_count);
$("#toot-this .rt_ct").text(json.reblogs_count);
$("#tootmodal").attr("data-url",url);
$("#tootmodal").attr("data-id",json.id);
if(local){
$("#tootmodal").attr("data-user",scn+"@"+domain);
}else{
$("#tootmodal").attr("data-user",scn);
$("#tootmodal").attr("data-url", url);
$("#tootmodal").attr("data-id", json.id);
if (local) {
$("#tootmodal").attr("data-user", scn + "@" + domain);
} else {
$("#tootmodal").attr("data-user", scn);
}
context(id, acct_id);
var dom=null;
if(!local){
dom=scn.replace(/.+@/g,'');
}else{
dom=domain;
getContext(id, acct_id);
var dom = null;
if (!local) {
dom = scn.replace(/.+@/g, '');
} else {
dom = domain;
}
beforeToot(id, acct_id, dom);
userToot(id, acct_id, uid);
afterToot(id, acct_id, dom);
afterUserToot(id, acct_id, uid);
afterFTLToot(id, acct_id, dom);
faved(id, acct_id);
rted(id, acct_id);
if($("#toot-this div").hasClass("cvo")){
if ($("#toot-this div").hasClass("cvo")) {
$("#toot-this").removeClass("cvo");
}else{
$("#toot-this").addClass("cvo");
} else {
if(!$("#toot-this .cvo").hasClass("cvo")){
$("#toot-this").addClass("cvo");
}
}
if(!$("#activator").hasClass("active")){
$('#det-col').collapsible('open', 1);
if (!$("#activator").hasClass("active")) {
$('#det-col').collapsible('open', 4);
}
});
}
//返信タイムライン
function replyTL(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/api/notes/show";
var i={
var i = {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify({
i:at,
noteId:id
body: JSON.stringify({
i: at,
noteId: id
})
}
}else{
var start = "https://" + domain + "/api/v1/statuses/" + id;
var i={
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}
} else {
return false
}
fetch(start, i).then(function(response) {
fetch(start, i).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"thread");
}else{
var mute=[];
}).then(function (json) {
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "thread");
} else {
var mute = [];
}
if(localStorage.getItem("mode_" + domain)=="misskey"){
var templete = misskeyParse([json], '', acct_id,"","",mute);
if (localStorage.getItem("mode_" + domain) == "misskey") {
var templete = misskeyParse([json], '', acct_id, "", "", mute);
$("#toot-after").prepend(templete);
$("#toot-after .hide").html(lang.lang_details_filtered);
$("#toot-after .by_filter").css("display","block");
$("#toot-after .by_filter").css("display", "block");
$("#toot-after .by_filter").removeClass("hide");
var rep="_replyIds";
var rep = "_replyIds";
if (json[rep]) {
replyTL(json[rep][0], acct_id);
}
}else{
var templete = parse([json], '', acct_id,"","",mute);
$("#toot-reply").prepend(templete);
$("#toot-reply .hide").html(lang.lang_details_filtered);
$("#toot-reply .by_filter").css("display","block");
$("#toot-reply .by_filter").removeClass("hide");
jQuery("time.timeago").timeago();
var rep="in_reply_to_id";
if (json[rep]) {
replyTL(json[rep], acct_id);
}
}
});
}
//コンテクストってなんですか
function context(id, acct_id) {
function getContext(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/api/notes/conversation";
var i={
var i = {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify({
i:at,
noteId:id
body: JSON.stringify({
i: at,
noteId: id
})
}
}else{
} else {
var start = "https://" + domain + "/api/v1/statuses/" + id + "/context";
var i={
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
@@ -189,79 +181,92 @@ function context(id, acct_id) {
},
}
}
fetch(start, i).then(function(response) {
fetch(start, i).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
if(localStorage.getItem("mode_" + domain)=="misskey"){
}).then(function (json) {
if (localStorage.getItem("mode_" + domain) == "misskey") {
json.reverse();
console.log(json);
var templete = misskeyParse(json, '', acct_id,"","",[]);
var templete = misskeyParse(json, '', acct_id, "", "", []);
$("#toot-reply").html(templete);
$("#toot-reply .hide").html(lang.lang_details_filtered);
$("#toot-reply .by_filter").css("display","block");
$("#toot-reply .by_filter").css("display", "block");
$("#toot-reply .by_filter").removeClass("hide");
jQuery("time.timeago").timeago();
}else{
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"thread");
}else{
var mute=[];
} else {
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "thread");
} else {
var mute = [];
}
var templete = parse(json.descendants, '', acct_id, "", "", mute);
if (templete != "") {
$("#toot-after .no-data").hide();
}
var templete = parse(json.descendants, '', acct_id,"","",mute);
$("#toot-after").html(templete);
$("#toot-after .hide").html(lang.lang_details_filtered);
$("#toot-after .by_filter").css("display","block");
$("#toot-after .by_filter").css("display", "block");
$("#toot-after .by_filter").removeClass("hide");
var templete = parse(json.ancestors, '', acct_id, "", "", mute);
if (templete != "") {
$("#toot-reply .no-data").hide();
}
$("#toot-reply").prepend(templete);
$("#toot-reply .hide").html(lang.lang_details_filtered);
$("#toot-reply .by_filter").css("display", "block");
$("#toot-reply .by_filter").removeClass("hide");
jQuery("time.timeago").timeago();
}
});
}
//前のトゥート(Back TL)
function beforeToot(id, acct_id, domain) {
//var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain +
"/api/notes/local-timeline"
"/api/notes/local-timeline"
fetch(start, {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify({
i:at,
untilID:id
body: JSON.stringify({
i: at,
untilID: id
})
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
var templete = misskeyParse(json, 'noauth', acct_id);
$("#toot-before").html(templete);
jQuery("time.timeago").timeago();
});
}else{
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
var templete = misskeyParse(json, 'noauth', acct_id);
$("#toot-before").html(templete);
jQuery("time.timeago").timeago();
});
} else {
var start = "https://" + domain +
"/api/v1/timelines/public?local=true&max_id=" + id;
"/api/v1/timelines/public?local=true&max_id=" + id;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
}).then(function (json) {
var templete = parse(json, 'noauth', acct_id);
if (templete != "") {
$("#toot-before .no-data").hide();
}
$("#toot-before").html(templete);
jQuery("time.timeago").timeago();
});
@@ -270,31 +275,31 @@ function beforeToot(id, acct_id, domain) {
//前のユーザーのトゥート
function userToot(id, acct_id, user) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain +
"/api/users/notes"
"/api/users/notes"
fetch(start, {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify({
i:at,
untilID:id,
userId:user
body: JSON.stringify({
i: at,
untilID: id,
userId: user
})
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
var templete = misskeyParse(json, 'noauth', acct_id);
$("#user-before").html(templete);
jQuery("time.timeago").timeago();
});
}else{
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
var templete = misskeyParse(json, 'noauth', acct_id);
$("#user-before").html(templete);
jQuery("time.timeago").timeago();
});
} else {
var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses?max_id=" + id;
fetch(start, {
method: 'GET',
@@ -302,25 +307,103 @@ function userToot(id, acct_id, user) {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
}).then(function (json) {
var templete = parse(json, '', acct_id);
if (templete != "") {
$("#user-before .no-data").hide();
}
$("#user-before").html(templete);
jQuery("time.timeago").timeago();
});
}
}
//後のLTL
function afterToot(id, acct_id, domain) {
//var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain +
"/api/v1/timelines/public?local=true&min_id=" + id;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
var templete = parse(json, 'noauth', acct_id);
if (templete != "") {
$("#ltl-after .no-data").hide();
}
$("#ltl-after").html(templete);
jQuery("time.timeago").timeago();
});
}
//後のUTL
function afterUserToot(id, acct_id, user) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses?min_id=" + id;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
var templete = parse(json, '', acct_id);
if (templete != "") {
$("#user-after .no-data").hide();
}
$("#user-after").html(templete);
jQuery("time.timeago").timeago();
});
}
//後のFTL
function afterFTLToot(id, acct_id, domain) {
//var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain +
"/api/v1/timelines/public?min_id=" + id;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
var templete = parse(json, 'noauth', acct_id);
if (templete != "") {
$("#ftl-after .no-data").hide();
}
$("#ftl-after").html(templete);
jQuery("time.timeago").timeago();
});
}
//ふぁぼ一覧
function faved(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
if(localStorage.getItem("mode_" + domain)=="misskey"){ return false; }
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") { return false; }
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/favourited_by";
fetch(start, {
method: 'GET',
@@ -328,22 +411,26 @@ function faved(id, acct_id) {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
}).then(function (json) {
var templete = userparse(json, '', acct_id);
if (templete != "") {
$("#toot-fav .no-data").hide();
}
$("#toot-fav").html(templete);
jQuery("time.timeago").timeago();
});
}
//ブースト一覧
function rted(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
if(localStorage.getItem("mode_" + domain)=="misskey"){ return false; }
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") { return false; }
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/reblogged_by";
fetch(start, {
method: 'GET',
@@ -351,172 +438,109 @@ function rted(id, acct_id) {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
}).then(function (json) {
var templete = userparse(json, '', acct_id);
$("#toot-rt").html(templete);
jQuery("time.timeago").timeago();
});
}
//URL等のコピー
function cbCopy(mode){
var url=$("#tootmodal").attr("data-url");
function cbCopy(mode) {
var url = $("#tootmodal").attr("data-url");
var urls = url.match(/https?:\/\/([-.a-zA-Z0-9]+)/);
var domain=urls[1];
if(mode=="emb"){
var emb='<iframe src="'+url+'/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"></iframe><script src="https://'+domain+'/embed.js" async="async"></script>';
var domain = urls[1];
if (mode == "emb") {
var emb = '<iframe src="' + url + '/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"></iframe><script src="https://' + domain + '/embed.js" async="async"></script>';
execCopy(emb)
Materialize.toast(lang.lang_details_embed, 1500);
}else{
if(execCopy(url)){
Materialize.toast(lang.lang_details_url, 1500);
M.toast({ html: lang.lang_details_embed, displayLength: 1500 })
} else {
if (execCopy(url)) {
M.toast({ html: lang.lang_details_url, displayLength: 1500 })
}
}
}
//本文のコピー
function staCopy(id){
var html=$("[toot-id="+id+"] .toot").html();
html = html.replace(/^<p>(.+)<\/p>$/,"$1");
function staCopy(id) {
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");
console.log(html);
console.log("Copy it:\n" + html);
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
html=$.strip_tags(html);
if(execCopy(html)){
Materialize.toast(lang.lang_details_txt, 1500);
html = $.strip_tags(html);
if (execCopy(html)) {
M.toast({ html: lang.lang_details_txt, displayLength: 1500 })
}
}
//魚拓
function shot(){
var title=$("#tootmodal").attr("data-id");
var off = $('#toot-this').offset();
var w=$("#toot-this").width()+50;
var h=$("#toot-this").height()+50;
var electron = require("electron");
const fs = require("fs");
const os = require('os')
const shell = electron.shell;
const path = require('path')
var ipc = electron.ipcRenderer;
let options = {
types: ['screen'],
thumbnailSize: {
width: window.parent.screen.width,
height: window.parent.screen.height
}
}
const desktopCapturer = electron.desktopCapturer;
desktopCapturer.getSources(options, function(error, sources) {
if (error) return console.log(error)
sources.forEach(function(source) {
if (source.name === 'Screen 1' || source.name === 'TheDesk') {
var durl=source.thumbnail.toDataURL();
var b64 = durl.match(
/data:image\/png;base64,(.+)/
);
const screenshotPath = path.join(os.tmpdir(), 'screenshot.png');
const savePath = path.join(os.tmpdir(), 'screenshot.png');
var ipc = electron.ipcRenderer;
if(localStorage.getItem("savefolder")){
var save=localStorage.getItem("savefolder");
}else{
var save="";
}
ipc.send('shot', ['file://' + screenshotPath,w,h,b64[1],title,off.top+50,off.left,save]);
if($("#toot-this .img-parsed").length>0){
for(i=0;i<$("#toot-this .img-parsed").length;i++){
var url=$("#toot-this .img-parsed").eq(i).attr("data-url");
if(localStorage.getItem("savefolder")){
var save=localStorage.getItem("savefolder");
}else{
var save="";
}
ipc.send('shot-img-dl', [url,title+"_img"+i+".png",save]);
}
}
return;
const message = `Saved screenshot to: ${screenshotPath}`
//screenshotMsg.textContent = message
}
})
})
}
//翻訳
function trans(tar,to){
var html=$("#toot-this .toot").html();
if(html.match(/^<p>(.+)<\/p>$/)){
function trans(tar, to) {
var html = $("#toot-this .toot").html();
if (html.match(/^<p>(.+)<\/p>$/)) {
html = html.match(/^<p>(.+)<\/p>$/)[1];
}
html = html.replace(/<br\s?\/?>/g, "\n");
html = html.replace(/<p>/g, "\n");
html = html.replace(/<\/p>/g, "\n");
html=$.strip_tags(html);
if(~tar.indexOf("zh")){
tar="zh";
html = $.strip_tags(html);
if (~tar.indexOf("zh")) {
tar = "zh";
}
$("#toot-this .additional").text("Loading...(Powered by Google Translate)");
var exec='https://script.google.com/macros/s/AKfycbxhwW5tjjop9Irg-y1zr_WsXlCKEzwWG6KuoOt_vVRDfEbRv0c/exec?format=json&text='+encodeURIComponent(html)+'&source='+tar+'&target='+to
console.log(exec);
var exec = 'https://script.google.com/macros/s/AKfycbxhwW5tjjop9Irg-y1zr_WsXlCKEzwWG6KuoOt_vVRDfEbRv0c/exec?format=json&text=' + encodeURIComponent(html) + '&source=' + tar + '&target=' + to
console.log("Try to translate from " + tar + " to " + to + " at " + exec);
fetch(exec, {
method: 'GET',
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(text) {
$("#toot-this .additional").html('<span class="gray">'+text.text+'</span>');
}).then(function (text) {
$("#toot-this .additional").html('<span class="gray translate">' + text.text + '</span>');
});
}
//ブラウザで開く
function brws(){
var url=$("#tootmodal").attr("data-url");
const {
shell
} = require('electron');
shell.openExternal(url);
function brws() {
var url = $("#tootmodal").attr("data-url");
postMessage(["openUrl", url], "*")
}
//外部からトゥート開く
function detEx(url,acct_id){
if(acct_id=="main"){
acct_id=localStorage.getItem("main");
function detEx(url, acct_id) {
if (acct_id == "main") {
acct_id = localStorage.getItem("main");
}
var domain = localStorage.getItem("domain_"+acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/search?resolve=true&q="+url
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/search?resolve=true&q=" + url
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
}
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
if(!json.statuses){
const {
shell
} = require('electron');
shell.openExternal(url);
}else{
var id=json.statuses[0].id;
}).then(function (json) {
if (!json.statuses) {
postMessage(["openUrl", url], "*")
} else {
var id = json.statuses[0].id;
$(".loadp").text($(".loadp").attr("href"));
$(".loadp").removeClass("loadp");
details(id, acct_id, 0)
}
});
return;
}

View File

@@ -15,7 +15,7 @@ function date(str, datetype) {
} else {
var min = date.getMinutes();
}
var sec=null;
var sec = null;
if (date.getSeconds() < 10) {
sec = "0" + date.getSeconds();
} else {
@@ -57,31 +57,31 @@ function date(str, datetype) {
//特殊フォーマット(インスタンス情報で利用)
function crat(str) {
var date = new Date(str);
var mnt=null;
if(date.getMonth()<9){
mnt="0"+(date.getMonth()+1);
}else{
mnt=date.getMonth()+1;
var mnt = null;
if (date.getMonth() < 9) {
mnt = "0" + (date.getMonth() + 1);
} else {
mnt = date.getMonth() + 1;
}
if(date.getDate()<10){
var dat="0"+date.getDate();
}else{
var dat=date.getDate();
if (date.getDate() < 10) {
var dat = "0" + date.getDate();
} else {
var dat = date.getDate();
}
if(date.getHours()<10){
var hrs="0"+date.getHours();
}else{
var hrs=date.getHours();
if (date.getHours() < 10) {
var hrs = "0" + date.getHours();
} else {
var hrs = date.getHours();
}
if(date.getMinutes()<10){
var mns="0"+date.getMinutes();
}else{
var mns=date.getMinutes();
if (date.getMinutes() < 10) {
var mns = "0" + date.getMinutes();
} else {
var mns = date.getMinutes();
}
if(date.getSeconds()<10){
var sec="0"+date.getSeconds();
}else{
var sec=date.getSeconds();
if (date.getSeconds() < 10) {
var sec = "0" + date.getSeconds();
} else {
var sec = date.getSeconds();
}
format_str = 'YYYY-MM-DD hh:mm:ss';
format_str = format_str.replace(/YYYY/g, date.getFullYear());

69
app/js/tl/directory.js Normal file
View File

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

View File

@@ -1,52 +1,79 @@
//DM(Conv) TL
function dm(acct_id, tlid, type,delc,voice) {
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: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
var templete = dmParse(json, type, acct_id, tlid, "", mute);
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);
});
}).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();
//reload(type, '', acct_id, tlid, data, mute, delc,voice);
$(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 sid = $("#timeline_" + tlid + " .cvo").last().attr("unique-id");
var start = "https://" + domain + "/api/v1/conversations?max_id=" + sid;
var type = "dm";
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
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 dmParse(obj, mix, acct_id, tlid, popup, mutefilter) {
console.log(obj);
function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var templete = '';
if(obj[0]){
localStorage.setItem("lastunix_"+ tlid,date(obj[0].created_at, 'unix'));
if (obj[0]) {
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';
if(actb){
var actb = 're,rt,fav,qt,del,pin,red';
if (actb) {
var actb = actb.split(',');
var disp={};
for(var k=0;k<actb.length;k++){
if(k<4){
var tp="type-a";
}else{
var tp="type-b";
var disp = {};
for (var k = 0; k < actb.length; k++) {
if (k < 4) {
var tp = "type-a";
} else {
var tp = "type-b";
}
disp[actb[k]]=tp;
disp[actb[k]] = tp;
}
}
var datetype = localStorage.getItem("datetype");
@@ -57,52 +84,52 @@ function dmParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var imh = localStorage.getItem("img-height");
//独自ロケール
var locale = localStorage.getItem("locale");
if(locale=="yes"){
var locale=false;
if (locale == "yes") {
var locale = false;
}
//ネイティブ通知
var native=localStorage.getItem("nativenotf");
if(!native){
native="yes";
var native = localStorage.getItem("nativenotf");
if (!native) {
native = "yes";
}
//クライアント強調
var emp = localStorage.getItem("client_emp");
if(emp){
if (emp) {
var emp = JSON.parse(emp);
}
//クライアントミュート
var mute = localStorage.getItem("client_mute");
if(mute){
if (mute) {
var mute = JSON.parse(mute);
}
//ユーザー強調
var useremp = localStorage.getItem("user_emp");
if(useremp){
if (useremp) {
var useremp = JSON.parse(useremp);
}
//ワード強調
var wordemp = localStorage.getItem("word_emp");
if(wordemp){
if (wordemp) {
var wordemp = JSON.parse(wordemp);
}
//ワードミュート
var wordmute = localStorage.getItem("word_mute");
if(wordmute){
if (wordmute) {
var wordmute = JSON.parse(wordmute);
wordmute = wordmute.concat(mutefilter);
}else{
} else {
wordmute = mutefilter;
}
//Ticker
var tickerck = localStorage.getItem("ticker_ok");
if(tickerck){
var ticker=true;
}else{
var ticker=false;
if (tickerck) {
var ticker = true;
} else {
var ticker = false;
}
//Cards
var card = localStorage.getItem("card_" + tlid);
if (!sent) {
var sent = 500;
}
@@ -129,116 +156,117 @@ function dmParse(obj, mix, acct_id, tlid, popup, mutefilter) {
if (!imh) {
var imh = "200";
}
if(!emp){
var emp=[];
if (!emp) {
var emp = [];
}
if(!mute){
var mute=[];
if (!mute) {
var mute = [];
}
if(!useremp){
var useremp=[];
if (!useremp) {
var useremp = [];
}
if(!wordemp){
var wordemp=[];
if (!wordemp) {
var wordemp = [];
}
if(!wordmute){
var wordmute=[];
if (!wordmute) {
var wordmute = [];
}
//via通知
var viashow=localStorage.getItem("viashow");
if(!viashow){
viashow="via-hide";
var viashow = localStorage.getItem("viashow");
if (!viashow) {
viashow = "via-hide";
}
if(viashow=="hide"){
viashow="via-hide";
if (viashow == "hide") {
viashow = "via-hide";
}
//認証なしTL
if(mix=="noauth"){
var noauth="hide";
var antinoauth="";
}else{
var noauth="";
var antinoauth="hide";
if (mix == "noauth") {
var noauth = "hide";
var antinoauth = "";
} else {
var noauth = "";
var antinoauth = "hide";
}
//マウスオーバーのみ
var mouseover=localStorage.getItem("mouseover");
if(!mouseover){
mouseover="";
}else if(mouseover=="yes" || mouseover=="click"){
mouseover="hide";
}else if(mouseover=="no"){
mouseover="";
var mouseover = localStorage.getItem("mouseover");
if (!mouseover) {
mouseover = "";
} else if (mouseover == "yes" || mouseover == "click") {
mouseover = "hide";
} else if (mouseover == "no") {
mouseover = "";
}
var local = [];
var times=[];
Object.keys(obj).forEach(function(key) {
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);
if(toot.account.emojis){
var dis_name = escapeHTML(toot.account.display_name);
if (toot.account.emojis) {
var actemojick = toot.account.emojis[0];
}else{
var actemojick=false;
} else {
var actemojick = false;
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.account.emojis).forEach(function(key5) {
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+': ">';
'" 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 = "";
//ユーザー強調
if(toot.account.username!=toot.account.acct){
var fullname=toot.account.acct;
}else{
var domain = localStorage.getItem("domain_" + acct_id);
var fullname=toot.account.acct+"@"+domain;
}
if(useremp){
Object.keys(useremp).forEach(function(key10) {
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;
} else {
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];
if(user==fullname){
if (user == fullname) {
boostback = "emphasized";
}
});
}
var id = toot.id;
var home = "";
var id = toot.id;
var home = "";
if (toot.account.locked) {
var locked = ' <i class="fa fa-lock red-text"></i>';
var locked = ' <i class="fas fa-lock red-text"></i>';
} else {
var locked = "";
}
if (!toot.application) {
var via = '';
viashow="hide";
viashow = "hide";
} else {
var via = toot.application.name;
var via = escapeHTML(toot.application.name);
//強調チェック
Object.keys(emp).forEach(function(key6) {
Object.keys(emp).forEach(function (key6) {
var cli = emp[key6];
if(cli == via){
if (cli == via) {
boostback = "emphasized";
}
});
//ミュートチェック
Object.keys(mute).forEach(function(key7) {
Object.keys(mute).forEach(function (key7) {
var cli = mute[key7];
if(cli == via){
if (cli == via) {
boostback = "hide";
}
});
}
if(mix=="pinned"){
if (mix == "pinned") {
boostback = "emphasized";
}
if (toot.spoiler_text && cw) {
@@ -247,19 +275,19 @@ function dmParse(obj, mix, acct_id, tlid, popup, mutefilter) {
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>';
'\')" 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;
if(ct1>ct2){ var ct= ct1; }else{ var ct= ct2; }
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; } else { 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 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>';
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>';
'\')" class="nex parsed">' + lang.lang_parse_more + '</a><br>';
} else {
var content = toot.content;
var spoil = escapeHTML(toot.spoiler_text);
@@ -272,66 +300,66 @@ function dmParse(obj, mix, acct_id, tlid, popup, mutefilter) {
);
if (urls) {
var analyze = '<a onclick="additionalIndv(\'' + tlid + '\',' + acct_id +
',\'' + id + '\')" class="add-show pointer">'+lang.lang_parse_url+'</a><br>';
',\'' + id + '\')" class="add-show pointer">' + lang.lang_parse_url + '</a><br>';
} else {
var analyze = '';
}
var viewer = "";
var hasmedia = "";
var youtube = "";
if(toot.emojis){
if (toot.emojis) {
var emojick = toot.emojis[0];
}else{
var emojick=false;
} else {
var emojick = false;
}
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function(key5) {
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+': ">';
'" 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){
if (toot.profile_emojis) {
var nicoemojick = toot.profile_emojis[0];
}else{
var nicoemojick=false;
} else {
var nicoemojick = false;
}
//絵文字があれば
if (nicoemojick) {
Object.keys(toot.profile_emojis).forEach(function(keynico) {
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+': ">';
'" 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);
if(dis_name){
dis_name=twemoji.parse(dis_name);
content = twemoji.parse(content);
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if(spoil){
spoil=twemoji.parse(spoil);
if (spoil) {
spoil = twemoji.parse(spoil);
}
var mediack = toot.media_attachments[0];
//メディアがあれば
var media_ids="";
var media_ids = "";
if (mediack) {
hasmedia = "hasmedia";
var cwdt = 100 / toot.media_attachments.length;
Object.keys(toot.media_attachments).forEach(function(key2) {
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+",";
media_ids = media_ids + media.id + ",";
var url = media.url;
if (toot.sensitive && nsfw) {
var sense = "sensitive"
@@ -342,9 +370,9 @@ function dmParse(obj, mix, acct_id, tlid, popup, mutefilter) {
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>';
' toot-img pointer" style="width:' + cwdt + '%; height:' + imh + 'px;"></a></span>';
});
media_ids = media_ids.slice(0, -1) ;
media_ids = media_ids.slice(0, -1);
} else {
viewer = "";
hasmedia = "nomedia";
@@ -354,7 +382,7 @@ function dmParse(obj, mix, acct_id, tlid, popup, mutefilter) {
//メンションであれば
if (menck) {
mentions = "";
Object.keys(toot.mentions).forEach(function(key3) {
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> ';
@@ -365,68 +393,14 @@ function dmParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var tags = "";
//タグであれば
if (tagck) {
Object.keys(toot.tags).forEach(function(key4) {
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> ';
',\'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(toot.replies_count || toot.replies_count===0){
var replyct=toot.replies_count;
}else{
var replyct="";
}
//公開範囲を取得
var vis = "";
var visen = toot.visibility;
if (visen == "public") {
var vis =
'<i class="text-darken-3 material-icons gray sml vis-data pointer" title="'+lang.lang_parse_public+'('+lang.lang_parse_clickcopy+')" data-vis="public" onclick="staCopy(\''+id+'\')" style="font-size:1rem;">public</i>';
var can_rt = "";
} else if (visen == "unlisted") {
var vis =
'<i class="text-darken-3 material-icons blue-text vis-data pointer" title="'+lang.lang_parse_unlisted+'('+lang.lang_parse_clickcopy+')" data-vis="unlisted" onclick="staCopy(\''+id+'\')" style="font-size:1rem;">lock_open</i>';
var can_rt = "";
} else if (visen == "private") {
var vis =
'<i class="text-darken-3 material-icons orange-text vis-data pointer" title="'+lang.lang_parse_private+'('+lang.lang_parse_clickcopy+')" data-vis="private" onclick="staCopy(\''+id+'\')" style="font-size:1rem;">lock</i>';
var can_rt = "hide";
} else if (visen == "direct") {
var vis =
'<i class="text-darken-3 material-icons red-text vis-data pointer" title="'+lang.lang_parse_direct+'('+lang.lang_parse_clickcopy+')" data-vis="direct" onclick="staCopy(\''+id+'\')" style="font-size:1rem;">mail</i>';
var can_rt = "hide";
}
if (toot.account.acct == localStorage.getItem("user_" + acct_id)) {
var if_mine = "";
var mine_via="type-b";
} else {
var if_mine = "hide";
var mine_via="";
}
if (toot.favourited) {
var if_fav = " yellow-text";
var fav_app = "faved";
} else {
var if_fav = "";
var fav_app = "";
}
if (toot.reblogged) {
var if_rt = "teal-text";
var rt_app = "rted";
} else {
var if_rt = "";
var rt_app = "";
}
if (toot.pinned) {
var if_pin = "blue-text";
var pin_app = "pinned";
} else {
var if_pin = "";
var pin_app = "";
}
//アニメ再生
if (gif == "yes") {
var avatar = toot.account.avatar;
@@ -434,107 +408,115 @@ function dmParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var avatar = toot.account.avatar_static;
}
//ワードミュート
if(wordmute){
Object.keys(wordmute).forEach(function(key8) {
if (wordmute) {
Object.keys(wordmute).forEach(function (key8) {
var worde = wordmute[key8];
if(worde){
if(worde.tag){
var word=worde.tag;
}else{
var word=worde
if (worde) {
if (worde.tag) {
var word = worde.tag;
} else {
var word = worde
}
var regExp = new RegExp( word, "g" ) ;
if($.strip_tags(content).match(regExp)){
var regExp = new RegExp(word, "g");
if ($.strip_tags(content).match(regExp)) {
boostback = "hide by_filter";
}
}
});
}
//ワード強調
if(wordemp){
Object.keys(wordemp).forEach(function(key9) {
if (wordemp) {
Object.keys(wordemp).forEach(function (key9) {
var word = wordemp[key9];
if(word){
var word=word.tag;
var regExp = new RegExp( word, "g" ) ;
content=content.replace(regExp,'<span class="emp">'+word+"</span>");
if (word) {
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>';
}else{
var trans="";
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>';
} else {
var trans = "";
}
if (toot.favourited) {
var if_fav = " yellow-text";
var fav_app = "faved";
} else {
var if_fav = "";
var fav_app = "";
}
//Cards
if (!card && toot.card) {
var cards=toot.card;
if (cards.provider_name=="Twitter"){
if(cards.image){
var twiImg='<br><img src="'+cards.image+'">';
}else{
var twiImg='';
}
analyze='<blockquote class="twitter-tweet"><b>'+escapeHTML(cards.author_name)+'</b><br>'+escapeHTML(cards.description)+twiImg+'</blockquote>';
var cards = toot.card;
if (cards.provider_name == "Twitter") {
if (cards.image) {
var twiImg = '<br><img src="' + cards.image + '">';
} else {
var twiImg = '';
}
if (cards.title) {
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 = '<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>";
}
if (cards.html) {
analyze = cards.html + '<i class="material-icons" onclick="pip(' + id + ')" title="' + lang.lang_cards_pip + '">picture_in_picture_alt</i>';
}
}
//Ticker
var tickerdom="";
if(ticker){
var tickerdata=localStorage.getItem("ticker")
if(tickerdata){
var tickerdata=JSON.parse(tickerdata);
var thisdomain=toot.account.acct.split("@");
if(thisdomain.length>1){
thisdomain=thisdomain[1];
}
for( var i=0; i<tickerdata.length; 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;"> '+value.name+'</span></div>';
break;
var tickerdom = "";
if (ticker) {
var tickerdata = localStorage.getItem("ticker")
if (tickerdata) {
var tickerdata = JSON.parse(tickerdata);
var thisdomain = toot.account.acct.split("@");
if (thisdomain.length > 1) {
thisdomain = thisdomain[1];
}
}
}
for (var i = 0; i < tickerdata.length; 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;
}
}
}
}
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + pin_app +
' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="'+media_ids+' " unixtime="' + date(obj[
key].created_at, 'unix') + '" '+if_notf+' onclick="dmStatus()">' +
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>' +
'"></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="fa fa-clock-o"></i>' +
'(' + 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="' +
'<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 + '' +
'</div>'+
'<div class="area-vis"></div>'+
'<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

@@ -3,38 +3,38 @@
function mediaToggle(tlid) {
var media = localStorage.getItem("media_" + tlid);
if (media) {
localStorage.removeItem("media_" + tlid);
localStorage.removeItem("media_" + tlid);
$("#sta-media-" + tlid).text("Off");
$("#sta-media-" + tlid).css("color",'red');
$("#timeline_"+tlid).removeClass("media-filter")
$("#sta-media-" + tlid).css("color", 'red');
$("#timeline_" + tlid).removeClass("media-filter")
} else {
localStorage.setItem("media_" + tlid, "true");
$("#sta-media-" + tlid).text("On");
$("#sta-media-" + tlid).css("color",'#009688');
$("#timeline_"+tlid).addClass("media-filter")
$("#sta-media-" + tlid).css("color", '#009688');
$("#timeline_" + tlid).addClass("media-filter")
}
}
//各TL上方のBT[BTOnly/BTExc/Off]
function ebtToggle(tlid) {
var ebt = localStorage.getItem("ebt_" + tlid);
if (ebt=="true") {
if (ebt == "true") {
localStorage.setItem("ebt_" + tlid, "but");
$("#sta-bt-" + tlid).text("BT Only");
$("#sta-bt-" + tlid).css("color",'#ff9800');
$("#timeline_"+tlid).addClass("except-bt-filter")
$("#timeline_"+tlid).removeClass("bt-filter")
}else if (ebt=="but") {
localStorage.removeItem("ebt_" + tlid);
$("#sta-bt-" + tlid).css("color", '#ff9800');
$("#timeline_" + tlid).addClass("except-bt-filter")
$("#timeline_" + tlid).removeClass("bt-filter")
} else if (ebt == "but") {
localStorage.removeItem("ebt_" + tlid);
$("#sta-bt-" + tlid).text("Off");
$("#sta-bt-" + tlid).css("color",'red');
$("#timeline_"+tlid).removeClass("bt-filter")
$("#timeline_"+tlid).removeClass("except-bt-filter")
$("#sta-bt-" + tlid).css("color", 'red');
$("#timeline_" + tlid).removeClass("bt-filter")
$("#timeline_" + tlid).removeClass("except-bt-filter")
} else {
localStorage.setItem("ebt_" + tlid, "true");
$("#sta-bt-" + tlid).text("BT Ex");
$("#sta-bt-" + tlid).css("color",'#009688');
$("#timeline_"+tlid).addClass("bt-filter")
$("#timeline_"+tlid).removeClass("except-bt-filter")
$("#sta-bt-" + tlid).css("color", '#009688');
$("#timeline_" + tlid).addClass("bt-filter")
$("#timeline_" + tlid).removeClass("except-bt-filter")
}
}
//各TL上方のMedia[On/Off]をチェック
@@ -42,146 +42,148 @@ function mediaCheck(tlid) {
var media = localStorage.getItem("media_" + tlid);
if (media) {
$("#sta-media-" + tlid).text("On");
$("#sta-media-" + tlid).css("color",'#009688');
$("#timeline_"+tlid).addClass("media-filter")
$("#sta-media-" + tlid).css("color", '#009688');
$("#timeline_" + tlid).addClass("media-filter")
} else {
$("#sta-media-" + tlid).text("Off");
$("#sta-media-" + tlid).css("color",'red');
$("#timeline_"+tlid).removeClass("media-filter")
$("#sta-media-" + tlid).css("color", 'red');
$("#timeline_" + tlid).removeClass("media-filter")
}
}
//各TL上方のBT[On/Off]をチェック
function ebtCheck(tlid) {
var ebt = localStorage.getItem("ebt_" + tlid);
if (ebt=="true") {
if (ebt == "true") {
$("#sta-bt-" + tlid).text("BT Ex");
$("#sta-bt-" + tlid).css("color",'#009688');
$("#timeline_"+tlid).addClass("bt-filter")
$("#timeline_"+tlid).removeClass("except-bt-filter")
} else if (ebt=="but") {
$("#sta-bt-" + tlid).css("color", '#009688');
$("#timeline_" + tlid).addClass("bt-filter")
$("#timeline_" + tlid).removeClass("except-bt-filter")
} else if (ebt == "but") {
$("#sta-bt-" + tlid).text("BT Only");
$("#sta-bt-" + tlid).css("color",'#ff9800');
$("#timeline_"+tlid).addClass("except-bt-filter")
$("#timeline_"+tlid).removeClass("bt-filter")
} else{
$("#sta-bt-" + tlid).css("color", '#ff9800');
$("#timeline_" + tlid).addClass("except-bt-filter")
$("#timeline_" + tlid).removeClass("bt-filter")
} else {
$("#sta-bt-" + tlid).text("Off");
$("#sta-bt-" + tlid).css("color",'red');
$("#timeline_"+tlid).removeClass("bt-filter")
$("#timeline_"+tlid).removeClass("except-bt-filter")
$("#sta-bt-" + tlid).css("color", 'red');
$("#timeline_" + tlid).removeClass("bt-filter")
$("#timeline_" + tlid).removeClass("except-bt-filter")
}
}
/* 削除追跡*/
function catchToggle(tlid) {
var catchck = localStorage.getItem("catch_" + tlid);
if (catchck) {
localStorage.removeItem("catch_" + tlid);
localStorage.removeItem("catch_" + tlid);
$("#sta-del-" + tlid).text("Off");
$("#sta-del-" + tlid).css("color",'red');
parseColumn();
$("#sta-del-" + tlid).css("color", 'red');
parseColumn(tlid);
} else {
localStorage.setItem("catch_" + tlid, "true");
$("#sta-del-" + tlid).text("On");
$("#sta-del-" + tlid).css("color",'#009688');
parseColumn();
$("#sta-del-" + tlid).css("color", '#009688');
parseColumn(tlid);
}
}
function catchCheck(tlid) {
var catchck = localStorage.getItem("catch_" + tlid);
if (catchck) {
$("#sta-del-" + tlid).text("On");
$("#sta-del-" + tlid).css("color",'#009688');
$("#sta-del-" + tlid).css("color", '#009688');
} else {
$("#sta-del-" + tlid).text("Off");
$("#sta-del-" + tlid).css("color",'red');
$("#sta-del-" + tlid).css("color", 'red');
}
}
function delreset(tlid){
function delreset(tlid) {
$("[tlid=" + tlid + "] .by_delcatch").hide();
$("[tlid=" + tlid + "] .by_delcatch").remove();
}
/*ワードフィルター機能*/
function filterMenu(){
$("#left-menu div").removeClass("active");
function filterMenu() {
$("#left-menu div").removeClass("active");
$("#filterMenu").addClass("active");
$(".menu-content").addClass("hide");
$("#filter-box").removeClass("hide");
$("#filter-box").removeClass("hide");
}
function filter(){
function filter() {
$("#filtered-words").html("");
$("#filter-edit-id").val("")
var acct_id = $("#filter-acct-sel").val();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/filters"
console.log(start)
var acct_id = $("#filter-acct-sel").val();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/filters"
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(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 = filters + escapeHTML(filterword.phrase)+'<span class="sml">(for '+context+')</span>:<a onclick="filterEdit(\'' + filterword.id + '\',\'' + acct_id +
'\')" class="pointer">'+lang.lang_edit+'</a>/<a onclick="filterDel(' + filterword.id + ',' + acct_id +
')" class="pointer">'+lang.lang_del+'</a><br> ';
filters = filters + escapeHTML(filterword.phrase) + '<span class="sml">(for ' + context + ')</span>:<a onclick="filterEdit(\'' + filterword.id + '\',\'' + acct_id +
'\')" class="pointer">' + lang.lang_edit + '</a>/<a onclick="filterDel(' + filterword.id + ',' + acct_id +
')" class="pointer">' + lang.lang_del + '</a><br> ';
});
if(filters==""){
filters=lang.lang_filter_nodata+"<br>";
if (filters == "") {
filters = lang.lang_filter_nodata + "<br>";
}
$("#filtered-words").html(filters);
}else{
$("#filtered-words").html(lang_filter_nodata);
}
} else {
$("#filtered-words").html(lang_filter_nodata);
}
});
}
function makeNewFilter(){
function filterTime(day, hour, min) {
$("#days_filter").val(day)
$("#hours_filter").val(hour)
$("#mins_filter").val(min)
}
function makeNewFilter() {
var acct_id = $("#filter-acct-sel").val();
var phr=$("#filter-add-word").val();
var cont=[];
if($("#home_filter:checked").val()){
var phr = $("#filter-add-word").val();
var cont = [];
if ($("#home_filter:checked").val()) {
cont.push("home");
}
if($("#local_filter:checked").val()){
if ($("#local_filter:checked").val()) {
cont.push("public");
}
if($("#notf_filter:checked").val()){
if ($("#notf_filter:checked").val()) {
cont.push("notifications");
}
if($("#conv_filter:checked").val()){
if ($("#conv_filter:checked").val()) {
cont.push("thread");
}
console.log(cont);
if(!cont.length){
$("#filtered-words").html('Error:'+lang.lang_filter_errordegree);
if (!cont.length) {
$("#filtered-words").html('Error:' + lang.lang_filter_errordegree);
}
var exc=$("#except_filter:checked").val();
var who=$("#wholeword_filter:checked").val();
if(!who){
who=false;
var exc = $("#except_filter:checked").val();
var who = $("#wholeword_filter:checked").val();
if (!who) {
who = false;
}
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()){
var start = "https://" + domain + "/api/v1/filters/"+$("#filter-edit-id").val();
var method="PUT"
}else{
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()) {
var start = "https://" + domain + "/api/v1/filters/" + $("#filter-edit-id").val();
var method = "PUT"
} else {
var start = "https://" + domain + "/api/v1/filters"
var method="POST"
var method = "POST"
}
var httpreq = new XMLHttpRequest();
httpreq.open(method, start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
@@ -191,21 +193,21 @@ function makeNewFilter(){
phrase: phr,
context: cont,
irreversible: exc,
whole_word:who,
expires_in:time
whole_word: who,
expires_in: time
}));
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
filter();
filterUpdate(acct_id)
$("#filter-add-word").val("");
$("#home_filter").prop("checked",false);
$("#local_filter").prop("checked",false);
$("#notf_filter").prop("checked",false);
$("#conv_filter").prop("checked",false);
$("#except_filter").prop("checked",false);
$("#wholeword_filter").prop("checked",false);
$("#home_filter").prop("checked", false);
$("#local_filter").prop("checked", false);
$("#notf_filter").prop("checked", false);
$("#conv_filter").prop("checked", false);
$("#except_filter").prop("checked", false);
$("#wholeword_filter").prop("checked", false);
$("#days_filter").val("0");
$("#hours_filter").val("0");
$("#mins_filter").val("0");
@@ -214,72 +216,70 @@ function makeNewFilter(){
}
}
}
function filterEdit(id,acct_id){
$("#filter-add-word").val("");
$("#home_filter").prop("checked",false);
$("#local_filter").prop("checked",false);
$("#notf_filter").prop("checked",false);
$("#conv_filter").prop("checked",false);
$("#except_filter").prop("checked",false);
$("#wholeword_filter").prop("checked",false);
$("#days_filter").val("0");
$("#hours_filter").val("0");
$("#mins_filter").val("0");
function filterEdit(id, acct_id) {
$("#filter-add-word").val("");
$("#home_filter").prop("checked", false);
$("#local_filter").prop("checked", false);
$("#notf_filter").prop("checked", false);
$("#conv_filter").prop("checked", false);
$("#except_filter").prop("checked", false);
$("#wholeword_filter").prop("checked", false);
$("#days_filter").val("0");
$("#hours_filter").val("0");
$("#mins_filter").val("0");
$("#add-filter-btn").text(lang.lang_edit);
$("#filter-edit-id").val(id);
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/filters/"+id
console.log(start)
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/filters/" + id
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
}).then(function (json) {
if (json) {
var now = new Date() ;
now = now.getTime() ;
var now = Math.floor(now / 1000 ) ;
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);
$("[value=" + context + "]").prop("checked", true);
});
if(json.irreversible){
$("#except_filter").prop("checked",true);
if (json.irreversible) {
$("#except_filter").prop("checked", true);
}
if(json.whole_word){
$("#wholeword_filter").prop("checked",true);
if (json.whole_word) {
$("#wholeword_filter").prop("checked", true);
}
var expires=date(json.expires_at, 'unix')-now;
var mins=Math.floor(expires/60)%60;
var hours=Math.floor(expires/3600)%24;
var days=Math.floor(expires/3600/24);
var expires = date(json.expires_at, 'unix') - now;
var mins = Math.floor(expires / 60) % 60;
var hours = Math.floor(expires / 3600) % 24;
var days = Math.floor(expires / 3600 / 24);
$("#days_filter").val(days);
$("#hours_filter").val(hours);
$("#mins_filter").val(mins);
}
});
}
function filterDel(id,acct_id){
function filterDel(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/filters/"+id;
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/filters/" + id;
var httpreq = new XMLHttpRequest();
httpreq.open("DELETE", start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
filter();
@@ -287,98 +287,96 @@ function filterDel(id,acct_id){
}
}
}
function getFilter(acct_id){
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)!="misskey"){
var start = "https://" + domain + "/api/v1/filters"
console.log(start)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
localStorage.setItem("filter_"+ acct_id ,JSON.stringify(json));
});
}else{
localStorage.setItem("filter_"+ acct_id ,JSON.stringify({}));
function getFilter(acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) != "misskey") {
var start = "https://" + domain + "/api/v1/filters"
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
localStorage.setItem("filter_" + acct_id, JSON.stringify(json));
});
} else {
localStorage.setItem("filter_" + acct_id, JSON.stringify({}));
}
}
function getFilterType(json,type){
if(!json){
function getFilterType(json, type) {
if (!json) {
return [];
}
if(type=="local"){
type="public";
}else if(type=="list"){
type="home";
}else if(type=="notf"){
type="notifi";
if (type == "local") {
type = "public";
} else if (type == "list") {
type = "home";
} else if (type == "notf") {
type = "notifi";
}
var mutedfilters=[];
Object.keys(json).forEach(function(key) {
var mutedfilters = [];
Object.keys(json).forEach(function (key) {
var filterword = json[key];
var phrases = filterword.phrase;
if(filterword.context.join(",").indexOf(type)!== -1){
if (filterword.context.join(",").indexOf(type) !== -1) {
mutedfilters.push(phrases);
}
});
return mutedfilters;
}
function filterUpdate(acct_id){
function filterUpdate(acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/filters"
console.log(start)
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/filters"
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
localStorage.setItem("filter_"+ acct_id ,JSON.stringify(json));
filterUpdateInternal(json,"home");
filterUpdateInternal(json,"local");
filterUpdateInternal(json,"notf");
filterUpdateInternal(json,"pub");
}).then(function (json) {
localStorage.setItem("filter_" + acct_id, JSON.stringify(json));
filterUpdateInternal(json, "home");
filterUpdateInternal(json, "local");
filterUpdateInternal(json, "notf");
filterUpdateInternal(json, "pub");
});
}
function filterUpdateInternal(json,type){
var home=getFilterType(json,type);
var wordmute = localStorage.getItem("word_mute");
if(wordmute){
var wordmute = JSON.parse(wordmute);
home = home.concat(wordmute);
}
if(home){
$("[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 word = home[key8];
var regExp = new RegExp( word, "g" );
if($.strip_tags(text).match(regExp)){
$("[toot-id="+id+"]").addClass("hide");
}
});
function filterUpdateInternal(json, type) {
var home = getFilterType(json, type);
var wordmute = localStorage.getItem("word_mute");
if (wordmute) {
var wordmute = JSON.parse(wordmute);
home = home.concat(wordmute);
}
if (home) {
$("[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 word = home[key8];
var regExp = new RegExp(word.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g");
if ($.strip_tags(text).match(regExp)) {
$("[toot-id=" + id + "]").addClass("hide");
}
});
}
});
}
}
/*
<a onclick="catchToggle(' + key +
@@ -387,53 +385,74 @@ function filterUpdateInternal(json,type){
')" class="pointer">リセット</a><br>
*/
//通知フィルター
function exclude(key){
var excludetxt="";
if($('#exc-reply-'+key+':checked').val()){
excludetxt="?exclude_types[]=mention"
var reply=true
}else{
var reply=false;
function exclude(key) {
localStorage.setItem("exclude-" + key, "")
var excludetxt = localStorage.getItem("exclude-" + key);
if ($('#exc-reply-' + key + ':checked').val()) {
excludetxt = "?exclude_types[]=mention"
}
if($('#exc-fav-'+key+':checked').val()){
if(reply){
excludetxt=excludetxt+"&exclude_types[]=favourite"
}else{
excludetxt="?exclude_types[]=favourite"
if ($('#exc-fav-' + key + ':checked').val()) {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=favourite"
} else {
excludetxt = "?exclude_types[]=favourite"
}
var fav=true
}else{
var fav=false;
}
if($('#exc-bt-'+key+':checked').val()){
if(reply || fav){
excludetxt=excludetxt+"&exclude_types[]=reblog"
}else{
excludetxt="?exclude_types[]=reblog"
if ($('#exc-bt-' + key + ':checked').val()) {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=reblog"
} else {
excludetxt = "?exclude_types[]=reblog"
}
var bt=true
}else{
var bt=false;
}
if($('#exc-follow-'+key+':checked').val()){
if(reply || bt || fav){
excludetxt=excludetxt+"&exclude_types[]=follow"
}else{
excludetxt="?exclude_types[]=follow"
if ($('#exc-follow-' + key + ':checked').val()) {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=follow"
} else {
excludetxt = "?exclude_types[]=follow"
}
}else{
}
localStorage.setItem("exclude-"+key,excludetxt)
parseColumn();
if ($('#exc-poll-' + key + ':checked').val()) {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=poll"
} else {
excludetxt = "?exclude_types[]=poll"
}
} else {
}
localStorage.setItem("exclude-" + key, excludetxt)
parseColumn(key);
}
function excludeCk(key,target){
var exc=localStorage.getItem("exclude-"+key);
if(!exc){
function excludeCk(key, target) {
var exc = localStorage.getItem("exclude-" + key);
if (!exc) {
return "";
}
if(~exc.indexOf(target)){
if (~exc.indexOf(target)) {
return "checked"
}else{
} else {
return "";
}
}
function checkNotfFilter(tlid){
var excludetxt = localStorage.getItem("exclude-" + tlid);
if(!excludetxt || excludetxt != ""){
return true;
}else{
return false;
}
}
function resetNotfFilter(tlid){
localStorage.setItem("exclude-" + tlid, "")
parseColumn(tlid);
}
function notfFilter(id,tlid,acct_id){
var excludetxt = localStorage.getItem("exclude-" + tlid);
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&account_id="+id
} else {
excludetxt = "?account_id="+id
}
localStorage.setItem("exclude-" + tlid, excludetxt)
parseColumn(tlid);
}

View File

@@ -1,195 +1,286 @@
function listMenu(){
$("#left-menu div").removeClass("active");
function listMenu() {
$("#left-menu div").removeClass("active");
$("#listMenu").addClass("active");
$(".menu-content").addClass("hide");
$("#list-box").removeClass("hide");
$("#list-box").removeClass("hide");
$('ul.tabs').tabs('select_tab', 'src-sta');
$("#src-contents").html("");
}
function list(){
$("#lists-user").html("");
var acct_id = $("#list-acct-sel").val();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/lists"
console.log(start)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
if (json) {
var lists = "";
Object.keys(json).forEach(function(key) {
var list = json[key];
lists = lists + list.title+':<a onclick="listShow(' + list.id + ',\'' + list.title + '\',\'' + acct_id +
'\')" class="pointer">'+lang.lang_list_show+'</a>/<a onclick="listUser(' + list.id + ',' + acct_id +
')" class="pointer">'+lang.lang_list_users+'</a><br> ';
});
$("#lists").html(lists);
}else{
$("#lists").html(lang.lang_list_nodata);
}
});
function list() {
$("#lists-user").html("");
var acct_id = $("#list-acct-sel").val();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/api/users/lists/list"
fetch(start, {
method: 'POST',
body: JSON.stringify({
i: at
}),
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (json) {
var lists = "";
Object.keys(json).forEach(function (key) {
var list = json[key];
lists = lists + escapeHTML(list.title) + ':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id +
'\')" class="pointer">' + lang.lang_list_show + '</a><br>';
});
$("#lists").html(lists);
} else {
$("#lists").html(lang.lang_list_nodata);
}
});
} else {
var start = "https://" + domain + "/api/v1/lists"
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (json) {
var lists = "";
Object.keys(json).forEach(function (key) {
var list = json[key];
lists = lists + escapeHTML(list.title) + ':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id +
'\')" class="pointer">' + lang.lang_list_show + '</a>/<a onclick="listUser(\'' + list.id + '\',' + acct_id +
')" class="pointer">' + lang.lang_list_users + '</a><br>';
});
$("#lists").html(lists);
} else {
$("#lists").html(lang.lang_list_nodata);
}
});
}
}
function makeNewList(){
var acct_id = $("#list-acct-sel").val();
var text=$("#list-add").val();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/lists"
console.log(start)
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
title: text
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response;
list();
$("#list-add").val("")
function makeNewList() {
var acct_id = $("#list-acct-sel").val();
var text = $("#list-add").val();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) != "misskey") {
var start = "https://" + domain + "/api/v1/lists"
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
title: text
}));
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
list();
$("#list-add").val("")
}
}
} else {
var start = "https://" + domain + "/api/users/lists/create"
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
i: at,
title: text
}));
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
list();
$("#list-add").val("")
}
}
}
}
function listShow(id,title,acct_id){
localStorage.setItem("list_"+id+"_"+acct_id,title);
tl('list',id,acct_id,'add');
function listShow(id, title, acct_id) {
localStorage.setItem("list_" + id + "_" + acct_id, title);
tl('list', id, acct_id, 'add');
}
function listUser(id,acct_id){
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
console.log(start)
function listUser(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/lists/" + id + "/accounts"
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
}).then(function (json) {
if (json) {
var lists = "";
var templete = userparse(json,'',acct_id);
if(!json[0]){
templete=lang.lang_list_nouser;
}
var templete = userparse(json, '', acct_id);
if (!json[0]) {
templete = lang.lang_list_nouser;
}
$("#lists-user").html(templete);
}else{
$("#lists-user").html(lang.lang_list_nouser);
}
jQuery("time.timeago").timeago();
} else {
$("#lists-user").html(lang.lang_list_nouser);
}
});
}
function hisList(user,acct_id){
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/lists"
console.log(start)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
if (json) {
var lists = lang.lang_list_add+"<br>";
Object.keys(json).forEach(function(key) {
var list = json[key];
lists = lists + '<a onclick="listAdd(' + list.id + ',\'' + user + '\',\'' + acct_id +
'\')" class="pointer">'+escapeHTML(list.title)+'</a><br> ';
});
$("#his-lists-a").html(lists);
}else{
$("#his-lists-a").html(lang.lang_list_nodata);
}
});
var start = "https://" + domain + "/api/v1/accounts/"+user+"/lists"
console.log(start)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
if (json) {
var lists = lang.lang_list_remove+"<br>";
Object.keys(json).forEach(function(key) {
var list = json[key];
lists = lists + '<a onclick="listRemove(' + list.id + ',\'' + user + '\',\'' + acct_id +
'\')" class="pointer">'+list.title+'</a><br> ';
});
$("#his-lists-b").html(lists);
}else{
$("#his-lists-b").html(lang.lang_list_nodata);
}
});
function hisList(user, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) != "misskey") {
var start = "https://" + domain + "/api/v1/lists"
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (json) {
var lists = lang.lang_list_add + "<br>";
Object.keys(json).forEach(function (key) {
var list = json[key];
lists = lists + '<a onclick="listAdd(\'' + list.id + '\',\'' + user + '\',\'' + acct_id +
'\')" class="pointer">' + escapeHTML(list.title) + '</a><br> ';
});
$("#his-lists-a").html(lists);
} else {
$("#his-lists-a").html(lang.lang_list_nodata);
}
});
var start = "https://" + domain + "/api/v1/accounts/" + user + "/lists"
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (json) {
var lists = lang.lang_list_remove + "<br>";
Object.keys(json).forEach(function (key) {
var list = json[key];
lists = lists + '<a onclick="listRemove(\'' + list.id + '\',\'' + user + '\',\'' + acct_id +
'\')" class="pointer">' + escapeHTML(list.title) + '</a><br> ';
});
$("#his-lists-b").html(lists);
} else {
$("#his-lists-b").html(lang.lang_list_nodata);
}
});
} else {
var start = "https://" + domain + "/api/users/lists/list"
fetch(start, {
method: 'POST',
body: JSON.stringify({
i: at
}),
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (json) {
var lists = "";
Object.keys(json).forEach(function (key) {
var list = json[key];
lists = lists + list.title + ':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id +
'\')" class="pointer">' + lang.lang_list_show + '</a>/<a onclick="listAdd(\'' + list.id + '\',\'' + user + '\',\'' + acct_id +
'\')" class="pointer">' + lang.lang_list_add + lang.lang_list_add_misskey + '</a><br>';
});
$("#his-lists-a").html(lists);
} else {
$("#his-lists-a").html(lang.lang_list_nodata);
}
});
$("#his-lists-b").html("");
}
}
function listAdd(id,user,acct_id){
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
console.log(start)
function listAdd(id, user, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/api/users/lists/push"
var i = {
i: at,
listId: id,
userId: user
}
} else {
var start = "https://" + domain + "/api/v1/lists/" + id + "/accounts"
var i = {
account_ids: [user]
}
}
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
account_ids: [user]
}));
httpreq.onreadystatechange = function() {
httpreq.send(JSON.stringify(i));
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
hisList(user,acct_id)
hisList(user, acct_id)
}
}
}
function listRemove(id,user,acct_id){
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
console.log(start)
function listRemove(id, user, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/api/users/lists/push"
var method = 'POST'
var i = {
i: at,
listId: id,
userId: user
}
} else {
var start = "https://" + domain + "/api/v1/lists/" + id + "/accounts"
var method = 'DELETE'
var i = {
account_ids: [user]
}
}
var httpreq = new XMLHttpRequest();
httpreq.open('DELETE', start, true);
httpreq.open(method, start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
account_ids: [user]
}));
httpreq.onreadystatechange = function() {
httpreq.send(JSON.stringify(i));
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
hisList(user,acct_id)
hisList(user, acct_id)
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,130 +1,127 @@
//Integrated TL
function mixtl(acct_id, tlid, type,delc,voice) {
console.log(delc);
function mixtl(acct_id, tlid, type, delc, voice) {
localStorage.removeItem("morelock")
localStorage.setItem("now", type);
todo("Integrated TL Loading...(Local)");
//まずLocal
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/timelines/public?local=true";
//まずLocal
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/timelines/public?local=true";
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(jsonL) {
var start = "https://" + domain + "/api/v1/timelines/home";
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(jsonH) {
var homearr=[];
var timeline = jsonL.concat(jsonH);
timeline.sort(function(a,b){
if(date(a.created_at,"unix")>=date(b.created_at,"unix")) return -1;
if(date(a.created_at,"unix")<date(b.created_at,"unix")) return 1;
return 0;
}).then(function (jsonL) {
var start = "https://" + domain + "/api/v1/timelines/home";
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (jsonH) {
var homearr = [];
var timeline = jsonL.concat(jsonH);
timeline.sort(function (a, b) {
if (date(a.created_at, "unix") >= date(b.created_at, "unix")) return -1;
if (date(a.created_at, "unix") < date(b.created_at, "unix")) return 1;
return 0;
});
if(type=="integrated"){
if (type == "integrated") {
timeline.splice(20);
}
var templete="";
Object.keys(timeline).forEach(function(key) {
var pkey=key*1+1;
if(pkey<timeline.length){
if(date(timeline[key].created_at,"unix")!=date(timeline[pkey].created_at,"unix")){
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"mix");
}else{
var mute=[];
}
if(type=="integrated"){
templete = templete+parse([timeline[key]], '', acct_id, tlid, "", mute);
}else if(type=="plus"){
if(timeline[key].account.acct==timeline[key].account.username){
templete = templete+parse([timeline[key]], '', acct_id, tlid, "", mute);
var templete = "";
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "mix");
} else {
var mute = [];
}
Object.keys(timeline).forEach(function (key) {
var pkey = key * 1 + 1;
if (pkey < timeline.length) {
if (date(timeline[key].created_at, "unix") != date(timeline[pkey].created_at, "unix")) {
if (type == "integrated") {
templete = templete + parse([timeline[key]], '', acct_id, tlid, "", mute, "mix");
} else if (type == "plus") {
if (timeline[key].account.acct == timeline[key].account.username) {
templete = templete + parse([timeline[key]], '', acct_id, tlid, "", mute, "plus");
}
}
}
}
}
}
});
$("#landing_" + tlid).hide();
$("#timeline_" + tlid).html(templete);
mixre(acct_id, tlid, type, mute,delc,voice);
});
$("#landing_" + tlid).hide();
$("#timeline_" + tlid).html(templete);
mixre(acct_id, tlid, type, mute, delc, voice);
additional(acct_id, tlid);
jQuery("time.timeago").timeago();
todc();
});
});
});
});
}
//Streamingに接続
function mixre(acct_id, tlid, TLtype, mute,delc,voice,mode) {
function mixre(acct_id, tlid, TLtype, mute, delc, voice, mode) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("streaming_" + acct_id)){
var wss=localStorage.getItem("streaming_" + acct_id)
}else{
var wss="wss://"+domain
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("streaming_" + acct_id)) {
var wss = localStorage.getItem("streaming_" + acct_id)
} else {
var wss = "wss://" + domain
}
var startHome = wss+
var startHome = wss +
"/api/v1/streaming/?stream=user&access_token=" + at;
var startLocal = wss+
var startLocal = wss +
"/api/v1/streaming/?stream=public:local&access_token=" + at;
var wshid = websocketHome.length;
var wslid = websocketLocal.length;
websocketHome[wshid] = new WebSocket(startHome);
websocketLocal[wslid] = new WebSocket(startLocal);
websocketHome[wshid].onopen = function(mess) {
websocketHome[wshid].onopen = function (mess) {
localStorage.setItem("wssH_" + tlid, wshid);
console.log("Connect Streaming API(Integrated:Home)");
console.table({ "tlid": tlid, "type": "Connect Streaming API(Integrated:Home)", "domain": domain, "message": mess })
$("#notice_icon_" + tlid).removeClass("red-text");
}
websocketLocal[wslid].onopen = function(mess) {
websocketLocal[wslid].onopen = function (mess) {
localStorage.setItem("wssL_" + tlid, wslid);
console.log("Connect Streaming API(Integrated:Local)");
console.table({ "tlid": tlid, "type": "Connect Streaming API(Integrated:Local)", "domain": domain, "message": mess })
$("#notice_icon_" + tlid).removeClass("red-text");
}
websocketLocal[wslid].onmessage = function(mess) {
console.log("Receive Streaming API:(Integrated:Local)");
websocketLocal[wslid].onmessage = function (mess) {
console.log(["Receive Streaming API:(Integrated:Local)", obj]);
var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj);
var type = JSON.parse(mess.data).event;
if (type == "delete") {
if(delc=="true"){
$("#timeline_"+tlid+" [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized");
$("#timeline_"+tlid+" [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch");
}else{
if (delc == "true") {
$("#timeline_" + tlid + " [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized");
$("#timeline_" + tlid + " [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch");
} else {
$("[toot-id=" + JSON.parse(mess.data).payload + "]").hide();
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
}
} else if (type == "update") {
var templete = parse([obj], '', acct_id, tlid,"",mute);
if($("#timeline_" + tlid +" [toot-id=" + obj.id + "]").length < 1){
if(voice){
var templete = parse([obj], '', acct_id, tlid, "", mute);
if ($("#timeline_" + tlid + " [toot-id=" + obj.id + "]").length < 1) {
if (voice) {
say(obj.content)
}
var templete = parse([obj], type, acct_id, tlid,"",mute);
}
var templete = parse([obj], type, acct_id, tlid, "", mute, "mix");
var pool = localStorage.getItem("pool_" + tlid);
if (pool) {
pool = templete + pool;
@@ -132,52 +129,50 @@ function mixre(acct_id, tlid, TLtype, mute,delc,voice,mode) {
pool = templete
}
localStorage.setItem("pool_" + tlid, pool);
scrollck();
additional(acct_id, tlid);
jQuery("time.timeago").timeago();
}else{
} else {
todo("二重取得発生中");
}
}
}
}
websocketHome[wshid].onmessage = function(mess) {
console.log("Receive Streaming API:(Integrated:Home)");
websocketHome[wshid].onmessage = function (mess) {
console.log(["Receive Streaming API:(Integrated:Home)", obj]);
var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj);
var type = JSON.parse(mess.data).event;
if (type == "delete") {
if(del>10){
reconnector(tlid,type,acct_id,data)
}else{
localStorage.setItem("delete",del*1+1)
if (del > 10) {
reconnector(tlid, type, acct_id, data)
} else {
localStorage.setItem("delete", del * 1 + 1)
}
if(delc=="true"){
if (delc == "true") {
$("[toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized");
$("[toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch");
}else{
} else {
$("[toot-id=" + JSON.parse(mess.data).payload + "]").hide();
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
}
} else if (type == "update") {
localStorage.removeItem("delete");
if(TLtype=="integrated"){
if (TLtype == "integrated") {
var templete = parse([obj], '', acct_id, tlid);
}else if(TLtype=="plus"){
if(obj.account.acct==obj.account.username){
var templete = parse([obj], '', acct_id, tlid,"",mute);
}else{
var templete="";
} else if (TLtype == "plus") {
if (obj.account.acct == obj.account.username) {
var templete = parse([obj], '', acct_id, tlid, "", mute, "mix");
} else {
var templete = "";
}
}
if($("#timeline_" + tlid +" [toot-id=" + obj.id + "]").length < 1){
if(voice){
if ($("#timeline_" + tlid + " [toot-id=" + obj.id + "]").length < 1) {
if (voice) {
say(obj.content)
}
var templete = parse([obj], type, acct_id, tlid,"",mute);
}
var templete = parse([obj], type, acct_id, tlid, "", mute, "mix");
var pool = localStorage.getItem("pool_" + tlid);
if (pool) {
pool = templete + pool;
@@ -185,130 +180,148 @@ function mixre(acct_id, tlid, TLtype, mute,delc,voice,mode) {
pool = templete
}
localStorage.setItem("pool_" + tlid, pool);
scrollck();
additional(acct_id, tlid);
jQuery("time.timeago").timeago();
}else{
} else {
todo("二重取得発生中");
}
}
}
websocketLocal[wslid].onerror = function(error) {
console.error('WebSocket Error ' + error);
if(mode=="error"){
websocketLocal[wslid].onerror = function (error) {
console.error('WebSocketLocal Error')
console.error(error);
if (mode == "error") {
$("#notice_icon_" + tlid).addClass("red-text");
todo('WebSocket Error ' + error);
}else{
reconnector(tlid,TLtype,acct_id,"","error");
} else {
var errorct = localStorage.getItem("wserror_" + tlid) * 1 + 1;
localStorage.setItem("wserror_" + tlid, errorct);
if (errorct < 3) {
reconnector(tlid, TLtype, acct_id, "", "error");
}
}
};
websocketLocal[wslid].onclose = function() {
console.error('WebSocketLocal Closing by error:' + tlid);
if(mode=="error"){
websocketLocal[wslid].onclose = function () {
console.warn('WebSocketLocal Closing:' + tlid);
if (mode == "error") {
$("#notice_icon_" + tlid).addClass("red-text");
todo('WebSocket Closed');
}else{
reconnector(tlid,TLtype,acct_id,"","error");
} else {
var errorct = localStorage.getItem("wserror_" + tlid) * 1 + 1;
localStorage.setItem("wserror_" + tlid, errorct);
if (errorct < 3) {
reconnector(tlid, TLtype, acct_id, "", "error");
}
}
};
websocketHome[wshid].onerror = function(error) {
console.error('WebSocket Error ' + error);
if(mode=="error"){
websocketHome[wshid].onerror = function (error) {
console.error(['WebSocketHome Error', error])
if (mode == "error") {
$("#notice_icon_" + tlid).addClass("red-text");
todo('WebSocket Error ' + error);
}else{
reconnector(tlid,TLtype,acct_id,"","error");
} else {
var errorct = localStorage.getItem("wserror_" + tlid) * 1 + 1;
localStorage.setItem("wserror_" + tlid, errorct);
if (errorct < 3) {
reconnector(tlid, TLtype, acct_id, "", "error");
}
}
};
websocketHome[wshid].onclose = function() {
console.error('WebSocketHome Closing by error:' + tlid);
if(mode=="error"){
websocketHome[wshid].onclose = function () {
console.warn('WebSocketHome Closing:' + tlid);
if (mode == "error") {
$("#notice_icon_" + tlid).addClass("red-text");
todo('WebSocket Closed');
}else{
reconnector(tlid,TLtype,acct_id,"","error");
} else {
var errorct = localStorage.getItem("wserror_" + tlid) * 1 + 1;
localStorage.setItem("wserror_" + tlid, errorct);
if (errorct < 3) {
reconnector(tlid, TLtype, acct_id, "", "error");
}
}
};
}
//ある程度のスクロールで発火
function mixmore(tlid,type) {
function mixmore(tlid, type) {
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
var acct_id = obj[tlid].domain;
moreloading = true;
todo("Integrated TL MoreLoading...(Local)");
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var sid = $("#timeline_" + tlid + " .cvo").last().attr("unique-id");
var start = "https://" + domain + "/api/v1/timelines/public?local=true&max_id="+sid;
var start = "https://" + domain + "/api/v1/timelines/public?local=true&max_id=" + sid;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(jsonL) {
var start = "https://" + domain + "/api/v1/timelines/home?max_id="+sid;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(jsonH) {
var homearr=[];
var timeline = jsonL.concat(jsonH);
timeline.sort(function(a,b){
if(date(a.created_at,"unix")>date(b.created_at,"unix")) return -1;
if(date(a.created_at,"unix")<date(b.created_at,"unix")) return 1;
return 0;
});
timeline.splice(20);
var templete="";
Object.keys(timeline).forEach(function(key) {
var pkey=key*1+1;
if(pkey<20){
if(date(timeline[key].created_at,"unix")!=date(timeline[pkey].created_at,"unix")){
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"mix");
}else{
var mute=[];
}).then(function (jsonL) {
var start = "https://" + domain + "/api/v1/timelines/home?max_id=" + sid;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (jsonH) {
var homearr = [];
var timeline = jsonL.concat(jsonH);
timeline.sort(function (a, b) {
if (date(a.created_at, "unix") > date(b.created_at, "unix")) return -1;
if (date(a.created_at, "unix") < date(b.created_at, "unix")) return 1;
return 0;
});
timeline.splice(20);
var templete = "";
Object.keys(timeline).forEach(function (key) {
var pkey = key * 1 + 1;
if (pkey < 20) {
if (date(timeline[key].created_at, "unix") != date(timeline[pkey].created_at, "unix")) {
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "mix");
} else {
var mute = [];
}
if(type=="integrated"){
templete = templete+parse([timeline[key]], '', acct_id, tlid,"",mute);
}else if(type=="plus"){
if(timeline[key].account.acct==timeline[key].account.username){
templete = templete+parse([timeline[key]], '', acct_id, tlid,"",mute);
if (type == "integrated") {
templete = templete + parse([timeline[key]], '', acct_id, tlid, "", mute, "mix");
} else if (type == "plus") {
if (timeline[key].account.acct == timeline[key].account.username) {
templete = templete + parse([timeline[key]], '', acct_id, tlid, "", mute, "mix");
}
}
}
}
}
}
});
$("#timeline_" + tlid).append(templete);
mixre(acct_id, tlid);
});
$("#timeline_" + tlid).append(templete);
additional(acct_id, tlid);
jQuery("time.timeago").timeago();
moreloading = false;
todc();
});
});
});
}

View File

@@ -1,209 +1,153 @@
//通知
//取得+Streaming接続
function notf(acct_id, tlid, sys){
function notf(acct_id, tlid, sys) {
if (sys == "direct") {
notfColumn(acct_id, tlid, sys)
} else {
notfCommon(acct_id, tlid, sys)
}
}
function notfColumn(acct_id, tlid, sys){
function notfColumn(acct_id, tlid, sys) {
todo("Notifications Loading...");
var native=localStorage.getItem("nativenotf");
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(!native){
native="yes";
var native = localStorage.getItem("nativenotf");
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (!native) {
native = "yes";
}
var domain = localStorage.getItem("domain_" + acct_id);
console.log(start)
var httpreq = new XMLHttpRequest();
if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey=true;
if (localStorage.getItem("mode_" + domain) == "misskey") {
var misskey = true;
var start = "https://" + domain + "/api/i/notifications";
httpreq.open(POST, start, true);
httpreq.open("POST", start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
var body=JSON.stringify({
i:at
var body = JSON.stringify({
i: at
});
}else{
var misskey=false;
if(localStorage.getItem("exclude-"+tlid)){
var exc=localStorage.getItem("exclude-"+tlid);
}else{
var exc="";
} else {
var misskey = false;
if (localStorage.getItem("exclude-" + tlid)) {
var exc = localStorage.getItem("exclude-" + tlid);
} else {
var exc = "";
}
var start = "https://" + domain + "/api/v1/notifications"+exc;
var start = "https://" + domain + "/api/v1/notifications" + exc;
httpreq.open("GET", start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
var body="";
var body = "";
}
httpreq.responseType = "json";
httpreq.send(body);
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
var max_id = httpreq.getResponseHeader("link").match(/[?&]{1}max_id=([0-9]+)/)[1];
if(json[0]){
var templete="";
var lastnotf=localStorage.getItem("lastnotf_" + acct_id);
localStorage.setItem("lastnotf_" + acct_id,json[0].id);
Object.keys(json).forEach(function(key) {
var max_id = httpreq.getResponseHeader("link");
if (max_id) {
max_id = max_id.match(/[?&]{1}max_id=([0-9]+)/)[1]
}
if (json[0]) {
var templete = "";
var lastnotf = localStorage.getItem("lastnotf_" + acct_id);
localStorage.setItem("lastnotf_" + acct_id, json[0].id);
Object.keys(json).forEach(function (key) {
var obj = json[key];
if(lastnotf==obj.id && key>0 && native=="yes"){
var ct=key;
if(key>14){
ct="15+";
if (lastnotf == obj.id && key > 0 && native == "yes") {
var ct = key;
if (key > 14) {
ct = "15+";
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var options = {
body: ct+lang_notf_new[lang],
icon: localStorage.getItem("prof_"+acct_id)
};
if(os=="darwin"){
var n = new Notification('TheDesk:'+domain, options);
}else{
ipc.send('native-notf', ['TheDesk:'+domain,ct+lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]);
}
var os = localStorage.getItem("platform");
var options = {
body: ct + lang.lang_notf_new,
icon: localStorage.getItem("prof_" + acct_id)
};
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
var nativeNotfOpt = ['TheDesk:' + domain, ct + lang.lang_notf_new, localStorage.getItem("prof_" + acct_id)]
postMessage(["nativeNotf", nativeNotfOpt], "*")
}
}
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"notif");
}else{
var mute=[];
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "notif");
} else {
var mute = [];
}
if(obj.type!="follow"){
if(misskey){
templete = templete+misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute);
}else{
templete = templete+parse([obj], 'notf', acct_id, 'notf', -1, mute);
if (obj.type != "follow") {
if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, tlid, -1, mute);
} else {
templete = templete + parse([obj], 'notf', acct_id, tlid, -1, mute);
}
}else{
if(misskey){
templete = templete+misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute);
}else{
templete = templete+userparse([obj.account], 'notf', acct_id, 'notf', -1);
} else {
if (misskey) {
templete = templete + misskeyUserparse([obj], 'notf', acct_id, tlid, -1, mute);
} else {
templete = templete + userparse([obj.account], 'notf', acct_id, tlid, -1);
}
}
});
templete=templete+'<div class="hide notif-marker" data-maxid="'+max_id+'"></div>';
templete = templete + '<div class="hide notif-marker" data-maxid="' + max_id + '"></div>';
$("#timeline_" + tlid).html(templete);
$("#landing_" + tlid).hide();
jQuery("time.timeago").timeago();
}
$("#notf-box").addClass("fetched");
todc();
}
$("#notf-box").addClass("fetched");
todc();
//Markers
var markers = localStorage.getItem("markers");
if (markers == "no") {
markers = false;
} else {
markers = true
}
if (markers) {
getMarker(tlid, "notf", acct_id)
}
}
}
if(!misskey){
if(localStorage.getItem("streaming_" + acct_id)){
var wss=localStorage.getItem("streaming_" + acct_id)
}else{
var wss="wss://"+domain
if (!misskey) {
if (localStorage.getItem("streaming_" + acct_id)) {
var wss = localStorage.getItem("streaming_" + acct_id)
} else {
var wss = "wss://" + domain
}
var start = wss + "/api/v1/streaming/?stream=user&access_token=" +
at;
}else{
at;
} else {
var start = "wss://" + domain + "/?i=" +
at;
at;
}
console.log(start);
var wsid = websocketNotf.length;
websocketNotf[acct_id] = new WebSocket(start);
console.log(websocketNotf);
websocketNotf[acct_id].onopen = function(mess) {
console.log("Connect Streaming API(Notf):");
console.log(mess);
$("i[data-notf=" + acct_id +"]").removeClass("red-text");
}
websocketNotf[acct_id].onmessage = function(mess) {
console.log("Receive Streaming API(Notf):"+acct_id);
var popup = localStorage.getItem("popup");
if (!popup) {
popup = 0;
}
console.log(domain)
if(misskey){
console.log("misskey")
console.log(JSON.parse(mess.data));
if (JSON.parse(mess.data).type == "notification") {
var obj = JSON.parse(mess.data).body;
console.log(obj);
if(obj.type!="follow"){
templete = misskeyParse([obj], 'notf', acct_id, 'notf', popup);
}else{
templete = misskeyUserparse([obj], 'notf', acct_id, 'notf', popup);
}
if(obj.type=="reaction"){
console.log("refresh")
reactRefresh(acct_id,obj.note.id)
}
if(!$("div[data-notfIndv=" + acct_id +"_"+obj.id+"]").length){
$("div[data-notf=" + acct_id +"]").prepend(templete);
}
jQuery("time.timeago").timeago();
}else if(JSON.parse(mess.data).type == "note-updated"){
var obj = JSON.parse(mess.data).body.note;
reactRefreshCore(obj)
}
}else{
var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj);
var type = JSON.parse(mess.data).event;
if (type == "notification") {
var templete="";
localStorage.setItem("lastnotf_" + acct_id,obj.id);
if(obj.type!="follow"){
templete = parse([obj], 'notf', acct_id, 'notf', popup);
}else{
templete = userparse([obj], 'notf', acct_id, 'notf', popup);
}
if(!$("div[data-notfIndv=" + acct_id +"_"+obj.id+"]").length){
$(".tl[data-notf=" + acct_id +"]").prepend(templete);
}
$(".notf-timeline[data-acct=" + acct_id +"]").prepend(templete);
jQuery("time.timeago").timeago();
} else if (type == "delete") {
$("[toot-id=" + obj + "]").hide();
$("[toot-id=" + obj + "]").remove();
}
}
}
websocketNotf[acct_id].onerror = function(error) {
console.error('WebSocket Error ' + error);
};
}
function notfCommon(acct_id, tlid, sys) {
todo("Notifications Loading...");
var native=localStorage.getItem("nativenotf");
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(!native){
native="yes";
var native = localStorage.getItem("nativenotf");
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (!native) {
native = "yes";
}
var domain = localStorage.getItem("domain_" + acct_id);
if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey=true;
if (localStorage.getItem("mode_" + domain) == "misskey") {
var misskey = true;
var start = "https://" + domain + "/api/i/notifications";
var i={
var i = {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify({
i:at
body: JSON.stringify({
i: at
})
}
}else{
var misskey=false;
} else {
var misskey = false;
var start = "https://" + domain + "/api/v1/notifications";
var i={
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
@@ -211,260 +155,233 @@ function notfCommon(acct_id, tlid, sys) {
},
}
}
fetch(start, i).then(function(response) {
console.log(response.headers.get('link'));
fetch(start, i).then(function (response) {
console.log("header to get param:" + response.headers.get('link'));
return response.json();
}).catch(function(error) {
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(json) {
if(json[0]){
var templete="";
var lastnotf=localStorage.getItem("lastnotf_" + acct_id);
localStorage.setItem("lastnotf_" + acct_id,json[0].id);
Object.keys(json).forEach(function(key) {
var obj = json[key];
if(lastnotf==obj.id && key>0 && native=="yes"){
var ct=key;
if(key>14){
ct="15+";
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var options = {
body: ct+lang_notf_new[lang],
icon: localStorage.getItem("prof_"+acct_id)
};
if(os=="darwin"){
var n = new Notification('TheDesk:'+domain, options);
}else{
ipc.send('native-notf', ['TheDesk:'+domain,ct+lang_notf_new[lang],localStorage.getItem("prof_"+acct_id)]);
}).then(function (json) {
if (json[0]) {
var templete = "";
var lastnotf = localStorage.getItem("lastnotf_" + acct_id);
localStorage.setItem("lastnotf_" + acct_id, json[0].id);
Object.keys(json).forEach(function (key) {
var obj = json[key];
if (lastnotf == obj.id && key > 0 && native == "yes") {
var ct = key;
if (key > 14) {
ct = "15+";
}
}
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"notif");
}else{
var mute=[];
}
if(obj.type!="follow"){
if(misskey){
templete = templete+misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute);
}else{
templete = templete+parse([obj], 'notf', acct_id, 'notf', -1, mute);
var os = localStorage.getItem("platform");
var options = {
body: ct + lang.lang_notf_new,
icon: localStorage.getItem("prof_" + acct_id)
};
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
var nativeNotfOpt = ['TheDesk:' + domain, ct + lang.lang_notf_new, localStorage.getItem("prof_" + acct_id)]
postMessage(["nativeNotf", nativeNotfOpt], "*")
}
}
}else{
if(misskey){
templete = templete+misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute);
}else{
templete = templete+userparse([obj.account], 'notf', acct_id, 'notf', -1);
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "notif");
} else {
var mute = [];
}
}
});
$("div[data-notf=" + acct_id +"]").html(templete);
$("#landing_" + tlid).hide();
jQuery("time.timeago").timeago();
if (obj.type != "follow") {
if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute);
} else {
templete = templete + parse([obj], 'notf', acct_id, 'notf', -1, mute);
}
} else {
if (misskey) {
templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute);
} else {
templete = templete + userparse([obj.account], 'notf', acct_id, 'notf', -1);
}
}
});
$("div[data-notf=" + acct_id + "]").html(templete);
$("#landing_" + tlid).hide();
jQuery("time.timeago").timeago();
}
$("#notf-box").addClass("fetched");
todc();
notfWS(misskey, acct_id, tlid, domain, at)
});
if(!misskey){
if(localStorage.getItem("streaming_" + acct_id)){
var wss=localStorage.getItem("streaming_" + acct_id)
}else{
var wss="wss://"+domain
}
function notfWS(misskey, acct_id, tlid, domain, at) {
if (!misskey) {
if (localStorage.getItem("streaming_" + acct_id)) {
var wss = localStorage.getItem("streaming_" + acct_id)
} else {
var wss = "wss://" + domain
}
var start = wss + "/api/v1/streaming/?stream=user&access_token=" +
at;
}else{
var start = "wss://" + domain + "/?i=" +
at;
}
at;
console.log(start);
var wsid = websocketNotf.length;
websocketNotf[acct_id] = new WebSocket(start);
console.log(websocketNotf);
websocketNotf[acct_id].onopen = function(mess) {
console.log("Connect Streaming API(Notf):");
console.log(mess);
$("i[data-notf=" + acct_id +"]").removeClass("red-text");
var wsid = websocketNotf.length;
websocketNotf[acct_id] = new WebSocket(start);
websocketNotf[acct_id].onopen = function (mess) {
console.table({ "acct_id": acct_id, "type": "Connect Streaming API(Notf)", "domain": domain, "message": [mess] })
$("i[data-notf=" + acct_id + "]").removeClass("red-text");
}
websocketNotf[acct_id].onmessage = function(mess) {
console.log("Receive Streaming API(Notf):"+acct_id);
var popup = localStorage.getItem("popup");
}
websocketNotf[acct_id].onmessage = function (mess) {
//console.log(["Receive Streaming API(Notf):" + acct_id + "(" + domain + ")", JSON.parse(JSON.parse(mess.data).payload)]);
var popup = localStorage.getItem("popup");
if (!popup) {
popup = 0;
}
console.log(domain)
if(misskey){
console.log("misskey")
console.log(JSON.parse(mess.data));
if (JSON.parse(mess.data).type == "notification") {
var obj = JSON.parse(mess.data).body;
console.log(obj);
if(obj.type!="follow"){
templete = misskeyParse([obj], 'notf', acct_id, 'notf', popup);
}else{
templete = misskeyUserparse([obj], 'notf', acct_id, 'notf', popup);
var obj = JSON.parse(JSON.parse(mess.data).payload);
var type = JSON.parse(mess.data).event;
if (type == "notification") {
var templete = "";
localStorage.setItem("lastnotf_" + acct_id, obj.id);
if (!$("#unread_" + tlid + " .material-icons").hasClass("teal-text")) {
//markers show中はダメ
if (obj.type != "follow") {
templete = parse([obj], 'notf', acct_id, 'notf', popup);
} else {
templete = userparse([obj], 'notf', acct_id, 'notf', popup);
}
if (!$("div[data-notfIndv=" + acct_id + "_" + obj.id + "]").length) {
$("div[data-notf=" + acct_id + "]").prepend(templete);
$("div[data-const=notf_" + acct_id + "]").prepend(templete);
}
jQuery("time.timeago").timeago();
}
if(obj.type=="reaction"){
console.log("refresh")
reactRefresh(acct_id,obj.note.id)
}
if(!$("div[data-notfIndv=" + acct_id +"_"+obj.id+"]").length){
$("div[data-notf=" + acct_id +"]").prepend(templete);
}
jQuery("time.timeago").timeago();
}else if(JSON.parse(mess.data).type == "note-updated"){
var obj = JSON.parse(mess.data).body.note;
reactRefreshCore(obj)
} else if (type == "delete") {
$("[toot-id=" + obj + "]").hide();
$("[toot-id=" + obj + "]").remove();
}
}else{
var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj);
var type = JSON.parse(mess.data).event;
if (type == "notification") {
var templete="";
localStorage.setItem("lastnotf_" + acct_id,obj.id);
if(obj.type!="follow"){
templete = parse([obj], 'notf', acct_id, 'notf', popup);
}else{
templete = userparse([obj], 'notf', acct_id, 'notf', popup);
}
if(!$("div[data-notfIndv=" + acct_id +"_"+obj.id+"]").length){
$("div[data-notf=" + acct_id +"]").prepend(templete);
}
jQuery("time.timeago").timeago();
} else if (type == "delete") {
$("[toot-id=" + obj + "]").hide();
$("[toot-id=" + obj + "]").remove();
}
}
websocketNotf[acct_id].onerror = function (error) {
console.error('WebSocket Error ' + error);
notfWS(misskey, acct_id, tlid, domain, at)
};
}
websocketNotf[acct_id].onerror = function(error) {
console.error('WebSocket Error ' + error);
};
}
//一定のスクロールで発火
function notfmore(tlid) {
console.log(moreloading);
console.log("kicked");
console.log({ "status": "kicked", "status": moreloading });
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
var acct_id = obj[tlid].domain;
if (!type) {
var type = obj[tlid].type;
}else{
} else {
var data;
}
var sid = $("#timeline_" + tlid + " .notif-marker").last().attr("data-maxid");
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var domain = localStorage.getItem("domain_" + acct_id);
if (sid && !moreloading) {
moreloading=true;
var httpreq = new XMLHttpRequest();
if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey=true;
var start = "https://" + domain + "/api/i/notifications";
httpreq.open(POST, start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
var body=JSON.stringify({
i:at,
untilID:sid
});
}else{
var misskey=false;
if(localStorage.getItem("exclude-"+tlid)){
var exc=localStorage.getItem("exclude-"+tlid)+"&max_id="+sid;
}else{
var exc="?max_id="+sid;
moreloading = true;
var httpreq = new XMLHttpRequest();
if (localStorage.getItem("mode_" + domain) == "misskey") {
var misskey = true;
var start = "https://" + domain + "/api/i/notifications";
httpreq.open(POST, start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
var body = JSON.stringify({
i: at,
untilID: sid
});
} else {
var misskey = false;
if (localStorage.getItem("exclude-" + tlid)) {
var exc = localStorage.getItem("exclude-" + tlid) + "&max_id=" + sid;
} else {
var exc = "?max_id=" + sid;
}
var start = "https://" + domain + "/api/v1/notifications" + exc;
httpreq.open("GET", start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
var body = "";
}
var start = "https://" + domain + "/api/v1/notifications"+exc;
httpreq.open("GET", start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
var body="";
}
httpreq.responseType = "json";
httpreq.send(body);
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
var max_id = httpreq.getResponseHeader("link").match(/[?&]{1}max_id=([0-9]+)/)[1];
if(json[0]){
var templete="";
var lastnotf=localStorage.getItem("lastnotf_" + acct_id);
localStorage.setItem("lastnotf_" + acct_id,json[0].id);
Object.keys(json).forEach(function(key) {
var obj = json[key];
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"notif");
}else{
var mute=[];
}
if(obj.type!="follow"){
if(misskey){
templete = templete+misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute);
}else{
templete = templete+parse([obj], 'notf', acct_id, 'notf', -1, mute);
httpreq.responseType = "json";
httpreq.send(body);
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(["More notifications on " + tlid, json]);
var max_id = httpreq.getResponseHeader("link").match(/[?&]{1}max_id=([0-9]+)/)[1];
if (json[0]) {
var templete = "";
var lastnotf = localStorage.getItem("lastnotf_" + acct_id);
localStorage.setItem("lastnotf_" + acct_id, json[0].id);
Object.keys(json).forEach(function (key) {
var obj = json[key];
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "notif");
} else {
var mute = [];
}
}else{
if(misskey){
templete = templete+misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute);
}else{
templete = templete+userparse([obj.account], 'notf', acct_id, 'notf', -1);
if (obj.type != "follow") {
if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute);
} else {
templete = templete + parse([obj], 'notf', acct_id, 'notf', -1, mute);
}
} else {
if (misskey) {
templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute);
} else {
templete = templete + userparse([obj.account], 'notf', acct_id, 'notf', -1);
}
}
}
});
moreloading=false;
templete=templete+'<div class="hide notif-marker" data-maxid="'+max_id+'"></div>';
$("#timeline_" + tlid).append(templete);
$("#landing_" + tlid).hide();
jQuery("time.timeago").timeago();
});
moreloading = false;
templete = templete + '<div class="hide notif-marker" data-maxid="' + max_id + '"></div>';
$("#timeline_" + tlid).append(templete);
$("#landing_" + tlid).hide();
jQuery("time.timeago").timeago();
}
$("#notf-box").addClass("fetched");
todc();
}
}
}
}
}
//通知トグルボタン
function notfToggle(acct, tlid) {
if($("#notf-box_" + tlid).hasClass("column-hide")){
$("#notf-box_" + tlid).css("display","block")
if ($("#notf-box_" + tlid).hasClass("column-hide")) {
$("#notf-box_" + tlid).css("display", "block")
$("#notf-box_" + tlid).animate({
'height': '400px'
},{
'duration': 300,
'complete': function(){
$("#notf-box_" + tlid).css("overflow-y","scroll")
$("#notf-box_" + tlid).removeClass("column-hide")
}
});
}else{
$("#notf-box_" + tlid).css("overflow-y","hidden")
}, {
'duration': 300,
'complete': function () {
$("#notf-box_" + tlid).css("overflow-y", "scroll")
$("#notf-box_" + tlid).removeClass("column-hide")
}
});
} else {
$("#notf-box_" + tlid).css("overflow-y", "hidden")
$("#notf-box_" + tlid).animate({
'height': '0'
},{
'duration': 300,
'complete': function(){
$("#notf-box_" + tlid).addClass("column-hide")
$("#notf-box_" + tlid).css("display","none")
}
});
}, {
'duration': 300,
'complete': function () {
$("#notf-box_" + tlid).addClass("column-hide")
$("#notf-box_" + tlid).css("display", "none")
}
});
}
notfCanceler(acct)
}
function notfCanceler(acct){
function notfCanceler(acct) {
$(".notf-reply_" + acct).text(0);
localStorage.removeItem("notf-reply_" + acct)
$(".notf-reply_" + acct).addClass("hide");
@@ -479,26 +396,13 @@ function notfCanceler(acct){
$(".notf-follow_" + acct).addClass("hide");
$(".notf-icon_" + acct).removeClass("red-text");
}
function allNotfRead(){
console.log(localStorage.getItem("notf-fav_2"));
function allNotfRead() {
var multi = localStorage.getItem("multi");
if (!multi) {
var obj = [{
at: localStorage.getItem("acct_0_at"),
name: localStorage.getItem("name_0"),
domain: localStorage.getItem("domain_0"),
user: localStorage.getItem("user_0"),
prof: localStorage.getItem("prof_0"),
id: localStorage.getItem("user-id_0")
}];
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
} else {
if (multi) {
var obj = JSON.parse(multi);
Object.keys(obj).forEach(function (key) {
notfCanceler(key)
});
}
Object.keys(obj).forEach(function(key) {
console.log(key);
notfCanceler(key)
});
}
allNotfRead()

File diff suppressed because it is too large Load Diff

View File

@@ -1,17 +1,37 @@
//アンケートのトグル
function pollToggle() {
if ($("#poll").hasClass("hide")) {
if ($("#poll").hasClass("hide")) {
$("#right-side").show()
$("#poll").removeClass("hide")
} else {
$("#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")
$("#poll").removeClass("hide")
$("#pollsta").text(lang.lang_yesno)
} else {
$("#right-side").hide()
$("#left-side").css("width", "100%")
$("#right-side").css("width", "300px")
var width = localStorage.getItem("postbox-width");
if (width) {
width = width.replace("px", "") * 1
} else {
width = 300
}
$("#post-box").css("width", width + "px")
$("#emoji").addClass("hide")
$("#poll").addClass("hide")
}
$("#poll").addClass("hide")
$("#pollsta").text(lang.lang_no)
}
}
function pollProviderCk(){
function pollProviderCk() {
$(".poll-provider").addClass("hide");
$("#"+$("#poll-sel").val()).removeClass("hide");
$("#" + $("#poll-sel").val()).removeClass("hide");
}
/*
function pollAddtime(num){
@@ -21,99 +41,99 @@ function pollAddtime(num){
pollCalc();
}
*/
function pollCalc(){
var days=$("#days_poll").val();
var hrs=$("#hours_poll").val();
var mins=$("#mins_poll").val();
console.log(days*86400+hrs*3600+mins*60)
return days*86400+hrs*3600+mins*60;
function pollCalc() {
var days = $("#days_poll").val();
var hrs = $("#hours_poll").val();
var mins = $("#mins_poll").val();
console.log("Poll calc:" + days * 86400 + hrs * 3600 + mins * 60)
return days * 86400 + hrs * 3600 + mins * 60;
}
//Vote
function voteSelMastodon(acct_id,id,to,mul){
console.log('.vote_'+acct_id+'_'+id+'_'+to);
if($('.vote_'+acct_id+'_'+id+'_'+to).hasClass("sel")){
$('.vote_'+acct_id+'_'+id+'_'+to).css("background-color","transparent")
$('.vote_'+acct_id+'_'+id+'_'+to).removeClass("sel");
}else{
if(!mul){
$('.vote_'+acct_id+'_'+id+' div' ).each(function(i, elem) {
if(i==to){
$(this).css("background-color","var(--emphasized)");
function voteSelMastodon(acct_id, id, to, mul) {
if ($('.vote_' + acct_id + '_' + id + '_' + to).hasClass("sel")) {
$('.vote_' + acct_id + '_' + id + '_' + to).css("background-color", "transparent")
$('.vote_' + acct_id + '_' + id + '_' + to).removeClass("sel");
} else {
if (!mul) {
$('.vote_' + acct_id + '_' + id + ' div').each(function (i, elem) {
if (i == to) {
$(this).css("background-color", "var(--emphasized)");
$(this).addClass("sel");
}else{
$(this).css("background-color","transparent")
} else {
$(this).css("background-color", "transparent")
$(this).removeClass("sel");
}
});
}else{
$('.vote_'+acct_id+'_'+id+'_'+to).css("background-color","var(--emphasized)")
$('.vote_'+acct_id+'_'+id+'_'+to).addClass("sel");
} else {
$('.vote_' + acct_id + '_' + id + '_' + to).css("background-color", "var(--emphasized)")
$('.vote_' + acct_id + '_' + id + '_' + to).addClass("sel");
}
}
}
function voteMastodon(acct_id,id){
var choice=[];
$('.vote_'+acct_id+'_'+id+' div' ).each(function(i, elem) {
if($(this).hasClass("sel")){
choice.push(i+"");
function voteMastodon(acct_id, id) {
var choice = [];
$('.vote_' + acct_id + '_' + id + ' div').each(function (i, elem) {
if ($(this).hasClass("sel")) {
choice.push(i + "");
}
});
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/polls/"+id+"/votes";
if(localStorage.getItem("mode_" + domain)=="misskey"){
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/polls/" + id + "/votes";
if (localStorage.getItem("mode_" + domain) == "misskey") {
return false;
}
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send(JSON.stringify({choices:choice}));
httpreq.onreadystatechange = function() {
voteMastodonrefresh(acct_id,id)
}
httpreq.send(JSON.stringify({ choices: choice }));
httpreq.onreadystatechange = function () {
voteMastodonrefresh(acct_id, id)
}
}
function showResult(acct_id,id){
$('.vote_'+acct_id+'_'+id+'_result').toggleClass("hide")
function showResult(acct_id, id) {
$('.vote_' + acct_id + '_' + id + '_result').toggleClass("hide")
}
function voteMastodonrefresh(acct_id,id){
function voteMastodonrefresh(acct_id, id) {
var datetype = localStorage.getItem("datetype");
if (!datetype) {
datetype = "absolute";
}
datetype = "absolute";
}
var httpreqd = new XMLHttpRequest();
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/polls/"+id;
httpreqd.open('GET', start, true);
httpreqd.setRequestHeader('Content-Type', 'application/json');
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/polls/" + id;
httpreqd.open('GET', start, true);
httpreqd.setRequestHeader('Content-Type', 'application/json');
httpreqd.setRequestHeader('Authorization', 'Bearer ' + at);
httpreqd.responseType = 'json';
httpreqd.send(JSON.stringify({i:at,noteId:id}));
httpreqd.onreadystatechange = function() {
if (httpreqd.readyState == 4) {
httpreqd.send();
httpreqd.onreadystatechange = function () {
if (httpreqd.readyState == 4) {
var json = httpreqd.response;
console.log(json);
if(!json){
console.log(["Refresh vote", json]);
if (!json) {
return false;
}
var poll="";
var choices=json.options;
var myvote=lang.lang_parse_voted;
var result_hide="";
Object.keys(choices).forEach(function(keyc) {
var choice = choices[keyc];
if(!json.voted){
votesel='voteSelMastodon(\''+acct_id+'\',\''+json.id+'\','+keyc+','+json.multiple+')';
}
poll=poll+'<div class="pointer vote vote_'+acct_id+'_'+json.id+'_'+keyc+'" onclick="'+votesel+'">'+choice.title+'<span class="vote_'+acct_id+'_'+json.id+'_result '+result_hide+'">('+choice.votes_count+')</span></div>';
});
poll=poll+myvote+'<span class="cbadge cbadge-hover" title="' + date(json.expires_at, 'absolute') +
'"><i class="fa fa-calendar-times-o"></i>' +
date(json.expires_at, datetype) + '</span>';
$('.vote_'+acct_id+'_'+json.id).html(poll)
}
}
var poll = "";
var choices = json.options;
var myvote = lang.lang_parse_voted;
var result_hide = "";
Object.keys(choices).forEach(function (keyc) {
var choice = choices[keyc];
if (!json.voted) {
votesel = 'voteSelMastodon(\'' + acct_id + '\',\'' + json.id + '\',' + keyc + ',' + json.multiple + ')';
}
poll = poll + '<div class="pointer vote vote_' + acct_id + '_' + json.id + '_' + keyc + '" onclick="' + votesel + '">' + escapeHTML(choice.title) + '<span class="vote_' + acct_id + '_' + json.id + '_result ' + result_hide + '">(' + choice.votes_count + ')</span></div>';
});
poll = poll + myvote + '<a onclick="voteMastodonrefresh(\'' + acct_id + '\',\'' + json.id + '\')" class="pointer">' + lang.lang_manager_refresh + '</a><span class="cbadge cbadge-hover" title="' + date(json.expires_at, 'absolute') +
'"><i class="far fa-calendar-times"></i>' +
date(json.expires_at, datetype) + '</span>';
$('.vote_' + acct_id + '_' + json.id).html(poll)
}
}
}

View File

@@ -1,39 +1,38 @@
$voise = null;
$voiseName = lang.lang_speech;
$voices = speechSynthesis.getVoices();
$synthes = new SpeechSynthesisUtterance();
$voise = $.grep($voices, function(n, i){return n.name == $voiseName})[0];
$synthes.voice = $voise; // 音声の設定
localStorage.removeItem("voicebank");
speechSynthesis.cancel()
if(!localStorage.getItem("voice_vol")){
localStorage.setItem("voice_vol",1)
}
$synthes.rate=localStorage.getItem("voice_speed");
$synthes.pitch=localStorage.getItem("voice_pitch");
$synthes.volume=localStorage.getItem("voice_vol");
function say(msgr){
msg=voiceParse(msgr);
var voice=localStorage.getItem("voicebank");
var obj = JSON.parse(voice);
if(!obj){
var json = JSON.stringify([msg]);
localStorage.setItem("voicebank", json);
}else{
obj.push([msg]);
var json = JSON.stringify(obj);
localStorage.setItem("voicebank", json);
}
$voise = null;
$voiseName = lang.lang_speech;
$voices = speechSynthesis.getVoices();
$synthes = new SpeechSynthesisUtterance();
$voise = $.grep($voices, function (n, i) { return n.name == $voiseName })[0];
$synthes.voice = $voise; // 音声の設定
localStorage.removeItem("voicebank");
speechSynthesis.cancel()
if (!localStorage.getItem("voice_vol")) {
localStorage.setItem("voice_vol", 1)
}
$repeat = setInterval(function() {
if(!speechSynthesis.speaking){
var voice=localStorage.getItem("voicebank");
if(voice){
$synthes.rate = localStorage.getItem("voice_speed");
$synthes.pitch = localStorage.getItem("voice_pitch");
$synthes.volume = localStorage.getItem("voice_vol");
function say(msgr) {
msg = voiceParse(msgr);
var voice = localStorage.getItem("voicebank");
var obj = JSON.parse(voice);
if (!obj) {
var json = JSON.stringify([msg]);
localStorage.setItem("voicebank", json);
} else {
obj.push([msg]);
var json = JSON.stringify(obj);
localStorage.setItem("voicebank", json);
}
}
$repeat = setInterval(function () {
if (!speechSynthesis.speaking) {
var voice = localStorage.getItem("voicebank");
if (voice) {
var obj = JSON.parse(voice);
if(obj[0]){
$synthes.text = obj[0];
console.log($synthes);
if (obj[0]) {
$synthes.text = obj[0];
speechSynthesis.speak($synthes);
obj.splice(0, 1);
var json = JSON.stringify(obj);
@@ -42,68 +41,68 @@ $repeat = setInterval(function() {
}
}
}, 300);
function voiceParse(msg){
function voiceParse(msg) {
msg = $.strip_tags(msg);
msg = msg.replace(/#/g, "");
msg = msg.replace(/'/g, "");
msg = msg.replace(/"/g, "");
msg = msg.replace(/https?:\/\/[a-zA-Z0-9./-@_=?%&-]+/g, "");
return msg;
return msg;
}
function voiceToggle(tlid) {
var voiceck = localStorage.getItem("voice_" + tlid);
if (voiceck) {
var voiceck = localStorage.getItem("voice_" + tlid);
if (voiceck) {
localStorage.removeItem("voice_" + tlid);
speechSynthesis.cancel()
$("#sta-voice-" + tlid).text("Off");
$("#sta-voice-" + tlid).css("color",'red');
parseColumn();
} else {
localStorage.setItem("voice_" + tlid, "true");
$("#sta-voice-" + tlid).text("On");
$("#sta-voice-" + tlid).css("color",'#009688');
parseColumn();
}
$("#sta-voice-" + tlid).text("Off");
$("#sta-voice-" + tlid).css("color", 'red');
parseColumn(tlid);
} else {
localStorage.setItem("voice_" + tlid, "true");
$("#sta-voice-" + tlid).text("On");
$("#sta-voice-" + tlid).css("color", '#009688');
parseColumn(tlid);
}
}
function voiceCheck(tlid) {
var voiceck = localStorage.getItem("voice_" + tlid);
if (voiceck) {
$("#sta-voice-" + tlid).text("On");
$("#sta-voice-" + tlid).css("color",'#009688');
} else {
$("#sta-voice-" + tlid).text("Off");
$("#sta-voice-" + tlid).css("color",'red');
}
if (voiceck) {
$("#sta-voice-" + tlid).text("On");
$("#sta-voice-" + tlid).css("color", '#009688');
} else {
$("#sta-voice-" + tlid).text("Off");
$("#sta-voice-" + tlid).css("color", 'red');
}
}
function voicePlay(){
if(speechSynthesis.speaking){
function voicePlay() {
if (speechSynthesis.speaking) {
speechSynthesis.cancel()
}else{
$synthes.text = $("#voicetxt").val();
$synthes.rate = $("#voicespeed").val()/10;
$synthes.pitch = $("#voicepitch").val()/50;
$synthes.volume = $("#voicevol").val()/100;
} else {
$synthes.text = $("#voicetxt").val();
$synthes.rate = $("#voicespeed").val() / 10;
$synthes.pitch = $("#voicepitch").val() / 50;
$synthes.volume = $("#voicevol").val() / 100;
speechSynthesis.speak($synthes);
}
}
function voiceSettings(){
localStorage.setItem("voice_speed", $("#voicespeed").val()/10);
localStorage.setItem("voice_pitch", $("#voicepitch").val()/50);
localStorage.setItem("voice_vol", $("#voicevol").val()/100);
Materialize.toast(lang.lang_speech_refresh, 3000);
function voiceSettings() {
localStorage.setItem("voice_speed", $("#voicespeed").val() / 10);
localStorage.setItem("voice_pitch", $("#voicepitch").val() / 50);
localStorage.setItem("voice_vol", $("#voicevol").val() / 100);
M.toast({ html: lang.lang_speech_refresh, displayLength: 3000 })
}
function voiceSettingLoad(){
var speed=localStorage.getItem("voice_speed");
var pitch=localStorage.getItem("voice_pitch");
var vol=localStorage.getItem("voice_vol");
if(speed){
$("#voicespeed").val(speed*10);
function voiceSettingLoad() {
var speed = localStorage.getItem("voice_speed");
var pitch = localStorage.getItem("voice_pitch");
var vol = localStorage.getItem("voice_vol");
if (speed) {
$("#voicespeed").val(speed * 10);
}
if(pitch){
$("#voicepitch").val(pitch*50);
if (pitch) {
$("#voicepitch").val(pitch * 50);
}
if(vol){
$("#voicevol").val(vol*100);
if (vol) {
$("#voicevol").val(vol * 100);
}
}

View File

@@ -1,36 +1,220 @@
//検索
//検索ボックストグル
function searchMenu() {
$("#src-contents").html("");
trend();
$("#left-menu div").removeClass("active");
$("#searchMenu").addClass("active");
$(".menu-content").addClass("hide");
$("#src-box").removeClass("hide");
$('ul.tabs').tabs('select_tab', 'src-sta');
$("#src-contents").html("");
$("#src-box").removeClass("hide");
//$('ul.tabs').tabs('select_tab', 'src-sta');
}
//検索取得
function src(mode) {
$("#src-contents").html("");
function src(mode, offset) {
if(!offset){
$("#src-contents").html("");
var add = ""
}else{
var add = "&type=accounts&offset=" + $("#src-accts .cvo").length
}
var q = $("#src").val();
var acct_id = $("#src-acct-sel").val();
if(acct_id=="tootsearch"){
tootsearch(q);
if (acct_id == "tootsearch") {
tsAdd(q)
return false;
}
localStorage.setItem("last-use", acct_id);
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
var m = q.match(/^#(.+)$/);
if(m){q=m[1];}
if (m) { q = m[1]; }
if (user == "--now") {
var user = $('#his-data').attr("user-id");
}
if(!mode){
var start = "https://" + domain + "/api/v2/search?q=" + q
}else{
if (!mode) {
var start = "https://" + domain + "/api/v2/search?q=" + q + add
} else {
var start = "https://" + domain + "/api/v1/search?q=" + q
}
console.log("Try to search at " + start)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
src("v1")
return false;
}).then(function (json) {
console.log(["Search", json]);
//ハッシュタグ
if (json.hashtags[0]) {
var tags = "";
Object.keys(json.hashtags).forEach(function (key4) {
var tag = json.hashtags[key4];
if (mode) {
tags = tags + '<a onclick="tl(\'tag\',\'' + tag + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag) + '</a><br> ';
} else {
tags = tags + graphDraw(tag, acct_id);
}
});
$("#src-contents").append("Tags<br>" + tags);
}
//トゥート
if (json.statuses[0]) {
var templete = parse(json.statuses, '', acct_id);
$("#src-contents").append("<br>Mentions<br>" + templete);
}
//アカウント
if (json.accounts[0]) {
var templete = userparse(json.accounts, '', acct_id);
if(!offset){
$("#src-contents").append("<br>Accounts<div id=\"src-accts\">" + templete + '</div><a onclick="src(false,\'more\')" class="pointer">more...</a>');
}else{
$("#src-accts").append(templete)
}
}
jQuery("time.timeago").timeago();
});
}
function tsAdd(q) {
var add = {
domain: acct_id,
type: "tootsearch",
data: q
};
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
localStorage.setItem("card_" + obj.length, "true");
obj.push(add);
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
parseColumn('add');
}
function tootsearch(tlid, q) {
var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q
console.log("Toot srrach at " + start)
$("#notice_" + tlid).text("tootsearch(" + q + ")");
$("#notice_icon_" + tlid).text("search");
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (raw) {
var templete = "";
var json = raw.hits.hits;
var max_id = raw["hits"].length;
for (var i = 0; i < json.length; i++) {
var toot = json[i]["_source"];
if (lastid != toot.uri) {
if (toot && toot.account) {
templete = templete + parse([toot], "noauth", null, tlid, 0, [], "tootsearch")
}
}
var lastid = toot.uri;
}
if (!templete) {
templete = lang.lang_details_nodata;
} else {
templete = templete + '<div class="hide ts-marker" data-maxid="' + max_id + '"></div>';
}
$("#timeline_" + tlid).html(templete);
jQuery("time.timeago").timeago();
});
}
function moreTs(tlid, q) {
var sid = $("#timeline_" + tlid + " .ts-marker").last().attr("data-maxid");
moreloading = true;
var start = "https://tootsearch.chotto.moe/api/v1/search?from=" + sid + "&sort=created_at%3Adesc&q=" + q
$("#notice_" + tlid).text("tootsearch(" + q + ")");
$("#notice_icon_" + tlid).text("search");
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (raw) {
var templete = "";
var json = raw.hits.hits;
var max_id = raw["hits"].length;
for (var i = 0; i < json.length; i++) {
var toot = json[i]["_source"];
if (lastid != toot.uri) {
if (toot && toot.account) {
templete = templete + parse([toot], "noauth", null, tlid, 0, [], "tootsearch")
}
}
var lastid = toot.uri;
}
if (!templete) {
templete = lang.lang_details_nodata;
} else {
templete = templete + '<div class="hide ts-marker" data-maxid="' + max_id + '"></div>';
}
$("#timeline_" + tlid).append(templete);
jQuery("time.timeago").timeago();
});
}
function graphDraw(tag, acct_id) {
var tags = "";
var his = tag.history;
var max = Math.max.apply(null, [his[0].uses, his[1].uses, his[2].uses, his[3].uses, his[4].uses, his[5].uses, his[6].uses]);
var six = 50 - (his[6].uses / max * 50);
var five = 50 - (his[5].uses / max * 50);
var four = 50 - (his[4].uses / max * 50);
var three = 50 - (his[3].uses / max * 50);
var two = 50 - (his[2].uses / max * 50);
var one = 50 - (his[1].uses / max * 50);
var zero = 50 - (his[0].uses / max * 50);
if (max === 0) {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toot(s)&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
} else {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'<g><path d="M0,' + six + ' L10,' + five + ' 20,' + four + ' 30,' + three + ' 40,' + two + ' 50,' + one + ' 60,' + zero + '" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>' +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toot&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
}
return tags;
}
/*
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
<path d="M0,0 L10,0 20,10 20,50" fill="#3F51B5"></path>
</svg>
*/
function trend(){
console.log("get trend")
$("#src-contents").html("");
var acct_id = $("#src-acct-sel").val();
if(acct_id=="tootsearch"){
return false;
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/trends"
console.log(start)
fetch(start, {
method: 'GET',
@@ -41,96 +225,28 @@ function src(mode) {
}).then(function(response) {
return response.json();
}).catch(function(error) {
src("v1")
return false;
}).then(function(json) {
console.log(json);
//ハッシュタグ
if (json.hashtags[0]) {
var tags = "";
Object.keys(json.hashtags).forEach(function(key4) {
var tag = json.hashtags[key4];
if(mode){
tags = tags + '<a onclick="tl(\'tag\',\'' + tag + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + tag + '</a><br> ';
}else{
tags=tags+graphDraw(tag);
}
});
$("#src-contents").append("Tags<br>" + tags);
}
//トゥート
if (json.statuses[0]) {
var templete = parse(json.statuses,'',acct_id);
$("#src-contents").append("Mentions<br>" + templete);
}
//アカウント
if (json.accounts[0]) {
var templete = userparse(json.accounts,'',acct_id);
$("#src-contents").append("Accounts<br>" + templete);
}
jQuery("time.timeago").timeago();
});
}
function tootsearch(q){
var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q
console.log(start)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
//todo(error);
console.error(error);
}).then(function(raw) {
var templete="";
var json=raw.hits.hits;
console.log(json);
Object.keys(json).forEach(function(key5) {
var toot = json[key5]["_source"];
console.log(toot);
if(toot && toot.account){
templete = templete+parse([toot],'noauth');
}
}).then(function(json) {
var tags = "";
Object.keys(json).forEach(function(keye) {
var tag = json[keye];
var his=tag.history;
var max=Math.max.apply(null, [his[0].uses,his[1].uses,his[2].uses,his[3].uses,his[4].uses,his[5].uses,his[6].uses]);
var six=50-(his[6].uses/max*50);
var five=50-(his[5].uses/max*50);
var four=50-(his[4].uses/max*50);
var three=50-(his[3].uses/max*50);
var two=50-(his[2].uses/max*50);
var one=50-(his[1].uses/max*50);
var zero=50-(his[0].uses/max*50);
tags = '<svg version="1.1" viewbox="0 0 60 50" width="60" height="50">'+
'<g><path d="M0,'+six+' L10,'+five+' 20,'+four+' 30,'+three+' 40,'+two+' 50,'+one+' 60,'+zero+'" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>'+
'</svg><span style="font-size:200%">'+his[0].uses+'</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + tag.name + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + tag.name + '</a>&nbsp;'+his[0].accounts+lang.lang_src_people+"<br><br>";
$("#src-contents").append(tags);
});
if(!templete){
templete=lang.lang_details_nodata;
}
$("#src-contents").html("Tootsearch("+lang.lang_src_ts+")<br>" + templete);
jQuery("time.timeago").timeago();
});
}
function graphDraw(tag){
var tags="";
var his=tag.history;
console.log(his);
var max=Math.max.apply(null, [his[0].uses,his[1].uses,his[2].uses,his[3].uses,his[4].uses,his[5].uses,his[6].uses]);
var six=50-(his[6].uses/max*50);
var five=50-(his[5].uses/max*50);
var four=50-(his[4].uses/max*50);
var three=50-(his[3].uses/max*50);
var two=50-(his[2].uses/max*50);
var one=50-(his[1].uses/max*50);
var zero=50-(his[0].uses/max*50);
if(max===0){
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">'+
'</svg><span style="font-size:200%">'+his[0].uses+'</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + tag.name + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + tag.name + '</a>&nbsp;'+his[0].accounts+lang.lang_src_people;
}else{
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">'+
'<g><path d="M0,'+six+' L10,'+five+' 20,'+four+' 30,'+three+' 40,'+two+' 50,'+one+' 60,'+zero+'" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>'+
'</svg><span style="font-size:200%">'+his[0].uses+'</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + tag.name + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + tag.name + '</a>&nbsp;'+his[0].accounts+lang.lang_src_people;
}
return tags;
}
/*
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
<path d="M0,0 L10,0 20,10 20,50" fill="#3F51B5"></path>
</svg>
*/
}

View File

@@ -1,35 +1,35 @@
//タグ表示
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=="tag"){
var acct_id=localStorage.getItem("main");
tl('tag',decodeURI(codex),acct_id,'add');
}
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 == "tag") {
var acct_id = localStorage.getItem("main");
tl('tag', decodeURI(codex), acct_id, 'add');
}
}
//よく使うタグ
function tagShow(tag){
$("[data-tag="+decodeURI(tag)+"]").toggleClass("hide");
function tagShow(tag) {
$("[data-tag=" + decodeURI(tag).toLowerCase() + "]").toggleClass("hide");
}
//タグ追加
function tagPin(tag){
function tagPin(tag) {
var tags = localStorage.getItem("tag");
if(!tags){
var obj=[];
}else{
if (!tags) {
var obj = [];
} else {
var obj = JSON.parse(tags);
}
var can;
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var tagT = obj[key];
if(tagT==tag){
can=true;
}else{
can=false;
if (tagT == tag) {
can = true;
} else {
can = false;
}
});
if(!can){
if (!can) {
obj.push(tag);
}
var json = JSON.stringify(obj);
@@ -45,84 +45,109 @@ function tagRemove(key) {
localStorage.setItem("tag", json);
favTag();
}
function favTag(){
function favTag() {
$("#taglist").html("");
var tagarr = localStorage.getItem("tag");
if(!tagarr){
var obj=[];
}else{
if (!tagarr) {
var obj = [];
} else {
var obj = JSON.parse(tagarr);
}
var tags="";
var nowPT=localStorage.getItem("stable")
Object.keys(obj).forEach(function(key) {
var tags = "";
var nowPT = localStorage.getItem("stable")
Object.keys(obj).forEach(function (key) {
var tag = obj[key];
if(nowPT!=tag){
console.log(nowPT+"/"+tag);
var ptt=lang.lang_tags_realtime;
var nowon="";
}else{
var ptt=lang.lang_tags_unrealtime;
var nowon="("+lang.lang_tags_realtime+")";
if (nowPT != tag) {
console.log("stable tags:" + nowPT + "/" + tag);
var ptt = lang.lang_tags_realtime;
var nowon = "";
} else {
var ptt = lang.lang_tags_unrealtime;
var nowon = "(" + lang.lang_tags_realtime + ")";
}
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a>'+nowon+'<span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="' +lang.lang_parse_tagTL.replace("{{tag}}" ,'#'+tag)+ '">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}" ,'#'+tag) + '">Toot</a> '+
'<a onclick="autoToot(\'' + tag + '\');" class="pointer" title="'+lang.lang_tags_always + lang.lang_parse_tagtoot.replace("{{tag}}" ,'#'+tag) + '">'+ptt+'</a> <a onclick="tagRemove(\'' + key + '\')" class="pointer" title="' +lang.lang_tags_tagunpin.replace("{{tag}}" ,'#'+tag)+ '">'+lang.lang_del+'</a></span> ';
tag = escapeHTML(tag);
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a>' + nowon + '<span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="' + lang.lang_parse_tagTL.replace("{{tag}}", '#' + tag) + '">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", '#' + tag) + '">Toot</a> ' +
'<a onclick="autoToot(\'' + tag + '\');" class="pointer" title="' + lang.lang_tags_always + lang.lang_parse_tagtoot.replace("{{tag}}", '#' + tag) + '">' + ptt + '</a> <a onclick="tagRemove(\'' + key + '\')" class="pointer" title="' + lang.lang_tags_tagunpin.replace("{{tag}}", '#' + tag) + '">' + lang.lang_del + '</a></span> ';
});
if(obj.length>0){
if (obj.length > 0) {
$("#taglist").append("My Tags:" + tags);
}else{
} else {
$("#taglist").append("");
}
}
function trendTag(){
function trendTag() {
$(".trendtag").remove();
var domain="imastodon.net"
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var domain = "imastodon.net"
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/trend_tags"
console.log(start)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
if (json) {
var tags="";
json=json.score;
Object.keys(json).forEach(function(tag) {
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (json) {
var tags = "";
json = json.score;
Object.keys(json).forEach(function (tag) {
tag = escapeHTML(tag);
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span> ';
});
$("#taglist").append('<div class="trendtag">アイマストドントレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' + tags+'</div>');
trendintervalset()
}else{
});
$("#taglist").append('<div class="trendtag">アイマストドントレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' + tags + '</div>');
trendintervalset()
} else {
$("#taglist").html("");
}
});
}
function trendintervalset(){
function trendintervalset() {
setTimeout(trendTag, 6000000);
}
function tagTL(a,b,c,d){
function tagTL(a, b, c, d) {
var acct_id = $("#post-acct-sel").val();
tl(a,b,acct_id,d);
tl(a, b, acct_id, d);
}
function autoToot(tag){
var nowPT=localStorage.getItem("stable")
if(nowPT==tag){
function autoToot(tag) {
tag = escapeHTML(tag)
var nowPT = localStorage.getItem("stable")
if (nowPT == tag) {
localStorage.removeItem("stable");
Materialize.toast(lang.lang_tags_unrealtime,3000);
}else{
localStorage.setItem("stable",tag);
Materialize.toast(lang.lang_tags_tagwarn.replace("{{tag}}" ,tag).replace("{{tag}}" ,tag),3000);
brInsert('#' + tag+" ")
M.toast({ html: lang.lang_tags_unrealtime, displayLength: 3000 })
} else {
localStorage.setItem("stable", tag);
M.toast({ html: lang.lang_tags_tagwarn.replace("{{tag}}", tag).replace("{{tag}}", tag), displayLength: 3000 })
brInsert('#' + tag + " ")
}
favTag();
}
//タグをフィーチャー
function tagFeature(name, acct_id){
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/featured_tags"
fetch(start, {
method: 'POST',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
body: JSON.stringify({
name: name
})
}).then(function (response) {
return response.json();
}).catch(function (error) {
return false;
}).then(function (json) {
console.log(json)
M.toast({ html: "Complete: " + escapeHTML(name), displayLength: 3000 })
});
}

File diff suppressed because it is too large Load Diff

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