Compare commits

...

361 Commits

Author SHA1 Message Date
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
Cutls
b2e10feba8 Merge pull request #31 from cutls/WIP-(before-CI)
TheDesk Usamin (18.0.2)
2019-03-16 14:05:46 +09:00
Cutls
c245f2c5e6 TheDesk Usamin (18.0.2) 2019-03-16 14:05:04 +09:00
Cutls
63821f2c45 reverse some menu items 2019-03-16 03:13:42 +09:00
Cutls
a058659778 Fix reload 2019-03-16 03:10:46 +09:00
Cutls
8c27c43c13 Merge pull request #30 from cutls/WIP-(before-CI)
TheDesk Usamin (18.0.1)
2019-03-16 02:19:22 +09:00
Cutls
da5549d1f0 FIx 2019-03-16 02:17:30 +09:00
Cutls
487a8e7a1b Merge pull request #29 from cutls/WIP-(before-CI)
TheDesk Usamin (18.0.1)
2019-03-16 02:00:06 +09:00
Cutls
9e7788cd62 TheDesk Usamin (18.0.1) 2019-03-16 01:59:29 +09:00
Cutls
ccb652dcf0 Merge pull request #28 from cutls/WIP-(before-CI)
TheDesk Usamin (18.0.0)
2019-03-16 00:45:16 +09:00
Cutls
db673357f1 TheDesk Usamin (18.0.0) 2019-03-16 00:44:18 +09:00
Cutls
f84948b6c3 Add column btns 2019-03-16 00:40:20 +09:00
Cutls
fdc6ec906c 途中でプルリクを処理するためコミット 2019-03-16 00:29:54 +09:00
Cutls
fd83ceef92 Merge pull request #27 from Winding6636/patch-1
カスタムテーマバグ修正
2019-03-16 00:29:14 +09:00
Winding
deab6fd869 カスタムテーマバグ修正
カスタムテーマ適用時に、ユーザーページ(?)のスタイルが崩れているのを確認し修正しました。
2019-03-16 00:16:21 +09:00
Cutls
677f167c8e Vue dev-mode turn off 2019-03-15 20:13:51 +09:00
Cutls
21d8c52829 Vue introduces 2019-03-15 20:12:11 +09:00
Cutls
1c22572048 Merge pull request #26 from cutls/WIP-(before-CI)
TheDesk Miria (17.3.0)
2019-03-15 04:49:22 +09:00
Cutls
d6012ea128 Add "menu" and remove bottom-bar's 8 icons 2019-03-15 04:48:01 +09:00
Cutls
2856aec405 Titlebar(test) 2019-03-13 00:51:07 +09:00
Cutls
28e39cdd3d To fix hidden followers 2019-03-10 14:32:44 +09:00
Cutls
bc8958ac6a Filter languge construction 2019-03-10 13:37:27 +09:00
Cutls
083cb6e619 To fix position of toot box 2019-03-10 00:03:02 +09:00
Cutls
ba018b8568 To set disabled HardwareAcceleration #25 2019-03-09 21:17:54 +09:00
Cutls
1361958e8d Alt+Enter to secondary toot 2019-03-09 20:17:08 +09:00
Cutls
6c69954ec4 #23 Fix: Snap updator bug 2019-03-09 11:24:07 +09:00
Cutls
978d3964d2 Fix Snapcraft(snapd) update notice dialog bug #23 2019-03-09 11:21:21 +09:00
Cutls
dd55236e84 Merge pull request #24 from cutls/WIP-(before-CI)
TheDesk Miria (17.2.0)
2019-03-09 10:16:24 +09:00
Cutls
dd59de1172 Merge branch 'master' into WIP-(before-CI) 2019-03-09 10:16:04 +09:00
Cutls
9e21979839 package-lock.json rebuild 2019-03-09 09:51:26 +09:00
Cutls
8589577995 Improve Misskey login method 2019-03-08 17:14:47 +09:00
Cutls
2216777710 fix bug:themes 2019-03-08 05:18:49 +09:00
Cutls
7950042eb6 add theme and fix for macOS 2019-03-08 03:19:26 +09:00
Cutls
b4674c8b09 language 2019-03-07 12:21:27 +09:00
Cutls
91f9fa6591 final 2019-03-07 01:30:58 +09:00
Cutls
f0869f3086 Merge pull request #22 from cutls/WIP-(before-CI)
config, package to build
2019-03-07 01:15:09 +09:00
Cutls
ae2f30a342 fix: travis/package 2019-03-07 01:14:05 +09:00
Cutls
d8362add72 package.json WIP 2019-03-07 00:55:54 +09:00
Cutls
5b699c1775 TheDesk Miria (17.1.1) 2019-03-07 00:48:18 +09:00
Cutls
412791975c Merge pull request #21 from cutls/WIP-(before-CI)
THeDesk Miria (17.1.0) complete
2019-03-06 21:24:29 +09:00
Cutls
dd2a7b4228 to build 2019-03-06 21:01:36 +09:00
Cutls
30805a2263 Merge branch 'master' of https://github.com/cutls/TheDesk 2019-03-06 21:00:25 +09:00
Cutls
2dcf702d54 fix to master 2019-03-06 21:00:01 +09:00
Cutls
381e661484 THeDesk Miria (17.1.0) complete 2019-03-06 20:56:39 +09:00
Cutls
b6f2feb147 Merge pull request #20 from cutls/WIP-(before-CI)
travis CI and vote for 2.8
2019-03-06 17:18:55 +09:00
Cutls
f45fa97e95 travis CI 2019-03-06 17:17:25 +09:00
Cutls
86d99f40a5 vote(Mastodon 2.8) 2019-03-06 17:08:48 +09:00
Cutls
d5f3354e71 絵文字ボックスが閉じない不具合 #19 2019-03-04 14:49:25 +09:00
Cutls
5134dd274b TheDesk Miria (17.0.2) 2019-02-28 02:02:23 +09:00
Cutls
560494467b TheDesk Miria (17.0.1) 2019-02-27 10:58:29 +09:00
Cutls
75a397aafd TheDesk Miria (17.0.1) 2019-02-27 10:17:35 +09:00
Cutls
4d5916b595 TheDesk Miria (17.0.1) 2019-02-27 01:51:37 +09:00
cutls
3c00ff5695 TheDesk Miria (17.0.1) beta4 2019-02-05 11:33:32 +09:00
cutls
6513fc0e3e last mistake clear 2019-02-01 02:12:43 +09:00
cutls
b16ef4576f mistake clear 2019-02-01 01:53:40 +09:00
cutls
67a7b1e08e mistakes 2019-02-01 01:37:36 +09:00
cutls
092f3bd7d7 travis mac test 2019-02-01 01:33:46 +09:00
cutls
810a08c8e7 TheDesk Miria (17.0.1)-beta3 2019-02-01 01:30:25 +09:00
cutls
456500e954 TheDesk Miria (17.0.1)-beta2 2019-01-29 10:49:14 +09:00
Cutls
e3470ae0f2 electron-builder error
electron must be in devDependencies, not in dependencies.
2019-01-29 01:06:24 +09:00
Cutls
7da4cd53d2 Merge pull request #13 from kaias1jp/nowplaying-node-linux-disabled
Nowplaying node linux disabled
2019-01-29 00:56:05 +09:00
kaias1jp
1f1a429e35 Delete TheDeskBuild.sh 2019-01-28 21:45:49 +09:00
kaias1jp
1efa656529 modified: main.js
modified:   package.json
2019-01-28 21:37:59 +09:00
popn.ja
52cb240be3 modified: TheDeskBuild.sh 2019-01-28 20:32:21 +09:00
kaias1jp
6411fc9fb1 modified: TheDeskBuild.sh 2019-01-28 18:56:36 +09:00
kaias1jp
48da2cf287 new file: TheDeskBuild.sh 2019-01-28 18:44:50 +09:00
kaias1jp
8968c248df modified: main.js
modified:   package.json
2019-01-28 18:39:16 +09:00
cutls
27721fa481 check 2019-01-28 09:45:32 +09:00
Cutls
ee618155ac file cng 2019-01-28 09:22:17 +09:00
Cutls
f6e8f04b2a Update .travis.yml 2019-01-28 09:00:41 +09:00
cutls
c6e99b2b47 tetst release 2019-01-28 03:31:10 +09:00
cutls
c6701a4d59 finish to absolute 2019-01-28 03:28:25 +09:00
cutls
693993e899 typo 2019-01-28 02:59:27 +09:00
cutls
314ec5ab4d pray for last commit 2019-01-28 02:57:13 +09:00
cutls
d344a7fc47 git bash 2019-01-28 02:41:58 +09:00
cutls
28f2e9302a git bash 2019-01-28 02:40:15 +09:00
cutls
697d942180 rename to mobe 2019-01-28 01:54:20 +09:00
cutls
6412139ae4 back-escape deleted 2019-01-28 01:08:10 +09:00
cutls
add018263e abs path 2019-01-28 00:53:38 +09:00
cutls
baaa3e2527 last update I do 2019-01-28 00:33:28 +09:00
cutls
79276bf698 replacer 2019-01-28 00:20:33 +09:00
cutls
3953f560e4 some bugs for WBT 2019-01-28 00:11:53 +09:00
cutls
75d6a558ad for windows 2019-01-27 23:53:33 +09:00
cutls
230dd30294 wine required 2019-01-27 23:21:35 +09:00
cutls
e49c803f89 mistake 2 2019-01-27 23:09:24 +09:00
cutls
80577639d7 mistake 2019-01-27 22:58:53 +09:00
cutls
b85ac213da plus dependencies 2019-01-27 22:48:23 +09:00
cutls
a8f446a1bd delete np-node 2019-01-27 22:36:17 +09:00
cutls
b7ec01aa1f travis set up file 2019-01-27 22:19:31 +09:00
cutls
6cc765a6f1 travis master update 2019-01-27 22:07:51 +09:00
cutls
54a39151d1 travis update 2019-01-27 21:32:35 +09:00
cutls
37a1b7e52d travis update 2019-01-27 21:22:58 +09:00
cutls
54231cde73 traviss update 2019-01-27 21:17:40 +09:00
cutls
57f7a92063 travis update 2019-01-27 21:09:30 +09:00
cutls
61c67457ac travis 2019-01-27 21:07:11 +09:00
cutls
c05e13858b Merge branch 'master' of https://github.com/cutls/TheDesk 2019-01-27 19:49:33 +09:00
cutls
caa8d97a23 update versions 2019-01-27 19:49:17 +09:00
cutls
7921633efd Local NowPlaying for Windows 2019-01-26 23:27:35 +09:00
cutls
77ad2bd200 Some additional info & improve format 2019-01-26 23:26:56 +09:00
cutls
fa3b3e0800 New language style for worldwide 2019-01-26 12:24:26 +09:00
cutls
e1fb172f5b New electron-builder files 2019-01-26 12:24:08 +09:00
cutls
ccb0cb6db4 Excluded type of Notifications 2019-01-26 12:23:53 +09:00
Cutls
44e507dc90 Build command(npm) 2019-01-25 11:41:48 +09:00
Cutls
c59267bf6e Update package.json 2019-01-24 01:04:21 +09:00
Cutls
da0d9bbb51 Update README.md 2019-01-24 00:59:21 +09:00
Cutls
c6d9d7aa49 typo 2019-01-23 22:39:21 +09:00
Cutls
a08b7501ce macOS icons(electron-builder) 2019-01-23 22:20:14 +09:00
Cutls
5950fa5bbd Create README.md 2019-01-23 22:19:34 +09:00
Cutls
ed326cb264 Update package.json 2019-01-23 18:03:11 +09:00
Cutls
4a984af695 electron-builder 2019-01-23 17:58:31 +09:00
Cutls
d36a9215af Update README.md 2019-01-23 13:48:11 +09:00
Cutls
e145efb1a2 Update index.html 2019-01-23 13:31:21 +09:00
Cutls
c434ed903d Update index.html 2019-01-23 13:31:02 +09:00
Cutls
fa546df375 Update snapcraft.yaml 2019-01-23 13:24:44 +09:00
Cutls
cbe0cb171b Update snapcraft.yaml 2019-01-23 13:22:21 +09:00
Cutls
70f76d61f4 typo
from crowdin issue
2019-01-23 11:08:00 +09:00
cutls
0d0a9c43ad TheDesk Miria (17.0.1) 2019-01-22 01:26:22 +09:00
cutls
f762dd600c Alert when posting unlisted, private, direct toot with tags 2019-01-22 01:26:11 +09:00
cutls
f3186373bf Scheduled toot available 2019-01-22 01:25:40 +09:00
cutls
4f82cf00d6 fix some bugs(icon) 2019-01-22 01:24:37 +09:00
cutls
ec2fb97a68 Change from Instance to Server 2019-01-22 01:24:15 +09:00
cutls
2c85cee77a Update README.md 2019-01-13 11:05:41 +09:00
cutls
c6ad258c1c Merge branch 'master' of https://github.com/cutls/TheDesk 2019-01-13 11:03:10 +09:00
cutls
4c0735b2ed CSS Fixed 2019-01-13 11:02:52 +09:00
Cutls
cdaca5c9f7 Update 2018-12-16 23:04:00 +09:00
Cutls
0175038e77 How to install 2018-12-16 23:01:25 +09:00
Cutls
205e1d3332 TOS, priv, Build 2018-12-16 16:17:52 +09:00
Cutls
66d97388f5 Delete TOS 2018-12-16 16:12:33 +09:00
cutls
c60572b132 Merge branch 'master' of https://github.com/cutls/TheDesk 2018-12-09 03:46:22 +09:00
cutls
bc197db0d5 TheDesk Miria (17.0.0) 2018-12-09 03:46:01 +09:00
Cutls
a93c488aa5 Update README.md 2018-11-28 01:21:52 +09:00
Cutls
a2d0268d39 LICENSE Updated 2018-11-28 01:21:23 +09:00
cutls
8bb27aa8d5 Merge branch 'master' of https://github.com/cutls/TheDesk 2018-09-27 00:25:59 +09:00
cutls
0c7cf6f776 TheDesk Akane (16.1.6) 2018-09-27 00:25:35 +09:00
Cutls
abd2a39204 Create LICENSE.md 2018-09-21 15:54:12 +09:00
148 changed files with 35741 additions and 18956 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

2
.gitignore vendored
View File

@@ -4,7 +4,7 @@
*.exe
TheDesk-*
app/build
make.js
build
app/.DS_Store
.DS_Store
.vs/*

47
.travis.yml Normal file
View File

@@ -0,0 +1,47 @@
os:
- windows
- linux
- osx
language: node_js
node_js:
- '10.15.2'
script: node -v
before_deploy:
- 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
- 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 build
deploy:
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=
# Releases ページにアップロードするファイル
file_glob: true
file:
- build/*
skip_cleanup: true
on:
repo: cutls/TheDesk
tags: true
all_branches: true

8
LICENSE.md Normal file
View File

@@ -0,0 +1,8 @@
# プライバシーポリシー
* TheDeskは「開発者からのお知らせ」配信のためにサーバー(thedesk.top)に常時アクセスしています。
* 上記の接続によるユーザーの情報提供はありません。(IPアドレス等を含む)
* thedesk.topのページにおいては、Googleアナリティクスによる解析を採用しています。
* 配信についてAmazon Web Service CloudFrontを使用しています。CloudFrontにはアクセス解析機能がありますが、これの使用につきましては同プライバシーポリシーに則ります。
* 接続するインスタンスのプライバシーポリシーはAPIを通じた全てのアクションに対して有効ですので、TheDeskについてもそれらに則ります。

152
README.md
View File

@@ -1,70 +1,122 @@
<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)
[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
[![Download](https://flat.badgen.net/github/assets-dl/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのWindows/Linuxクライアント
Download:[TheDesk](https://thedesk.top)
Contact me(bug report...):GitHub Issues, mention to [Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls) or toot with #Desk
バグレポートなど:GitHub Issuesや[Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls)へのリプ,または#Deskでトゥートして下さい.
## License/ライセンス
[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
## Terms of Use/利用規約
[TOS.md](https://github.com/cutls/TheDesk/blob/master/TOS.md)
## Language/言語
- 日本語(Japanese)
- English(英語)
### Translation/翻訳
Crowdin project was started! Visit: https://crowdin.com/project/thedesk
オープンソースSNSマストドン/MisskeyのPC向けクライアント[日本語はこちら](README_ja.md)
Crowdinから翻訳に参加してみませんか: https://crowdin.com/project/thedesk
Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com)
## Component/構成
<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>
![Screenshots1](https://thedesk.top/img/scr1.png)
app:Raw files(you can download to modify or check)
## License
app:そのままのファイル.ダウンロード→テスト用
[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
desk.icns: If you build yourself on macOS, you can use this .icns file as icon.
desk.icns: macOS向けアイコン.セルフビルドにどうぞ.
The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/)
[Press Kit](https://dl.thedesk.top/press/TheDesk+PressKit.zip)
## Requirement/環境
* [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)
- Electron 2.0.7
- electron-dl
- Jimp
- adm-zip
- itunes-nowplaying-mac(for macOS)
- node-notifier
- Ability to read unformated files!
The default sounds of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/)
## Contributors/コントリビューター
## Terms of Use
macOSビルダー
* [利用規約(Terms of Use(ja))](https://thedesk.top/tos.html)
* [プライバシーポリシー(Privacy Policy(ja))](https://thedesk.top/priv.html)
- [とねぢ](https://minohdon.jp/@toneji)
## Language
## Build/ビルド
* 日本語(Japanese)
* English
Misskey(misskey.xyz) application token is not in cutls/TheDesk
Misskey(misskey.xyz)のトークンは含まれておりません。
### Translation
Crowdin project is available! Visit: https://translate.thedesk.top
## Requirement
* Electron 4.2 or above(install yourself)
* electron-dl(in package.json)
* Jimp(in package.json)
* font-manager(in package.json)
* Python 2.x(install yourself)
* VisualC++(Windows)(install yourself)
* itunes-nowplaying-mac(for macOS)(in package.json)
* node-notifier(in package.json)
* sumchecker(in package.json)
* Ability to read unformated files!(install yourself)
## Contributors
Build for macOS
* [toneji](https://minohdon.jp/@toneji)
Build for Linux
* [popn_ja](https://popon.pptdn.jp/@popn_ja)
Fellow coder
* [kPherox](https://www.kr-kp.com/)
## Build
```sh
git clone https://github.com/cutls/TheDesk
cd TheDesk/app
npm install
npm install --only=dev
```
### 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`
electron-packager is required. electron-packagerが必要です.
Linux/macOS
`./node_modules/.bin/electron-rebuild`
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=2.0.7 --icon=.\app\thedesk.ico --overwrite`
`.\node_modules\.bin\electron-rebuild.cmd`
To install Python 2.x and Visual C++ for Windows, before running `npm install --save-dev electron-rebuild`
`npm install --global windows-build-tools`
Windows
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite`
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=2.0.7 --overwrite`
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=linux --arch=x64,ia32 --electron-version=4.0.5 --overwrite`
macOS
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=2.0.7 --icon=./app/icon.icns --overwrite`
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite`
## See also/詳しく
## Pleroma support
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)
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.

128
README_ja.md Normal file
View File

@@ -0,0 +1,128 @@
<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)
[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
[![Download](https://flat.badgen.net/github/assets-dl/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント
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://dl.thedesk.top/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)
標準の通知音は [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/) で提供されています。
## 利用規約
* [利用規約](https://thedesk.top/tos.html)
* [プライバシーポリシー](https://thedesk.top/priv.html)
## 言語
* 日本語
* English(英語)
### 翻訳
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!(自分で入れて)
## 主なコントリビューター
macOSビルダー
* [とねぢ](https://minohdon.jp/@toneji)
Linuxビルダー
* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
iTunes NowPlayingにアルバムアートワークを付けてくれた人
* [kPherox](https://www.kr-kp.com/)
## ビルド
```sh
git clone https://github.com/cutls/TheDesk
cd TheDesk/app
npm install
npm install --only=dev
```
### 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)

108
TOS.md
View File

@@ -1,108 +0,0 @@
# Terms of Use
## Copyright
(C)TheDesk 2018 all rights reserved. Website:[https://thedesk.top](https://thedesk.top)
## 利用規約
利用規約とは __禁止行為__ と、 __規約__ を含めたものを指します。
### 禁止行為
- 同一内容の連投行為
- 複数インスタンスやSNSへの同時投稿
- misskey.xyzへのthedesk-misskeyからの投稿
## 規約
- このソフトウェアを通じて投稿される内容やAPIを通じたアクションは全て投稿者が権利を主張でき、責務を負うことになります。
- MastodonのAPIを通じたアクションは、全てそのインスタンスの規約に従っていなければなりません。特記無き場合、法的責任はそのインスタンスのホストの所在国の法律に従って下さい。
- その他API(Adobe,Spotify,マストドンユーザーマッチング,instances.social)へのアクセスは、各サービスの規約・プライバシーポリシーを遵守してください。
- Spotifyのログイン情報はTheDeskのサーバーに保存されますが、EUにおける「一般データ保護規則General Data Protection Regulation:GDPR」を遵守できていないため、EU内ユーザーは利用できません。
- 改変、翻訳に関わらず、利用しているインスタンスに関わらないTheDeskに起因する法的責任は日本国の法律に従います。
- TheDeskの開発者からの情報を送信するため、使用時には常に開発者のサーバー(thedesk.top)と接続しています。
この規約はTheDesk Akane (16.1.3)以降に効力を持ちます。
## Terms of Use
### Prohibited
- Posting toots which have the same contents each other in moments.
- Posting toots which have the same contents each other to several instances at once.
- Posting to misskey.xyz via thedesk-misskey.
## Terms
- You are immediately responsible to all actions through this software.
- You have to follow the instance's rules or laws of the hosted country.
- You have to follow the rules of other API(Adobe,Spotify,マストドンユーザーマッチング,instances.social) if you use them.
- Your Spotify login data is stored in TheDesk server, however TheDesk isn't following General Data Protection Regulation:GDPR which allows users in EU to use TheDesk.
- The developer of TheDesk follows Japanese laws.
- TheDesk is always connected to its server, in order to receive infomation from the developer.
TheDesk Akane (16.1.3) and above is under this TOS.
 
以下バージョンとコードネームの比較です。
_斜字_ はTheDeskには採用していません。前作等に使用されています。
__太字__ は2018年9月17日現在のTheDeskで使用されたコードネームです。
[カッコ囲み]は飛ばされることが確定しています。バージョンの番号も飛ばされます。
52以降が必要になったときに使用します。
1. _Rin_
1. _Anzu_
1. _Kanako_
1. _Kaede_
1. _Rika_
1. _Ranko_
1. __Miku__
1. _Kirari_
1. __Mika__
1. __Uzuki__
1. __Miho__
1. __Riina__
1. __Airi__
1. __Mizuki__
1. __Mio__
1. __Akane__
1. Miria
1. Nana
1. [Minami]
1. Sachiko
1. Mayu
1. Koume
1. Chieri
1. Anastasia
1. Aiko
1. Shoko
1. Nao
1. Karen
1. Sae
1. Yuko
1. Fumika
1. Yuki
1. Frederica
1. Kanade
1. Nina
1. Arisu
1. Sanae
1. Shiki
1. Syuko
1. Momoka
1. Yui
1. Yuka
1. Asuka
1. Yumi
1. Kyoko
1. Yuuki
1. Ryo
1. Yoshino
1. Hiromi
1. Miyu
1. Tomoe

View File

@@ -1,109 +1,124 @@
<!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="./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;
}
.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';
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;
}
</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="./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'>Display version</div>
<div class='area-data1' id="now"></div>
<div class='area-name2'>Internal version</div>
<div class='area-data2' id="ver"></div>
<div class='area-name3'>Chromium</div>
<div class='area-data3' id="chrome"></div>
<div class='area-name4'>Electron</div>
<div class='area-data4' id="electron"></div>
<div class='area-name5'>Node.js</div>
<div class='area-data5' id="node"></div>
</div>
<div class="cp">Copyright &copy; TheDesk 2018<br>
Main developer(author): <a href="https://cutls.com/@Cutls" target="_blank">Cutls P</a><br>
Thanks:<a href="https://minohdon.jp/@toneji" target="_blank">toneji</a>/<a
href="https://popon.pptdn.jp/@popn_ja" target="_blank">popn_ja</a>/<a href="https://pawoo.net/@kPherox"
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>
$("#now").text(localStorage.getItem("ver"));
var electron = require("electron");
var remote = electron.remote;
const shell = electron.shell;
$("#node").text(remote.process.version);
$("#chrome").text(remote.process.versions.chrome);
$("#electron").text(remote.process.versions.electron);
if (location.search) {
var m = location.search.match(/\?ver=([a-zA-Z-0-9.]+)/);
var ver = m[1];
$("#ver").text(ver);
}
$(document).on('click', 'a', e => {
var url = $(e.target).attr('href');
shell.openExternal(url);
return false;
});
</script>

View File

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

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

1
app/build/README.md Normal file
View File

@@ -0,0 +1 @@

BIN
app/build/icon.icns Normal file

Binary file not shown.

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,14 +1,18 @@
/*共通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;
@@ -27,6 +31,8 @@ option {
}
#mainView {
padding: 10px;
overflow: scroll;
height: auto;
}
#message {
display: none;
@@ -37,25 +43,27 @@ option {
color: white;
z-index: 9999;
}
#imagemodal, #videomodal {
#imagemodal,
#videomodal {
display: none;
max-width: 100vw;
max-height: 100vh;
top:0;
background-color: var(--modal);
position: fixed;
z-index: 9;
}
#imagemodal, #videomodal, #tootmodal {
#videomodal,
#tootmodal {
background-color: var(--modal);
}
#imagemodal .modal-content {
overflow: hidden;
padding: 0;
}
#imagemodal .modal-footer{
overflow-x:scroll;
overflow-y:hidden;
#imagemodal .modal-footer {
overflow-x: scroll;
overflow-y: hidden;
}
#imagewrap {
width: 100%;
height: 100%;
@@ -63,11 +71,13 @@ 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 {
.bbcode-pulse-loadings,
.bbcode-pulse-loading,
.fa-pulse {
display: inline-block;
animation-duration: 3s;
animation-fill-mode: both;
@@ -75,10 +85,13 @@ option {
animation-name: pulse;
}
@keyframes pulse {
from, 50%, to {
from,
50%,
to {
opacity: 1;
}
25%, 75% {
25%,
75% {
opacity: 0;
}
}
@@ -114,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;
@@ -124,7 +138,8 @@ code:before, .pre:before {
right: 0;
top: 0;
}
code, pre {
code,
pre {
color: white;
display: block;
border-left: 5px solid;
@@ -140,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;
@@ -152,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;
@@ -216,67 +234,184 @@ blockquote:before, .quote:before {
#drag-content {
font-size: 2rem;
}
.radio{
font-family:'Baloo Bhai'
.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;
}
}
.collapsible-header,.tabs{
.hide-anime {
animation: hide 0.2s linear 0s;
display: none;
}
@keyframes hide {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
.collapsible-header,
.tabs {
background-color: var(--subcolor);
}
.modal-footer{
.modal-footer {
background-color: var(--modalfooter) !important;
}
.font {
font-size: 1.5rem;
margin-bottom: 5px;
}
.font:hover {
background-color: #999;
}
.release-do {
border: solid 2px;
border-color: var(--color);
padding: 5px;
}
#pickers {
display: flex;
flex-wrap: wrap;
}
#menu {
position: fixed;
z-index: 9999;
background-color: var(--box);
width: 540px;
top: calc(50% - 150px);
left: calc(50% - 250px);
padding: 5px;
border: thin solid gray;
border-radius: 5px;
}
#menu-wrapper {
margin-left: -5px;
display: flex;
}
#left-menu {
width: 170px;
}
#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 div.active {
background-color: var(--emphasized);
}
#right-menu {
width: 380px;
max-height: 375px;
overflow-y: scroll;
overflow-x: hidden;
padding: 5px;
}
#tltype {
display: flex;
flex-wrap: wrap;
}
#tltype .type {
display: flex;
flex-wrap: wrap;
align-items: center;
width: 170px;
height: 40px;
cursor: pointer;
}
#tltype .type:hover {
background-color: var(--beforehover);
}
#tltype .active {
background-color: var(--emphasized);
}
#tltype i {
font-size: 30px;
}
#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);
border-radius: 5px;
background-color: var(--bg);
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;
}
/*スクロールバー*/
::-webkit-scrollbar {
@@ -294,4 +429,4 @@ blockquote:before, .quote:before {
border-radius: 5px;
background: #607d8b;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
}
}

1818
app/css/materialize.css vendored

File diff suppressed because it is too large Load Diff

301
app/css/pickr.css Normal file
View File

@@ -0,0 +1,301 @@
.pickr {
position: relative;
overflow: visible;
z-index: 1;
}
.pickr * {
box-sizing: border-box;
}
.pickr button,
.pickr input {
outline: none;
border: none;
}
.pickr button:focus,
.pickr input:focus {
box-shadow: 0 0 0 1px #f1f3f4, 0 0 0 3px currentColor;
}
.pickr .pcr-button {
position: relative;
height: 2em;
width: 2em;
padding: 0.5em;
border-radius: 0.15em;
cursor: pointer;
background: currentColor;
transition: all 0.3s;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto,
Helvetica Neue, Arial, sans-serif;
}
.pickr .pcr-button:before {
background: url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');
background-size: 0.5em;
border-radius: 0.15em;
z-index: -1;
}
.pickr .pcr-button:after,
.pickr .pcr-button:before {
position: absolute;
content: "";
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.pickr .pcr-button:after {
background: url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" stroke="%2342445A" stroke-width="5px" stroke-linecap="round"><path d="M45,45L5,5"></path><path d="M45,5L5,45"></path></svg>')
no-repeat 50%;
background-size: 70%;
opacity: 0;
}
.pickr .pcr-button.clear {
background: hsla(0, 0%, 100%, 0.25);
}
.pickr .pcr-button.clear:after {
opacity: 1;
}
.pickr .pcr-button.clear:focus {
box-shadow: 0 0 0 1px #f1f3f4, 0 0 0 3px #75797e;
}
.pickr .pcr-button.disabled {
cursor: not-allowed;
}
.pcr-app {
margin-top: 10px;
display: flex;
flex-direction: column;
z-index: 10000;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto,
Helvetica Neue, Arial, sans-serif;
box-shadow: 0 0.15em 1.5em 0 rgba(0, 0, 0, 0.1), 0 0 1em 0 rgba(0, 0, 0, 0.03);
top: 5px;
height: 15em;
width: 28.5em;
max-width: 95vw;
padding: 0.8em;
border-radius: 0.1em;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s;
}
.pcr-app.visible {
visibility: visible;
opacity: 1;
}
.pcr-app .swatches {
display: flex;
flex-wrap: wrap;
margin-top: 0.75em;
}
@supports (display: grid) {
.pcr-app .swatches {
display: grid;
align-items: center;
justify-content: space-around;
grid-template-columns: repeat(auto-fit, 1.75em);
}
}
.pcr-app .swatches > button {
position: relative;
width: 1.75em;
height: 1.75em;
border-radius: 0.15em;
cursor: pointer;
margin: 2.5px;
flex-shrink: 0;
justify-self: center;
transition: all 0.15s;
overflow: hidden;
background: transparent;
z-index: 1;
}
.pcr-app .swatches > button:before {
position: absolute;
content: "";
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');
background-size: 6px;
border-radius: 0.15em;
z-index: -1;
}
.pcr-app .swatches > button:after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: currentColor;
border: 1px solid rgba(0, 0, 0, 0.05);
border-radius: 0.15em;
box-sizing: border-box;
}
.pcr-app .swatches > button:hover {
filter: brightness(1.05);
}
.pcr-app .pcr-interaction {
display: flex;
align-items: center;
margin: 0.75em -0.2em 0;
}
.pcr-app .pcr-interaction > * {
margin: 0 0.2em;
}
.pcr-app .pcr-interaction input {
letter-spacing: 0.07em;
font-size: 0.75em;
text-align: center;
cursor: pointer;
color: #75797e;
background: #f1f3f4;
border-radius: 0.15em;
transition: all 0.15s;
padding: 0.45em 0.5em;
}
.pcr-app .pcr-interaction input:hover {
filter: brightness(0.975);
}
.pcr-app .pcr-interaction input:focus {
box-shadow: 0 0 0 1px #f1f3f4, 0 0 0 3px rgba(66, 133, 244, 0.75);
}
.pcr-app .pcr-interaction .pcr-result {
color: #75797e;
text-align: left;
flex-grow: 1;
min-width: 1em;
transition: all 0.2s;
border-radius: 0.15em;
background: #f1f3f4;
cursor: text;
}
.pcr-app .pcr-interaction .pcr-result::selection {
background: #4285f4;
color: #fff;
}
.pcr-app .pcr-interaction .pcr-type.active {
color: #fff;
background: #4285f4;
}
.pcr-app .pcr-interaction .pcr-clear,
.pcr-app .pcr-interaction .pcr-save {
width: auto;
color: #fff;
}
.pcr-app .pcr-interaction .pcr-clear:hover,
.pcr-app .pcr-interaction .pcr-save:hover {
filter: brightness(0.925);
}
.pcr-app .pcr-interaction .pcr-save {
background: #4285f4;
}
.pcr-app .pcr-interaction .pcr-clear {
background: #f44250;
}
.pcr-app .pcr-interaction .pcr-clear:focus {
box-shadow: 0 0 0 1px #f1f3f4, 0 0 0 3px rgba(244, 66, 80, 0.75);
}
.pcr-app .pcr-selection {
display: flex;
justify-content: space-between;
flex-grow: 1;
}
.pcr-app .pcr-selection .pcr-picker {
position: absolute;
height: 18px;
width: 18px;
border: 2px solid #fff;
border-radius: 100%;
user-select: none;
cursor: -moz-grab;
cursor: -webkit-grabbing;
}
.pcr-app .pcr-selection .pcr-color-preview {
position: relative;
z-index: 1;
width: 2em;
display: flex;
flex-direction: column;
justify-content: space-between;
margin-right: 0.75em;
}
.pcr-app .pcr-selection .pcr-color-preview:before {
position: absolute;
content: "";
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');
background-size: 0.5em;
border-radius: 0.15em;
z-index: -1;
}
.pcr-app .pcr-selection .pcr-color-preview .pcr-last-color {
cursor: pointer;
transition: background-color 0.3s, box-shadow 0.3s;
border-radius: 0.15em 0.15em 0 0;
z-index: 2;
}
.pcr-app .pcr-selection .pcr-color-preview .pcr-current-color {
border-radius: 0 0 0.15em 0.15em;
}
.pcr-app .pcr-selection .pcr-color-preview .pcr-current-color,
.pcr-app .pcr-selection .pcr-color-preview .pcr-last-color {
background: currentColor;
width: 100%;
height: 50%;
}
.pcr-app .pcr-selection .pcr-color-chooser,
.pcr-app .pcr-selection .pcr-color-opacity,
.pcr-app .pcr-selection .pcr-color-palette {
position: relative;
user-select: none;
display: flex;
flex-direction: column;
}
.pcr-app .pcr-selection .pcr-color-palette {
width: 100%;
z-index: 1;
}
.pcr-app .pcr-selection .pcr-color-palette .pcr-palette {
height: 100%;
border-radius: 0.15em;
}
.pcr-app .pcr-selection .pcr-color-palette .pcr-palette:before {
position: absolute;
content: "";
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');
background-size: 0.5em;
border-radius: 0.15em;
z-index: -1;
}
.pcr-app .pcr-selection .pcr-color-chooser,
.pcr-app .pcr-selection .pcr-color-opacity {
margin-left: 0.75em;
}
.pcr-app .pcr-selection .pcr-color-chooser .pcr-picker,
.pcr-app .pcr-selection .pcr-color-opacity .pcr-picker {
left: 50%;
transform: translateX(-50%);
}
.pcr-app .pcr-selection .pcr-color-chooser .pcr-slider,
.pcr-app .pcr-selection .pcr-color-opacity .pcr-slider {
width: 8px;
height: 100%;
border-radius: 50em;
}
.pcr-app .pcr-selection .pcr-color-chooser .pcr-slider {
background: linear-gradient(180deg, red, #ff0, #0f0, #0ff, #00f, #f0f, red);
}
.pcr-app .pcr-selection .pcr-color-opacity .pcr-slider {
background: linear-gradient(180deg, transparent, #000),
url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');
background-size: 100%, 50%;
}

View File

@@ -1,23 +1,25 @@
/*トゥートボックス向けCSS*/
#post-box {
display: none;
position: fixed;
left: 78px;
bottom: -500px;
left: calc(50vw - 150px);
top: 50vh;
background-color: var(--postbox);
border: thin solid gray;
z-index: 501;
width: 300px;
min-width:300px;
max-width:100%;
min-width: 300px;
max-width: 100%;
padding: 5px;
border-radius: 5px;
}
.cancel {
font-size: 0.5rem;
color: gray;
cursor: pointer;
position: absolute;
width: 60px;
right: 0px;
right: 2px;
top: 4px;
}
.more-show {
display: none;
@@ -35,6 +37,17 @@
#cw-text {
display: none;
}
#sch-box {
display: none;
}
#sch-box input {
width: auto;
}
.picker__close,
.picker__today,
.picker__clear {
color: #26a69a !important;
}
.cw {
display: none;
}
@@ -42,58 +55,86 @@
filter: blur(50px);
}
#emoji {
position: fixed;
bottom: 40px;
width: 300px;
height: 380px;
z-index: 502;
padding: 5px;
}
#suggest {
max-height: 300px;
overflow-y: scroll;
}
#emoji-list {
width: 100%;
height: calc(100% - 130px);
height: 200px;
overflow-y: scroll;
}
#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: white;
margin-right: 2px;
}
.character-counter {
position: relative;
top: -25px;
}
.trendtag{
overflow-y:scroll;
max-height:100px;
.trendtag {
overflow-y: scroll;
max-height: 100px;
}
#toot-btn-field{
display:flex;
#toot-btn-field {
display: flex;
}
#toot-post-btn{
width:calc(100% - 10px); padding:0; margin-top:10px;
#toot-post-btn {
width: calc(100% - 10px);
padding: 0;
margin-top: 10px;
}
#toot-sec-btn{
width:30px; 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);
overflow-y: scroll;
top: 90px;
}
/*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,41 +1,31 @@
.drag-content{
width:300px;
max-width:100%;
height:300px;
text-overflow: ellipsis;
cursor:move;
user-select: none;
background-color:var(--modalfooter);
margin:5px;
border-radius:5px;
color:var(--color);
padding:3px;
font-family:Open Sans;
font-size:20px;
flex-grow:1;
text-align: center;
padding:10px;
.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";
}
#sort{
display:flex;
flex-direction:row;
overflow-x:scroll;
display: flex;
width:100vw;
.sorticon {
grid-area: sorticon;
}
#sort-box{
position:absolute;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width:100vw;
height:calc(100vh - 40px);
background-color: rgba(0, 0, 0, 0.8);
z-index:10002;
.sorticon i {
font-size: 43px;
}
.sorttitle {
margin-left: 5px;
grid-area: sorttitle;
}
.sortacct {
margin-left: 5px;
grid-area: sortacct;
}
.sortaction {
margin-left: 5px;
grid-area: sortaction;
}
#sort-box button{
background-color: var(--notfbox);
color:var(--color);
}

View File

@@ -1,80 +1,100 @@
:root{
--bg:white;
--drag:rgba(255, 255, 255, 0.8);
--color:black;
--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;
}
#imagemodal {
background: url("../img/pixel.white.svg");
}
.blacktheme {
--bg:#212121;
--drag:rgba(0, 0, 0, 0.8);
--color:white;
--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;
}
.blacktheme #imagemodal {
background: url("../img/pixel.svg");
}
.indigotheme {
--bg:#031833;
--drag:rgba(0, 0, 0, 0.8);
--color:white;
--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;
}
.indigotheme #imagemodal {
background: url("../img/pixel.svg");
}
.browntheme {
--bg:#261411;
--drag:rgba(0, 0, 0, 0.8);
--color:white;
--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;
}
.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 #imagemodal {
background: url("../img/pixel.white.svg");
}
.greentheme{
--bg:#c8e6c9;
--drag:rgba(255, 255, 255, 0.8);
--color:black;
--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;
}

View File

@@ -1,91 +1,101 @@
/*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;
#bottom.reverse {
padding-left: 0;
padding-right: 40px;
}
.reverse{
.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 {
margin-right: 40px;
}
#bottom .leftside{
display:flex;
#bottom .leftside {
display: flex;
}
#bottom #tips img{
#bottom #tips img {
vertical-align: -3px;
}
#bottom a{
color:var(--color);
#bottom a {
color: var(--color);
}
#bottom i{
font-size:30px;
#bottom i {
font-size: 30px;
}
#bottom .btnsgroup{
border:1px solid;
padding:1px;
padding-left:5px;
padding-right:5px;
margin-right:15px;
border-radius:5px;
.exc-icons {
font-size: 20px;
}
#spot-box{
.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;
}
#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: 1344px) {
.btnsgroup .grouptitle{ display: none; }
#tips,#tips-menu{ display: none; }
@media screen and (max-width: 890px) {
.btnsgroup .grouptitle {
display: none;
}
#tips,
#tips-menu {
display: none;
}
}
iframe {
max-width:100%;
max-width: 100%;
}
@media screen and (max-width: 600px) {
.mobile #timeline-container {
@@ -102,130 +112,232 @@ 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: .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;
overflow: hidden;
}
.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;
}
.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-all;
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-areas: "notice notice notice" "icon display_name display_name" "icon toot toot" "vis additional additional" "actions 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: auto;
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
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;
}
.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: 2px;
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;
}
.area-actions {
padding:0;
margin:0;
top:-20px;
display:flex;
justify-content:space-around;
width:250px;
max-width:100%;
padding: 0;
margin: 0;
top: -20px;
display: flex;
justify-content: space-around;
width: 250px;
max-width: 100%;
grid-area: actions;
}
.area-vis {
margin:2px;
font-size:0.5rem !important;
margin: 2px;
grid-area: vis;
}
}
.area-side {
display:flex;
justify-content:flex-end;
margin:2px;
display: flex;
justify-content: flex-end;
margin: 2px;
grid-area: side;
}
.area-side i{
margin-left:10px;
.quote-renote {
display: grid;
grid-template-columns: 43px 2fr 1fr;
grid-template-areas: "ricon ruser" "ricon rtext";
border: 1px solid;
margin-top: 3px;
padding: 1px;
border-radius: 3px;
}
.viabadge{
margin-top:10px;
.renote-icon {
grid-area: ricon;
}
.action i{
font-size:1rem;
.renote-icon img {
width: 43px;
}
.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:hover {
color: var(--color);
transition: 0.5s;
}
.gray {
color: gray;
}
@@ -246,7 +358,7 @@ font-size:1rem;
.cbadge {
display: inline-block;
min-width: 10px;
max-width:100px;
max-width: 100px;
padding: 3px 7px;
font-size: 0.8em;
margin-right: 5px;
@@ -260,7 +372,7 @@ font-size:1rem;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
height:calc(0.8em + 8px);
height: calc(0.8em + 8px);
}
.cbadge-hover {
color: var(--color);
@@ -273,8 +385,9 @@ font-size:1rem;
p {
margin: 0;
margin-bottom: 0px;
line-height: 20px;
}
p:not(:last-child){
p:not(:last-child) {
margin-bottom: 10px;
}
.shared {
@@ -288,19 +401,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-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;
}
@@ -362,88 +476,173 @@ 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;
}
.u-url {
color: var(--color);
cursor: text;
.type-b {
display: none;
}
.type-b{
display:none;
}
.modal-footer{
background-color:var(--box);
}
.ballons{
.modal-footer {
background-color: var(--box);
position:absolute;
bottom:0px;
right:0px;
}
.btn-flat{
color:var(--color);
.ballons {
background-color: var(--box);
position: absolute;
bottom: 0px;
right: 0px;
}
.toot a span.ellipsis:after{
content:"...";
.toot a span.ellipsis:after {
content: "...";
}
.toot a:not(.mention) span:last-of-type{
display:none;
.toot a:not(.mention) span:last-of-type {
display: none;
}
.tl-box .via-hide{
display:none;
.tl-box .via-hide {
display: none;
}
.vote{
.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 {
border: 1px solid;
color: var(--bg);
background-color: var(--beforehover);
cursor: pointer;
width: 50px;
padding: 2px;
display: inline-block;
text-align: center;
margin-top: 5px;
border-radius: 10px;
transition-duration: 0.5s;
}
.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;
}
.nsfw-media {
position: absolute;
top: 0;
right: 0;
background-color: black;
color: white;
}
.img-link img {
display: block;
width: 100%;
height: 100%;
}
@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;
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
}
to {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes fadeInLeft {
from {
opacity: 0;
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
}
to {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.box-anime {
animation-duration: 1s;
animation-name: fadeInLeft;
}
.cvo-anime {
animation-duration: 0.1s;
animation-name: fadeInDown;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,63 +1,69 @@
/*アイコンをクリックした時とかにでてくるユーザーデータ*/
#his-data {
background-repeat: no-repeat;
background-image: url('/img/loading.svg');
background-image: url("../../loading.svg");
overflow-y: hidden;
}
#his-name{
font-size:1.5rem;
#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{
#his-float-data {
width: 400px;
height: 100%;
}
#his-float-timeline{
#his-float-timeline {
width: calc(100% - 400px);
height:100%;
overflow-y:hidden;
height: 100%;
overflow-y: hidden;
}
#his-basic-prof{
min-height:130px;
#his-basic-prof {
min-height: 130px;
}
#his-matching-list{
#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-show {
margin: 20px;
background-color:var(--his-data);
background-color: var(--his-data);
width: calc(100% - 20px);
height: calc(100% - 20px);
margin-bottom: 0;
@@ -66,27 +72,37 @@
.tab-content {
overflow-y: scroll;
overflow-x: hidden;
height: calc(100% - 240px)
height: calc(100% - 240px);
}
.my-data-width {
width: 10%;
}
.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;
.custom-tabs {
display: flex;
}
.custom-tabs .custom-tab a{
.custom-tabs .custom-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;
width: 90%;
height: 100%;
position: absolute;
}

View File

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

11
app/img/pixel.svg Normal file
View File

@@ -0,0 +1,11 @@
<svg width="300" height="300" xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<pattern id="pp" x="0" y="0" width="30" height="30" patternUnits="userSpaceOnUse">
<rect x="0" y="0" width="15" height="15" fill="#616161" />
<rect x="0" y="15" width="15" height="15" fill="#000000" />
<rect x="15" y="15" width="15" height="15" fill="#616161" />
<rect x="15" y="0" width="15" height="15" fill="#000000" />
</pattern>
</defs>
<rect width="300" height="300" fill="url(#pp)" />
</svg>

After

Width:  |  Height:  |  Size: 503 B

11
app/img/pixel.white.svg Normal file
View File

@@ -0,0 +1,11 @@
<svg width="300" height="300" xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<pattern id="pp" x="0" y="0" width="30" height="30" patternUnits="userSpaceOnUse">
<rect x="0" y="0" width="15" height="15" fill="#e0e0e0" />
<rect x="0" y="15" width="15" height="15" fill="#ffffff" />
<rect x="15" y="15" width="15" height="15" fill="#e0e0e0" />
<rect x="15" y="0" width="15" height="15" fill="#ffffff" />
</pattern>
</defs>
<rect width="300" height="300" fill="url(#pp)" />
</svg>

After

Width:  |  Height:  |  Size: 503 B

BIN
app/img/thinkingdesk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

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,6 @@
//このソフトについて
function about() {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('about', 'go');
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('about', 'go');
}

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

View File

@@ -1,16 +1,16 @@
$(function($) {
$(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 +20,7 @@ $(function($) {
return false;
}
}
}
//Ctrl+Enter:投稿
if (event.metaKey || event.ctrlKey && wv) {
@@ -29,7 +29,14 @@ $(function($) {
return false;
}
}
//Alt+Enter:セカンダリー
if (event.metaKey || event.altKey && wv) {
if (e.keyCode === 13) {
sec();
return false;
}
}
//Shift+Space:Markdownゼロ幅スペース
if (event.shiftKey) {
if (e.keyCode === 32) {
@@ -50,13 +57,13 @@ $(function($) {
//Ctrl+R:ランキング
if ((event.metaKey || event.ctrlKey) && wv) {
if (e.keyCode === 82) {
if(localStorage.getItem("kirishima")){
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;
@@ -71,8 +78,8 @@ $(function($) {
}
}
//input/textareaにフォーカスなし時
if ((!hasFocus && !hasFocus2 ) && wv) {
if(!wv){
if ((!hasFocus && !hasFocus2) && wv) {
if (!wv) {
return true;
}
//Ctrl+V:いつもの
@@ -85,6 +92,7 @@ $(function($) {
if (e.keyCode === 88) {
if (!$("#post-box").hasClass("appear")) {
show();
$('textarea').focus();
} else {
hide();
}
@@ -135,11 +143,11 @@ $(function($) {
}
//数字:TL
if (event.metaKey || event.ctrlKey) {
if (e.keyCode >= 49 && e.keyCode <= 57) {
var kz=e.keyCode-49;
goColumn(kz);
return false;
}
if (e.keyCode >= 49 && e.keyCode <= 57) {
var kz = e.keyCode - 49;
goColumn(kz);
return false;
}
}
}
//textareaフォーカス時
@@ -168,15 +176,15 @@ $(function($) {
//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 (e.keyCode === 37 && wv) {
if ($("#imagemodal").hasClass("open")) {
imgCont('prev');
return false;
@@ -190,7 +198,7 @@ $(function($) {
}
});
//クリアボタン
$("#clear").click(function() {
$("#clear").click(function () {
clear();
});
});

File diff suppressed because it is too large Load Diff

View File

@@ -1,17 +1,17 @@
//モーダル・ドロップダウンの各種設定
$(document).ready(function(){
// the "href" attribute of the modal trigger must specify the modal ID that wants to be triggered
$('.modal').modal();
$('.dropdown-button').dropdown({
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();
$('.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
}
);
});
});

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") {
@@ -68,9 +68,9 @@
}
},
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 +116,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 +139,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 +148,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 +156,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 +168,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 +184,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 +193,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,182 +1,275 @@
//バージョンチェッカー
function verck(ver) {
if(localStorage.getItem("ver")!=ver){
console.log("%c Welcome😊", "color: red;font-size:200%;")
if (localStorage.getItem("ver") != ver) {
localStorage.setItem("ver", ver);
console.log("Thank you for your update");
$(document).ready(function(){
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(verp);
$("#release-"+verp).show();
});
}
var l = 5;
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;
console.log("Your platform:"+remote.process.platform)
if (platform == "win32") {
const options = {
type: 'info',
title: "Select your platform",
message: lang.lang_version_platform,
buttons: [lang.lang_no, lang.lang_yesno]
}
if (!localStorage.getItem("winstore")) {
dialog.showMessageBox(options, function (arg) {
if (arg == 1) {
localStorage.setItem("winstore", "winstore")
} else {
localStorage.setItem("winstore", "localinstall")
}
});
}
} else if (platform == "linux") {
if (localStorage.getItem("winstore") == "unix") {
localStorage.removeItem("winstore")
}
if (!localStorage.getItem("winstore")) {
const options = {
type: 'info',
title: "Select your platform",
message: lang.lang_version_platform_linux,
buttons: [lang.lang_no, lang.lang_yesno]
}
dialog.showMessageBox(options, function (arg) {
if (arg == 1) {
localStorage.setItem("winstore", "snapcraft")
} else {
localStorage.setItem("winstore", "localinstall")
}
});
}
} else if (platform == "darwin") {
if (localStorage.getItem("winstore") == "unix") {
localStorage.removeItem("winstore")
}
if (!localStorage.getItem("winstore")) {
const options = {
type: 'info',
title: "Select your platform",
message: lang.lang_version_platform_mac,
buttons: [lang.lang_no, lang.lang_yesno]
}
dialog.showMessageBox(options, function (arg) {
if (arg == 1) {
localStorage.setItem("winstore", "brewcask")
} else {
localStorage.setItem("winstore", "localinstall")
}
});
}
} else {
localStorage.setItem("winstore", "unix")
}
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 remote = electron.remote;
var platform = remote.process.platform;
if (platform == "darwin") {
var newest = mess.desk_mac;
} else {
var newest = mess.desk;
}
if (newest == ver) {
todo(lang_version_usever[lang].replace("{{ver}}" ,mess.desk));
//betaかWInstoreならアプデチェックしない
} else if (ver.indexOf("beta")==-1 || winstore) {
todo(lang.lang_version_usever.replace("{{ver}}", mess.desk));
//betaかWinstoreならアプデチェックしない
} else if (ver.indexOf("beta") != -1 || winstore) {
} else {
localStorage.removeItem("instance")
if(localStorage.getItem("new-ver-skip")){
if(localStorage.getItem("next-ver")!=newest){
if (localStorage.getItem("new-ver-skip")) {
if (localStorage.getItem("next-ver") != newest) {
var ipc = electron.ipcRenderer;
ipc.send('update', "true");
}else{
todo(lang_version_skipver[lang]);
} else {
console.warn(lang.lang_version_skipver);
todo(lang.lang_version_skipver);
}
}else{
} else {
var ipc = electron.ipcRenderer;
ipc.send('update', "true");
}
}
}
});
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;
} 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;
}
});
}
}
if (show) {
Materialize.toast(escapeHTML(obj.Text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', 86400);
}
}
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){
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="";
infows.onmessage = function (mess) {
console.log([tlid, ":Receive Streaming:", JSON.parse(mess.data)]);
var obj = JSON.parse(mess.data);
if (obj.type != "counter") {
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.ver != "") {
if (obj.ver == ver) {
show = true;
} else {
show = false;
}
}
if(obj.domain!=""){
if (obj.domain != "") {
var multi = localStorage.getItem("multi");
if (multi) {
show=false;
show = false;
var accts = JSON.parse(multi);
Object.keys(accts).forEach(function(key) {
Object.keys(accts).forEach(function (key) {
var acct = accts[key];
if(acct.domain==obj.domain){
show=true;
if (acct.domain == obj.domain) {
show = true;
}
});
}
}
if(show){
Materialize.toast(obj.text+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400);
if (show) {
Materialize.toast(escapeHTML(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();
}
}

View File

@@ -1,88 +1,89 @@
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: "記号"
};
var lang_defaultemojis_text="{{cat}}の絵文字";
}else if(lang=="en"){
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"
};
var lang_defaultemojis_text="Emojis of {{cat}}";
}
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_defaultemojis_text.replace("{{cat}}" ,defaultemojiname[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 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){
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);
newt = before + emoji + after;
} else {
newt = emoji + now;
}
$("#textarea").val(newt);
$("#textarea").focus();
var selin = $("#textarea").prop('selectionStart');
if (!selin) {
selin = 0;
}
localStorage.setItem("cursor", selin);
}
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");

253
app/js/lang/lang.en.js Normal file
View File

@@ -0,0 +1,253 @@
//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",
//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.",
//common/version.js
"lang_version_usever": "No update is found({{ver}})",
"lang_version_skipver": "Update was ignored.",
"lang_version_platform": "Was this software installed at Microsoft Store? When select 'yes', any update was ignored.",
"lang_version_platform_linux": "Was this software installed at Snapcraft(snapd)? When select 'yes', any update was ignored.",
"lang_version_platform_mac": "Was this software installed at Homebrew Cask? When select 'yes', any update was ignored.",
//login
//login/login.js
"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.",
//post/bb-md.js
"lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
//post/emoji.js
"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_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",
//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",
//post/suggest.js
"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.",
//tl/card.js
"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.",
//tl/filter.js
"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_add_misskey": "(perhaps this user has been listed)",
"lang_list_remove": "Remove from the list",
//tl/notification.js
"lang_notf_new": " new notifications",
//tl/speech.js
"lang_speech_refresh": "Save value about TTS config",
//tl/src.js
"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}}",
//tl/tl.js
"lang_tl_media": "Media",
"lang_tl_reconnect": "Reconnect to streaming API",
//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_leftFold": "Stack to the left",
"lang_layout_leftUnfold": "Dock on the right",
//ui/sort.js
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
//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}}",
//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_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.",
"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": "NSFW 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.",
}

255
app/js/lang/lang.ja.js Normal file
View File

@@ -0,0 +1,255 @@
//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)からインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
"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センターに移動します。同時に開かれるドキュメントを参考にログインしてください。",
//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_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_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_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": "右へ出す",
//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": "全てのデータがリセットされます。"
}

View File

@@ -1,454 +0,0 @@
//commonError
var lang_toot={
"ja":"トゥート",
"en":"Toot"
}
var lang_there={
"ja":"あり",
"en":"Yes"
}
var lang_nothing={
"ja":"なし",
"en":"None"
}
var lang_yesno={
"ja":"はい",
"en":"Yes"
}
var lang_no={
"ja":"いいえ",
"en":"No"
}
var lang_progress={
"ja":"処理中",
"en":"Wait..."
}
var lang_edit={
"ja":"編集",
"en":"Edit"
}
var lang_del={
"ja":"削除",
"en":"Delete"
}
var lang_add={
"ja":"追加",
"en":"Add"
}
var lang_fatalerroroccured={
"ja":"エラーが発生しました。しばらく待ってから再起動してください。",
"en":"Some errors are occured, please restart TheDesk."
}
var lang_speech={
"ja":"Google 日本語",
"en":"Google US English"
}
//language.html
var lang_lang={
"ja":"言語",
"en":"Language"
}
var lang_langlocale={
"ja":"日本語",
"en":"English"
}
var lang_back={
"ja":"戻る",
"en":"Back"
}
var lang_set={
"ja":"設定",
"en":"Set"
}
var lang_langadd={
"ja":"<a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>から翻訳に参加できます。英語の校正(緊急)や他言語に翻訳していただける方を募集しております。",
"en":"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/version.js
var lang_version_usever={
"ja":"お使いのバージョン{{ver}}は最新です。",
"en":"No update is found({{ver}})"
}
var lang_version_skipver={
"ja":"アップデートはスキップされました。",
"en":"Update was ignored."
}
//login
//login/login.js
var lang_login_noauth={
"ja":"認証せずに見る",
"en":"Show TL of unlogined accounts"
}
//login/manager.js
var lang_manager_info={
"ja":"インスタンス情報",
"en":"About this instance"
}
var lang_manager_refresh={
"ja":"情報更新",
"en":"Refresh"
}
var lang_manager_delete={
"ja":"削除",
"en":"Logout"
}
var lang_manager_color={
"ja":"アカウントカラーを選択",
"en":"Account Color"
}
var lang_manager_confirm={
"ja":"を削除します。",
"en":"is about to logout. Continue?"
}
var lang_manager_mainAcct={
"ja":"メインアカウントを設定しました。",
"en":"Done:choose main account"
}
var lang_manager_def={
"ja":"既定",
"en":"Default"
}
var lang_manager_none={
"ja":"なし",
"en":"None"
}
var lang_manager_godev={
"ja":"MisskeyのDevセンターに移動します。同時に開かれるドキュメントを参考にログインしてください。",
"en":"Open DevCenter of Misskey. We show also an official documents to refer."
}
//post/bb-md.js
var lang_bbmd_misskey={
"ja":"TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。",
"en":"TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey."
}
//post/emoji.js
var lang_emoji_get={
"ja":"絵文字リストを取得",
"en":"Get emojis"
}
var lang_emoji_custom={
"ja":"カスタム絵文字",
"en":"Custom emojis"
}
//post/img.js
var lang_postimg_previewdis={
"ja":"プレビューできません。",
"en":"cannot preview"
}
var lang_postimg_aftupload={
"ja":"アップロード後はアカウントを切り替えられません。",
"en":"You cannot change accounts after uploading."
}
//post/post.js
var lang_post_tagTL={
"ja":"デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
"en":"This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?"
}
var lang_post_cwtitle={
"ja":"長文投稿の警告",
"en":"Auto CW Alert"
}
var lang_post_cwtxt={
"ja":"指定文字数、行数を超えるトゥートを行おうとしています。\n自動CWのタイトル:",
"en":"You are about to post longer toot than you set.\nWarning text:"
}
var lang_post_btn1={
"ja":"キャンセル(投稿しない)",
"en":"Cancel (will not post)"
}
var lang_post_btn2={
"ja":"自動でCWを付ける",
"en":"Make text hidden automatically"
}
var lang_post_btn3={
"ja":"そのまま投稿",
"en":"Continue to post"
}
//post/status.js
var lang_status_favWarn={
"ja":"お気に入り登録しました。インスタンスが違うときは時間がかかる場合があります。",
"en":"It will take a miunte to favourite a remote toot."
}
var lang_status_btWarn={
"ja":"ブーストしました。インスタンスが違うときは時間がかかる場合があります。",
"en":"It will take a miunte to boost a remote toot."
}
var lang_status_follow={
"ja":"フォロー",
"en":"Follow"
}
var lang_status_unfollow={
"ja":"フォロー解除",
"en":"Unfollow"
}
var lang_status_block={
"ja":"ブロック",
"en":"Block"
}
var lang_status_unblock={
"ja":"ブロック解除",
"en":"Unblock"
}
var lang_status_mute={
"ja":"ミュート",
"en":"Mute"
}
var lang_status_unmute={
"ja":"ミュート解除",
"en":"Unmute"
}
var lang_status_redraft={
"ja":"削除して再編集しますか?そのトゥートの全てのデータがリセットされます。この機能はベータ版です。画像は~v2.4.1で破棄されます。",
"en":"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."
}
var lang_status_emphas={
"ja":"を強調します。リロードしてください。",
"en":"'s toots are emphasized. Please reload after this action."
}
var lang_status_unemphas={
"ja":"を強調解除します。リロードしてください。",
"en":"'s toots are not emphasized. Please reload after this action."
}
var lang_status_unendorse={
"ja":"紹介解除",
"en":"Not feature on profile"
}
var lang_status_endorse={
"ja":"プロフで紹介する",
"en":"Feature on profile"
}
//post/suggest.js
var lang_suggest_nodata={
"ja":"サジェストのために絵文字リストを取得してください。",
"en":"Please get emojis list in order to show suggestion."
}
//post/use-txtbox.js
var lang_usetxtbox_reply={
"ja":"返信モードです。クリアするときはCtrl+Shift+Cを押してください。",
"en":"Reply Mode. Ctrl+Shift+C to clear."
}
//tl/card.js
var lang_cards_check={
"ja":"チェック",
"en":" check"
}
var lang_cards_pip={
"ja":"ながら観モード",
"en":"PiP mode"
}
//tl/details.js
var lang_details_nodata={
"ja":"データなし",
"en":"No data"
}
var lang_details_filtered={
"ja":"フィルターされました。",
"en":"Filtered toot"
}
var lang_details_embed={
"ja":"埋め込みHTMLがコピーされました。",
"en":"Embed HTML is cliped."
}
var lang_details_url={
"ja":"トゥートURLがコピーされました。",
"en":"URL of this toot is cliped."
}
var lang_details_txt={
"ja":"トゥート本文がコピーされました。",
"en":"Content of this toot is cliped."
}
//tl/filter.js
var lang_filter_nodata={
"ja":"フィルターはありません",
"en":"No data"
}
var lang_filter_errordegree={
"ja":"適応範囲を最低一つ以上チェックしてください。",
"en":"Please check a context"
}
//tl/list.js
var lang_list_nodata={
"ja":"リストはありません",
"en":"No data"
}
var lang_list_show={
"ja":"表示",
"en":"Show"
}
var lang_list_users={
"ja":"ユーザー一覧",
"en":"Users list"
}
var lang_list_nouser={
"ja":"ユーザーはいません",
"en":"No users in this list."
}
var lang_list_add={
"ja":"リストに追加",
"en":"Add to the list"
}
var lang_list_remove={
"ja":"リストから削除",
"en":"Remove from the list"
}
//tl/notification.js
var lang_notf_new={
"ja":"件の新しい通知",
"en":" new notifications"
}
//tl/speech.js
var lang_speech_refresh={
"ja":"音声読み上げ設定を更新しました。",
"en":"Save valie about TTS config"
}
//tl/src.js
var lang_src_ts={
"ja":"時系列",
"en":"chronological order"
}
var lang_src_people={
"ja":"人がトゥート",
"en":" people toot"
}
//tl/tag.js
var lang_tags_always={
"ja":"常に",
"en":"Always toots with "
}
var lang_tags_realtime={
"ja":"実況",
"en":"Tag-stream toot"
}
var lang_tags_tagunpin={
"ja":"{{tag}}をよく使うタグから削除",
"en":"Unpin {{tag}}"
}
var lang_tags_tagwarn={
"ja":"次に{{tag}}なしでトゥートするまで全てのトゥートに{{tag}}が付与されます。",
"en":"When you toot without {{tag}}, tag-streaming mode will be off."
}
//tl/tl.js
var lang_tl_media={
"ja":"メディア",
"en":"Media"
}
var lang_tl_reconnect={
"ja":"Streamingに再接続しました",
"en":"Reconnect to streaming API"
}
//ui/layout.js
var lang_layout_gotop={
"ja":"一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。",
"en":"Go top of this column. When icon is red, this column cannot connect straming API. Please reload."
}
var lang_layout_thisacct={
"ja":"このアカウントの{{notf}}",
"en":"{{notf}} of this account"
}
var lang_layout_delthis={
"ja":"このカラムを削除",
"en":"Remove this column"
}
var lang_layout_setthis={
"ja":"このカラムの設定",
"en":"Preferences of this column"
}
var lang_layout_mediafil={
"ja":"メディアフィルター",
"en":"Media filtering"
}
var lang_layout_linkana={
"ja":"リンク解析",
"en":"Auto Link Analyzer"
}
var lang_layout_linkanades={
"ja":"リンクの解析を切り替え(OFFで制限を回避出来る場合があります)",
"en":"Auto link analyzer(You may got limitation of API)"
}
var lang_layout_tts={
"ja":"読み上げ",
"en":"Text to speech "
}
var lang_layout_reconnect={
"ja":"ストリーミング再接続",
"en":"Reconnect to streaming API"
}
var lang_layout_headercolor={
"ja":"TLヘッダーカラー",
"en":"Header color of this column"
}
var lang_layout_nodata={
"ja":"[ここにトゥートはありません。]<br>F5/⌘+Rで再読込できます。",
"en":"[No data]<br>F5/⌘+R to reload"
}
var lang_layout_dm={
"ja":"ダイレクトメッセージ",
"en":"Direct Message"
}
var lang_layout_webviewmode={
"ja":"WebView優先",
"en":"Prefer WebView"
}
//ui/spotify.js
var lang_spotify_img={
"ja":"アルバムアートワークを添付します。",
"en":"Attach an album artwork"
}
var lang_spotify_imgno={
"ja":"アルバムアートワークを添付しません。",
"en":"Not ttach an album artwork"
}
var lang_spotify_acct={
"ja":"アカウント連携をしてください。",
"en":"Connect TheDesk to Spotify"
}
var lang_spotify_np={
"ja":"NowPlaying文書を更新しました。",
"en":"Done:templete of NowPlaying"
}
//userdata/his-data.js
var lang_hisdata_frcreq={
"ja":"Mastodon 2.4.3~が必要です",
"en":"Required Mastodon 2.4.3 and above"
}
var lang_hisdata_frcwarn={
"ja":"非フォローだけど絡みがある時に表示されます。",
"en":"Unfollow accounts will be shown."
}
var lang_hisdata_taketime={
"ja":"30秒から数分かかります",
"en":"It will take 30s ~ several minutes"
}
var lang_hisdata_notonmisskey={
"ja":"このシステムはMisskeyにはありません。",
"en":"Misskey is unable to request."
}
//userdata/showOnTL.js
var lang_showontl_movetxt={
"ja":"このアカウントは移行しています",
"en":"This account was moved"
}
var lang_showontl_movebtn={
"ja":"移行先を見る",
"en":"Continue on the new account"
}
var lang_showontl_botacct={
"ja":"botアカウント",
"en":"[bot]"
}
var lang_showontl_followed={
"ja":"フォローされています",
"en":"Following you"
}
var lang_showontl_notf={
"ja":"通知",
"en":"Notification "
}
var lang_showontl_domain={
"ja":"ドメイン",
"en":"Domain "
}
var lang_showontl_listwarn={
"ja":"リストに追加するためにはフォローが必要です。",
"en":"Follow to add this user to lists."
}

206
app/js/lang/lang.ps.js Normal file
View File

@@ -0,0 +1,206 @@
var lang = {
"language": "crwdns1960:0crwdne1960:0",
"lang_toot": "crwdns1962:0crwdne1962:0",
"lang_there": "crwdns1964:0crwdne1964:0",
"lang_nothing": "crwdns1966:0crwdne1966:0",
"lang_yesno": "crwdns1968:0crwdne1968:0",
"lang_no": "crwdns1970:0crwdne1970:0",
"lang_progress": "crwdns1972:0crwdne1972:0",
"lang_edit": "crwdns1974:0crwdne1974:0",
"lang_del": "crwdns1976:0crwdne1976:0",
"lang_add": "crwdns1978:0crwdne1978:0",
"lang_fatalerroroccured": "crwdns1980:0crwdne1980:0",
"lang_speech": "crwdns1982:0crwdne1982:0",
"lang_lang": "crwdns1984:0crwdne1984:0",
"lang_langlocale": "crwdns1986:0crwdne1986:0",
"lang_back": "crwdns1988:0crwdne1988:0",
"lang_set": "crwdns1990:0crwdne1990:0",
"lang_langadd": "crwdns2364:0crwdne2364:0",
"lang_version_usever": "crwdns1994:0{{ver}}crwdne1994:0",
"lang_version_skipver": "crwdns1996:0crwdne1996:0",
"lang_login_noauth": "crwdns1998:0crwdne1998:0",
"lang_manager_info": "crwdns2000:0crwdne2000:0",
"lang_manager_refresh": "crwdns2002:0crwdne2002:0",
"lang_manager_delete": "crwdns2004:0crwdne2004:0",
"lang_manager_color": "crwdns2006:0crwdne2006:0",
"lang_manager_confirm": "crwdns2008:0crwdne2008:0",
"lang_manager_mainAcct": "crwdns2010:0crwdne2010:0",
"lang_manager_def": "crwdns2012:0crwdne2012:0",
"lang_manager_none": "crwdns2014:0crwdne2014:0",
"lang_manager_godev": "crwdns2016:0crwdne2016:0",
"lang_bbmd_misskey": "crwdns2018:0crwdne2018:0",
"lang_emoji_get": "crwdns2020:0crwdne2020:0",
"lang_emoji_custom": "crwdns2022:0crwdne2022:0",
"lang_defaultemojis_text": "crwdns2388:0{{cat}}crwdne2388:0",
"lang_postimg_previewdis": "crwdns2024:0crwdne2024:0",
"lang_postimg_aftupload": "crwdns2026:0crwdne2026:0",
"lang_post_tagTL": "crwdns2028:0crwdne2028:0",
"lang_post_tagVis": "crwdns2030:0crwdne2030:0",
"lang_post_cwtitle": "crwdns2032:0crwdne2032:0",
"lang_post_cwtxt": "crwdns2034:0crwdne2034:0",
"lang_post_btn1": "crwdns2036:0crwdne2036:0",
"lang_post_btn2": "crwdns2038:0crwdne2038:0",
"lang_post_btn3": "crwdns2040:0crwdne2040:0",
"lang_status_favWarn": "crwdns2042:0crwdne2042:0",
"lang_status_btWarn": "crwdns2044:0crwdne2044:0",
"lang_status_follow": "crwdns2046:0crwdne2046:0",
"lang_status_unfollow": "crwdns2048:0crwdne2048:0",
"lang_status_block": "crwdns2050:0crwdne2050:0",
"lang_status_unblock": "crwdns2052:0crwdne2052:0",
"lang_status_mute": "crwdns2054:0crwdne2054:0",
"lang_status_unmute": "crwdns2056:0crwdne2056:0",
"lang_status_redraft": "crwdns2058:0crwdne2058:0",
"lang_status_emphas": "crwdns2060:0crwdne2060:0",
"lang_status_unemphas": "crwdns2062:0crwdne2062:0",
"lang_status_unendorse": "crwdns2064:0crwdne2064:0",
"lang_status_endorse": "crwdns2066:0crwdne2066:0",
"lang_suggest_nodata": "crwdns2068:0crwdne2068:0",
"lang_usetxtbox_reply": "crwdns2070:0crwdne2070:0",
"lang_cards_check": "crwdns2072:0crwdne2072:0",
"lang_cards_pip": "crwdns2074:0crwdne2074:0",
"lang_details_nodata": "crwdns2076:0crwdne2076:0",
"lang_details_filtered": "crwdns2078:0crwdne2078:0",
"lang_details_embed": "crwdns2080:0crwdne2080:0",
"lang_details_url": "crwdns2082:0crwdne2082:0",
"lang_details_txt": "crwdns2084:0crwdne2084:0",
"lang_filter_nodata": "crwdns2086:0crwdne2086:0",
"lang_filter_errordegree": "crwdns2088:0crwdne2088:0",
"lang_list_nodata": "crwdns2090:0crwdne2090:0",
"lang_list_show": "crwdns2092:0crwdne2092:0",
"lang_list_users": "crwdns2094:0crwdne2094:0",
"lang_list_nouser": "crwdns2096:0crwdne2096:0",
"lang_list_add": "crwdns2098:0crwdne2098:0",
"lang_list_remove": "crwdns2100:0crwdne2100:0",
"lang_notf_new": "crwdns2102:0crwdne2102:0",
"lang_speech_refresh": "crwdns2348:0crwdne2348:0",
"lang_src_ts": "crwdns2106:0crwdne2106:0",
"lang_src_people": "crwdns2108:0crwdne2108:0",
"lang_tags_always": "crwdns2110:0crwdne2110:0",
"lang_tags_realtime": "crwdns2112:0crwdne2112:0",
"lang_tags_tagunpin": "crwdns2114:0{{tag}}crwdne2114:0",
"lang_tags_tagwarn": "crwdns2116:0{{tag}}crwdne2116:0",
"lang_tl_media": "crwdns2118:0crwdne2118:0",
"lang_tl_reconnect": "crwdns2120:0crwdne2120:0",
"lang_layout_gotop": "crwdns2122:0crwdne2122:0",
"lang_layout_thisacct": "crwdns2124:0{{notf}}crwdne2124:0",
"lang_layout_delthis": "crwdns2126:0crwdne2126:0",
"lang_layout_setthis": "crwdns2128:0crwdne2128:0",
"lang_layout_mediafil": "crwdns2130:0crwdne2130:0",
"lang_layout_linkana": "crwdns2132:0crwdne2132:0",
"lang_layout_linkanades": "crwdns2134:0crwdne2134:0",
"lang_layout_tts": "crwdns2136:0crwdne2136:0",
"lang_layout_reconnect": "crwdns2138:0crwdne2138:0",
"lang_layout_headercolor": "crwdns2140:0crwdne2140:0",
"lang_layout_nodata": "crwdns2142:0crwdne2142:0",
"lang_layout_dm": "crwdns2144:0crwdne2144:0",
"lang_layout_webviewmode": "crwdns2146:0crwdne2146:0",
"lang_excluded": "crwdns2368:0crwdne2368:0",
"lang_layout_excludingbt": "crwdns2390:0crwdne2390:0",
"lang_spotify_img": "crwdns2148:0crwdne2148:0",
"lang_spotify_imgno": "crwdns2150:0crwdne2150:0",
"lang_spotify_acct": "crwdns2152:0crwdne2152:0",
"lang_spotify_np": "crwdns2154:0crwdne2154:0",
"lang_setting_npprovide": "crwdns2370:0{{set}}crwdne2370:0",
"lang_hisdata_frcreq": "crwdns2156:0crwdne2156:0",
"lang_hisdata_frcwarn": "crwdns2158:0crwdne2158:0",
"lang_hisdata_taketime": "crwdns2160:0crwdne2160:0",
"lang_hisdata_notonmisskey": "crwdns2162:0crwdne2162:0",
"lang_showontl_movetxt": "crwdns2164:0crwdne2164:0",
"lang_showontl_movebtn": "crwdns2166:0crwdne2166:0",
"lang_showontl_botacct": "crwdns2168:0[bot]crwdne2168:0",
"lang_showontl_followed": "crwdns2170:0crwdne2170:0",
"lang_showontl_notf": "crwdns2172:0crwdne2172:0",
"lang_showontl_domain": "crwdns2174:0crwdne2174:0",
"lang_showontl_listwarn": "crwdns2176:0crwdne2176:0",
"lang_parse_mentioned": "crwdns2178:0crwdne2178:0",
"lang_parse_faved": "crwdns2180:0crwdne2180:0",
"lang_parse_bted": "crwdns2182:0crwdne2182:0",
"lang_parse_btedsimple": "crwdns2184:0crwdne2184:0",
"lang_parse_notftime": "crwdns2186:0crwdne2186:0",
"lang_parse_cwshow": "crwdns2188:0crwdne2188:0",
"lang_parse_fulltext": "crwdns2190:0crwdne2190:0",
"lang_parse_autofold": "crwdns2192:0crwdne2192:0",
"lang_parse_more": "crwdns2194:0crwdne2194:0",
"lang_parse_url": "crwdns2196:0crwdne2196:0",
"lang_parse_tagTL": "crwdns2198:0{{tag}}crwdne2198:0",
"lang_parse_tagtoot": "crwdns2200:0{{tag}}crwdne2200:0",
"lang_parse_tagpin": "crwdns2202:0{{tag}}crwdne2202:0",
"lang_parse_public": "crwdns2204:0crwdne2204:0",
"lang_parse_unlisted": "crwdns2206:0crwdne2206:0",
"lang_parse_private": "crwdns2208:0crwdne2208:0",
"lang_parse_direct": "crwdns2210:0crwdne2210:0",
"lang_parse_clickcopy": "crwdns2212:0crwdne2212:0",
"lang_parse_clickcopyurl": "crwdns2214:0crwdne2214:0",
"lang_parse_trans": "crwdns2216:0crwdne2216:0",
"lang_parse_replyto": "crwdns2218:0crwdne2218:0",
"lang_parse_bt": "crwdns2220:0crwdne2220:0",
"lang_parse_fav": "crwdns2222:0crwdne2222:0",
"lang_parse_quote": "crwdns2224:0crwdne2224:0",
"lang_parse_del": "crwdns2226:0crwdne2226:0",
"lang_parse_pin": "crwdns2228:0crwdne2228:0",
"lang_parse_det": "crwdns2230:0crwdne2230:0",
"lang_parse_redraft": "crwdns2232:0crwdne2232:0",
"lang_parse_followed": "crwdns2234:0crwdne2234:0",
"lang_parse_clientop": "crwdns2236:0crwdne2236:0",
"lang_parse_clienttxt": "crwdns2238:0crwdne2238:0",
"lang_parse_clientno": "crwdns2240:0crwdne2240:0",
"lang_parse_clientemp": "crwdns2242:0crwdne2242:0",
"lang_parse_clientmute": "crwdns2244:0crwdne2244:0",
"lang_parse_mute": "crwdns2246:0crwdne2246:0",
"lang_parse_voted": "crwdns2392:0crwdne2392:0",
"lang_parse_vote": "crwdns2394:0crwdne2394:0",
"lang_parse_unvoted": "crwdns2396:0crwdne2396:0",
"lang_parse_endedvote": "crwdns2398:0crwdne2398:0",
"lang_misskeyparse_renote": "crwdns2248:0crwdne2248:0",
"lang_misskeyparse_renoteqt": "crwdns2250:0crwdne2250:0",
"lang_misskeyparse_reaction": "crwdns2252:0crwdne2252:0",
"lang_misskeyparse_tagnostr": "crwdns2254:0crwdne2254:0",
"lang_misskeyparse_listnostr": "crwdns2256:0crwdne2256:0",
"lang_misskeyparse_home": "crwdns2258:0crwdne2258:0",
"lang_misskeyparse_followers": "crwdns2260:0crwdne2260:0",
"lang_misskeyparse_specified": "crwdns2262:0crwdne2262:0",
"lang_misskeyparse_qt": "crwdns2264:0crwdne2264:0",
"lang_misskeyparse_renoted": "crwdns2266:0crwdne2266:0",
"lang_misskeyparse_quoted": "crwdns2268:0crwdne2268:0",
"lang_misskeyparse_reacted": "crwdns2372:0crwdne2372:0",
"lang_setting_time": "crwdns2272:0{{set}}crwdne2272:0",
"lang_setting_theme": "crwdns2274:0{{set}}crwdne2274:0",
"lang_setting_nsfw": "crwdns2276:0{{set}}crwdne2276:0",
"lang_setting_cw": "crwdns2278:0{{set}}crwdne2278:0",
"lang_setting_cwtext": "crwdns2280:0{{set}}crwdne2280:0",
"lang_setting_cws": "crwdns2282:0{{set}}crwdne2282:0",
"lang_setting_rp": "crwdns2284:0{{set}}crwdne2284:0",
"lang_setting_vis": "crwdns2286:0{{set}}crwdne2286:0",
"lang_setting_popup": "crwdns2288:0{{set}}crwdne2288:0",
"lang_setting_off": "crwdns2290:0crwdne2290:0",
"lang_setting_s": "crwdns2292:0crwdne2292:0",
"lang_setting_box": "crwdns2294:0{{set}}crwdne2294:0",
"lang_setting_gif": "crwdns2296:0{{set}}crwdne2296:0",
"lang_setting_selt": "crwdns2298:0{{set1}}crwdnd2298:0{{set2}}crwdne2298:0",
"lang_setting_autocw": "crwdns2300:0{{set1}}crwdnd2300:0{{set2}}crwdne2300:0",
"lang_setting_width": "crwdns2302:0{{set}}crwdne2302:0",
"lang_setting_fixwidth": "crwdns2386:0{{set}}crwdne2386:0",
"lang_setting_img": "crwdns2304:0{{set}}crwdne2304:0",
"lang_setting_font": "crwdns2306:0{{set}}crwdne2306:0",
"lang_setting_default": "crwdns2308:0crwdne2308:0",
"lang_setting_size": "crwdns2310:0{{set}}crwdne2310:0",
"lang_setting_imgheight": "crwdns2312:0{{set}}crwdne2312:0",
"lang_setting_ticker": "crwdns2314:0{{set}}crwdne2314:0",
"lang_setting_animation": "crwdns2400:0{{set}}crwdne2400:0",
"lang_setting_tag": "crwdns2316:0{{set}}crwdne2316:0",
"lang_setting_boxConfirm": "crwdns2318:0{{set}}crwdne2318:0",
"lang_setting_ul": "crwdns2320:0{{set}}crwdne2320:0",
"lang_setting_notf": "crwdns2322:0{{set}}crwdne2322:0",
"lang_setting_quote": "crwdns2324:0{{set}}crwdne2324:0",
"lang_setting_via": "crwdns2326:0{{set}}crwdne2326:0",
"lang_setting_mov": "crwdns2328:0{{set}}crwdne2328:0",
"lang_setting_setasread": "crwdns2330:0{{set}}crwdne2330:0",
"lang_setting_main": "crwdns2332:0{{set}}crwdne2332:0",
"lang_setting_sec": "crwdns2334:0{{set}}crwdne2334:0",
"lang_setting_ksref": "crwdns2336:0crwdne2336:0",
"lang_setting_nomuting": "crwdns2338:0crwdne2338:0",
"lang_setting_notftest": "crwdns2340:0crwdne2340:0",
"lang_setting_notftestprof": "crwdns2342:0crwdne2342:0",
"lang_setting_exportwarn": "crwdns2344:0crwdne2344:0",
"lang_setting_importwarn": "crwdns2346:0crwdne2346:0"
}

View File

@@ -1,189 +0,0 @@
var lang_parse_mentioned={
"ja":"が返信しました",
"en":" replied to you"
}
var lang_parse_faved={
"ja":"がお気に入り登録しました",
"en":" favourited your toot"
}
var lang_parse_bted={
"ja":"がブーストしました",
"en":" boosted your toot"
}
var lang_parse_btedsimple={
"ja":"がブースト",
"en":" boosted"
}
var lang_parse_notftime={
"ja":"通知された時間",
"en":"Actioned at"
}
var lang_parse_cwshow={
"ja":"見る",
"en":"Show"
}
var lang_parse_fulltext={
"ja":"以下全文",
"en":"Full size text:"
}
var lang_parse_autofold={
"ja":"自動折り畳み",
"en":"Auto folded"
}
var lang_parse_more={
"ja":"続き...",
"en":"More"
}
var lang_parse_url={
"ja":"URL解析",
"en":"URL Analyzer"
}
var lang_parse_tagTL={
"ja":"{{tag}}のタイムライン",
"en":"Timeline of {{tag}}"
}
var lang_parse_tagtoot={
"ja":"{{tag}}でトゥート",
"en":"Toot with {{tag}}"
}
var lang_parse_tagpin={
"ja":"{{tag}}をよく使うタグへ",
"en":"Pin {{tag}}"
}
var lang_parse_public={
"ja":"公開",
"en":"Public"
}
var lang_parse_unlisted={
"ja":"未収載",
"en":"Unlisted"
}
var lang_parse_private={
"ja":"非公開",
"en":"Private"
}
var lang_parse_direct={
"ja":"ダイレクト",
"en":"Direct"
}
var lang_parse_clickcopy={
"ja":"クリックして本文をコピー",
"en":"Click to copy text of this toot"
}
var lang_parse_clickcopyurl={
"ja":"クリックしてトゥートURLをコピー",
"en":"Click to copy URL of this toot"
}
var lang_parse_trans={
"ja":"このトゥートを日本語に翻訳",
"en":"Translate to Japanese"
}
var lang_parse_replyto={
"ja":"このトゥートに返信",
"en":"Reply to this toot"
}
var lang_parse_bt={
"ja":"このトゥートをブースト",
"en":"Boost this toot"
}
var lang_parse_fav={
"ja":"このトゥートをお気に入り登録",
"en":"Favourite this toot"
}
var lang_parse_quote={
"ja":"このトゥートを引用",
"en":"Quote this toot"
}
var lang_parse_del={
"ja":"このトゥートを削除",
"en":"Delete this toot"
}
var lang_parse_pin={
"ja":"このトゥートをピン留め",
"en":"Pin this toot"
}
var lang_parse_det={
"ja":"詳細(メインアカウント経由)",
"en":"Details via your main account."
}
var lang_parse_redraft={
"ja":"このトゥートを削除して再編集",
"en":"Delete & re-draft"
}
var lang_parse_followed={
"ja":"フォローされました。",
"en":"Followed you"
}
var lang_parse_clientop={
"ja":"クライアント処理",
"en":"Operation of this client"
}
var lang_parse_clienttxt={
"ja":"に対する処理を選択してください。",
"en":" will be"
}
var lang_parse_clientno={
"ja":"何もしない",
"en":"done nothing"
}
var lang_parse_clientemp={
"ja":"強調表示/解除",
"en":"emphasized(/not emphasized)"
}
var lang_parse_clientmute={
"ja":"ミュート",
"en":"muted"
}
var lang_parse_mute={
"ja":"ミュートします。設定から解除できます。",
"en":" will be muted. You can remove on preferences."
}
//misskey
var lang_misskeyparse_renote={
"ja":"再投稿",
"en":"Repost"
}
var lang_misskeyparse_renoteqt={
"ja":"引用",
"en":"Renote"
}
var lang_misskeyparse_reaction={
"ja":"リアクション",
"en":"Reaction"
}
var lang_misskeyparse_tagnostr={
"ja":"タグTLはストリーミング非対応です。",
"en":"No streaming API on Tag TLs"
}
var lang_misskeyparse_listnostr={
"ja":"リストTLはストリーミング非対応です。",
"en":"No streaming API on List TLs"
}
var lang_misskeyparse_home={
"ja":"ホーム",
"en":"Home"
}
var lang_misskeyparse_followers={
"ja":"フォロワー",
"en":"Follower"
}
var lang_misskeyparse_specified={
"ja":"ユーザー指定",
"en":"Specified User"
}
var lang_misskeyparse_qt={
"ja":"MisskeyのRenote(引用モード)中:Ctrl+Shift+Cでクリア",
"en":"Misskey renote(quote) mode:Ctrl+Shift+Enter to clear"
}
var lang_misskeyparse_renoted={
"ja":"がRepost",
"en":" renoted your following post."
}
var lang_misskeyparse_quoted={
"ja":"が引用",
"en":" quoted your following post."
}
var lang_misskeyparse_reaction={
"ja":"がリアクション",
"en":" reacted your following post."
}

View File

@@ -1,148 +0,0 @@
var lang_setting_time={
"ja":"時間設定を{{set}}に設定しました。",
"en":"Time format:{{set}}"
}
var lang_setting_theme={
"ja":"テーマ設定を{{set}}に設定しました。",
"en":"Theme:{{set}}"
}
var lang_setting_nsfw={
"ja":"画像表示設定を{{set}}に設定しました。",
"en":"NSFW:{{set}}"
}
var lang_setting_cw={
"ja":"テキスト表示設定を{{set}}に設定しました。",
"en":"CW:{{set}}"
}
var lang_setting_cwtext={
"ja":"デフォルトの警告文を「{{set}}」に設定しました。",
"en":"Default CW text:{{set}}"
}
var lang_setting_cws={
"ja":"標準でCW:{{set}}",
"en":"Always CW on:{{set}}"
}
var lang_setting_rp={
"ja":"リプライ数表示:{{set}}",
"en":"Reply counter:{{set}}"
}
var lang_setting_vis={
"ja":"デフォルトの公開設定を{{set}}に設定しました。",
"en":"Default visibility:{{set}}"
}
var lang_setting_popup={
"ja":"ポップアップお知らせを{{set}}に設定しました。",
"en":"Popup notification:{{set}}"
}
var lang_setting_off={
"ja":"オフ",
"en":"Off"
}
var lang_setting_s={
"ja":"秒",
"en":"s"
}
var lang_setting_box={
"ja":"デフォルトでのボックスの挙動を{{set}}に設定しました。",
"en":"Default toot box action:{{set}}"
}
var lang_setting_gif={
"ja":"アイコンアニメーション再生を{{set}}に設定しました。",
"en":"GIF:{{set}}"
}
var lang_setting_selt={
"ja":"{{set1}}行以上または{{set2}}文字以上でテキストを隠します。",
"en":"Auto fold:{{set1}} lines and above, {{set2}} letters and above"
}
var lang_setting_autocw={
"ja":"{{set1}}行以上または{{set2}}文字以上で警告を表示します。",
"en":"Auto CW:{{set1}} lines and above, {{set2}} letters and above"
}
var lang_setting_width={
"ja":"横幅最低を{{set}}pxに設定しました。",
"en":"Minimam width:{{set}}"
}
var lang_setting_img={
"ja":"画像投稿後の設定を「{{set}}」に設定しました。",
"en":"After posting an image:{{set}}"
}
var lang_setting_font={
"ja":"フォントを{{set}}に設定しました。",
"en":"Fonts:{{set}}"
}
var lang_setting_default={
"ja":"デフォルト",
"en":"default font"
}
var lang_setting_size={
"ja":"フォントサイズを{{set}}pxに設定しました。",
"en":"Font size:{{set}}px"
}
var lang_setting_imgheight={
"ja":"画像高さを{{set}}pxに設定しました。",
"en":"Image height:{{set}}px"
}
var lang_setting_tag={
"ja":"タグの取得範囲を「{{set}}」に設定しました。",
"en":"Tag TL:{{set}}"
}
var lang_setting_box={
"ja":"投稿ボックスを{{set}}",
"en":"Post box:{{set}}"
}
var lang_setting_ul={
"ja":"独自ロケール設定を{{set}}に設定しました。",
"en":"Native locale:{{set}}"
}
var lang_setting_notf={
"ja":"ネイティブ通知を{{set}}に設定しました。",
"en":"Native notification:{{set}}"
}
var lang_setting_quote={
"ja":"引用形式を{{set}}に設定しました。",
"en":"Quote format:{{set}}"
}
var lang_setting_via={
"ja":"via表示を{{set}}に設定しました。",
"en":"Via:{{set}}"
}
var lang_setting_mov={
"ja":"アクションボタン非表示を{{set}}に設定しました。",
"en":"Action buttons hiding:{{set}}"
}
var lang_setting_setasread={
"ja":"通知カラム存在時新着非表示を{{set}}に設定しました。",
"en":"Notification markers:{{set}}"
}
var lang_setting_main={
"ja":"起動時・投稿時のアカウントを{{set}}に設定しました。",
"en":"Default account:{{set}}"
}
var lang_setting_sec={
"ja":"セカンダリートゥートボタン:{{set}}",
"en":"Secondary toot button:{{set}}"
}
var lang_setting_ksref={
"ja":"キーボードショートカットが更新されました。",
"en":"Keyboard shortcuts are refreshed."
}
var lang_setting_nomuting={
"ja":"ミュートしているクライアントはありません。",
"en":"No client is muted."
}
var lang_setting_notftest={
"ja":"通知テスト",
"en":" Notification test "
}
var lang_setting_notftestprof={
"ja":"アイコンはあなたのアカウントのものです。",
"en":"Your icon is shown."
}
var lang_setting_exportwarn={
"ja":"重要なデータのみエクスポートされます。エクスポートされたデータは外部に公開しないでください。全ての認証データが含まれています。",
"en":"Only important data will be exported. You must keep this data secure."
}
var lang_setting_importwarn={
"ja":"全てのデータがリセットされます。",
"en":"All data will be deleted."
}

View File

@@ -1,110 +1,126 @@
//インスタンスリスト
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": "箕面どん",
"minohdon.jp_letters": "500",
"minohdon.jp_bbcode": "disabled",
"minohdon.jp_markdown": "disabled",
"minohdon.jp_glitch": "disabled",
"knzk.me": "instance",
"knzk.me_name": "Knzk",
"knzk.me_letters": "5000",
"knzk.me_bbcode": "disabled",
"knzk.me_markdown": "disabled",
"knzk.me_glitch": "disabled",
"mastodos.com": "instance",
"mastodos.com_name": "マストどす",
"mastodos.com_letters": "500",
"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づドン(Y-zuDon)",
"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",
"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": "misskey",
"misskey.xyz_name": "misskey.xyz",
"misskey.xyz_letters": "1000",
"misskey.xyz_bbcode": "disabled",
"misskey.xyz_markdown": "enabled",
"misskey.xyz_public": "Global",
"misskey.xyz_post": "Post",
"misskey.xyz_fav": " reacted your post.",
"misskey.xyz_bt": " reposted your post.",
"misskey.dev": "misskey",
"misskey.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_bbcode": "disabled",
"precure.ml_markdown": "disabled",
"precure.ml_post": "キュア!",
"precure.ml_glitch": "disabled",
"best-friends.chat": "instance",
"best-friends.chat_name": "Best Friends",
"best-friends.chat_letters": "500",
"best-friends.chat_bbcode": "disabled",
"best-friends.chat_markdown": "disabled",
"best-friends.chat_glitch": "disabled",
};
localStorage.setItem("instance", JSON.stringify(idata));

View File

@@ -5,58 +5,53 @@
localStorage.removeItem("kirishima")
localStorage.removeItem("imas")
localStorage.removeItem("image");
localStorage.setItem("mode_misskey.xyz","misskey")
localStorage.removeItem("stable")
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 domain = localStorage.getItem("domain_0");
var domainz = localStorage.getItem("domain_0");
var at = localStorage.getItem("acct_0_at");
var oldat = localStorage.getItem(domain + "_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 {
}
}
if (at) {
$("#tl").show();
parseColumn();
multiSelector();
var multi = localStorage.getItem("multi");
if (!multi || multi == "[]") {
location.href = "acct.html?mode=first&code=true"
} else {
$("#tl").show();
multiSelector();
var obj = JSON.parse(multi);
Object.keys(obj).forEach(function (key) {
var acct = obj[key];
if (acct.domain) {
refresh(key, true)
}
});
if (obj[0].domain) {
$("#tl").show();
ticker();
multiSelector();
verck(ver);
$("#something-wrong img").attr("src", "../../img/thinkingdesk.png")
}
}
}
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);
@@ -64,37 +59,34 @@ function login(url) {
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
scopes: 'read write follow',
client_name: "TheDesk(PC)",
redirect_uris: red,
website: "https://thedesk.top"
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
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();
const { shell } = require('electron');
shell.openExternal(auth);
if($('#linux:checked').val()=="on"){
}else{
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('quit', 'go');
}
shell.openExternal(auth);
if ($('#linux:checked').val() == "on") {
} else {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('quit', 'go');
}
}
}
}
@@ -107,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";
@@ -133,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();
}
}
});
}
@@ -156,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',
@@ -164,23 +156,22 @@ 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_fatalerroroccured[lang]+"Error:" + json.error,
Materialize.toast(lang.lang_fatalerroroccured + "Error:" + json.error,
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,
@@ -192,7 +183,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"]);
@@ -214,28 +204,27 @@ 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_fatalerroroccured[lang]+"Error:" + json.error,
Materialize.toast(lang.lang_fatalerroroccured + "Error:" + json.error,
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,
@@ -254,45 +243,42 @@ 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) {
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_fatalerroroccured[lang]+"Error:" + json.error,
Materialize.toast(lang.lang_fatalerroroccured + "Error:" + json.error,
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,
@@ -306,15 +292,14 @@ function refresh(target) {
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;
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
load();
if (!loadskip) {
load();
}
});
}
//MarkdownやBBCodeの対応、文字数制限をチェック
@@ -330,96 +315,95 @@ function ckdb(acct_id) {
localStorage.removeItem("post_" + acct_id);
localStorage.removeItem("fav_" + acct_id);
localStorage.removeItem("bt_" + acct_id);
localStorage.removeItem("follow_" + acct_id);
if(domain=="kirishima.cloud"){
localStorage.removeItem("followlocale_" + acct_id);
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);
}
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']").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("follow_" + 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 {
}
}
@@ -434,81 +418,113 @@ 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_login_noauth[lang]+'</option>');
}else{
Object.keys(obj).forEach(function(key) {
var acct = obj[key];
var list = key * 1 + 1;
if (key == last) {
sel = "selected";
var domain = localStorage.getItem("domain_" + key);
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=localStorage.getItem("prof_"+key);
console.log(profimg);
if(!profimg){
profimg="./img/missing.svg";
}
$("#acct-sel-prof").attr("src",profimg);
$("#toot-post-btn").text(lang_toot[lang]+"("+domain+")");
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);
});
} 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_login_noauth[lang]+'</option><option value="webview">Twitter</option>');
$("#add-acct-sel").append('<option value="noauth">' + lang.lang_login_noauth + '</option><option value="webview">Twitter</option>');
}
$('select').material_select('update');
parseColumn(true);
}
//バージョンエンコ
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() {
var start = "https://toot.app/toot/";
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
console.error(error);
}).then(function (json) {
if (json.error) {
return;
}
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,191 +1,136 @@
//プラットフォーム別 最後に読むやつ
//リンクを外部で開くか内部で出すか
$(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]+)/);
//タグのURLぽかったら
var tags=[];
tags = url.match(
/https:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
);
var tags = [];
tags = url.match(
/https:\/\/([-a-zA-Z0-9@.]+)\/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.]+)\/@([-_.!~*\'()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 (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){
console.log(ats);
if(ats[2]){
if(ats[1]!="quesdon.rinsuki.net"){
udgEx(ats[2]+"@"+ats[1],"main");
} else if (ats) {
if (ats[2]) {
//Quesdon判定
if (!~ats[2].indexOf("@")) {
udgEx(ats[2] + "@" + ats[1], "main");
return false
}else{
} 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;
//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;
}
}
}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;
};
$.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 "";
}
return str.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
}
//コピー
function execCopy(string){
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', "");
}
//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_progress[lang]);
}
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);
}
}
}
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.on('reload', function (event, arg) {
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"){
if (arg == "unzip") {
if (lang == "ja") {
$("body").text("アップデートを展開中です。");
}else{
} else {
$("body").text("Unzipping...");
}
}
}
})
//Native Notf
ipc.on('shownotf', function (event, args) {
if(args["type"]=="toot"){
if (args["type"] == "toot") {
details(id, acct_id)
}else if(args["type"]=="userdata"){
} else if (args["type"] == "userdata") {
udg(user, acct_id)
}
})
function opendev(){
function opendev() {
var webview = document.getElementById("webview");
webview.openDevTools();
/*webview.sendInputEvent({
@@ -193,4 +138,28 @@ function opendev(){
keyCode: '2'
});
*/
}
var webviewDom = document.getElementById('webview');
const {
shell
} = require('electron');
webviewDom.addEventListener('new-window', function (e) {
shell.openExternal(e.url);
});
function playSound() {
window.AudioContext = window.AudioContext || window.webkitAudioContext;
context = new AudioContext();
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);
}

View File

@@ -1,3 +1,196 @@
//jQuery読む
window.jQuery = window.$ = require('../../js/common/jquery.js');
var Hammer = require('../../js/common/hammer.min.js');
var Hammer = require('../../js/common/hammer.min.js');
$.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 "";
}
return str.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;');
}
//PHPのnl2brと同様
function nl2br(str) {
if (!str) {
return "";
}
str = str.replace(/\r\n/g, "<br />");
str = str.replace(/(\n|\r)/g, "<br />");
return str;
}
function br2nl(str) {
if (!str) {
return "";
}
str = str.replace(/<br \/>/g, "\r\n");
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 escapeHTML(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()
}
return escapeHTML(str);
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('custom-css-request', "");
ipc.on('custom-css-response', function (event, arg) {
if (arg == "") { return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type", "text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
ipc.on('theme-css-response', function (event, arg) {
if (arg == "") { return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type", "text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
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)];
}
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形式で入力');
}
/*マルチバイト用切り出し*/
$.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;
};
localStorage.removeItem("errors");

View File

@@ -1,44 +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();
reload(type, '', acct_id, data);
});
}
//Streaming接続
var websocket=[];
function reload(type, cc, acct_id, data) {
var tlid=0;
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
//Streaming接続
var websocket = [];
var tlid = 0;
if (type == "home") {
var start = "wss://" + domain +
"/api/v1/streaming/?stream=user&access_token=" + at;
@@ -50,19 +43,14 @@ function reload(type, cc, acct_id, data) {
"/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;
@@ -70,15 +58,14 @@ function reload(type, cc, acct_id, data) {
$("[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);
};
}
@@ -130,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:投稿

2
app/js/platform/pickr.js Normal file

File diff suppressed because one or more lines are too long

View File

@@ -3,49 +3,49 @@ const fs = require("fs");
const os = require('os')
const shell = electron.shell;
const path = require('path')
function shot(){
function shot() {
//screenshotMsg.textContent = 'Gathering screens...'
$(window).height
let options = {
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)
}
}
const desktopCapturer = electron.desktopCapturer;
desktopCapturer.getSources(options, function (error, sources) {
if (error) return console.log(error)
sources.forEach(function(source) {
if(location.search){
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";
var title = m[1];
} else {
var title = "screenshot";
}
if (source.name === 'Screen 1' || source.name === 'TheDesk') {
var durl=source.thumbnail.toDataURL();
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"]);
}
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
}
})
})
}
}
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() {
@@ -316,4 +316,4 @@ function tjDeckStart() {
if (document.querySelector(".js-app-columns")) tjDeckStart();
else var timer = setInterval(function () {
document.querySelector(".js-app-columns") ? (tjDeckStart(), clearInterval(timer)) : console.log("まだロード中")
}, 500);
}, 500);

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_toot[lang]+"("+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_bbmd_misskey[lang], 5000);
if (localStorage.getItem("mode_" + domain) == "misskey") {
Materialize.toast(lang.lang_bbmd_misskey, 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"]){
$("#local-button").removeClass("hide");
}else{
if (idata[domain + "_glitch"] === "true") {
$("#local-button").removeClass("hide");
} 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,257 +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]
});
}
//PHPのnl2brと同様
function nl2br(str) {
if(!str){
return "";
function tagsel(tag) {
var acct_id = $("#post-acct-sel").val();
if (!localStorage.getItem("bb_" + acct_id)) {
return false;
}
str = str.replace(/\r\n/g, "<br />");
str = str.replace(/(\n|\r)/g, "<br />");
return str;
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,72 +4,127 @@ $("#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")) {
if($("#bottom").hasClass("reverse")){
$('#emoji').css("left",$('#post-box').offset().left-295+"px");
}else{
$('#emoji').css("left",$('#post-box').offset().left+295+"px");
}
$("#emoji").removeClass("hide")
$("#right-side").show()
$("#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_emoji_get[lang]+'</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")
$("#emoji").addClass("hide")
$("#suggest").html("");
$("#right-side").hide()
}
}
//絵文字リスト挿入
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) {
$("#now-emoji").text(lang_emoji_custom[lang]);
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;
@@ -91,7 +146,7 @@ function emojiList(target) {
var page = Math.ceil(num / 126);
$("#emoji-sum").text(page);
var ct = Math.ceil(start / 126);
if (ct == 0) {
if (ct === 0) {
var ct = 1;
$("#emoji-before").addClass("disabled");
} else {
@@ -102,8 +157,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,14 +174,18 @@ function emojiList(target) {
function emojiInsert(code, del) {
var now = $("#textarea").val();
var selin = localStorage.getItem("cursor");
console.log(selin);
if (localStorage.getItem("emoji-zero-width") == "yes") {
var brank = "";
} else {
var brank = " ";
}
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+" ";
if (selin > 0) {
var before = now.substr(0, selin);
var after = now.substr(selin, now.length);
newt = before + brank + code + brank + after;
} else {
newt = code + brank;
}
if (!del) {
$("#textarea").val(newt);
@@ -128,20 +193,20 @@ function emojiInsert(code, del) {
} else {
var regExp = new RegExp(del, "g");
var now = now.replace(regExp, "");
$("#textarea").val(now + " " + code);
$("#textarea").val(now + brank + code);
}
$("#textarea").focus();
var selin = $("#textarea").prop('selectionStart');
if(!selin){
selin=0;
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,31 +30,31 @@ $("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 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_progress[lang]);
}else{
handleFileUpload(files[i], obj,i);
var ipc = electron.ipcRenderer;
ipc.send('bmp-image', [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]);
});
media(b64[0], "image/png", b64[1]);
});
//ドラッグ・アンド・ドロップを終了
function closedrop() {
$("#drag").css('display', 'none');
@@ -67,7 +67,7 @@ function fileselect() {
//ファイル読み込み
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,69 +82,67 @@ 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);
httpreq.responseType = 'json';
httpreq.responseType = "json";
if ($("#nsfw").hasClass("nsfw-avail")) {
var nsfw = true;
} 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);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.send(fd);
}
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
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_postimg_previewdis[lang]);
$('#preview').append(lang.lang_postimg_previewdis);
}
if (!img) {
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"])
@@ -152,8 +150,8 @@ function media(b64, type, no) {
todc();
$(".toot-btn-group").prop("disabled", false);
$('select').material_select();
$("#mec").text(lang_there[lang]);
Materialize.toast(lang_postimg_aftupload[lang], 1000);
$("#mec").text(lang.lang_there);
Materialize.toast(lang.lang_postimg_aftupload, 1000);
$("#imgup").text("");
$("#imgsel").show();
localStorage.removeItem("image");
@@ -180,46 +178,59 @@ 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(){
function adobe() {
var agree = localStorage.getItem("adobeagree");
ipc.send('adobe', agree);
}
ipc.on('adobeagree', function (event, arg) {
localStorage.setItem("adobeagree",arg);
});
localStorage.setItem("adobeagree", arg);
});
function deleteImage(key) {
if (!confirm(lang.lang_postimg_delete)) {
return false;
}
var media = $("#media").val();
var arr = media.split(",");
for (var i = 0; i < media.length; i++) {
if (arr[i] == key) {
arr.splice(i, 1);
break;
}
}
$("#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
}
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');
httpreq.responseType = 'json';
httpreq.send(JSON.stringify({i:at,renoteId:id}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
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) {
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_misskeyparse_qt[lang]);
$("#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').material_select();
$("#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_misskeyparse_qt[lang]);
$("#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').material_select();
$("#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');
httpreq.responseType = 'json';
httpreq.send(JSON.stringify({i:at,noteId:id}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
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) {
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').material_select();
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');
httpreq.responseType = 'json';
httpreq.send(JSON.stringify({i:at,noteId:id,choice:to}));
httpreq.onreadystatechange = function() {
voterefresh(acct_id,id)
}
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)
}
}
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,130 +1,179 @@
/*投稿系*/
//投稿
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")){
return
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_post_tagTL[lang])){
if (domain == "theboss.tech") {
if (~str.indexOf("#")) {
if (str.indexOf("#theboss_tech") == "-1") {
if (!confirm(lang.lang_post_tagTL)) {
return false;
}
}
}
}
if(domain=="dtp-mstdn.jp"){
if(~str.indexOf("#")){
if(str.indexOf("#dtp")=="-1"){
if(!confirm(lang_post_tagTL[lang])){
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_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 (!localStorage.getItem("cw_letters")) {
var cw_ltres = 500;
} else {
var cw_ltres = localStorage.getItem("cw_letters");
}
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_post_cwtitle[lang],
message: lang_post_cwtxt[lang]+plus,
buttons: [lang_post_btn1[lang],lang_post_btn2[lang], lang_post_btn3[lang]]
}
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");
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]
}
})
return false;
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();
var toot={
if (str.indexOf(localStorage.getItem("stable")) == -1) {
str + " #" + localStorage.getItem("stable");
}
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(",");
}
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("This toot will be posted at:" + scheduled)
schedule();
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 != "") {
options.push(choice);
}
});
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;
}
var exin = pollCalc();
if (!exin) {
todc("Error: Poll expires_in param")
}
toot.poll = {
options: options,
expires_in: exin,
multiple: mul,
hide_totals: htt
}
}
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.responseType = "json";
httpreq.send(JSON.stringify(toot));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if(str.indexOf(localStorage.getItem("stable"))==-1){
localStorage.removeItem("stable")
}
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
var box = localStorage.getItem("box");
if (box == "yes" || !box) {
$("#textarea").blur();
@@ -136,71 +185,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.responseType = "json";
httpreq.send(JSON.stringify(toot));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
if(str.indexOf(localStorage.getItem("stable"))==-1){
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
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");
}
@@ -214,10 +263,10 @@ 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_toot[lang]);
$("#textarea").attr("placeholder", lang.lang_toot);
$("#reply").val("");
$("#media").val("");
var cwt = localStorage.getItem("cw-text");
@@ -231,25 +280,35 @@ 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();
}
$("#rec").text(lang_no[lang]);
$("#mec").text(lang_nothing[lang]);
$("#rec").text(lang.lang_no);
$("#mec").text(lang.lang_nothing);
loadVis();
$("#nsfw").removeClass("yellow-text");
$("#nsfw").html("visibility_off");
$("#nsfw").removeClass("nsfw-avail");
$("#nsc").text(lang_nothing[lang]);
$("#nsc").text(lang.lang_nothing);
$("#drag").css("background-color", "#e0e0e0");
$("#preview").html("");
$(".toot-btn-group").prop("disabled", false);
$("#post-acct-sel").prop("disabled", false);
$("#days_poll").val(0);
$("#hours_poll").val(0);
$("#mins_poll").val(6);
$(".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();
$("#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,95 +21,107 @@ 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);
}
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');
}
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")) {
$("#sch-box").hide();
$("#sch-box").removeClass("sch-avail");
} else {
var date = new Date();
$("#sch-box").show();
$("#sch-date").val(formattime(date));
$("#sch-box").addClass("sch-avail");
}
}

View File

@@ -7,27 +7,27 @@ 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);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
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_status_favWarn[lang], 1000);
}
}
} else {
Materialize.toast(lang.lang_status_favWarn, 1000);
}
}
}
}
@@ -57,18 +57,18 @@ 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);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
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) {
@@ -90,17 +90,17 @@ function rt(id, acct_id, remote) {
$(".rt_" + id).addClass("teal-text");
}
} else {
Materialize.toast(lang_status_btWarn[lang], 1000);
Materialize.toast(lang.lang_status_btWarn, 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,40 +111,39 @@ 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 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 user = $("#his-acct").text();
var ent = { "uri": user }
} else {
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
var ent={}
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.responseType = "json";
httpreq.send(JSON.stringify(ent));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
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_status_follow[lang]);
$("#his-follow-btn").text(lang.lang_status_follow);
} else {
$("#his-data").addClass("following");
$("#his-follow-btn").text(lang_status_unfollow[lang]);
$("#his-follow-btn").text(lang.lang_status_unfollow);
}
}
}
@@ -162,22 +161,22 @@ function block(acct_id) {
var flag = "block";
}
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);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if ($("#his-data").hasClass("blocking")) {
$("#his-data").removeClass("blocking");
$("#his-block-btn").text(lang_status_block[lang]);
$("#his-block-btn").text(lang.lang_status_block);
} else {
$("#his-data").addClass("blocking");
$("#his-block-btn").text(lang_status_unblock[lang]);
$("#his-block-btn").text(lang.lang_status_unblock);
}
}
}
@@ -197,29 +196,29 @@ function mute(acct_id) {
var flagm = "create";
}
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 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 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.responseType = "json";
httpreq.send(rq);
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if ($("#his-data").hasClass("muting")) {
$("#his-data").removeClass("muting");
$("#his-mute-btn").text(lang_status_mute[lang]);
$("#his-mute-btn").text(lang.lang_status_mute);
} else {
$("#his-data").addClass("muting");
$("#his-mute-btn").text(lang_status_unmute[lang]);
$("#his-mute-btn").text(lang.lang_status_unmute);
}
}
}
@@ -228,56 +227,64 @@ function mute(acct_id) {
//投稿削除
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.responseType = "json";
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);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
}
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
}
}
}
//redraft
function redraft(id, acct_id){
if(confirm(lang_status_redraft[lang])){
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");
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);
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");
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);
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);
}
}
}
//ピン留め
@@ -288,18 +295,18 @@ 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);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
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");
@@ -314,18 +321,18 @@ 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);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
console.log(["Success: request", "type:" + flag, json]);
showReq();
}
}
@@ -337,18 +344,18 @@ 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);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
console.log(json);
console.log(["Success: domain block", json]);
showDom();
}
}
@@ -359,25 +366,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_status_emphas[lang], 4000);
}else{
Materialize.toast(id + lang.lang_status_emphas, 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_status_unemphas[lang], 4000);
Materialize.toast(id + lang.lang_status_unemphas, 4000);
}
});
}
@@ -385,90 +391,89 @@ 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);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
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_status_endorse[lang])
$("#his-end-btn").text(lang.lang_status_endorse)
} else {
$("#his-end-btn").addClass("endorsed")
$("#his-end-btn").text(lang_status_unendorse[lang])
$("#his-end-btn").text(lang.lang_status_unendorse)
}
}
}
}
//URLコピー
function tootUriCopy(url){
function tootUriCopy(url) {
execCopy(url);
Materialize.toast(lang_details_url[lang], 1500);
Materialize.toast(lang.lang_details_url, 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-notf=" + acct_id + "]";
} 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,89 +7,112 @@ var prev_val = input.value;
var oldSuggest;
var suggest;
input.addEventListener("focus", function() {
input.addEventListener("focus", function () {
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 == "") {
$("#suggest").html("");
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) {
$("#right-side").hide()
}
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_suggest_nodata[lang];
}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 != "") {
$("#right-side").show()
$("#poll").addClass("hide")
$("#emoji").addClass("hide")
} else {
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) {
$("#right-side").hide()
}
}
$("#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 {
//$("#suggest").html("");
} else {
$("#suggest").html("");
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) {
$("#right-side").hide()
}
return;
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
suggest = "https://" + domain + "/api/v1/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) {
if (json.hashtags[0] && tag[1]) {
var tags = "";
Object.keys(json.hashtags).forEach(function(key4) {
var tag = json.hashtags[key4];
tags = tags + '<a onclick="tagInsert(\'#' + tag + '\',\'#' + q +
'\')" class="pointer">#' + tag + '</a> ';
});
$("#suggest").html("Tags:" + tags);
}).then(function (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>';
}
});
$("#right-side").show()
$("#suggest").html("Tags:<br>" + tags);
$("#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];
accts = accts + '<a onclick="tagInsert(\'@' + acct.acct +
'\',\'@' + q + '\')" class="pointer">@' + acct.acct + '</a> ';
if (acct.acct != q) {
accts = accts + '<a onclick="tagInsert(\'@' + acct.acct +
'\',\'@' + q + '\')" class="pointer">@' + acct.acct + '</a><br>';
}
});
$("#suggest").html("@:" + accts);
$("#right-side").show()
$("#suggest").html(accts);
$("#poll").addClass("hide")
$("#emoji").addClass("hide")
} else {
$("#suggest").html("Not Found");
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) {
$("#right-side").hide()
}
}
});
}
@@ -99,7 +122,7 @@ input.addEventListener("focus", function() {
}, 1000);
}, false);
input.addEventListener("blur", function() {
input.addEventListener("blur", function () {
window.clearInterval(timer);
favTag();
}, false);
@@ -110,45 +133,47 @@ function tagInsert(code, del) {
} else {
var regExp = new RegExp(del, "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")) {
$("#right-side").hide()
}
$("#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,52 +1,62 @@
/*リプライ*/
function re(id,at,acct_id,mode){
localStorage.setItem("nohide",true);
function re(id, ats_cm, acct_id, mode) {
clear();
var ats = ats_cm.split(',');
localStorage.setItem("nohide", true);
show();
$("#reply").val(id);
var te=$("#textarea").val();
$("#textarea").val("@"+at+" "+te);
$("#rec").text(lang_yesno[lang]);
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_usetxtbox_reply[lang]);
$("#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=="simple"){
if (qt == "nothing") {
return false;
}
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);
}
$("#textarea").focus();
$("#post-acct-sel").val(acct_id);

View File

@@ -3,251 +3,208 @@
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_cards_check[lang]+":<br>Title:" + json.title + "<br>" +
json.description + "</span>");
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
$("[toot-id=" + id + "]").addClass("parsed");
}
});
}else{
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);
//このリンク鳥やんけ、ってとき
if (json.provider_name=="Twitter"){
if(json.image){
var twiImg='<br><img src="'+json.image+'">';
}else{
var twiImg='';
}
$("[toot-id=" + id + "] .additional").html(
'<blockquote class="twitter-tweet"><b>'+escapeHTML(json.author_name)+'</b><br>'+escapeHTML(json.description)+twiImg+'</blockquote>');
}
if (json.title) {
$("[toot-id=" + id + "] .additional").html(
"<span class=\"gray\">URL"+lang_cards_check[lang]+":<br>Title:" + escapeHTML(json.title) + "<br>" +
"<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" onclick="pip('+id+')" title="'+lang_cards_pip[lang]+'">picture_in_picture_alt</i>');
}
if (json.title) {
$("[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 + "/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) {
//このリンク鳥やんけ、ってとき
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_cards_check[lang]+":<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_cards_check[lang]+":<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_cards_pip[lang]+'">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]
@@ -256,11 +213,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]をチェック
@@ -268,57 +225,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_details_nodata[lang]);
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,96 +33,100 @@ 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);
if(!local){
var dom=scn.replace(/.+@/g,'');
}else{
var dom=domain;
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{
} else {
$("#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{
} else {
var start = "https://" + domain + "/api/v1/statuses/" + id;
var i={
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
@@ -125,62 +134,65 @@ function replyTL(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("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_details_filtered[lang]);
$("#toot-after .by_filter").css("display","block");
$("#toot-after .hide").html(lang.lang_details_filtered);
$("#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);
} else {
var templete = parse([json], '', acct_id, "", "", mute);
if (templete != "") {
$("#toot-reply .no-data").hide();
}
$("#toot-reply").prepend(templete);
$("#toot-reply .hide").html(lang_details_filtered[lang]);
$("#toot-reply .by_filter").css("display","block");
$("#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";
jQuery("time.timeago").timeago();
var rep = "in_reply_to_id";
if (json[rep]) {
replyTL(json[rep], acct_id);
}
}
});
}
//コンテクストってなんですか
function context(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',
@@ -188,79 +200,84 @@ 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_details_filtered[lang]);
$("#toot-reply .by_filter").css("display","block");
$("#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();
}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_details_filtered[lang]);
$("#toot-after .by_filter").css("display","block");
$("#toot-after .hide").html(lang.lang_details_filtered);
$("#toot-after .by_filter").css("display", "block");
$("#toot-after .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();
});
@@ -269,31 +286,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',
@@ -301,25 +318,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',
@@ -327,13 +422,16 @@ 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);
});
}
@@ -341,8 +439,8 @@ function faved(id, acct_id) {
//ブースト一覧
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',
@@ -350,130 +448,77 @@ 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);
});
}
//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_details_embed[lang], 1500);
}else{
if(execCopy(url)){
Materialize.toast(lang_details_url[lang], 1500);
Materialize.toast(lang.lang_details_embed, 1500);
} else {
if (execCopy(url)) {
Materialize.toast(lang.lang_details_url, 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_details_txt[lang], 1500);
html = $.strip_tags(html);
if (execCopy(html)) {
Materialize.toast(lang.lang_details_txt, 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){
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);
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/AKfycbz0ETqcUxwNlw961GjErNb7vr_X18N2s1AS5Xu5nFTbYXcdcRM/exec?text='+encodeURIComponent(html)+'&source='+tar+'&target=ja'
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) {
return response.text();
}).catch(function(error) {
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function(text) {
$("#toot-this .additional").html('<span class="gray">'+text+'</span>');
}).then(function (text) {
$("#toot-this .additional").html('<span class="gray">' + text.text + '</span>');
});
}
//ブラウザで開く
function brws(){
var url=$("#tootmodal").attr("data-url");
function brws() {
var url = $("#tootmodal").attr("data-url");
const {
shell
} = require('electron');
@@ -481,38 +526,38 @@ function brws(){
shell.openExternal(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){
}).then(function (json) {
if (!json.statuses) {
const {
shell
} = require('electron');
shell.openExternal(url);
}else{
var id=json.statuses[0].id;
} else {
var id = json.statuses[0].id;
$(".loadp").text($(".loadp").attr("href"));
$(".loadp").removeClass("loadp");
details(id, acct_id, 0)
}
});
return;
}

View File

@@ -15,10 +15,11 @@ function date(str, datetype) {
} else {
var min = date.getMinutes();
}
var sec = null;
if (date.getSeconds() < 10) {
var sec = "0" + date.getSeconds();
sec = "0" + date.getSeconds();
} else {
var sec = date.getSeconds();
sec = date.getSeconds();
}
if (datetype == "full") {
var ret = date.getFullYear() + "/" + month + "/" + date.getDate() + "/ " +
@@ -56,14 +57,39 @@ 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;
}
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.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();
}
format_str = 'YYYY-MM-DD hh:mm:ss';
format_str = format_str.replace(/YYYY/g, date.getFullYear());
format_str = format_str.replace(/MM/g, date.getMonth()+1);
format_str = format_str.replace(/DD/g, date.getDate());
format_str = format_str.replace(/hh/g, date.getHours());
format_str = format_str.replace(/mm/g, date.getMinutes());
format_str = format_str.replace(/ss/g, date.getSeconds());
format_str = format_str.replace(/MM/g, mnt);
format_str = format_str.replace(/DD/g, dat);
format_str = format_str.replace(/hh/g, hrs);
format_str = format_str.replace(/mm/g, mns);
format_str = format_str.replace(/ss/g, sec);
return format_str;
}

522
app/js/tl/dm.js Normal file
View File

@@ -0,0 +1,522 @@
//DM(Conv) TL
function dm(acct_id, tlid, type, delc, voice) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/conversations";
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>';
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 dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var templete = '';
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 = actb.split(',');
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;
}
}
var datetype = localStorage.getItem("datetype");
var nsfwtype = localStorage.getItem("nsfw");
var sent = localStorage.getItem("sentence");
var ltr = localStorage.getItem("letters");
var gif = localStorage.getItem("gif");
var imh = localStorage.getItem("img-height");
//独自ロケール
var locale = localStorage.getItem("locale");
if (locale == "yes") {
var locale = false;
}
//ネイティブ通知
var native = localStorage.getItem("nativenotf");
if (!native) {
native = "yes";
}
//クライアント強調
var emp = localStorage.getItem("client_emp");
if (emp) {
var emp = JSON.parse(emp);
}
//クライアントミュート
var mute = localStorage.getItem("client_mute");
if (mute) {
var mute = JSON.parse(mute);
}
//ユーザー強調
var useremp = localStorage.getItem("user_emp");
if (useremp) {
var useremp = JSON.parse(useremp);
}
//ワード強調
var wordemp = localStorage.getItem("word_emp");
if (wordemp) {
var wordemp = JSON.parse(wordemp);
}
//ワードミュート
var wordmute = localStorage.getItem("word_mute");
if (wordmute) {
var wordmute = JSON.parse(wordmute);
wordmute = wordmute.concat(mutefilter);
} else {
wordmute = mutefilter;
}
//Ticker
var tickerck = localStorage.getItem("ticker_ok");
if (tickerck) {
var ticker = true;
} else {
var ticker = false;
}
//Cards
var card = localStorage.getItem("card_" + tlid);
if (!sent) {
var sent = 500;
}
if (!ltr) {
var ltr = 500;
}
if (!nsfwtype || nsfwtype == "yes") {
var nsfw = "ok";
} else {
var nsfw;
}
var cwtype = localStorage.getItem("cw");
if (!cwtype || cwtype == "yes") {
var cw = "ok";
} else {
var cw;
}
if (!datetype) {
datetype = "absolute";
}
if (!gif) {
var gif = "yes";
}
if (!imh) {
var imh = "200";
}
if (!emp) {
var emp = [];
}
if (!mute) {
var mute = [];
}
if (!useremp) {
var useremp = [];
}
if (!wordemp) {
var wordemp = [];
}
if (!wordmute) {
var wordmute = [];
}
//via通知
var viashow = localStorage.getItem("viashow");
if (!viashow) {
viashow = "via-hide";
}
if (viashow == "hide") {
viashow = "via-hide";
}
//認証なしTL
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 local = [];
var times = [];
Object.keys(obj).forEach(function (key) {
var conv_id = obj[key].id;
var toot = obj[key].last_status;
var dis_name = escapeHTML(toot.account.display_name);
if (toot.account.emojis) {
var actemojick = toot.account.emojis[0];
} else {
var actemojick = false;
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.account.emojis).forEach(function (key5) {
var emoji = toot.account.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
dis_name = dis_name.replace(regExp, emoji_url);
});
}
var 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) {
boostback = "emphasized";
}
});
}
var id = toot.id;
var home = "";
if (toot.account.locked) {
var locked = ' <i class="fas fa-lock red-text"></i>';
} else {
var locked = "";
}
if (!toot.application) {
var via = '';
viashow = "hide";
} else {
var via = escapeHTML(toot.application.name);
//強調チェック
Object.keys(emp).forEach(function (key6) {
var cli = emp[key6];
if (cli == via) {
boostback = "emphasized";
}
});
//ミュートチェック
Object.keys(mute).forEach(function (key7) {
var cli = mute[key7];
if (cli == via) {
boostback = "hide";
}
});
}
if (mix == "pinned") {
boostback = "emphasized";
}
if (toot.spoiler_text && cw) {
var content = toot.content;
var spoil = escapeHTML(toot.spoiler_text);
var spoiler = "cw cw_hide_" + toot.id;
var api_spoil = "gray";
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
'\')" class="nex parsed">' + lang.lang_parse_cwshow + '</a><br>';
} 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; }
if ((sent < ct && $.mb_strlen($.strip_tags(toot.content)) > 5) || ($.strip_tags(toot.content).length > ltr && $.mb_strlen($.strip_tags(toot.content)) > 5)) {
var content = '<span class="gray">' + lang.lang_parse_fulltext + '</span><br>' + toot.content
var spoil = '<span class="cw-long-' + toot.id + '">' + $.mb_substr($.strip_tags(
toot.content), 0, 100) +
'</span><span class="gray">' + lang.lang_parse_autofold + '</span>';
var spoiler = "cw cw_hide_" + toot.id;
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
'\')" class="nex parsed">' + lang.lang_parse_more + '</a><br>';
} else {
var content = toot.content;
var spoil = escapeHTML(toot.spoiler_text);
var spoiler = "";
var spoiler_show = "";
}
}
var urls = $.strip_tags(content).replace(/\n/g, " ").match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/
);
if (urls) {
var analyze = '<a onclick="additionalIndv(\'' + tlid + '\',' + acct_id +
',\'' + id + '\')" class="add-show pointer">' + lang.lang_parse_url + '</a><br>';
} else {
var analyze = '';
}
var viewer = "";
var hasmedia = "";
var youtube = "";
if (toot.emojis) {
var emojick = toot.emojis[0];
} else {
var emojick = false;
}
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5];
var shortcode = emoji.shortcode;
var emoji_url = '<img src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
content = content.replace(regExp, emoji_url);
spoil = spoil.replace(regExp, emoji_url);
});
}
//ニコフレ絵文字
if (toot.profile_emojis) {
var nicoemojick = toot.profile_emojis[0];
} else {
var nicoemojick = false;
}
//絵文字があれば
if (nicoemojick) {
Object.keys(toot.profile_emojis).forEach(function (keynico) {
var emoji = toot.profile_emojis[keynico];
var shortcode = emoji.shortcode;
var emoji_url = '<img src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
var regExp = new RegExp(":" + shortcode + ":", "g");
content = content.replace(regExp, emoji_url);
spoil = spoil.replace(regExp, emoji_url);
});
}
//デフォ絵文字
content = twemoji.parse(content);
if (dis_name) {
dis_name = twemoji.parse(dis_name);
}
if (spoil) {
spoil = twemoji.parse(spoil);
}
var mediack = toot.media_attachments[0];
//メディアがあれば
var media_ids = "";
if (mediack) {
hasmedia = "hasmedia";
var cwdt = 100 / toot.media_attachments.length;
Object.keys(toot.media_attachments).forEach(function (key2) {
var media = toot.media_attachments[key2];
var purl = media.preview_url;
media_ids = media_ids + media.id + ",";
var url = media.url;
if (toot.sensitive && nsfw) {
var sense = "sensitive"
} else {
var sense = ""
}
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',\'' +
acct_id + '\')" id="' + id + '-image-' + key2 + '" data-url="' + url +
'" data-type="' + media.type + '" class="img-parsed"><img src="' +
purl + '" class="' + sense +
' toot-img pointer" style="width:' + cwdt + '%; height:' + imh + 'px;"></a></span>';
});
media_ids = media_ids.slice(0, -1);
} else {
viewer = "";
hasmedia = "nomedia";
}
var menck = toot.mentions[0];
var mentions = "";
//メンションであれば
if (menck) {
mentions = "";
Object.keys(toot.mentions).forEach(function (key3) {
var mention = toot.mentions[key3];
mentions = mentions + '<a onclick="udg(\'' + mention.id + '\',' +
acct_id + ')" class="pointer">@' + mention.acct + '</a> ';
});
mentions = '<div style="float:right">' + mentions + '</div>';
}
var tagck = toot.tags[0];
var tags = "";
//タグであれば
if (tagck) {
Object.keys(toot.tags).forEach(function (key4) {
var tag = toot.tags[key4];
tags = tags + '<span class="hide" data-tag="' + tag.name + '">#' + tag.name + ':<a onclick="tl(\'tag\',\'' + tag.name + '\',' + acct_id +
',\'add\')" class="pointer" title="' + lang.lang_parse_tagTL.replace("{{tag}}", '#' + tag.name) + '">TL</a> <a onclick="brInsert(\'#' + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", '#' + tag.name) + '">Toot</a> ' +
'<a onclick="tagPin(\'' + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagpin.replace("{{tag}}", '#' + tag.name) + '">Pin</a></span> ';
});
tags = '<div style="float:right">' + tags + '</div>';
}
//アニメ再生
if (gif == "yes") {
var avatar = toot.account.avatar;
} else {
var avatar = toot.account.avatar_static;
}
//ワードミュート
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
}
var regExp = new RegExp(word, "g");
if ($.strip_tags(content).match(regExp)) {
boostback = "hide by_filter";
}
}
});
}
//ワード強調
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">' + 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.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>';
}
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;"> ' + escapeHTML(value.name) + '</span></div>';
break;
}
}
}
}
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
boostback + ' ' + fav_app +
' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="' + media_ids + ' " unixtime="' + date(obj[
key].created_at, 'unix') + '" ' + if_notf + ' onclick="dmStatus()">' +
'<div class="area-notice"><span class="gray sharesta">' + notice + home +
'</span></div>' +
'<div class="area-icon"><a onclick="udg(\'' + toot.account.id +
'\',' + acct_id + ');" user="' + toot.account.acct + '" class="udg">' +
'<img src="' + avatar +
'" width="40" class="prof-img" user="' + toot.account.acct +
'"></a>' + noticeavatar + '</div>' +
'<div class="area-display_name"><div class="flex-name"><span class="user">' +
dis_name +
'</span><span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; cursor:text;"> @' +
toot.account.acct + locked + '</span></div>' +
'<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' +
toot.url + '\');" title="' + date(toot.created_at, 'absolute') +
'(' + lang.lang_parse_clickcopyurl + ')"><i class="far fa-clock-o"></i>' +
date(toot.created_at, datetype) + '</span>' +
'</div></div>' +
'<div class="area-toot">' + tickerdom + '<span class="' +
api_spoil + ' cw_text_' + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show +
'</span><span class="toot ' + spoiler + '">' + content +
'</span>' +
'' + viewer + '' +
'<br><a onclick="details(\'' + toot.id + '\',' + acct_id +
',\'' + tlid + '\',\'dm\')" class="pointer waves-effect">' + lang.lang_parse_thread + '</a></div>' +
'<div class="area-vis"></div>' +
'</div></div>';
});
return templete;
}

View File

@@ -3,15 +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") {
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).text("Off");
$("#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")
}
}
//各TL上方のMedia[On/Off]をチェック
@@ -19,26 +42,46 @@ 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") {
$("#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).text("BT Only");
$("#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")
}
}
/* 削除追跡*/
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();
} else {
localStorage.setItem("catch_" + tlid, "true");
$("#sta-del-" + tlid).text("On");
$("#sta-del-" + tlid).css("color",'#009688');
$("#sta-del-" + tlid).css("color", '#009688');
parseColumn();
}
}
@@ -46,306 +89,369 @@ 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 filterToggle(){
if ($("#filter-box").hasClass("hide")) {
$("#filter-box").removeClass("hide");
$("#filter-box").addClass("show");
$("#filter-box").css("bottom","40px");
$("#filter-box").css("left",$('#filter-tgl').offset().left-$('#filter-box').width()/2+"px");
//フィルターロード
} else {
$("#filter-box").removeClass("show");
$("#filter-box").addClass("hide")
}
function filterMenu() {
$("#left-menu div").removeClass("active");
$("#filterMenu").addClass("active");
$(".menu-content").addClass("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_edit[lang]+'</a>/<a onclick="filterDel(' + filterword.id + ',' + acct_id +
')" class="pointer">'+lang_del[lang]+'</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_filter_nodata[lang]+"<br>";
if (filters == "") {
filters = lang.lang_filter_nodata + "<br>";
}
$("#filtered-words").html(filters);
}else{
$("#filtered-words").html(lang_filter_nodata[lang]);
}
} 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_filter_errordegree[lang]);
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');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = 'json';
httpreq.responseType = "json";
httpreq.send(JSON.stringify({
phrase: phr,
context: cont,
irreversible: exc,
whole_word:who,
expires_in:time
whole_word: who,
expires_in: time
}));
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
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");
$("#add-filter-btn").text(lang_add[lang]);
$("#add-filter-btn").text(lang.lang_add);
$("#filter-edit-id").val("")
}
}
}
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_edit[lang]);
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.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function() {
if (httpreq.readyState == 4) {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response;
filter();
filterUpdate(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, "g");
if ($.strip_tags(text).match(regExp)) {
$("[toot-id=" + id + "]").addClass("hide");
}
});
}
});
}
}
/*
<a onclick="catchToggle(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="削除捕捉(削除されても残ります。背景色が変化します。)">delete</i><span id="sta-del-' +
key + '">On</span></a>削除捕捉<a onclick="delreset(' + key +
')" class="pointer">リセット</a><br>
*/
*/
//通知フィルター
function exclude(key) {
var excludetxt = localStorage.getItem("exclude-" + key);
if ($('#exc-reply-' + key + ':checked').val()) {
excludetxt = "?exclude_types[]=mention"
}
if ($('#exc-fav-' + key + ':checked').val()) {
if (!excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=favourite"
} else {
excludetxt = "?exclude_types[]=favourite"
}
}
if ($('#exc-bt-' + key + ':checked').val()) {
if (!excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=reblog"
} else {
excludetxt = "?exclude_types[]=reblog"
}
}
if ($('#exc-follow-' + key + ':checked').val()) {
if (!excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=follow"
} else {
excludetxt = "?exclude_types[]=follow"
}
}
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();
}
function excludeCk(key, target) {
var exc = localStorage.getItem("exclude-" + key);
if (!exc) {
return "";
}
if (~exc.indexOf(target)) {
return "checked"
} 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();
}
function notfFilter(id,tlid){
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();
}

View File

@@ -1,199 +1,285 @@
function listToggle(){
if ($("#list-box").hasClass("hide")) {
$("#list-box").removeClass("hide");
$("#list-box").addClass("show");
$("#list-box").css("bottom","40px");
$("#list-box").css("left",$('#list-tgl').offset().left-$('#list-box').width()/2+"px");
//リストロード
function listMenu() {
$("#left-menu div").removeClass("active");
$("#listMenu").addClass("active");
$(".menu-content").addClass("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");
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 {
$("#list-box").removeClass("show");
$("#list-box").addClass("hide")
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 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_list_show[lang]+'</a>/<a onclick="listUser(' + list.id + ',' + acct_id +
')" class="pointer">'+lang_list_users[lang]+'</a><br> ';
});
$("#lists").html(lists);
}else{
$("#lists").html(lang_list_nodata[lang]);
}
});
}
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_list_nouser[lang];
}
var templete = userparse(json, '', acct_id);
if (!json[0]) {
templete = lang.lang_list_nouser;
}
$("#lists-user").html(templete);
}else{
$("#lists-user").html(lang_list_nouser[lang]);
}
} 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_list_add[lang]+"<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_list_nodata[lang]);
}
});
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_list_remove[lang]+"<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_list_nodata[lang]);
}
});
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() {
if (httpreq.readyState == 4) {
httpreq.responseType = "json";
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() {
if (httpreq.readyState == 4) {
httpreq.responseType = "json";
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=[];
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);
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,29 +1,144 @@
//通知
//取得+Streaming接続
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) {
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;
var httpreq = new XMLHttpRequest();
if (localStorage.getItem("mode_" + domain) == "misskey") {
var misskey = true;
var start = "https://" + domain + "/api/i/notifications";
var i={
httpreq.open("POST", start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
var body = JSON.stringify({
i: at
});
} 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;
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;
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+";
}
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.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 {
ipc.send('native-notf', ['TheDesk:' + domain, ct + lang.lang_notf_new, localStorage.getItem("prof_" + acct_id)]);
}
}
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, tlid, -1, mute);
} else {
templete = templete + parse([obj], 'notf', acct_id, tlid, -1, mute);
}
} 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>';
$("#timeline_" + tlid).html(templete);
$("#landing_" + tlid).hide();
jQuery("time.timeago").timeago();
}
$("#notf-box").addClass("fetched");
todc();
}
}
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;
}
}
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 domain = localStorage.getItem("domain_" + acct_id);
if (localStorage.getItem("mode_" + domain) == "misskey") {
var misskey = true;
var start = "https://" + domain + "/api/i/notifications";
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',
@@ -31,255 +146,231 @@ function notf(acct_id, tlid, sys) {
},
}
}
fetch(start, i).then(function(response) {
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 electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.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 {
ipc.send('native-notf', ['TheDesk:' + domain, ct + lang.lang_notf_new, localStorage.getItem("prof_" + acct_id)]);
}
}
}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 = [];
}
}
});
if (sys == "direct") {
$("#timeline_" + tlid).html(templete);
} else {
$("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 (obj.type != "follow") {
templete = parse([obj], 'notf', acct_id, 'notf', popup);
} else {
templete = userparse([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);
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();
}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({ "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 + " .cvo").last().attr("toot-id");
console.log(sid);
if (localStorage.getItem("morelock") != sid) {
localStorage.setItem("morelock", sid);
localStorage.setItem("now", type);
todo("Notfication TL MoreLoading");
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey=true;
var start = "https://" + domain + "/api/i/notifications";
var i={
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify({
i:at,
untilId:sid
})
}
}else{
var misskey=false;
var start = "https://" + domain + "/api/v1/notifications"+
"max_id=" + sid;
var i={
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}
}
fetch(start, i,
).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
var templete="";
Object.keys(json).forEach(function(key) {
var obj = json[key];
if(obj.type!="follow"){
if(misskey){
templete = templete+misskeyParse([obj.note], '', acct_id, tlid, -1);
}else{
templete = templete+parse([obj], '', acct_id, tlid, -1);
}
}else{
if(misskey){
templete = templete+misskeyUserparse([obj], '', acct_id, tlid, -1);
}else{
templete = templete+userparse([obj.account], '', acct_id, tlid, -1);
}
}
var sid = $("#timeline_" + tlid + " .notif-marker").last().attr("data-maxid");
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
});
$("#timeline_" + tlid).append(templete);
additional(acct_id, tlid);
jQuery("time.timeago").timeago();
localStorage.removeItem("morelock")
todc();
});
} 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 = "";
}
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 = [];
}
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();
}
$("#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");
@@ -294,26 +385,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

118
app/js/tl/poll.js Normal file
View File

@@ -0,0 +1,118 @@
//アンケートのトグル
function pollToggle() {
if ($("#poll").hasClass("hide")) {
$("#right-side").show()
$("#poll").removeClass("hide")
} else {
$("#right-side").hide()
$("#emoji").addClass("hide")
$("#poll").addClass("hide")
}
}
function pollProviderCk() {
$(".poll-provider").addClass("hide");
$("#" + $("#poll-sel").val()).removeClass("hide");
}
/*
function pollAddtime(num){
var last=$("#expires_in").val();
last=last*1-(num*-1);
$("#expires_in").val(last);
pollCalc();
}
*/
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) {
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")
$(this).removeClass("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 + "");
}
});
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") {
return false;
}
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)
}
}
function showResult(acct_id, id) {
$('.vote_' + acct_id + '_' + id + '_result').toggleClass("hide")
}
function voteMastodonrefresh(acct_id, id) {
var datetype = localStorage.getItem("datetype");
if (!datetype) {
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');
httpreqd.responseType = 'json';
httpreqd.send(JSON.stringify({ i: at, noteId: id }));
httpreqd.onreadystatechange = function () {
if (httpreqd.readyState == 4) {
var json = httpreqd.response;
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 + '">' + escapeHTML(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="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_speech[lang];
$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');
$("#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();
}
} else {
localStorage.setItem("voice_" + tlid, "true");
$("#sta-voice-" + tlid).text("On");
$("#sta-voice-" + tlid).css("color", '#009688');
parseColumn();
}
}
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_speech_refresh[lang], 3000);
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 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,10 +1,10 @@
//検索
//検索ボックストグル
function srcToggle() {
$("#src-box").toggleClass("hide");
$("#src-box").toggleClass("show");
$("#src-box").css("bottom","40px");
$("#src-box").css("left",$('#src-tgl').offset().left-$('#src-box').width()/2+"px");
function searchMenu() {
$("#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("");
}
@@ -14,119 +14,178 @@ function src(mode) {
$("#src-contents").html("");
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){
if (!mode) {
var start = "https://" + domain + "/api/v2/search?q=" + q
}else{
} else {
var start = "https://" + domain + "/api/v1/search?q=" + q
}
console.log(start)
console.log("Try to search at " + 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) {
src("v1")
return false;
}).then(function(json) {
console.log(json);
}).then(function (json) {
console.log(["Search", json]);
//ハッシュタグ
if (json.hashtags[0]) {
var tags = "";
Object.keys(json.hashtags).forEach(function(key4) {
Object.keys(json.hashtags).forEach(function (key4) {
var tag = json.hashtags[key4];
if(mode){
if (mode) {
tags = tags + '<a onclick="tl(\'tag\',\'' + tag + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + tag + '</a><br> ';
}else{
tags=tags+graphDraw(tag);
'\',\'add\')" class="pointer">#' + escapeHTML(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);
var templete = parse(json.statuses, '', acct_id);
$("#src-contents").append("Mentions<br>" + templete);
}
//アカウント
if (json.accounts[0]) {
var templete = userparse(json.accounts,'',acct_id);
var templete = userparse(json.accounts, '', acct_id);
$("#src-contents").append("Accounts<br>" + templete);
}
jQuery("time.timeago").timeago();
});
}
function tootsearch(q){
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();
}
function tootsearch(tlid, q) {
var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q
console.log(start)
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) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
}).catch(function (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 (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")
}
});
if(!templete){
templete=lang_details_nodata[lang];
}
$("#src-contents").html("Tootsearch("+lang_src_ts[lang]+")<br>" + templete);
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 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_src_people[lang];
}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_src_people[lang];
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) {
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>toots&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
} else {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'<g><path d="M0,' + six + ' L10,' + five + ' 20,' + four + ' 30,' + three + ' 40,' + two + ' 50,' + one + ' 60,' + zero + '" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>' +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
}
return tags;
}
/*

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) + "]").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,67 +45,86 @@ 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="";
Object.keys(obj).forEach(function(key) {
var tags = "";
var nowPT = localStorage.getItem("stable")
Object.keys(obj).forEach(function (key) {
var tag = obj[key];
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="' +lang_parse_tagTL[lang].replace("{{tag}}" ,'#'+tag)+ '">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer" title="' + lang_parse_tagtoot[lang].replace("{{tag}}" ,'#'+tag) + '">Toot</a> '+
'<a onclick="autoToot(\'#' + tag + ' \');brInsert(\'#' + tag + ' \')" class="pointer" title="'+lang_tags_always[lang] + lang_parse_tagtoot[lang].replace("{{tag}}" ,'#'+tag) + '">'+lang_tags_realtime[lang]+'</a> <a onclick="tagRemove(\'' + key + '\')" class="pointer" title="' +lang_tags_tagunpin[lang].replace("{{tag}}" ,'#'+tag)+ '">'+lang_del[lang]+'</a></span> ';
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 + ")";
}
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){
localStorage.setItem("stable",tag);
Materialize.toast(lang_tags_tagwarn[lang].replace("{{tag}}" ,tag).replace("{{tag}}" ,tag),3000);
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 + " ")
}
favTag();
}

File diff suppressed because it is too large Load Diff

View File

@@ -3,33 +3,33 @@
function imgv(id, key, acct_id) {
$("#imgprog").text(0);
$('#imgmodal').hide();
$('#imgmodal').attr('src', './img/loading.svg');
$('#imgmodal').attr('src', '../../img/loading.svg');
var murl = $("#" + id + "-image-" + key).attr("data-url");
var type = $("#" + id + "-image-" + key).attr("data-type");
$("#imagemodal").attr("data-id",id);
$("#imagemodal").attr("data-acct",acct_id);
$(document).ready(function() {
$("#imagemodal").attr("data-id", id);
$("#imagemodal").attr("data-acct", acct_id);
$(document).ready(function () {
if (type == "image") {
xhr = new XMLHttpRequest;
$('#imagemodal').modal('open');
xhr = new XMLHttpRequest;
xhr.open('GET', murl, true);
xhr.addEventListener('progress', function (event) {
if (event.lengthComputable) {
var total=event.total;
var now=event.loaded;
var per=now/total*100;
$("#imgprog").text(Math.floor(per));
}
if (event.lengthComputable) {
var total = event.total;
var now = event.loaded;
var per = now / total * 100;
$("#imgprog").text(Math.floor(per));
}
}, false);
xhr.addEventListener('loadend', function (event) {
var total=event.total;
var now=event.loaded;
var per=now/total*100;
var total = event.total;
var now = event.loaded;
var per = now / total * 100;
$("#imgprog").text(Math.floor(per));
}, false);
xhr.send();
$('#imgmodal').attr('src', murl);
$('#imagewrap').dragScroll(); // ドラッグスクロール設定
$('#imagemodal').modal('open');
$('#imgmodal').show();
$('#imagemodal').attr('data-key', key);
$('#imagemodal').attr('data-id', id);
@@ -40,68 +40,37 @@ function imgv(id, key, acct_id) {
}
var element = new Image();
var width;
element.onload = function() {
element.onload = function () {
var width = element.naturalWidth;
var height = element.naturalHeight;
var windowH = $(window).height();
var windowW = $(window).width();
//小さい画像
if(width<(windowW - 50) && height<(windowH-1000)){
$("#imgmodal").css('height',height+"px");
$("#imgmodal").css('width',width+"px");
$("#imagewrap").css('height',height+"px");
$("#imagemodal").css('height',height+100+"px");
$("#imagewrap").css('width',width+"px");
$("#imagemodal").css('width',width+"px");
$("#imagemodal").css('margin-top',(windowH /2) - (height / 2) +"px");
}else{
$("#imagemodal").css('margin-top',0);
var aspect = width/height;
if (aspect < 2.8 && aspect > 0.3){
//moderate
if(windowW > windowH){
//画面が横長(縦幅基準)
$("#imgmodal").css('height',windowH/1.2-70+"px");
var imgW = (windowH/1.2-70)/height*width;
$("#imgmodal").css('width',imgW+"px");
$("#imagewrap").css('height',windowH/1.2-60+"px");
$("#imagemodal").css('height',windowH/1.2+"px");
$("#imagewrap").css('width',imgW+50+"px");
$("#imagemodal").css('width',imgW+50+"px");
}else{
//画面が縦長・正方形(横幅基準)
$("#imgmodal").css('width',windowW/1.2-30+"px");
var imgH = (windowW/1.2-30)/width*height;
$("#imgmodal").css('height',imgH+"px");
$("#imagewrap").css('width',windowW/1.2+"px");
$("#imagemodal").css('width',windowW/1.2+"px");
$("#imagewrap").css('height',imgH+60+"px");
$("#imagemodal").css('height',imgH+120+"px");
}
}else{
//極端な画像
if(height > width){
//縦長
$("#imgmodal").css('height',windowH-60+"px");
var imgW = (windowH-50)/height*width;
$("#imgmodal").css('width',imgW+"px");
$("#imagewrap").css('height',windowH-50+"px");
$("#imagemodal").css('height',windowH+"px");
$("#imagewrap").css('width',imgW+50+"px");
$("#imagemodal").css('width',imgW+50+"px");
}else{
//横長・正方形
$("#imgmodal").css('width',windowW-30+"px");
var imgH = (windowW-50)/width*height;
$("#imgmodal").css('height',imgH+"px");
$("#imagewrap").css('width',windowW+"px");
$("#imagemodal").css('width',windowW+"px");
$("#imagewrap").css('height',imgH+60+"px");
$("#imagemodal").css('height',imgH+120+"px");
}
$("#imagemodal").css("bottom", "0")
$("#imagemodal img").css("width", "auto")
if (height < windowH) {
$("#imagemodal").css("height", height + 60 + "px")
$("#imagemodal img").css("height", "100%")
if (width > windowW * 0.8) {
$("#imagemodal").css("width", "80vw")
$("#imagemodal img").css("width", "100%")
var heightS = windowW * 0.8 / width * height;
$("#imagemodal").css("height", heightS + 60 + "px")
} else {
$("#imagemodal").css("width", width + "px")
}
} else {
$("#imagemodal img").css("width", "auto")
var widthS = windowH / height * width;
if (widthS < windowW) {
$("#imagemodal").css("width", widthS + "px")
} else {
$("#imagemodal").css("width", "100vw")
}
$("#imagemodal").css("height", "100vh")
$("#imagemodal img").css("height", "calc(100vh - 60px)")
}
}
if ($("#" + id + "-image-" + (key * 1 + 1)).length == 0) {
$("#image-next").prop("disabled", true);
@@ -127,130 +96,99 @@ function imgCont(type) {
key = key * 1 - 1;
}
var murl = $("#" + id + "-image-" + key).attr("data-url");
if(murl){
$('#imgmodal').attr('src', './img/loading.svg');
var type = $("#" + id + "-image-" + key).attr("data-type");
$(document).ready(function() {
if (type == "image") {
xhr = new XMLHttpRequest;
xhr.open('GET', murl, true);
xhr.addEventListener('progress', function (event) {
if (event.lengthComputable) {
var total=event.total;
var now=event.loaded;
var per=now/total*100;
$("#imgprog").text(Math.floor(per));
}
}, false);
xhr.addEventListener('loadend', function (event) {
var total=event.total;
var now=event.loaded;
var per=now/total*100;
$("#imgprog").text(Math.floor(per));
}, false);
xhr.send();
$('#imgmodal').attr('src', murl);
$('#imagewrap').dragScroll(); // ドラッグスクロール設定
$('#imagemodal').attr('data-key', key);
$('#imagemodal').attr('data-id', id);
} else if (type == "video" || type == "gifv") {
$('#video').attr('src', murl);
$('#videomodal').modal('open');
}
var element = new Image();
var width;
element.onload = function() {
var width = element.naturalWidth;
var height = element.naturalHeight;
var windowH = $(window).height();
var windowW = $(window).width();
//小さい画像
if(width<(windowW - 50) && height<(windowH-1000)){
$("#imgmodal").css('height',height+"px");
$("#imgmodal").css('width',width+"px");
$("#imagewrap").css('height',height+"px");
$("#imagemodal").css('height',height+100+"px");
$("#imagewrap").css('width',width+"px");
$("#imagemodal").css('width',width+"px");
$("#imagemodal").css('margin-top',(windowH /2) - (height / 2) +"px");
}else{
$("#imagemodal").css('margin-top',0);
var aspect = width/height;
if (aspect < 2.8 && aspect > 0.3){
//moderate
if(windowW > windowH){
//画面が横長(縦幅基準)
$("#imgmodal").css('height',windowH/1.2-70+"px");
var imgW = (windowH/1.2-70)/height*width;
$("#imgmodal").css('width',imgW+"px");
$("#imagewrap").css('height',windowH/1.2-60+"px");
$("#imagemodal").css('height',windowH/1.2+"px");
$("#imagewrap").css('width',imgW+50+"px");
$("#imagemodal").css('width',imgW+50+"px");
}else{
//画面が縦長・正方形(横幅基準)
$("#imgmodal").css('width',windowW/1.2-30+"px");
var imgH = (windowW/1.2-30)/width*height;
$("#imgmodal").css('height',imgH+"px");
$("#imagewrap").css('width',windowW/1.2+"px");
$("#imagemodal").css('width',windowW/1.2+"px");
$("#imagewrap").css('height',imgH+60+"px");
$("#imagemodal").css('height',imgH+120+"px");
if (murl) {
$('#imgmodal').attr('src', '../../img/loading.svg');
var type = $("#" + id + "-image-" + key).attr("data-type");
$(document).ready(function () {
if (type == "image") {
xhr = new XMLHttpRequest;
xhr.open('GET', murl, true);
xhr.responseType = "arraybuffer";
xhr.addEventListener('progress', function (event) {
if (event.lengthComputable) {
var total = event.total;
var now = event.loaded;
var per = now / total * 100;
$("#imgprog").text(Math.floor(per));
}
}else{
//極端な画像
if(height > width){
//縦長
$("#imgmodal").css('height',windowH-60+"px");
var imgW = (windowH-50)/height*width;
$("#imgmodal").css('width',imgW+"px");
$("#imagewrap").css('height',windowH-50+"px");
$("#imagemodal").css('height',windowH+"px");
$("#imagewrap").css('width',imgW+50+"px");
$("#imagemodal").css('width',imgW+50+"px");
}else{
//横長・正方形
$("#imgmodal").css('width',windowW-30+"px");
var imgH = (windowW-50)/width*height;
$("#imgmodal").css('height',imgH+"px");
$("#imagewrap").css('width',windowW+"px");
$("#imagemodal").css('width',windowW+"px");
$("#imagewrap").css('height',imgH+60+"px");
$("#imagemodal").css('height',imgH+120+"px");
}, false);
xhr.addEventListener('loadend', function (event) {
var total = event.total;
var now = event.loaded;
var per = now / total * 100;
$("#imgprog").text(Math.floor(per));
}, false);
xhr.send();
$('#imgmodal').attr('src', murl);
$('#imagewrap').dragScroll(); // ドラッグスクロール設定
$('#imagemodal').attr('data-key', key);
$('#imagemodal').attr('data-id', id);
} else if (type == "video" || type == "gifv") {
$('#video').attr('src', murl);
$('#videomodal').modal('open');
}
var element = new Image();
var width;
element.onload = function () {
var width = element.naturalWidth;
var height = element.naturalHeight;
var windowH = $(window).height();
var windowW = $(window).width();
$("#imagemodal").css("bottom", "0")
$("#imagemodal img").css("width", "auto")
if (height < windowH) {
$("#imagemodal").css("height", height + 60 + "px")
$("#imagemodal img").css("height", "100%")
if (width > windowW * 0.8) {
$("#imagemodal").css("width", "80vw")
$("#imagemodal img").css("width", "100%")
var heightS = windowW * 0.8 / width * height;
$("#imagemodal").css("height", heightS + 60 + "px")
} else {
$("#imagemodal").css("width", width + "px")
}
} else {
$("#imagemodal img").css("width", "auto")
var widthS = windowH / height * width;
if (widthS < windowW) {
$("#imagemodal").css("width", widthS + "px")
} else {
$("#imagemodal").css("width", "100vw")
}
$("#imagemodal").css("height", "100vh")
$("#imagemodal img").css("height", "calc(100vh - 60px)")
}
}
}
if ($("#" + id + "-image-" + (key * 1 + 1)).length == 0) {
$("#image-next").prop("disabled", true);
} else {
$("#image-next").prop("disabled", false);
}
console.log("#" + id + "-image-" + (key * 1 - 1));
if ($("#" + id + "-image-" + (key * 1 - 1)).length == 0) {
$("#image-prev").prop("disabled", true);
} else {
$("#image-prev").prop("disabled", false);
}
element.src = murl;
});
if ($("#" + id + "-image-" + (key * 1 + 1)).length === 0) {
$("#image-next").prop("disabled", true);
} else {
$("#image-next").prop("disabled", false);
}
if ($("#" + id + "-image-" + (key * 1 - 1)).length === 0) {
$("#image-prev").prop("disabled", true);
} else {
$("#image-prev").prop("disabled", false);
}
element.src = murl;
});
}
}
//ズームボタン(z:倍率)
function zoom(z) {
var wdth = $('#imagewrap img').width();
var wdth = wdth * z;
$('#imagewrap img').css("width", wdth+"px");
$('#imagewrap img').css("width", wdth + "px");
var hgt = $('#imagewrap img').height();
var hgt = hgt * z;
$('#imagewrap img').css("height", hgt+"px");
$('#imagewrap img').css("height", hgt + "px");
}
//スマホ対応ドラッグ移動システム
(function() {
$.fn.dragScroll = function() {
(function () {
$.fn.dragScroll = function () {
var target = this;
$(this).mousedown(function(event) {
$(this).mousedown(function (event) {
$(this)
.data('down', true)
.data('x', event.clientX)
@@ -263,7 +201,7 @@ function zoom(z) {
'cursor': 'move'
});
// ウィンドウから外れてもイベント実行
$(document).mousemove(function(event) {
$(document).mousemove(function (event) {
if ($(target).data('down') == true) {
// スクロール
target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') -
@@ -272,10 +210,10 @@ function zoom(z) {
event.clientY);
return false; // 文字列選択を抑止
}
}).mouseup(function(event) {
}).mouseup(function (event) {
$(target).data('down', false);
});
$(this).on('touchstart', function(event) {
$(this).on('touchstart', function (event) {
$(this)
.data('down', true)
.data('x', getX(event))
@@ -287,18 +225,17 @@ function zoom(z) {
'overflow': 'hidden', // スクロールバー非表示
'cursor': 'move'
}); //指が触れたか検知
$(this).on('touchmove', function(event) {
if ($(target).data('down') == true) {
$(this).on('touchmove', function (event) {
if ($(target).data('down') === true) {
// スクロール
console.log($(target).data('x'));
target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') -
getX(event));
target.scrollTop($(target).data('scrollTop') + $(target).data('y') -
getY(event));
return false; // 文字列選択を抑止
} else {}
} else { }
}); //指が動いたか検知
$(this).on('touchend', function(event) {
$(this).on('touchend', function (event) {
$(target).data('down', false);
});
@@ -315,7 +252,7 @@ function getY(event) {
}
//マウスホイールで拡大
var element = document.getElementById("imagemodal");
element.onmousewheel = function(e) {
element.onmousewheel = function (e) {
var delta = e.wheelDelta;
if (delta > 0) {
zoom(1.1)
@@ -325,27 +262,31 @@ element.onmousewheel = function(e) {
}
//当該トゥート
function detFromImg(){
var id=$("#imagemodal").attr("data-id");
var acct_id=$("#imagemodal").attr("data-acct");
function detFromImg() {
var id = $("#imagemodal").attr("data-id");
var acct_id = $("#imagemodal").attr("data-acct");
$('#imagemodal').modal('close');
details(id,acct_id);
details(id, acct_id);
}
//画像保存
function dlImg(){
var url=$("#imgmodal").attr("src");
function dlImg() {
var url = $("#imgmodal").attr("src");
var electron = require("electron");
var ipc = electron.ipcRenderer;
if(localStorage.getItem("savefolder")){
var save=localStorage.getItem("savefolder");
}else{
var save="";
if (localStorage.getItem("savefolder")) {
var save = localStorage.getItem("savefolder");
} else {
var save = "";
}
ipc.send('general-dl', [url,save,false]);
ipc.send('general-dl', [url, save, false]);
ipc.on('general-dl-prog', function (event, arg) {
console.log(arg);
console.log("Progress: " + arg);
})
ipc.on('general-dl-message', function (event, arg) {
console.log(arg);
var argC = arg.replace(/\\/g, "\\\\") + "\\\\.";
Materialize.toast(lang.lang_img_DLDone + arg + '<button class="btn-flat toast-action" onclick="openFinder(\'' + argC + '\')">Show</button>', 5000);
})
}
function openFinder(dir) {
ipc.send('open-finder', dir);
}

View File

@@ -7,59 +7,70 @@ var websocketLocal = [];
var websocketNotf = [];
//カラム追加ボックストグル
function addToggle() {
$("#add-box").toggleClass("hide");
function addColumnMenu() {
$("#left-menu div").removeClass("active");
$("#addColumnMenu").addClass("active");
$(".menu-content").addClass("hide");
$("#add-box").removeClass("hide");
addselCk()
$("#add-box").css("bottom","40px");
$("#add-box").css("left",$('#add-tgl').offset().left-$('#add-box').width()/2+"px");
$("#add-box").toggleClass("show");
}
$('.type').click(function () {
$(".type").removeClass("active");
$(this).addClass("active");
$("#type-sel").val($(this).attr("data-type"))
})
//最初、カラム変更時に発火
function parseColumn() {
console.log("parse");
function parseColumn(dontclose) {
console.log("%c Parse column", "color:red;font-size:125%");
var size = localStorage.getItem("size");
if (size) {
$("#timeline-container").css("font-size", size + "px");
$(".toot-reset").css("font-size", size + "px");
$(".cont-series").css("font-size", size + "px");
}
tlCloser();
if (localStorage.getItem("menu-done")) {
$("#fukidashi").addClass("hide")
}
if (!dontclose) {
tlCloser();
}
var multi = localStorage.getItem("multi");
if (!multi) {
var obj = [];
var json = JSON.stringify(obj);
localStorage.setItem("multi", json);
} else {
if (multi) {
var obj = JSON.parse(multi);
var templete;
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var acct = obj[key];
localStorage.setItem("name_" + key, acct.name);
localStorage.setItem("user_" + key, acct.user);
localStorage.setItem("user-id_" + key, acct.id);
localStorage.setItem("prof_" + key, acct.prof);
localStorage.setItem("domain_" + key, acct.domain);
localStorage.setItem("acct_"+ key + "_at", acct.at);
localStorage.setItem("acct_" + key + "_at", acct.at);
notf(key, 0);
ckdb(key);
//フィルターデータ読もう
getFilter(key);
var domain = localStorage.getItem("domain_" + key);
if (localStorage.getItem("mode_" + domain) == "misskey") {
localStorage.removeItem("misskey_wss_" + key)
connectMisskey(key)
}
});
}
var acctlist=obj;
console.log(obj);
var xed=localStorage.getItem("xed");
var acctlist = obj;
console.table(obj);
/*var xed=localStorage.getItem("xed");
if(xed){
xpand();
}
}*/
var col = localStorage.getItem("column");
if (!col) {
var obj = [{
domain: 0,
type: 'local'
}];
localStorage.setItem("card_0","true");
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
} else {
@@ -68,152 +79,227 @@ function parseColumn() {
if ($("#timeline-container").length) {
$("#timeline-container").html("");
}
Object.keys(obj).forEach(function(key) {
var basekey = 0;
for (var key = 0; key < obj.length; key++) {
var next = key + 1;
var acct = obj[key];
if(acct.type=="notf"){
var notf_attr=' data-notf='+acct.domain;
var if_notf="hide";
}else{
var notf_attr='';
var if_notf="";
if (acct.type == "notf") {
var notf_attr = ' data-notf=' + acct.domain;
var if_notf = "hide";
} else {
var notf_attr = '';
var if_notf = "";
}
if(localStorage.getItem("notification_" + acct.domain)){
var unique_notf=lang_layout_thisacct[lang].replace("{{notf}}" ,localStorage.getItem("notification_" + acct.domain));
}else{
if(lang=="ja"){
var notflocale="通知";
}else if(lang=="en"){
var notflocale="Notification";
}
var unique_notf=lang_layout_thisacct[lang].replace("{{notf}}" ,notflocale);
}
var insert="";
var icnsert="";
if(acct.background){
if(acct.text=="def"){
}else{
if(acct.text=="black"){
var txhex="000000";
var ichex="9e9e9e"
}else if(acct.text=="white"){
var txhex="ffffff";
var ichex="eeeeee"
if (localStorage.getItem("notification_" + acct.domain)) {
var unique_notf = lang.lang_layout_thisacct.replace("{{notf}}", localStorage.getItem("notification_" + acct.domain));
} else {
if (lang.language == "ja") {
var notflocale = "通知";
} else if (lang.language == "en") {
var notflocale = "Notification";
}
insert='background-color:#'+acct.background+'; color: #'+txhex+'; ';
icnsert=' style="color: #'+ichex+'" ';
var unique_notf = lang.lang_layout_thisacct.replace("{{notf}}", notflocale);
}
var insert = "";
var icnsert = "";
if (acct.background) {
if (acct.text == "def") {
} else {
if (acct.text == "black") {
var txhex = "000000";
var ichex = "9e9e9e"
} else if (acct.text == "white") {
var txhex = "ffffff";
var ichex = "eeeeee"
}
insert = 'background-color:#' + acct.background + '; color: #' + txhex + '; ';
icnsert = ' style="color: #' + ichex + '" ';
}
}
console.log(acct.domain);
if(acctlist[acct.domain]){
if(acctlist[acct.domain].background!="def"){
insert=insert+" border-bottom:medium solid #"+acctlist[acct.domain].background;
console.log(acct);
if (acctlist[acct.domain]) {
if (acctlist[acct.domain].background != "def") {
insert = insert + " border-bottom:medium solid #" + acctlist[acct.domain].background + ";";
}
}
if(acct.type=="notf" && localStorage.getItem("setasread")=="no"){
localStorage.setItem("hasNotfC_" + acct.domain,"true");
}else{
if (acct.type == "notf" && localStorage.getItem("setasread") == "no") {
localStorage.setItem("hasNotfC_" + acct.domain, "true");
} else {
localStorage.removeItem("hasNotfC_" + acct.domain);
}
if(acct.type=="webview"){
var html =webview("https://tweetdeck.twitter.com",key,insert,icnsert);
if (acct.type == "webview") {
if (localStorage.getItem("fixwidth")) {
var fixwidth = localStorage.getItem("fixwidth");
var css = " min-width:" + fixwidth + "px;"
} else {
var css = "";
}
var html = webviewParse("https://tweetdeck.twitter.com", key, insert, icnsert, css);
$("#timeline-container").append(html);
}else{
var html = '<div class="box" id="timeline_box_' + key + '_box" tlid="' + key +
'" data-acct="'+acct.domain+'"><div class="notice-box z-depth-2" id="menu_'+key+'" style="'+insert+'">'+
'<div class="area-notice"><i class="material-icons waves-effect red-text" id="notice_icon_' + key + '"'+notf_attr+' style="font-size:40px; padding-top:25%;" onclick="goTop(' + key + ')" title="'+lang_layout_gotop[lang]+'"></i></div>'+
'<div class="area-notice_name"><span id="notice_' + key + '" class="tl-title"></span></div>'+
'<div class="area-a1"><a onclick="notfToggle(' + acct.domain + ',' + key +
')" class="setting nex '+if_notf+'" title="'+unique_notf+'"'+icnsert+'><i class="material-icons waves-effect nex notf-icon_' +
acct.domain + '">notifications</i></div><div class="area-sta"><span class="new badge teal notf-reply_'+acct.domain+' hide" data-badge-caption="Reply">0</span><span class="new badge yellow black-text notf-fav_'+acct.domain+' hide" data-badge-caption="Fav">0</span><span class="new badge blue notf-bt_'+acct.domain+' hide" data-badge-caption="BT">0</span><span class="new badge orange notf-follow_'+acct.domain+' hide" data-badge-caption="Follow">0</span></a></div>'+
'<div class="area-a2"><a onclick="removeColumn(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang_layout_delthis[lang]+'"'+icnsert+'>cancel</i></a></div>'+
'<div class="area-a3"><a onclick="setToggle(' + key +
')" class="setting nex" title="'+lang_layout_setthis[lang]+'"'+icnsert+'><i class="material-icons waves-effect nex">settings</i></a></div></div>'+
'<div class="column-hide notf-indv-box z-depth-4" id="notf-box_' + key +
'"><div id="notifications_' + key +
'" data-notf="' + acct.domain + '" data-type="notf"></div></div><div class="column-hide notf-indv-box" id="util-box_' + key +
'" style="padding:5px;"><a onclick="mediaToggle(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang_layout_mediafil[lang]+'">perm_media</i><span id="sta-media-' +
key + '">On</span></a>'+lang_layout_mediafil[lang]+'<br><a onclick="cardToggle(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang_layout_linkanades[lang]+'">link</i><span id="sta-card-' +
key + '">On</span></a>'+lang_layout_linkana[lang]+'<br><a onclick="voiceToggle(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang_layout_tts[lang]+'">hearing</i><span id="sta-voice-' +
key + '">On</span></a>'+lang_layout_tts[lang]+'TL<br><a onclick="reconnector(' + key +
',\''+acct.type+'\',\''+acct.domain+'\',\''+acct.data+'\')" class="setting nex '+if_notf+'"><i class="material-icons waves-effect nex '+if_notf+'" title="'+lang_layout_reconnect[lang]+'">low_priority</i></a><span class="'+if_notf+'">'+lang_layout_reconnect[lang]+'</span><br>'+lang_layout_headercolor[lang]+'<br><div id="picker_'+key+'" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '"><div id="timeline_' + key +
'" class="tl" tlid="' + key + '"'+notf_attr+' data-type="' + acct.type + '"><div id="landing_'+key+'" style="text-align:center">'+lang_layout_nodata[lang]+'</div></div></div></div>';
$("#timeline-container").append(html);
localStorage.removeItem("pool_" + key);
if (acct.data) {
var data = acct.data;
} else if (acct.type == "tootsearch") {
if (!acct.left_fold) {
basekey = key;
}
var width = localStorage.getItem("width");
if (width) {
var css = " min-width:" + width + "px;"
}
var anime = localStorage.getItem("animation");
if (anime == "yes" || !anime) {
var animecss = "box-anime";
} else {
var animecss = "";
}
unstreamingTL(acct.type, key, basekey, insert, icnsert, acct.left_fold, css, animecss, acct.data);
} else {
var data = "";
}
if(localStorage.getItem("catch_" + key)){
var delc="true";
}else{
var delc="false";
}
var width = localStorage.getItem("width");
if (width) {
var css = " min-width:" + width + "px;"
}
var anime = localStorage.getItem("animation");
if (anime == "yes" || !anime) {
var animecss = "box-anime";
} else {
var animecss = "";
}
if (acct.type == "notf") {
var exclude = lang.lang_excluded + ':<br><input type="checkbox" class="filled-in" id="exc-reply-' + key + '" ' + excludeCk(key, "mention") + ' /><label for="exc-reply-' + key + '" class="exc-chb"><i class="fas fa-share exc-icons"></i></label> ' +
'<input type="checkbox" class="filled-in" id="exc-fav-' + key + '" ' + excludeCk(key, "favourite") + ' /><label for="exc-fav-' + key + '" class="exc-chb"><i class="fas fa-star exc-icons"></i></label> ' +
'<input type="checkbox" class="filled-in" id="exc-bt-' + key + '" ' + excludeCk(key, "reblog") + ' /><label for="exc-bt-' + key + '" class="exc-chb" ><i class="fas fa-retweet exc-icons"></i></label> ' +
'<input type="checkbox" class="filled-in" id="exc-follow-' + key + '" ' + excludeCk(key, "follow") + ' /><label for="exc-follow-' + key + '" class="exc-chb" ><i class="fas fa-users exc-icons"></i></label> ' +
'<input type="checkbox" class="filled-in" id="exc-poll-' + key + '" ' + excludeCk(key, "poll") + ' /><label for="exc-poll-' + key + '" class="exc-chb" ><i class="fas fa-tasks exc-icons"></i></label> ' +
'<button class="btn waves-effect" style="width:60px; padding:0;" onclick="exclude(' + key + ')">Filter</button>';
if(checkNotfFilter(key)){
exclude=exclude+'<button class="btn red waves-effect" style="width:60px; padding:0;" onclick="resetNotfFilter(' + key + ')">Clear all</button>'
}
exclude=exclude+"<br>";
} else if (acct.type == "home") {
var exclude = '<a onclick="ebtToggle(' + key +
')" class="setting nex"><i class="fas fa-retweet waves-effect nex" title="' + lang.lang_layout_excludingbt + '" style="font-size:24px"></i><span id="sta-bt-' +
key + '">Off</span></a>' + lang.lang_layout_excludingbt + '<br>';
} else {
var exclude = "";
}
if (!acct.left_fold) {
basekey = key;
var basehtml = '<div style="' + css + '" class="box ' + animecss + '" id="timeline_box_' + basekey + '_parentBox"></div>';
$("#timeline-container").append(basehtml);
var left_hold = '<a onclick="leftFoldSet(' + key + ')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_leftFold + '">view_agenda</i></a>' + lang.lang_layout_leftFold + '</span><br>';
} else {
var left_hold = '<a onclick="leftFoldRemove(' + key + ')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_leftUnfold + '">view_column</i></a>' + lang.lang_layout_leftUnfold + '</span><br>';
}
if (key === 0) {
left_hold = '';
}
if (localStorage.getItem("mode_" + localStorage.getItem("domain_" + acct.domain)) == "misskey") {
var isMisRed = ""
exclude = ""
var if_misskey_hide = "hide"
} else {
var isMisRed = "red-text"
var if_misskey_hide = ""
}
var html = '<div class="boxIn" id="timeline_box_' + key + '_box" tlid="' + key +
'" data-acct="' + acct.domain + '"><div class="notice-box z-depth-2" id="menu_' + key + '" style="' + insert + ' ">' +
'<div class="area-notice"><i class="material-icons waves-effect ' + isMisRed + '" id="notice_icon_' + key + '"' + notf_attr + ' style="font-size:40px; padding-top:25%;" onclick="checkStr(\'' + acct.type + '\', \'' + data + '\', \'' + acct.domain + '\', \'' + key + '\', \'' + delc + '\',\'' + voice + '\',null)" title="' + lang.lang_layout_gotop + '"></i></div>' +
'<div class="area-notice_name"><span id="notice_' + key + '" class="tl-title"></span></div>' +
'<div class="area-a1"><a onclick="notfToggle(' + acct.domain + ',' + key +
')" class="setting nex ' + if_notf + '" title="' + unique_notf + '"' + icnsert + '><i class="material-icons waves-effect nex notf-icon_' +
acct.domain + '">notifications</i></div><div class="area-sta"><span class="new badge teal notf-reply_' + acct.domain + ' hide" data-badge-caption="Reply">0</span><span class="new badge yellow black-text notf-fav_' + acct.domain + ' hide" data-badge-caption="Fav">0</span><span class="new badge blue notf-bt_' + acct.domain + ' hide" data-badge-caption="BT">0</span><span class="new badge orange notf-follow_' + acct.domain + ' hide" data-badge-caption="Follow">0</span></a></div>' +
'<div class="area-a2"><a onclick="removeColumn(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_delthis + '"' + icnsert + '>cancel</i></a></div>' +
'<div class="area-a3"><a onclick="setToggle(' + key +
')" class="setting nex" title="' + lang.lang_layout_setthis + '"' + icnsert + '><i class="material-icons waves-effect nex">settings</i></a></div></div>' +
'<div class="column-hide notf-indv-box z-depth-4" id="notf-box_' + key +
'"><div id="notifications_' + key +
'" data-notf="' + acct.domain + '" data-type="notf" class="notf-timeline"></div></div><div class="column-hide notf-indv-box" id="util-box_' + key +
'" style="padding:5px;">' + exclude + left_hold + '<a onclick="mediaToggle(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_mediafil + '">perm_media</i><span id="sta-media-' +
key + '">On</span></a>' + lang.lang_layout_mediafil + '<br><a onclick="cardToggle(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_linkanades + '">link</i><span id="sta-card-' +
key + '">On</span></a>' + lang.lang_layout_linkana + '<br><a onclick="voiceToggle(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_tts + '">hearing</i><span id="sta-voice-' +
key + '">On</span></a>' + lang.lang_layout_tts + 'TL<br><a onclick="reconnector(' + key +
',\'' + acct.type + '\',\'' + acct.domain + '\',\'' + escapeHTML(acct.data) + '\')" class="setting nex ' + if_notf + ' ' + if_misskey_hide + '"><i class="material-icons waves-effect nex ' + if_notf + '" title="' + lang.lang_layout_reconnect + '">low_priority</i></a><span class="' + if_notf + '">' + lang.lang_layout_reconnect + '</span><br>' + lang.lang_layout_headercolor + '<br><div id="picker_' + key + '" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '"><div id="timeline_' + key +
'" class="tl ' + acct.type + '-timeline " tlid="' + key + '" data-type="' + acct.type + '" data-acct="' + acct.domain + '" data-const="' + acct.type + '_' + acct.domain + '"><div id="landing_' + key + '" style="text-align:center">' + lang.lang_layout_nodata + '</div></div></div>'
$('#timeline_box_' + basekey + '_parentBox').append(html);
localStorage.removeItem("pool_" + key);
if (acct.data) {
var data = acct.data;
} else {
var data = "";
}
if (localStorage.getItem("catch_" + key)) {
var delc = "true";
} else {
var delc = "false";
}
if(localStorage.getItem("voice_" + key)){
var voice=true;
}else{
var voice=false;
if (localStorage.getItem("voice_" + key)) {
var voice = true;
} else {
var voice = false;
}
tl(acct.type, data, acct.domain, key, delc, voice, "");
cardCheck(key);
ebtCheck(key);
mediaCheck(key);
catchCheck(key);
voiceCheck(key);
}
tl(acct.type, data, acct.domain, key, delc,voice,"");
cardCheck(key);
mediaCheck(key);
catchCheck(key);
voiceCheck(key);
}
});
var width = localStorage.getItem("width");
if (width) {
$(".box").css("min-width", width + "px");
}
var box = localStorage.getItem("box");
if (box == "absolute") {
setTimeout(show, 1000);
}
if(localStorage.getItem("reverse")){
if (localStorage.getItem("reverse")) {
$("#bottom").removeClass("reverse");
$(".leftside").removeClass("reverse");
}
if(localStorage.getItem("sec") && localStorage.getItem("sec")!="nothing"){
if (localStorage.getItem("sec") && localStorage.getItem("sec") != "nothing") {
secvis(localStorage.getItem("sec"));
}
favTag();
var cw = localStorage.getItem("always-cw");
if (cw == "yes") {
if(!$("#cw").hasClass("cw-avail")){
if (!$("#cw").hasClass("cw-avail")) {
$("#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);
}
}
}
}
function checkStr(type, data, acct_id, key, delc, voice) {
if ($('#notice_icon_' + key).hasClass("red-text") && type != "notf" && type != "mix") {
goTop(key);
tlDiff(type, data, acct_id, key, delc, voice, "");
} else {
goTop(key);
}
}
//セカンダリートゥートボタン
function secvis(set){
if(set=="public"){
function secvis(set) {
if (set == "public") {
$("#toot-sec-icon").text("public");
$("#toot-sec-btn").addClass("purple");
}else if(set=="unlisted"){
} else if (set == "unlisted") {
$("#toot-sec-icon").text("lock_open");
$("#toot-sec-btn").addClass("blue");
}else if(set=="private"){
} else if (set == "private") {
$("#toot-sec-icon").text("lock");
$("#toot-sec-btn").addClass("orange");
}else if(set=="direct"){
} else if (set == "direct") {
$("#toot-sec-icon").text("mail");
$("#toot-sec-btn").addClass("red");
}else if(set=="limited"){
} else if (set == "limited") {
$("#toot-sec-icon").text("group");
$("#toot-sec-btn").addClass("teal");
}else if(set=="local"){
} else if (set == "local") {
$("#toot-sec-icon").text("visibility");
$("#toot-sec-btn").addClass("light-blue");
}
@@ -222,14 +308,16 @@ function secvis(set){
//カラム追加
function addColumn() {
var acct = $("#add-acct-sel").val();
localStorage.setItem("last-use", acct);
if(acct != "webview" && acct != "noauth"){
localStorage.setItem("last-use", acct);
}
var type = $("#type-sel").val();
if(acct=="noauth"){
acct=$("#noauth-url").val();
type="noauth"
}else if(acct=="webview"){
acct="";
type="webview"
if (acct == "noauth") {
acct = $("#noauth-url").val();
type = "noauth"
} else if (acct == "webview") {
acct = "";
type = "webview"
}
var add = {
domain: acct,
@@ -237,43 +325,39 @@ function addColumn() {
};
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
if(!obj){
var leng=0;
localStorage.setItem("card_" + leng,"true");
if (!obj) {
var leng = 0;
var json = JSON.stringify([add]);
localStorage.setItem("column", json);
}else{
var leng=obj.length;
localStorage.setItem("card_" + leng,"true");
} else {
var leng = obj.length;
obj.push(add);
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
}
parseColumn();
}
function addselCk(){
function addselCk() {
var acct = $("#add-acct-sel").val();
var domain=localStorage.getItem("domain_" + acct);
if(acct=="webview"){
var domain = localStorage.getItem("domain_" + acct);
if (acct == "webview") {
$("#auth").addClass("hide");
$("#noauth").addClass("hide");
$("#webview-add").removeClass("hide");
}else if(acct=="noauth"){
} else if (acct == "noauth") {
$("#auth").addClass("hide");
$("#noauth").removeClass("hide");
$("#webview-add").addClass("hide");
}else{
} else {
$("#auth").removeClass("hide");
$("#noauth").addClass("hide");
$("#webview-add").addClass("hide");
}
if(domain=="knzk.me" || domain=="mstdn.y-zu.org"){
$("#type-sel").append('<option value="dm" data-trans="dm" id="direct-add">'+lang_layout_dm[lang]+'</option>');
$('#type-sel').material_select('update');
}else{
if (domain == "knzk.me" || domain == "mstdn.y-zu.org") {
$("#type-sel").append('<option value="dm" data-trans="dm" id="direct-add">' + lang.layout_dm + '</option>');
} else {
$("#direct-add").remove();
$('#type-sel').material_select('update');
}
}
//カラム削除
@@ -287,12 +371,11 @@ function removeColumn(tlid) {
var ipc = electron.ipcRenderer;
ipc.send('column-del', "");
ipc.on('column-del-reply', function (event, arg) {
console.log(arg);
if(arg==1){
if (arg === 1) {
localStorage.removeItem("card_" + tlid);
obj.splice(tlid, 1);
for(var i=0;i<obj.length;i++){
localStorage.setItem("card_" + i,"true");
for (var i = 0; i < obj.length; i++) {
localStorage.setItem("card_" + i, "true");
localStorage.removeItem("catch_" + i);
}
var json = JSON.stringify(obj);
@@ -306,96 +389,143 @@ function removeColumn(tlid) {
//設定トグル
function setToggle(tlid) {
colorpicker(tlid);
if($("#util-box_" + tlid).hasClass("column-hide")){
$("#util-box_" + tlid).css("display","block")
if ($("#util-box_" + tlid).hasClass("column-hide")) {
$("#util-box_" + tlid).css("display", "block")
$("#util-box_" + tlid).animate({
'height': '200px'
},{
'duration': 300,
'complete': function(){
$("#util-box_" + tlid).css("overflow-y","scroll")
$("#util-box_" + tlid).removeClass("column-hide")
}
});
}else{
$("#util-box_" + tlid).css("overflow-y","hidden")
}, {
'duration': 300,
'complete': function () {
$("#util-box_" + tlid).css("overflow-y", "scroll")
$("#util-box_" + tlid).removeClass("column-hide")
}
});
} else {
$("#util-box_" + tlid).css("overflow-y", "hidden")
$("#util-box_" + tlid).animate({
'height': '0'
},{
'duration': 300,
'complete': function(){
$("#util-box_" + tlid).addClass("column-hide")
$("#util-box_" + tlid).css("display","none")
}
});
}, {
'duration': 300,
'complete': function () {
$("#util-box_" + tlid).addClass("column-hide")
$("#util-box_" + tlid).css("display", "none")
}
});
}
}
function colorpicker(key){
temp=
'<div onclick="coloradd('+key+',\'def\',\'def\')" class="pointer">Default</div>'+
'<div onclick="coloradd('+key+',\'f44336\',\'white\')" class="red white-text pointer">Red</div>'+
'<div onclick="coloradd('+key+',\'e91e63\',\'white\')" class="pink white-text pointer">Pink</div>'+
'<div onclick="coloradd('+key+',\'9c27b0\',\'white\')" class="purple white-text pointer">Purple</div>'+
'<div onclick="coloradd('+key+',\'673ab7\',\'white\')" class="deep-purple white-text pointer">Deep-purple</div>'+
'<div onclick="coloradd('+key+',\'3f51b5\',\'white\')" class="indigo white-text pointer">Indigo</div>'+
'<div onclick="coloradd('+key+',\'2196f3\',\'white\')" class="blue white-text pointer">Blue</div>'+
'<div onclick="coloradd('+key+',\'03a9f4\',\'black\')" class="light-blue black-text pointer">Light-blue</div>'+
'<div onclick="coloradd('+key+',\'00bcd4\',\'black\')" class="cyan black-text pointer">Cyan</div>'+
'<div onclick="coloradd('+key+',\'009688\',\'white\')" class="teal white-text pointer">Teal</div>'+
'<div onclick="coloradd('+key+',\'4caf50\',\'black\')" class="green black-text pointer">Green</div>'+
'<div onclick="coloradd('+key+',\'8bc34a\',\'black\')" class="light-green black-text pointer">Light-green</div>'+
'<div onclick="coloradd('+key+',\'cddc39\',\'black\')" class="lime black-text pointer">Lime</div>'+
'<div onclick="coloradd('+key+',\'ffeb3b\',\'black\')" class="yellow black-text pointer">Yellow</div>'+
'<div onclick="coloradd('+key+',\'ffc107\',\'black\')" class="amber black-text pointer">Amber</div>'+
'<div onclick="coloradd('+key+',\'ff9800\',\'black\')" class="orange black-text pointer">Orange</div>'+
'<div onclick="coloradd('+key+',\'ff5722\',\'white\')" class="deep-orange white-text pointer">Deep-orange</div>'+
'<div onclick="coloradd('+key+',\'795548\',\'white\')" class="brown white-text pointer">Brown</div>'+
'<div onclick="coloradd('+key+',\'9e9e9e\',\'white\')" class="grey white-text pointer">Grey</div>'+
'<div onclick="coloradd('+key+',\'607d8b\',\'white\')" class="blue-grey white-text pointer">Blue-grey</div>'+
'<div onclick="coloradd('+key+',\'000000\',\'white\')" class="black white-text pointer">Black</div>'+
'<div onclick="coloradd('+key+',\'ffffff\',\'black\')" class="white black-text pointer">White</div>';
$("#picker_"+key).html(temp);
function colorpicker(key) {
temp =
'<div onclick="coloradd(' + key + ',\'def\',\'def\')" class="pointer">Default</div>' +
'<div onclick="coloradd(' + key + ',\'f44336\',\'white\')" class="red white-text pointer">Red</div>' +
'<div onclick="coloradd(' + key + ',\'e91e63\',\'white\')" class="pink white-text pointer">Pink</div>' +
'<div onclick="coloradd(' + key + ',\'9c27b0\',\'white\')" class="purple white-text pointer">Purple</div>' +
'<div onclick="coloradd(' + key + ',\'673ab7\',\'white\')" class="deep-purple white-text pointer">Deep-purple</div>' +
'<div onclick="coloradd(' + key + ',\'3f51b5\',\'white\')" class="indigo white-text pointer">Indigo</div>' +
'<div onclick="coloradd(' + key + ',\'2196f3\',\'white\')" class="blue white-text pointer">Blue</div>' +
'<div onclick="coloradd(' + key + ',\'03a9f4\',\'black\')" class="light-blue black-text pointer">Light-blue</div>' +
'<div onclick="coloradd(' + key + ',\'00bcd4\',\'black\')" class="cyan black-text pointer">Cyan</div>' +
'<div onclick="coloradd(' + key + ',\'009688\',\'white\')" class="teal white-text pointer">Teal</div>' +
'<div onclick="coloradd(' + key + ',\'4caf50\',\'black\')" class="green black-text pointer">Green</div>' +
'<div onclick="coloradd(' + key + ',\'8bc34a\',\'black\')" class="light-green black-text pointer">Light-green</div>' +
'<div onclick="coloradd(' + key + ',\'cddc39\',\'black\')" class="lime black-text pointer">Lime</div>' +
'<div onclick="coloradd(' + key + ',\'ffeb3b\',\'black\')" class="yellow black-text pointer">Yellow</div>' +
'<div onclick="coloradd(' + key + ',\'ffc107\',\'black\')" class="amber black-text pointer">Amber</div>' +
'<div onclick="coloradd(' + key + ',\'ff9800\',\'black\')" class="orange black-text pointer">Orange</div>' +
'<div onclick="coloradd(' + key + ',\'ff5722\',\'white\')" class="deep-orange white-text pointer">Deep-orange</div>' +
'<div onclick="coloradd(' + key + ',\'795548\',\'white\')" class="brown white-text pointer">Brown</div>' +
'<div onclick="coloradd(' + key + ',\'9e9e9e\',\'white\')" class="grey white-text pointer">Grey</div>' +
'<div onclick="coloradd(' + key + ',\'607d8b\',\'white\')" class="blue-grey white-text pointer">Blue-grey</div>' +
'<div onclick="coloradd(' + key + ',\'000000\',\'white\')" class="black white-text pointer">Black</div>' +
'<div onclick="coloradd(' + key + ',\'ffffff\',\'black\')" class="white black-text pointer">White</div>';
$("#picker_" + key).html(temp);
}
function coloradd(key,bg,txt){
function coloradd(key, bg, txt) {
var col = localStorage.getItem("column");
var o = JSON.parse(col);
var obj=o[key];
obj.background=bg;
obj.text=txt;
o[key]=obj;
var obj = o[key];
obj.background = bg;
obj.text = txt;
o[key] = obj;
var json = JSON.stringify(o);
localStorage.setItem("column", json);
if(txt=="def"){
$("#menu_"+key).css("background-color","");
$("#menu_"+key).css("color","");
}else{
$("#menu_"+key).css('background-color','#'+bg);
if(txt=="black"){
var bghex="000000";
var ichex="9e9e9e"
}else if(txt=="white"){
var bghex="ffffff";
var ichex="eeeeee"
}
$("#menu_"+key+" .nex").css('color','#'+ichex);
$("#menu_"+key).css('color','#'+bghex);
if (txt == "def") {
$("#menu_" + key).css("background-color", "");
$("#menu_" + key).css("color", "");
} else {
$("#menu_" + key).css('background-color', '#' + bg);
if (txt == "black") {
var bghex = "000000";
var ichex = "9e9e9e"
} else if (txt == "white") {
var bghex = "ffffff";
var ichex = "eeeeee"
}
$("#menu_" + key + " .nex").css('color', '#' + ichex);
$("#menu_" + key).css('color', '#' + bghex);
}
}
//禁断のTwitter
function webview(url,key,insert,icnsert){
function webviewParse(url, key, insert, icnsert, css) {
var html = '<div class="box" id="timeline_box_' + key + '_box" tlid="' + key +
'"><div class="notice-box z-depth-2" id="menu_'+key+'" style="'+insert+'">'+
'<div class="area-notice"><i class="fa fa-twitter waves-effect" id="notice_icon_' + key + '" style="font-size:40px; padding-top:25%;"></i></div>'+
'<div class="area-notice_name tl-title">WebView('+url+')</div>'+
'<div class="area-sta"><input type="checkbox" id="webviewsel" value="true" class="filled-in"><label for="webviewsel">'+lang_layout_webviewmode[lang]+'</label></div>'+
'<div class="area-a2"><a onclick="removeColumn(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="'+lang_layout_delthis[lang]+'"'+icnsert+'>cancel</i></a></div>'+
'<div class="area-a3"><a onclick="setToggle(' + key +
')" class="setting nex" title="'+lang_layout_setthis[lang]+'"'+icnsert+'><i class="material-icons waves-effect nex">settings</i></a></div></div>'+
'<div class="column-hide notf-indv-box z-depth-4" id="notf-box_' + key +
'"></div><div class="column-hide notf-indv-box" id="util-box_' + key +
'" style="padding:5px;">'+lang_layout_headercolor[lang]+'<br><div id="picker_'+key+'" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '" style="width:100%;height:calc(100% - 110px);"><div id="timeline_' + key +
'" class="tl" tlid="' + key + '" data-type="webview" style="width:100%;height:100%;"><webview src="'+url+'" style="width:100%;height:100%;" id="webview" preload="./js/platform/twitter.js"></webview></div></div></div>';
'" style="' + css + '"><div class="notice-box z-depth-2" id="menu_' + key + '" style="' + insert + '">' +
'<div class="area-notice"><i class="fab fa-twitter waves-effect" id="notice_icon_' + key + '" style="font-size:40px; padding-top:25%;"></i></div>' +
'<div class="area-notice_name tl-title">WebView(' + url + ')</div>' +
'<div class="area-sta"><input type="checkbox" id="webviewsel" value="true" class="filled-in"><label for="webviewsel">' + lang.lang_layout_webviewmode + '</label></div>' +
'<div class="area-a2"><a onclick="removeColumn(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_delthis + '"' + icnsert + '>cancel</i></a></div>' +
'<div class="area-a3"><a onclick="setToggle(' + key +
')" class="setting nex" title="' + lang.lang_layout_setthis + '"' + icnsert + '><i class="material-icons waves-effect nex">settings</i></a></div></div>' +
'<div class="column-hide notf-indv-box z-depth-4" id="notf-box_' + key +
'"></div><div class="column-hide notf-indv-box" id="util-box_' + key +
'" style="padding:5px;">' + lang.lang_layout_headercolor + '<br><div id="picker_' + key + '" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '" style="width:100%;height:100%;"><div id="timeline_' + key +
'" class="tl" tlid="' + key + '" data-type="webview" style="width:100%;height:100%;"><webview src="' + url + '" style="width:100%;height:100%;" id="webview" preload="./js/platform/twitter.js"></webview></div></div></div>';
return html;
}
}
function unstreamingTL(type, key, basekey, insert, icnsert, left_fold, css, animecss, q) {
if (!left_fold) {
var basehtml = '<div style="' + css + '" class="box ' + animecss + '" id="timeline_box_' + basekey + '_parentBox"></div>';
$("#timeline-container").append(basehtml);
var left_hold = '<a onclick="leftFoldSet(' + key + ')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_leftFold + '">view_agenda</i></a>' + lang.lang_layout_leftFold + '</span><br>';
} else {
var left_hold = '<a onclick="leftFoldRemove(' + key + ')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_leftUnfold + '">view_column</i></a>' + lang.lang_layout_leftUnfold + '</span><br>';
}
var html = '<div class="boxIn" id="timeline_box_' + key + '_box" tlid="' + key +
'"><div class="notice-box z-depth-2" id="menu_' + key + '" style="' + insert + ' ">' +
'<div class="area-notice"><i class="material-icons waves-effect" id="notice_icon_' + key + '" style="font-size:40px; padding-top:25%;" onclick="tootsearch(' + key + ',\'' + q + '\');" title="' + lang.lang_layout_gotop + '"></i></div>' +
'<div class="area-notice_name"><span id="notice_' + key + '" class="tl-title"></span></div>' +
'<div class="area-a1"></div><div class="area-sta"></div>' +
'<div class="area-a2"><a onclick="removeColumn(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_delthis + '"' + icnsert + '>cancel</i></a></div>' +
'<div class="area-a3"><a onclick="setToggle(' + key +
')" class="setting nex" title="' + lang.lang_layout_setthis + '"' + icnsert + '><i class="material-icons waves-effect nex">settings</i></a></div></div>' +
'<div class="column-hide notf-indv-box" id="util-box_' + key +
'" style="padding:5px;">' + left_hold + '<a onclick="mediaToggle(' + key +
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_layout_mediafil + '">perm_media</i><span id="sta-media-' +
key + '">On</span></a>' + lang.lang_layout_mediafil + '<br>' + lang.lang_layout_headercolor + '<br><div id="picker_' + key + '" class="color-picker"></div></div><div class="tl-box" tlid="' + key + '"><div id="timeline_' + key +
'" class="tl ' + type + '-timeline " tlid="' + key + '" data-type="' + type + '" data-acct="nostr"><div id="landing_' + key + '" style="text-align:center">' + lang.lang_layout_nodata + '</div></div></div>'
$('#timeline_box_' + basekey + '_parentBox').append(html);
tootsearch(key, q);
cardCheck(key);
ebtCheck(key);
mediaCheck(key);
catchCheck(key);
voiceCheck(key);
return true;
}
function leftFoldSet(key) {
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
obj[key].left_fold = true;
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
parseColumn();
}
function leftFoldRemove(key) {
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
obj[key].left_fold = false;
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
parseColumn();
}

56
app/js/ui/menu.js Normal file
View File

@@ -0,0 +1,56 @@
function menu() {
localStorage.setItem("menu-done", true);
$("#fukidashi").addClass("hide")
if (!$("#menu").hasClass("appear")) {
$("#menu").addClass("appear")
var left = localStorage.getItem("menu-left");
if (left > $('body').width() - $('#menu').width()) {
left = $('body').width() - $('#menu').width();
} else if (left < 0) {
left = 0;
}
var top = localStorage.getItem("menu-top");
if (top > $('body').height() - $('#menu').height()) {
top = $('body').height() - $('#menu').height();
} else if (top < 0) {
top = 0;
}
$('#menu').css("left", left + "px")
$('#menu').css("top", top + "px")
$('#menu').fadeIn();
$("#menu-bar").html("TheDesk " + localStorage.getItem("ver"));
$(".menu-content").addClass("hide");
$("#add-box").removeClass("hide");
$("#left-menu div").removeClass("active");
$("#addColumnMenu").addClass("active");
} else {
$('#menu').fadeOut()
$("#menu").removeClass("appear")
}
}
$(function () {
$("#menu").draggable({
handle: "#menu-bar",
stop: function () {
var left = $('#menu').offset().left;
if (left > $('body').width() - $('#menu').width()) {
left = $('body').width() - $('#menu').width();
} else if (left < 0) {
left = 0;
}
var top = $('#menu').offset().top;
if (top > $('body').height() - $('#menu').height()) {
top = $('body').height() - $('#menu').height();
} else if (top < 0) {
top = 0;
}
localStorage.setItem("menu-left", left);
localStorage.setItem("menu-top", top);
}
});
});
function help() {
const { shell } = require('electron');
shell.openExternal("https://docs.thedesk.top");
}

View File

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

View File

@@ -1,40 +1,74 @@
/*ささやきボックス(Cr民並感)*/
//✕隠す
function hide() {
$('#post-box').removeClass("appear")
$('#post-box').animate({
'bottom': "-500px"
});
$("#right-side").hide()
$('#post-box').fadeOut()
$("#post-box").removeClass("appear")
$("#emoji").addClass("hide")
$("#left-side").show();
$("#default-emoji").show();
$("#unreact").show();
$("#addreact").addClass("hide");
}
//最小化
function mini() {
$("body").toggleClass("mini-post");
if($("body").hasClass("mini-post")){
if ($("body").hasClass("mini-post")) {
$(".mini-btn").text("expand_less");
}else{
} else {
$(".mini-btn").text("expand_more");
}
}
//最小化時に展開
function show() {
$("#post-box").addClass("appear")
$("#textarea").focus();
$('#post-box').addClass("appear")
console.log($('#posttgl').offset());
$('#post-box').css("left",$('#posttgl').offset().left+"px");
$('#post-box').animate({
'bottom': 0
});
console.log("show" + localStorage.getItem("postbox-left"));
var left = localStorage.getItem("postbox-left");
if (left > $('body').width() - $('#post-box').width()) {
left = $('body').width() - $('#post-box').width();
} else if (left < 0) {
left = 0;
}
var top = localStorage.getItem("postbox-top");
if (top > $('body').height() - $('#post-box').height()) {
top = $('body').height() - $('#post-box').height();
} else if (top < 0) {
top = 0;
}
$('#post-box').css("left", left + "px")
$('#post-box').css("top", top + "px")
$('#post-box').fadeIn();
}
$(function () {
$("#post-box").draggable({
handle: "#post-bar",
stop: function () {
var left = $('#post-box').offset().left;
if (left > $('body').width() - $('#post-box').width()) {
left = $('body').width() - $('#post-box').width();
} else if (left < 0) {
left = 0;
}
var top = $('#post-box').offset().top;
if (top > $('body').height() - $('#post-box').height()) {
top = $('body').height() - $('#post-box').height();
} else if (top < 0) {
top = 0;
}
localStorage.setItem("postbox-left", left);
localStorage.setItem("postbox-top", top);
}
});
});
//コード受信
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=="share"){
var mode = m[1];
var codex = m[2];
if (mode == "share") {
console.log(codex);
$('textarea').focus();
$("#textarea").val(decodeURI(codex));
@@ -43,44 +77,27 @@ if(location.search){
$(".mini-btn").text("expand_less");
}
}
$('#posttgl').focusin(function(e) {
if(!$('#post-box').hasClass("appear")){
$('#posttgl').click(function (e) {
if (!$('#post-box').hasClass("appear")) {
show();
} else {
hide();
}
});
$("#timeline-container,#group").click(function(e) {
$("#timeline-container,#group").click(function (e) {
if(localStorage.getItem("box")!="absolute"){
if($('#post-box').hasClass("appear") && !localStorage.getItem("nohide")){
if (localStorage.getItem("box") != "absolute") {
if ($('#post-box').hasClass("appear") && !localStorage.getItem("nohide")) {
hide();
}
}
localStorage.removeItem("nohide")
});
$('#textarea,#cw-text').focusout(function(e) {
localStorage.setItem("nohide",true)
var countup = function(){
$('#textarea,#cw-text').focusout(function (e) {
localStorage.setItem("nohide", true)
var countup = function () {
localStorage.removeItem("nohide")
}
}
//setTimeout(remove, 100);
});
$("#timeline-container").click(function(e) {
if(!$('#list-box').hasClass("hide")){
$("#list-box").removeClass("show");
$("#list-box").addClass("hide")
}
if(!$('#src-box').hasClass("hide")){
$("#src-box").removeClass("show");
$("#src-box").addClass("hide")
}
if(!$('#filter-box').hasClass("hide")){
$("#filter-box").removeClass("show");
$("#filter-box").addClass("hide")
}
if(!$('#add-box').hasClass("hide")){
$("#add-box").removeClass("show");
$("#add-box").addClass("hide")
}
});
});

View File

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

View File

@@ -1,16 +1,16 @@
//スクロールで続きを読む
function scrollevent() {
$(".tl-box").scroll(function() {
$(".tl-box").scroll(function () {
scrollck();
});
}
scrollevent();
function scrollck() {
$(".tl-box").each(function(i, elem) {
$(".tl-box").each(function (i, elem) {
var tlid = $(this).attr('tlid');
//一番上ならためていた新しいトゥートを表示
if ($(this).scrollTop() == 0) {
if ($(this).scrollTop() === 0) {
var pool = localStorage.getItem("pool_" + tlid);
if (pool) {
$("#timeline_" + tlid).prepend(pool);
@@ -18,9 +18,9 @@ function scrollck() {
localStorage.removeItem("pool_" + tlid);
}
//自動リフレッシュ
if( $("#timeline_" + tlid+" .cvo").length > 30 ){
for(var i=30;i<$("#timeline_" + tlid +" .cvo").length;i++){
$("#timeline_" + tlid +" .cvo").eq(i).remove();
if ($("#timeline_" + tlid + " .cvo").length > 30) {
for (var i = 30; i < $("#timeline_" + tlid + " .cvo").length; i++) {
$("#timeline_" + tlid + " .cvo").eq(i).remove();
}
}
}
@@ -28,22 +28,22 @@ function scrollck() {
var scrt = $(this).find(".tl").height() - $(window).height();
var scr = $(this).scrollTop();
if (scr > scrt) {
console.log("kicked more loading:" + tlid);
moreload('', tlid);
}
});
}
function goTop(id){
if ($("#timeline_box_"+id+"_box .tl-box").scrollTop() > 500){
$("#timeline_box_"+id+"_box .tl-box").scrollTop(500)
function goTop(id) {
if ($("#timeline_box_" + id + "_box .tl-box").scrollTop() > 500) {
$("#timeline_box_" + id + "_box .tl-box").scrollTop(500)
}
$("#timeline_box_"+id+"_box .tl-box").animate({scrollTop:0});
$("#timeline_box_" + id + "_box .tl-box").animate({ scrollTop: 0 });
}
function goColumn(key){
function goColumn(key) {
$("#sort-box").addClass("hide");
$("#sort-box").removeClass("show");
if($('[tlid='+key+']').length){
console.log($('[tlid='+key+']').offset().left);
$("#timeline-container").animate({scrollLeft:$("#timeline-container").scrollLeft()+$('[tlid='+key+']').offset().left});
if ($('[tlid=' + key + ']').length) {
$("#timeline-container").animate({ scrollLeft: $("#timeline-container").scrollLeft() + $('[tlid=' + key + ']').offset().left });
}
}

File diff suppressed because it is too large Load Diff

953
app/js/ui/settings.old.js Normal file
View File

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

View File

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

View File

@@ -1,134 +1,154 @@
function spotifyConnect(){
function spotifyConnect() {
var auth = "https://accounts.spotify.com/authorize?client_id=0f18e54abe0b4aedb4591e353d3aff69&redirect_uri=https://thedesk.top/spotify-connect&response_type=code&scope=user-read-currently-playing";
const {
shell
} = require('electron');
const {
shell
} = require('electron');
var electron = require("electron");
var remote = electron.remote;
var platform = remote.process.platform;
if (platform == "win32") {
shell.openExternal(auth);
var ipc = electron.ipcRenderer;
ipc.send('quit', 'go');
} else {
auth = auth + "&state=code";
$("#spotify-code-show").removeClass("hide");
shell.openExternal(auth);
}
var electron = require("electron");
var remote=electron.remote;
var platform=remote.process.platform;
if(platform=="win32"){
shell.openExternal(auth);
var ipc = electron.ipcRenderer;
ipc.send('quit', 'go');
}else{
auth=auth+"&state=code";
$("#spotify-code-show").removeClass("hide");
shell.openExternal(auth);
}
}
function spotifyAuth(){
var code=$("#spotify-code").val();
function spotifyAuth() {
var code = $("#spotify-code").val();
localStorage.setItem("spotify", "code");
localStorage.setItem("spotify-refresh", code);
$("#spotify-code-show").addClass("hide");
$("#spotify-enable").addClass("disabled");
$("#spotify-disable").removeClass("disabled");
}
function spotifyDisconnect(){
function spotifyDisconnect() {
localStorage.removeItem("spotify");
localStorage.removeItem("spotify-refresh");
checkSpotify();
}
function checkSpotify(){
if(localStorage.getItem("spotify")){
function checkSpotify() {
if (localStorage.getItem("spotify")) {
$("#spotify-enable").addClass("disabled");
$("#spotify-disable").removeClass("disabled");
}else{
} else {
$("#spotify-enable").removeClass("disabled");
$("#spotify-disable").addClass("disabled");
}
var content=localStorage.getItem("np-temp");
if(!content || content=="" || content=="null"){
var content="#NowPlaying {song} / {album} / {artist}\n{url} #SpotifyWithTheDesk";
var content = localStorage.getItem("np-temp");
if (!content || content == "" || content == "null") {
var content = "#NowPlaying {song} / {album} / {artist}\n{url} #SpotifyWithTheDesk";
}
$("#np-temp").val(content);
var flag=localStorage.getItem("artwork");
if(flag){
var flag = localStorage.getItem("artwork");
if (flag) {
$("#awk_yes").prop("checked", true);
}else{
} else {
$("#awk_no").prop("checked", true);
}
}
function spotifyFlagSave(){
function spotifyFlagSave() {
var awk = $("[name=awk]:checked").val();
if(awk=="yes"){
localStorage.setItem("artwork","yes");
Materialize.toast(lang_spotify_img[lang], 3000);
}else{
if (awk == "yes") {
localStorage.setItem("artwork", "yes");
Materialize.toast(lang.lang_spotify_img, 3000);
} else {
localStorage.removeItem("artwork");
Materialize.toast(lang_spotify_imgno[lang], 3000);
Materialize.toast(lang.lang_spotify_imgno, 3000);
}
}
function nowplaying(mode){
if(mode=="spotify"){
var start = "https://thedesk.top/now-playing?at="+localStorage.getItem("spotify")+"&rt="+localStorage.getItem("spotify-refresh");
function nowplaying(mode) {
if (mode == "spotify") {
var start = "https://thedesk.top/now-playing?at=" + localStorage.getItem("spotify") + "&rt=" + localStorage.getItem("spotify-refresh");
var at = localStorage.getItem("spotify");
if(at){
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) {
console.log(json);
if(json.length<1){
return false;
}
var item=json.item;
var img=item.album.images[0].url;
var electron = require("electron");
var ipc = electron.ipcRenderer;
var flag=localStorage.getItem("artwork");
if(flag){
ipc.send('bmp-image', [img,0]);
}
var content=localStorage.getItem("np-temp");
if(!content || content=="" || content=="null"){
var content="#NowPlaying {song} / {album} / {artist}\n{url}";
}
var regExp = new RegExp("{song}", "g");
content = content.replace(regExp, item.name);
var regExp = new RegExp("{album}", "g");
content = content.replace(regExp, item.album.name);
var regExp = new RegExp("{artist}", "g");
content = content.replace(regExp, item.artists[0].name);
var regExp = new RegExp("{url}", "g");
content = content.replace(regExp, item.external_urls.spotify);
var regExp = new RegExp("{composer}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{hz}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{bitRate}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{lyricist}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{bpm}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{genre}", "g");
content = content.replace(regExp, "");
$("#textarea").val(content);
});
}else{
alert(lang_spotify_acct[lang]);
if (at) {
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) {
console.table(json);
if (json.length < 1) {
return false;
}
var item = json.item;
var img = item.album.images[0].url;
var electron = require("electron");
var ipc = electron.ipcRenderer;
var flag = localStorage.getItem("artwork");
if (flag) {
ipc.send('bmp-image', [img, 0]);
}
var content = localStorage.getItem("np-temp");
if (!content || content == "" || content == "null") {
var content = "#NowPlaying {song} / {album} / {artist}\n{url}";
}
var regExp = new RegExp("{song}", "g");
content = content.replace(regExp, item.name);
var regExp = new RegExp("{album}", "g");
content = content.replace(regExp, item.album.name);
var regExp = new RegExp("{artist}", "g");
content = content.replace(regExp, item.artists[0].name);
var regExp = new RegExp("{url}", "g");
content = content.replace(regExp, item.external_urls.spotify);
var regExp = new RegExp("{composer}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{hz}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{bitRate}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{lyricist}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{bpm}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{genre}", "g");
content = content.replace(regExp, "");
$("#textarea").val(content);
});
} else {
alert(lang.lang_spotify_acct);
}
}else if(mode=="itunes"){
} else if (mode == "itunes") {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('itunes', "");
ipc.on('itunes-np', function (event, arg) {
console.log(arg);
var content=localStorage.getItem("np-temp");
if(!content || content=="" || content=="null"){
var content="#NowPlaying {song} / {album} / {artist}\n{url}";
var ipc = electron.ipcRenderer;
if (ipc.listenerCount('itunes-np') > 0) {
return false;
}
ipc.send('itunes', "");
ipc.once('itunes-np', function (event, arg) {
if (arg.cmd) {
console.error(arg);
return;
}
console.table(arg);
var content = localStorage.getItem("np-temp");
if (!content || content == "" || content == "null") {
var content = "#NowPlaying {song} / {album} / {artist}\n{url}";
}
var flag = localStorage.getItem("artwork");
var remote = electron.remote;
var platform = remote.process.platform;
if (platform == "win32") {
if (flag && arg.path) {
media(arg.path, "image/png", "new");
}
} else if (platform == "darwin") {
if (flag && arg.existsArtwork) {
media(arg.artworks[0].data, "image/png", "new");
}
}
var regExp = new RegExp("{song}", "g");
content = content.replace(regExp, arg.name);
@@ -141,88 +161,61 @@ function nowplaying(mode){
var regExp = new RegExp("{composer}", "g");
content = content.replace(regExp, arg.composer);
var regExp = new RegExp("{hz}", "g");
content = content.replace(regExp, arg.sampleRate / 1000 + "kHz");
var regExp = new RegExp("{lyricist}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{bpm}", "g");
content = content.replace(regExp, "");
content = content.replace(regExp, arg.sampleRate/1000+"kHz");
var regExp = new RegExp("{bitRate}", "g");
content = content.replace(regExp, arg.bitRate+"kbps");
content = content.replace(regExp, arg.bitRate + "kbps");
var regExp = new RegExp("{genre}", "g");
content = content.replace(regExp, arg.genre);
$("#textarea").val(content);
})
})
}
}
function spotifySave(){
var temp=$("#np-temp").val();
function spotifySave() {
var temp = $("#np-temp").val();
localStorage.setItem("np-temp", temp);
Materialize.toast(lang_spotify_np[lang], 3000);
Materialize.toast(lang.lang_spotify_np, 3000);
}
if(location.search){
function npprovider() {
var provd = $("[name=npp]:checked").val();
if (!provd) {
if (localStorage.getItem("np_provider")) {
$("[value=" + localStorage.getItem("np_provider") + "]").prop("checked", true);
} else {
$("[value=AIMP]").prop("checked", true);
localStorage.setItem("np_provider", "AIMP");
}
} else {
if (provd != localStorage.getItem("np_provider")) {
Materialize.toast(lang.lang_setting_npprovide.replace("{{set}}", provd), 3000);
}
localStorage.setItem("np_provider", provd);
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('itunes', ["set", provd]);
}
}
if (location.search) {
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
var mode=m[1];
var codex=m[2];
if(mode=="spotify"){
var coder=codex.split(":");
var mode = m[1];
var codex = m[2];
if (mode == "spotify") {
var coder = codex.split(":");
localStorage.setItem("spotify", coder[0]);
localStorage.setItem("spotify-refresh", coder[1]);
}else{
} else {
}
}
$("#npbtn").click(function() {
$("#npbtn").click(function () {
nowplaying('spotify');
});
$("#npbtn").bind('contextmenu', function() {
$("#npbtn").bind('contextmenu', function () {
nowplaying('itunes');
return false;
});
/*cinderella NP*/
function cgNP(q){
suggest = "https://cg.toot.app/api/v1/?song=" + q
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);
var electron = require("electron");
var ipc = electron.ipcRenderer;
var flag=localStorage.getItem("artwork");
if(flag){
var img=json.album.artwork;
ipc.send('bmp-image', [img,0]);
}
var content=localStorage.getItem("np-temp");
if(!content || content==""){
var content="#NowPlaying {song} / {album} / {artist}\n{url}";
}
var regExp = new RegExp("{song}", "g");
content = content.replace(regExp, json.name);
var regExp = new RegExp("{album}", "g");
content = content.replace(regExp, json.album.name);
var regExp = new RegExp("{artist}", "g");
content = content.replace(regExp, json.artist.text);
var regExp = new RegExp("{composer}", "g");
content = content.replace(regExp, json.composer);
var regExp = new RegExp("{lyricist}", "g");
content = content.replace(regExp, json.lyricist);
var regExp = new RegExp("{bpm}", "g");
content = content.replace(regExp, json.bpm);
var regExp = new RegExp("{genre}", "g");
content = content.replace(regExp, "");
var regExp = new RegExp("{url}", "g");
content = content.replace(regExp, "");
$("#textarea").val(content);
});
}
});

View File

@@ -2,21 +2,27 @@
function themes(theme) {
if (!theme) {
var theme = localStorage.getItem("theme");
if(!theme){
var theme="black";
localStorage.setItem("theme","black");
if (!theme) {
var theme = "black";
localStorage.setItem("theme", "black");
}
}
$("html").removeClass("indigotheme");
$("html").removeClass("greentheme");
$("html").removeClass("browntheme");
$("html").removeClass("blacktheme");
$("html").addClass(theme+"theme");
$("html").removeClass("customtheme");
$("html").addClass(theme + "theme");
var font = localStorage.getItem("font");
if(font){
$("html").css("font-family",font);
}else{
$("html").css("font-family","");
if (font) {
$("html").css("font-family", font);
} else {
$("html").css("font-family", "");
}
if (theme == "custom") {
if (localStorage.getItem("customtheme-id")) {
ipc.send('theme-css-request', localStorage.getItem("customtheme-id"));
}
}
}
themes();

View File

@@ -1,203 +1,200 @@
//左下のメッセージ
var todcTrigger=null;
function todo(mes){
var todcTrigger = null;
function todo(mes) {
clearInterval(todcTrigger);
$('#message').text(mes);
$('#message').fadeIn();
todcTrigger=setTimeout(todc, 4000);
todcTrigger = setTimeout(todc, 4000);
}
function todc(){
function todc() {
$('#message').fadeOut();
}
//reverse
function bottomReverse(){
function bottomReverse() {
$("#bottom").toggleClass("reverse");
$(".leftside").toggleClass("reverse");
if($("#bottom").hasClass("reverse")){
if ($("#bottom").hasClass("reverse")) {
localStorage.removeItem("reverse")
}else{
localStorage.setItem("reverse","true")
} else {
localStorage.setItem("reverse", "true")
}
}
function tips(mode){
function tips(mode) {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('endmem', "");
clearInterval(clockint);
clearInterval(spotStart);
if(mode=="ver"){
if (mode == "ver") {
tipsToggle()
$("#tips-text").html('<img src="../../img/desk.png" width="20" onclick="todo(\'!TheDesk! It\\\'s a nice client!\')"><span style="font-size:20px">TheDesk</span> '+localStorage.getItem("ver")+'[<i class="material-icons" style="font-size:1.2rem;top: 3px;position: relative;">supervisor_account</i><span id="persons">1+</span>]')
localStorage.setItem("tips","ver")
}else if(mode=="clock"){
$("#tips-text").html('<img src="../../img/desk.png" width="20" onclick="todo(\'!TheDesk! It\\\'s a nice client!\')"><span style="font-size:20px">TheDesk</span> ' + localStorage.getItem("ver") + '[<i class="material-icons" style="font-size:1.2rem;top: 3px;position: relative;">supervisor_account</i><span id="persons">1+</span>]')
localStorage.setItem("tips", "ver")
} else if (mode == "clock") {
tipsToggle()
localStorage.setItem("tips","clock")
localStorage.setItem("tips", "clock")
clock()
}else if(mode=="memory"){
} else if (mode == "memory") {
tipsToggle()
localStorage.setItem("tips","memory")
localStorage.setItem("tips", "memory")
startmem();
}else if(mode=="trend"){
} else if (mode == "trend") {
tipsToggle()
localStorage.setItem("tips","trend")
localStorage.setItem("tips", "trend")
trendTagonTip()
}else if(mode=="spotify"){
} else if (mode == "spotify") {
tipsToggle()
localStorage.setItem("tips","spotify")
var json=nowplaying("spotifytips")
localStorage.setItem("tips", "spotify")
var json = nowplaying("spotifytips")
spotifytips(json)
}
}
//メモリ
function startmem(){
function startmem() {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('startmem', "");
ipc.on('memory', function (event, arg) {
var use=arg[0];
var cpu=arg[1];
var total=arg[2]
$("#tips-text").html(cpu+"<br>Memory:"+Math.floor(use/1024/1024/102.4)/10+"/"+Math.floor(total/1024/1024/102.4)/10+"GB("+Math.floor(use/total*100)+"%)")
var use = arg[0];
var cpu = arg[1];
var total = arg[2]
$("#tips-text").html(escapeHTML(cpu) + "<br>Memory:" + Math.floor(use / 1024 / 1024 / 102.4) / 10 + "/" + Math.floor(total / 1024 / 1024 / 102.4) / 10 + "GB(" + Math.floor(use / total * 100) + "%)")
})
}
//トレンドタグ
function trendTagonTip(){
$(".trendtag").remove();
var domain="imastodon.net"
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/trend_tags"
console.log(start)
function trendTagonTip() {
$(".trendtag").remove();
var domain = "imastodon.net"
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/trend_tags"
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 tags="";
json=json.score;
Object.keys(json).forEach(function(tag) {
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span><br>';
});
$("#tips-text").html('<div class="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTagonTip()" style="font-size:12px">refresh</i>:<br>' + tags+'</div>');
trendTagonTipInterval()
}else{
$("#tips-text").html("");
}
});
var tags = "";
json = json.score;
Object.keys(json).forEach(function (tag) {
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + escapeHTML(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><br>';
});
$("#tips-text").html('<div class="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTagonTip()" style="font-size:12px">refresh</i>:<br>' + tags + '</div>');
trendTagonTipInterval()
} else {
$("#tips-text").html("");
}
});
}
//Spotify
function spotifytips(){
var start = "https://thedesk.top/now-playing?at="+localStorage.getItem("spotify")+"&rt="+localStorage.getItem("spotify-refresh");
var at = localStorage.getItem("spotify");
if(at){
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) {
console.log(json);
var ms=json.progress_ms;
var last=1000-ms%1000;
var item=json.item;
var img=item.album.images[0].url;
var artisttxt="";
for(i=0;i<item.artists.length;i++){
if(i>0){
artisttxt=artisttxt+","+item.artists[i].name;
}else{
artisttxt=item.artists[0].name;
function spotifytips() {
var start = "https://thedesk.top/now-playing?at=" + localStorage.getItem("spotify") + "&rt=" + localStorage.getItem("spotify-refresh");
var at = localStorage.getItem("spotify");
if (at) {
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 ms = json.progress_ms;
var last = 1000 - ms % 1000;
var item = json.item;
var img = item.album.images[0].url;
var artisttxt = "";
for (i = 0; i < item.artists.length; i++) {
if (i > 0) {
artisttxt = artisttxt + "," + item.artists[i].name;
} else {
artisttxt = item.artists[0].name;
}
}
artisttxt=escapeHTML(artisttxt);
artisttxt = escapeHTML(artisttxt);
sleep(last);
var tms=item.duration_ms;
var per=ms/item.duration_ms*100;
ms=ms/1000;
tms=tms/1000;
var s=Math.round(ms)%60;
if(s<10){
s="0"+s;
var tms = item.duration_ms;
var per = ms / item.duration_ms * 100;
ms = ms / 1000;
tms = tms / 1000;
var s = Math.round(ms) % 60;
if (s < 10) {
s = "0" + s;
}
var m=(Math.round(ms)-Math.round(ms)%60)/60;
var ts=Math.round(tms)%60;
if(ts<10){
ts="0"+ts;
var m = (Math.round(ms) - Math.round(ms) % 60) / 60;
var ts = Math.round(tms) % 60;
if (ts < 10) {
ts = "0" + ts;
}
var tm=(Math.round(tms)-Math.round(tms)%60)/60;
$("#tips-text").html('<div id="spot-box"><i class="material-icons pointer" onclick="spotifytips()" style="font-size:12px">refresh</i><img src="'+img+'" width="20" id="spot-img">'+escapeHTML(item.name)+'<span class="gray sml" id="spot-art">'+artisttxt+'</span><span id="spot-m">'+m+'</span>:<span id="spot-s">'+s+'</span>/'+tm+":"+ts+'</span></div><div class="progress grey"><div class="determinate spotify-prog grey lighten-2" style="width: '+per+'%" data-s="'+Math.round(ms)+'" data-total="'+item.duration_ms+'"></div></div>');
spotint=setInterval(spotStart, 1000);
});
}else{
alert(lang_spotify_acct[lang]);
}
}
function spotStart(){
var total=$(".spotify-prog").attr("data-total");
var s=$(".spotify-prog").attr("data-s");
var news=s*1+1;
var per=news*100000/total;
var ns=news%60;
var nm=(news-ns)/60;
if(ns<10){
ns="0"+ns;
var tm = (Math.round(tms) - Math.round(tms) % 60) / 60;
$("#tips-text").html('<div id="spot-box"><i class="material-icons pointer" onclick="spotifytips()" style="font-size:12px">refresh</i><img src="' + img + '" width="20" id="spot-img">' + escapeHTML(item.name) + '<span class="gray sml" id="spot-art">' + artisttxt + '</span><span id="spot-m">' + m + '</span>:<span id="spot-s">' + s + '</span>/' + tm + ":" + ts + '</span></div><div class="progress grey"><div class="determinate spotify-prog grey lighten-2" style="width: ' + per + '%" data-s="' + Math.round(ms) + '" data-total="' + item.duration_ms + '"></div></div>');
spotint = setInterval(spotStart, 1000);
});
} else {
alert(lang.lang_spotify_acct);
}
if(per>=100){
}
function spotStart() {
var total = $(".spotify-prog").attr("data-total");
var s = $(".spotify-prog").attr("data-s");
var news = s * 1 + 1;
var per = news * 100000 / total;
var ns = news % 60;
var nm = (news - ns) / 60;
if (ns < 10) {
ns = "0" + ns;
}
if (per >= 100) {
clearInterval(spotStart);
spotifytips()
}else{
} else {
$("#spot-m").text(nm);
$("#spot-s").text(ns);
}
$(".spotify-prog").attr("data-s",news);
$(".spotify-prog").css("width",per+"%");
}
$(".spotify-prog").attr("data-s", news);
$(".spotify-prog").css("width", per + "%");
}
function trendTagonTipInterval(){
setTimeout(trendTagonTip, 6000000);
function trendTagonTipInterval() {
setTimeout(trendTagonTip, 6000000);
}
//時計
var clockint;
function clock(){
var now=new Date();
var last=1000-now.getTime()%1000;
function clock() {
var now = new Date();
var last = 1000 - now.getTime() % 1000;
sleep(last);
clockint=setInterval(clockStart, 1000);
clockint = setInterval(clockStart, 1000);
}
function clockStart(){
function clockStart() {
var nowTime = new Date(); // 現在日時を得る
var nowHour = nowTime.getHours(); // 時を抜き出す
if(nowHour<10){nowHour="0"+nowHour }
var nowMin = nowTime.getMinutes(); // 分を抜き出す
if(nowMin<10){nowMin="0"+nowMin }
var nowSec = nowTime.getSeconds(); // 秒を抜き出す
if(nowSec<10){nowSec="0"+nowSec }
var msg = nowTime.getFullYear()+"/"+(nowTime.getMonth()+1)+"/"+nowTime.getDate()+'<span style="font-size:20px; font-family:Open Sans">'+nowHour + ":" + nowMin + ":" + nowSec+"</span>";
if (nowHour < 10) { nowHour = "0" + nowHour }
var nowMin = nowTime.getMinutes(); // 分を抜き出す
if (nowMin < 10) { nowMin = "0" + nowMin }
var nowSec = nowTime.getSeconds(); // 秒を抜き出す
if (nowSec < 10) { nowSec = "0" + nowSec }
var msg = nowTime.getFullYear() + "/" + (nowTime.getMonth() + 1) + "/" + nowTime.getDate() + '<span style="font-size:20px; font-family:Open Sans">' + nowHour + ":" + nowMin + ":" + nowSec + "</span>";
$("#tips-text").html(msg);
}
function sleep(waitMsec) {
var startMsec = new Date();
while (new Date() - startMsec < waitMsec);
}
function tipsToggle(){
function tipsToggle() {
$("#tips").toggleClass("hide");
$("#tips-menu").toggleClass("hide");
}
if(localStorage.getItem("tips")){
if (localStorage.getItem("tips")) {
tips(localStorage.getItem("tips"));
}

View File

@@ -5,11 +5,11 @@ function utl(user, more, 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");
if (user == "--now") {
var user = $('#his-data').attr("user-id");
}
if(localStorage.getItem("mode_" + domain)!="misskey"){
if (localStorage.getItem("mode_" + domain) != "misskey") {
if (more) {
var sid = $("#his-tl .cvo").last().attr("toot-id");
var plus = "?max_id=" + sid;
@@ -18,49 +18,49 @@ function utl(user, more, acct_id) {
}
var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses" +
plus;
var i={
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
}
}
}else{
var req={i:at}
} else {
var req = { i: at }
if (more) {
var sid = $("#his-tl .cvo").last().attr("toot-id");
req.maxId=sid;
req.maxId = sid;
}
req.userId=user;
req.userId = user;
var start = "https://" + domain + "/api/users/notes"
var i={
var i = {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify(req)
body: JSON.stringify(req)
}
}
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") {
var templete = misskeyParse(json, '', acct_id, 'user');
}else{
} else {
var templete = parse(json, '', acct_id, 'user');
}
if(!json[0]){
templete=lang_details_nodata[lang]+"<br>";
if (!json[0]) {
templete = lang.lang_details_nodata + "<br>";
}
if (more) {
$("#his-tl-contents").append(templete);
} else {
if(localStorage.getItem("mode_" + domain)!="misskey"){
pinutl(templete,user, acct_id)
}else{
if (localStorage.getItem("mode_" + domain) != "misskey") {
pinutl(templete, user, acct_id)
} else {
$("#his-tl-contents").html(templete);
}
}
@@ -68,16 +68,16 @@ function utl(user, more, acct_id) {
});
}
//ピン留めTL
function pinutl(before,user, acct_id) {
function pinutl(before, user, acct_id) {
if (!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");
if (user == "--now") {
var user = $('#his-data').attr("user-id");
}
var plus = "?pinned=1";
var plus = "?pinned=1";
var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses" +
plus
fetch(start, {
@@ -86,17 +86,17 @@ function pinutl(before,user, 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) {
var templete = parse(json, '', acct_id,'user');
if(!json[0]){
templete="";
}).then(function (json) {
var templete = parse(json, 'pinned', acct_id, 'user');
if (!json[0]) {
templete = "";
}
$("#his-tl-contents").html(templete+before);
$("#his-tl-contents").html(templete + before);
jQuery("time.timeago").timeago();
});
}
@@ -107,26 +107,26 @@ function flw(user, more, 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");
if (user == "--now") {
var user = $('#his-data').attr("user-id");
}
if(localStorage.getItem("mode_" + domain)=="misskey"){
var req={i:at}
if (localStorage.getItem("mode_" + domain) == "misskey") {
var req = { i: at }
if (more) {
var sid = $("#his-follow-list .cvo").last().attr("user-id");
req.maxId=sid;
req.maxId = sid;
}
req.userId=user;
req.userId = user;
var start = "https://" + domain + "/api/users/following"
var i={
var i = {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify(req)
body: JSON.stringify(req)
}
}else{
} else {
if (more) {
var sid = $("#his-follow-list .cvo").last().attr("user-id");
var plus = "?max_id=" + sid;
@@ -135,7 +135,7 @@ function flw(user, more, acct_id) {
}
var start = "https://" + domain + "/api/v1/accounts/" + user + "/following" +
plus
var i={
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
@@ -143,19 +143,19 @@ function flw(user, more, 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"){
var templete = misskeyUserparse(json,'',acct_id);
}else{
var templete = userparse(json,'',acct_id);
}).then(function (json) {
if (localStorage.getItem("mode_" + domain) == "misskey") {
var templete = misskeyUserparse(json, '', acct_id);
} else {
var templete = userparse(json, '', acct_id);
}
if(templete==""){
templete=lang_details_nodata[lang]+"<br>";
if (templete == "") {
templete = lang.lang_details_nodata + "<br>";
}
if (more) {
$("#his-follow-list-contents").append(templete);
@@ -173,26 +173,26 @@ function fer(user, more, 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");
if (user == "--now") {
var user = $('#his-data').attr("user-id");
}
if(localStorage.getItem("mode_" + domain)=="misskey"){
var req={i:at}
if (localStorage.getItem("mode_" + domain) == "misskey") {
var req = { i: at }
if (more) {
var sid = $("#his-follower-list .cvo").last().attr("user-id");
req.maxId=sid;
req.maxId = sid;
}
req.userId=user;
req.userId = user;
var start = "https://" + domain + "/api/users/followers"
var i={
var i = {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify(req)
body: JSON.stringify(req)
}
}else{
} else {
if (more) {
var sid = $("#his-follower-list .cvo").last().attr("user-id");
var plus = "?max_id=" + sid;
@@ -201,7 +201,7 @@ function fer(user, more, acct_id) {
}
var start = "https://" + domain + "/api/v1/accounts/" + user + "/followers" +
plus
var i={
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
@@ -209,19 +209,19 @@ function fer(user, more, 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"){
var templete = misskeyUserparse(json,'',acct_id);
}else{
var templete = userparse(json,'',acct_id);
}).then(function (json) {
if (localStorage.getItem("mode_" + domain) == "misskey") {
var templete = misskeyUserparse(json, '', acct_id);
} else {
var templete = userparse(json, '', acct_id);
}
if(templete==""){
templete=lang_details_nodata[lang]+"<br>";
if (templete == "") {
templete = lang.lang_details_nodata + "<br>";
}
if (more) {
$("#his-follower-list-contents").append(templete);
@@ -239,8 +239,8 @@ function showFav(more, 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");
if(localStorage.getItem("mode_" + domain)!="misskey"){
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) != "misskey") {
if (more) {
var sid = $("#his-fav-list .cvo").last().attr("toot-id");
var plus = "?max_id=" + sid;
@@ -248,42 +248,42 @@ function showFav(more, acct_id) {
var plus = "";
}
var start = "https://" + domain + "/api/v1/favourites" + plus
var i={
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
}
}
}else{
var req={i:at}
} else {
var req = { i: at }
if (more) {
var sid = $("#his-fav-list .cvo").last().attr("toot-id");
req.maxId=sid;
req.maxId = sid;
}
var start = "https://" + domain + "/api/i/favorites"
var i={
var i = {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify(req)
}
body: JSON.stringify(req)
}
}
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"){
var templete = parse(json, '', acct_id,'user');
}else{
var templete = misskeyParse(json, '', acct_id,'user');
}).then(function (json) {
if (localStorage.getItem("mode_" + domain) != "misskey") {
var templete = parse(json, '', acct_id, 'user');
} else {
var templete = misskeyParse(json, '', acct_id, 'user');
}
if(!json[0]){
templete=lang_details_nodata[lang]+"<br>";
if (!json[0]) {
templete = lang.lang_details_nodata + "<br>";
}
if (more) {
$("#his-fav-list-contents").append(templete);
@@ -300,22 +300,22 @@ function showMut(more, 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");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var req={i:at}
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var req = { i: at }
if (more) {
var sid = $("#his-muting-list .cvo").last().attr("user-id");
req.maxId=sid;
req.maxId = sid;
}
var start = "https://" + domain + "/api/mute/list"
var i={
var i = {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify(req)
body: JSON.stringify(req)
}
}else{
} else {
if (more) {
var sid = $("#his-muting-list .cvo").last().attr("user-id");
var plus = "?max_id=" + sid;
@@ -323,7 +323,7 @@ function showMut(more, acct_id) {
var plus = "";
}
var start = "https://" + domain + "/api/v1/mutes" + plus
var i={
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
@@ -331,17 +331,17 @@ function showMut(more, 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(!json[0]){
templete=lang_details_nodata[lang]+"<br>";
}).then(function (json) {
if (!json[0]) {
templete = lang.lang_details_nodata + "<br>";
}
var templete = userparse(json,'',acct_id);
var templete = userparse(json, '', acct_id);
if (more) {
$("#his-muting-list-contents").append(templete);
} else {
@@ -357,11 +357,11 @@ function showBlo(more, acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var domain = localStorage.getItem("domain_" + acct_id);
if(localStorage.getItem("mode_" + domain)=="misskey"){
$("#his-blocking-list-contents").html(lang_hisdata_notonmisskey[lang]+"<br>");
if (localStorage.getItem("mode_" + domain) == "misskey") {
$("#his-blocking-list-contents").html(lang.lang_hisdata_notonmisskey + "<br>");
return false;
}
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (more) {
var sid = $("#his-blocking-list .cvo").last().attr("user-id");
var plus = "?max_id=" + sid;
@@ -375,16 +375,16 @@ function showBlo(more, 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) {
if(!json[0]){
templete=lang_details_nodata[lang]+"<br>";
}).then(function (json) {
if (!json[0]) {
templete = lang.lang_details_nodata + "<br>";
}
var templete = userparse(json,'',acct_id);
var templete = userparse(json, '', acct_id);
if (more) {
$("#his-blocking-list-contents").append(templete);
} else {
@@ -396,27 +396,27 @@ function showBlo(more, acct_id) {
//フォロリクリスト
function showReq(more, acct_id) {
if (!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");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var req={i:at}
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var req = { i: at }
if (more) {
var sid = $("#his-request-list .cvo").last().attr("user-id");
req.maxId=sid;
req.maxId = sid;
}
var start = "https://" + domain + "/following/requests/list"
var i={
var i = {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify(req)
body: JSON.stringify(req)
}
}else{
} else {
if (more) {
var sid = $("#his-request-list .cvo").last().attr("user-id");
var plus = "?max_id=" + sid;
@@ -424,7 +424,7 @@ function showReq(more, acct_id) {
var plus = "";
}
var start = "https://" + domain + "/api/v1/follow_requests" + plus
var i={
var i = {
method: 'GET',
headers: {
'content-type': 'application/json',
@@ -432,20 +432,21 @@ function showReq(more, 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"){
var templete = userparse(json, 'true',acct_id);
}else{
var templete = misskeyUserparse(json, 'true',acct_id);
}).then(function (json) {
if (localStorage.getItem("mode_" + domain) != "misskey") {
var templete = userparse(json, "request", acct_id);
} else {
var templete = misskeyUserparse(json, true, acct_id);
}
if(!json[0]){
templete=lang_details_nodata[lang]+"<br>";
if (!json[0]) {
templete = lang.lang_details_nodata + "<br>";
}
if (more) {
$("#his-request-list-contents").append(templete);
@@ -462,11 +463,11 @@ function showDom(more, acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var domain = localStorage.getItem("domain_" + acct_id);
if(localStorage.getItem("mode_" + domain)=="misskey"){
$("#his-domain-list-contents").html(lang_hisdata_notonmisskey[lang]+"<br>");
if (localStorage.getItem("mode_" + domain) == "misskey") {
$("#his-domain-list-contents").html(lang.lang_hisdata_notonmisskey + "<br>");
return false;
}
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (more) {
var sid = $("#his-domain-list .cvo").last().attr("user-id");
var plus = "?max_id=" + sid;
@@ -481,17 +482,17 @@ function showDom(more, acct_id) {
'Authorization': 'Bearer ' + at
},
//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) {
var templete = "";
if(!json[0]){
templete=lang_details_nodata[lang]+"<br>";
if (!json[0]) {
templete = lang.lang_details_nodata + "<br>";
}
Object.keys(json).forEach(function(key) {
Object.keys(json).forEach(function (key) {
var domain = json[key];
templete = templete + domain +
'<i class="material-icons gray pointer" onclick="domainblock(\'' +
@@ -513,11 +514,11 @@ function showFrl(more, acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var domain = localStorage.getItem("domain_" + acct_id);
if(localStorage.getItem("mode_" + domain)=="misskey"){
$("#his-follow-recom-contents").html(lang_hisdata_notonmisskey[lang]+"<br>");
if (localStorage.getItem("mode_" + domain) == "misskey") {
$("#his-follow-recom-contents").html(lang.lang_hisdata_notonmisskey + "<br>");
return false;
}
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (more) {
var sid = $("#his-follow-recom-list .cvo").last().attr("user-id");
var plus = "?max_id=" + sid;
@@ -531,20 +532,19 @@ function showFrl(more, acct_id) {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
}).then(function (response) {
return response.json();
}).catch(function(error) {
$("#his-follow-recom-contents").html(lang_details_nodata[lang]+"("+lang_hisdata_frcreq[lang]+")<br>");
}).catch(function (error) {
$("#his-follow-recom-contents").html(lang.lang_details_nodata + "(" + lang.lang_hisdata_frcreq + ")<br>");
console.error(error);
}).then(function(json) {
console.log(json);
if(!json[0]){
console.log("No data");
templete=lang_details_nodata[lang]+"("+lang_hisdata_frcwarn[lang]+")<br>";
}else{
var templete = userparse(json,'',acct_id);
}).then(function (json) {
if (!json[0]) {
console.warn("No suggestions(recommend) data");
templete = lang.lang_details_nodata + "(" + lang.lang_hisdata_frcwarn + ")<br>";
} else {
var templete = userparse(json, '', acct_id);
}
if (more) {
$("#his-follow-recom-contents").append(templete);
} else {
@@ -553,48 +553,91 @@ function showFrl(more, acct_id) {
});
}
//Keybase
function udAdd(start) {
fetch(start, {
method: 'GET',
headers: {
'Accept': 'application/json'
},
//body: JSON.stringify({})
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
var fields = json.attachment;
for (var i = 0; i < fields.length; i++) {
if (fields[i].type == "IdentityProof") {
if (fields[i].signatureAlgorithm == "keybase") {
var html = '<a href="https://keybase.io/' + fields[i].name + '" target="_blank" class="cbadge teal waves-effect" style="max-width:200px;" title="' + lang.lang_hisdata_key.replace("{{set}}", escapeHTML(fields[i].signatureAlgorithm)) + '"><i class="fas fa-key" aria-hidden="true"></i>' + escapeHTML(fields[i].signatureAlgorithm) + ':' + escapeHTML(fields[i].name) + '</a>';
} else {
var html = '<span class="cbadge teal" style="max-width:200px;" title="' + lang.lang_hisdata_key.replace("{{set}}", escapeHTML(fields[i].signatureAlgorithm)) + '"><i class="fas fa-key" aria-hidden="true"></i>' + escapeHTML(fields[i].signatureAlgorithm) + ':' + escapeHTML(fields[i].name) + '</span>';
}
$("#his-proof-prof").append(html)
}
}
});
fetch("https://notestock.osa-p.net/api/v1/isstock.json?id=" + start.replace("@", "users/"), {
method: 'GET',
headers: {
'Accept': 'application/json'
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (json.user.public_view) {
var html = '<a href="' + json.user.url + '" target="_blank" class="cbadge purple waves-effect" style="max-width:200px;" title="Notestock">Notestock</a>';
$("#his-proof-prof").append(html)
}
});
}
//ユーザーマッチングリスト
function showMat() {
$("#his-matching-list-contents").html(lang_hisdata_taketime[lang]);
var full=$("#his-acct").attr("fullname");
var acct_id=$("#his-data").attr("use-acct");
full=full.split("@");
var start = "https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-filtered-api.cgi?"+full[1]+"+" + full[0];
console.log(start);
$("#his-matching-list-contents").html(lang.lang_hisdata_taketime);
var full = $("#his-acct").attr("fullname");
var acct_id = $("#his-data").attr("use-acct");
full = full.split("@");
var start = "https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-filtered-api.cgi?" + full[1] + "+" + full[0];
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) {
console.log(json);
var templete="";
Object.keys(json).forEach(function(key) {
}).then(function (json) {
var templete = "";
Object.keys(json).forEach(function (key) {
var user = json[key];
templete = templete +
'<div class="" style="padding-top:5px;">' +
'<div style="padding:0; margin:0; width:400px; max-width:100%; display:flex; align-items:flex-end;">' +
'<div style="flex-basis:40px;"><a onclick="udgEx(\'' + user.user + '\',' +
acct_id + ');" user="' + user.user + '" class="udg">' +
'<img src="' + user.avatar + '" width="40" class="prof-img" user="' + user.user + '"></a></div>' +
'<div style="flex-grow:3; overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"><big>' +
escapeHTML(user.screen_name) + '</big></div>' +
'<div class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"> @' +
user.user + '@'+user.host+'</div>' +
'</div>' +
'<div class="divider"></div>' +
'</div>' +
'</div>';
'<div class="" style="padding-top:5px;">' +
'<div style="padding:0; margin:0; width:400px; max-width:100%; display:flex; align-items:flex-end;">' +
'<div style="flex-basis:40px;"><a onclick="udgEx(\'' + user.user + '\',' +
acct_id + ');" user="' + user.user + '" class="udg">' +
'<img src="' + user.avatar + '" width="40" class="prof-img" user="' + user.user + '"></a></div>' +
'<div style="flex-grow:3; overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"><big>' +
escapeHTML(user.screen_name) + '</big></div>' +
'<div class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"> @' +
user.user + '@' + user.host + '</div>' +
'</div>' +
'<div class="divider"></div>' +
'</div>' +
'</div>';
});
$("#his-matching-list").css("height",$("#his-float-data").height()-$("#his-basic-prof").height()-$("#his-des").height()-$("#his-plus-action").height()+"px");
$("#his-matching-list").css("height", $("#his-float-data").height() - $("#his-basic-prof").height() - $("#his-des").height() - $("#his-plus-action").height() + "px");
$("#his-matching-list-contents").html(templete);
});
}

View File

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

View File

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

View File

@@ -1,75 +0,0 @@
<!doctype html>
<html lang="ja">
<head>
<title>Languages - 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/font-awesome.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans" rel="stylesheet">
<meta charset="utf-8">
</head>
<body style="max-width:100vw; width:500px; padding:10px;">
<script type="text/javascript" src="./js/common/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first.js"></script>
<script type="text/javascript" src="./js/common/materialize.js"></script>
<script type="text/javascript" src="./js/lang/lang.js"></script>
<script type="text/javascript" src="./js/ui/theme.js"></script>
<h3 id="language"></h3>
<select id="language-sel" style="color:black" onchange="btn();"></select>
<button class="btn waves-effect indigo nex" style="width:100%; max-width:200px;" onclick="sel()" id="sel"></button>
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;" id="back"></a><br>
<br>
<span id="notice"></span>
<script>
//コード受信
if(location.search){
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)/);
var mode=m[1];
if(mode=="redirect"){
if(localStorage.getItem("lang")){
changelang(localStorage.getItem("lang"))
}
}
}
var fstlang="";
var langtxt="";
var addit="";
Object.keys(lang_lang).forEach(function(i) {
if(langtxt==""){
langtxt=lang_lang[i];
$("#sel").text(lang_set[i]);
$("#back").text(lang_back[i]);
}else{
langtxt=langtxt+"/"+lang_lang[i];
}
addit=addit+"<br>"+lang_langadd[i];
var loc=lang_langlocale[i];
$("#language-sel").append('<option value="'+i+'">'+loc+'</option>');
});
$("#language").text(langtxt)
$("#notice").html(addit)
$('select').material_select('update');
function sel(){
var val=$("#language-sel").val();
changelang(val);
}
function changelang(val){
var electron = require("electron");
var ipc = electron.ipcRenderer;
localStorage.setItem("lang",val);
ipc.send('lang', val);
ipc.on('langres', function (event, arg) {
location.href="index.html";
})
}
function btn(){
var val=$("#language-sel").val();
$("#sel").text(lang_set[val]);
$("#back").text(lang_back[val]);
}
</script>
<script type="text/javascript" src="./js/platform/end.js"></script>

View File

@@ -1,29 +1,34 @@
'use strict';
var dir = 'file://' + __dirname;
var base = dir + '/view/';
// Electronのモジュール
const electron = require("electron");
const fs = require("fs");
const dialog = require('electron').dialog;
var Jimp = require("jimp");
const shell = electron.shell;
const os = require('os')
const path = require('path')
const Menu=electron.Menu
var updatewin=null;
const language = require('./main/language.js');
const css = require('./main/css.js');
const dl = require('./main/dl.js');
const img = require('./main/img.js');
const np = require('./main/np.js');
const systemFunc = require('./main/system.js');
const Menu = electron.Menu
const join = require('path').join;
// アプリケーションをコントロールするモジュール
const app = electron.app;
// ウィンドウを作成するモジュール
const BrowserWindow = electron.BrowserWindow;
const {
download
} = require('electron-dl');
const join = require('path').join;
// メインウィンドウはGCされないようにグローバル宣言
let mainWindow;
var info_path = join(app.getPath("userData"), "window-size.json");
var max_info_path = join(app.getPath("userData"), "max-window-size.json");
var lang_path=join(app.getPath("userData"), "language");
var tmp_img = join(app.getPath("userData"), "tmp.png");
var lang_path = join(app.getPath("userData"), "language");
var ha_path = join(app.getPath("userData"), "hardwareAcceleration");
try {
fs.readFileSync(ha_path, 'utf8');
app.disableHardwareAcceleration()
console.log("disabled: HA");
} catch{
console.log("enabled: HA");
}
var window_size;
try {
window_size = JSON.parse(fs.readFileSync(info_path, 'utf8'));
@@ -42,567 +47,126 @@ try {
height: "string",
x: "string",
y: "string"
}; // デフォルトバリュー
}
function isFile(file) {
try {
fs.statSync(file);
return true
} catch (err) {
if (err.code === 'ENOENT') return false
}
}
// 全てのウィンドウが閉じたら終了
app.on('window-all-closed', function() {
app.on('window-all-closed', function () {
if (process.platform != 'darwin') {
electron.session.defaultSession.clearCache(() => {})
electron.session.defaultSession.clearCache(() => { })
app.quit();
}
});
// macOSでウィンドウを閉じた後に再度開けるようにする
app.on('activate', function () {
if (mainWindow == null) {
createWindow();
}
});
function createWindow() {
if (isFile(lang_path)) {
console.log("exist");
var lang = fs.readFileSync(lang_path, 'utf8');
} else {
var langs = app.getLocale();
console.log(langs);
if (~langs.indexOf("ja")) {
lang = "ja";
} else {
lang = "en";
}
fs.mkdir(app.getPath("userData"), function (err) {
fs.writeFileSync(lang_path, lang);
});
}
console.log(app.getLocale());
console.log("launch:" + lang);
// メイン画面の表示。ウィンドウの幅、高さを指定できる
var platform=process.platform;
var bit=process.arch;
if(platform=="linux"){
var arg={width:window_size.width,height:window_size.height,x:window_size.x,y:window_size.y,icon: __dirname + '/thedesk.png'}
}else{
var arg={width:window_size.width,height:window_size.height,x:window_size.x,y:window_size.y,simpleFullscreen:true}
var platform = process.platform;
var bit = process.arch;
if (platform == "linux") {
var arg = { webPreferences: { webviewTag: true, nodeIntegration: true }, width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, icon: __dirname + '/desk.png' }
} else if (platform == "win32") {
var arg = {webPreferences: { webviewTag: true, nodeIntegration: true }, width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, simpleFullscreen: true }
} else if (platform == "darwin") {
var arg = { webPreferences: { webviewTag: true, nodeIntegration: true }, width: window_size.width, height: window_size.height, x: window_size.x, y: window_size.y, simpleFullscreen: true }
}
mainWindow = new BrowserWindow(arg);
try {
var lang = fs.readFileSync(lang_path, 'utf8');
} catch (e) {
var lang=app.getLocale();
if(~lang.indexOf("ja")){
lang="ja";
}else{
lang="en";
}
fs.writeFileSync(lang_path,lang);
}
electron.session.defaultSession.clearCache(() => {})
if(process.argv){
if(process.argv[1]){
electron.session.defaultSession.clearCache(() => { })
if (process.argv) {
if (process.argv[1]) {
var m = process.argv[1].match(/([a-zA-Z0-9]+)\/\?[a-zA-Z-0-9]+=(.+)/);
if(m){
var mode=m[1];
var code=m[2];
var plus='?mode='+mode+'&code='+code;
}else{
var plus="";
if (m) {
var mode = m[1];
var code = m[2];
var plus = '?mode=' + mode + '&code=' + code;
} else {
var plus = "";
}
}else{
var plus="";
} else {
var plus = "";
}
}else{
var plus="";
} else {
var plus = "";
}
mainWindow.loadURL('file://' + __dirname + '/view/'+lang+'/index.html'+plus);
if(!window_size.x && !window_size.y){
mainWindow.loadURL(base + lang + '/index.html' + plus);
if (!window_size.x && !window_size.y) {
mainWindow.center();
}
if(window_size.max){
if (window_size.max) {
mainWindow.maximize();
}
// ウィンドウが閉じられたらアプリも終了
mainWindow.on('closed', function() {
mainWindow.on('closed', function () {
electron.ipcMain.removeAllListeners();
mainWindow = null;
});
mainWindow.on('close', function() {
if(
max_window_size.width==mainWindow.getBounds().width &&
max_window_size.height==mainWindow.getBounds().height &&
max_window_size.x==mainWindow.getBounds().x &&
max_window_size.y==mainWindow.getBounds().y
){
var size={width:mainWindow.getBounds().width,height:mainWindow.getBounds().height,x:mainWindow.getBounds().x,y:mainWindow.getBounds().y,max:true}
}else{
var size={width:mainWindow.getBounds().width,height:mainWindow.getBounds().height,x:mainWindow.getBounds().x,y:mainWindow.getBounds().y}
mainWindow.on('close', function () {
if (
max_window_size.width == mainWindow.getBounds().width &&
max_window_size.height == mainWindow.getBounds().height &&
max_window_size.x == mainWindow.getBounds().x &&
max_window_size.y == mainWindow.getBounds().y
) {
var size = { width: mainWindow.getBounds().width, height: mainWindow.getBounds().height, x: mainWindow.getBounds().x, y: mainWindow.getBounds().y, max: true }
} else {
var size = { width: mainWindow.getBounds().width, height: mainWindow.getBounds().height, x: mainWindow.getBounds().x, y: mainWindow.getBounds().y }
}
fs.writeFileSync(info_path, JSON.stringify(size));
});
mainWindow.on('maximize', function() {
mainWindow.on('maximize', function () {
fs.writeFileSync(max_info_path, JSON.stringify(mainWindow.getBounds()));
});
// Create the Application's main menu
var template = [{
label: "アプリケーション",
submenu: [
{ label: "TheDeskについて", click: function() { about(); } },
{ type: "separator" },
{ label: "終了", accelerator: "Command+Q", click: function() { app.quit(); }}
]}, {
label: "編集",
submenu: [
{ label: "元に戻す", accelerator: "CmdOrCtrl+Z", selector: "undo:" },
{ label: "やり直し", accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" },
{ type: "separator" },
{ label: "切り取り", accelerator: "CmdOrCtrl+X", selector: "cut:" },
{ label: "コピー", accelerator: "CmdOrCtrl+C", selector: "copy:" },
{ label: "貼り付け", accelerator: "CmdOrCtrl+V", selector: "paste:" },
{ label: "すべて選択", accelerator: "CmdOrCtrl+A", selector: "selectAll:" }
]},{
label: "表示",
submenu: [
{
label: 'Toggle Developer Tools',
accelerator: 'Alt+Command+I',
click: function() { mainWindow.toggleDevTools(); }
},
{
label: '再読み込み',
accelerator: 'CmdOrCtrl+R',
click: function() { mainWindow.webContents.send('reload', " "); }
}
]
},
{
label: 'ウィンドウ',
role: 'window',
submenu: [
{
label: '最小化',
accelerator: 'CmdOrCtrl+M',
role: 'minimize'
},
{
label: '閉じる',
accelerator: 'CmdOrCtrl+W',
role: 'close'
},
]
}
];
var platform=process.platform;
var bit=process.arch;
if(platform=="darwin"){
Menu.setApplicationMenu(Menu.buildFromTemplate(template));
var platform = process.platform;
var bit = process.arch;
if (platform == "darwin") {
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang, mainWindow, false, dir)));
}
//CSS
css.css(mainWindow);
//アップデータとダウンロード
dl.dl(mainWindow, lang_path, base);
//画像選択と画像処理
img.img(mainWindow, dir);
//NowPlaying
np.TheDeskNowPlaying(mainWindow);
//その他system
systemFunc.system(mainWindow, dir, lang);
}
// Electronの初期化完了後に実行
app.on('ready', createWindow);
var onError = function(err,response){
console.error(err,response);
var onError = function (err, response) {
console.error(err, response);
};
var ipc = electron.ipcMain;
ipc.on('native-notf', function(e, args) {
var platform=process.platform;
var bit=process.arch;
if(platform=="win32"){
const notifier = require('node-notifier')
var tmp_imge=tmp_img;
Jimp.read(args[2], function (err, lenna) {
if(!err && lenna){
lenna.write(tmp_img);
var tmp_imge=tmp_img;
}else{
var tmp_imge="";
}
notifier.notify({
appID: "top.thedesk",
message: args[1],
title: args[0],
icon : tmp_imge,
sound: false,
wait: true,
},
function(err, response) {
console.log(err, response)
});
});
}
});
//言語
ipc.on('lang', function(e, arg) {
fs.writeFileSync(lang_path,arg);
mainWindow.webContents.send('langres', "");
})
ipc.on('update', function(e, x, y) {
var platform=process.platform;
var bit=process.arch;
if(platform!="others"){
updatewin = new BrowserWindow({
width: 600,
height: 400,
"transparent": false, // ウィンドウの背景を透過
"frame": false, // 枠の無いウィンドウ
"resizable": false
});
var lang = fs.readFileSync(lang_path, 'utf8');
updatewin.loadURL('file://' + __dirname + '/view/'+lang+'/update.html');
return "true"
}else{
return false;
}
})
//Web魚拓
ipc.on('shot', function(e, args) {
console.log("link:"+args[0]+" width:"+args[1]+" height:"+args[2]+" title:"+args[4]+" top:"+args[5]+" left:"+args[6]);
var platform=process.platform;
var bit=process.arch;
if(args[7]==""){
if(platform=="win32"){
var dir=app.getPath('home')+"\\Pictures\\TheDesk\\Screenshots\\"+args[4]+"-toot.png";
var folder=app.getPath('home')+"\\Pictures\\TheDesk\\Screenshots\\";
}else if(platform=="linux" || platform=="darwin" ){
var dir=app.getPath('home')+"/Pictures/TheDesk/Screenshots/"+args[4]+"-toot.png";
var folder=app.getPath('home')+"/Pictures/TheDesk/Screenshots/";
}
}else{
var folder=args[7];
var dir=folder+args[4]+"-toot.png";
}
Jimp.read(Buffer.from( args[3],'base64'), function (err, lenna) {
if (err) throw err;
lenna.crop( args[6], args[5], args[1], args[2] ).write(dir);
});
shell.showItemInFolder(folder);
})
ipc.on('shot-img-dl', (e, args) => {
Jimp.read(args[0], function (err, lenna) {
if (err) throw err;
if(args[1]==""){
if(process.platform=="win32"){
var folder=app.getPath('home')+"\\Pictures\\TheDesk\\Screenshots\\";
}else if(process.platform=="linux" || process.platform=="darwin" ){
var folder=app.getPath('home')+"/Pictures/TheDesk/Screenshots/";
}
}else{
var folder=args[2];
}
lenna.write(folder+args[1]);
});
})
//アプデDL
ipc.on('download-btn', (e, args) => {
var platform=process.platform;
var bit=process.arch;
var versioning=args[3];
var portable=args[2];
if(platform=="win32" || platform=="linux" || platform=="darwin" ){
var exe=false;
if(platform=="win32" && bit=="x64"){
if(portable){
var zip="TheDesk.exe";
}else{
var zip="TheDesk-setup.exe";
}
exe=true;
}else if(platform=="win32" && bit=="ia32"){
if(portable){
var zip="TheDesk-ia32.exe";
}else{
var zip="TheDesk-setup-ia32.exe";
}
exe=true;
}else if(platform=="linux" && bit=="x64"){
var zip="TheDesk-linux-x64.zip";
}else if(platform=="linux" && bit=="ia32"){
var zip="TheDesk-linux-ia32.zip";
}else if(platform=="darwin"){
var zip="TheDesk-darwin-x64.zip";
}else{
return;
}
if(versioning && !exe){
zip=zip.replace(".zip","."+args[1]+".zip");
}else if(versioning){
zip=zip.replace(".exe","."+args[1]+".exe");
}
}else{
const options = {
type: 'info',
title: 'Other OS Supporting System',
message: "thedesk.topをブラウザで開きます。",
buttons: ['OK']
}
dialog.showMessageBox(options, function(index) {
shell.openExternal("https://thedesk.top");
})
return;
if(bit=="x64"){
var zip="TheDesk-linux-x64.zip";
}else if(bit=="ia32"){
var zip="TheDesk-linux-ia32.zip";
}
}
var ver=args[1];
console.log(zip);
if(args[0]=="true"){
dialog.showSaveDialog(null, {
title: '保存',
properties: ['openFile', 'createDirectory'],
defaultPath: zip
}, (savedFiles) => {
console.log(savedFiles);
if(!savedFiles){
return false;
}
if(platform=="win32"){
var m = savedFiles.match(/(.+)\\(.+)$/);
}else{
var m = savedFiles.match(/(.+)\/(.+)$/);
}
if(isExistFile(savedFiles)){
fs.statSync(savedFiles);
fs.unlink(savedFiles);
}
console.log(m[1]+":"+savedFiles)
dl(portable,ver,m[1],savedFiles);
});
}else{
dl(portable,ver);
}
});
function isExistFile(file) {
try {
fs.statSync(file);
return true
} catch(err) {
if(err.code === 'ENOENT') return false
}
}
function dl(portable,ver,files,fullname){
console.log(files);
var platform=process.platform;
var bit=process.arch;
if(platform=="win32"){
if(bit=="x64"){
if(portable){
var zip="TheDesk.exe";
}else{
var zip="TheDesk-setup.exe";
}
}else if(bit=="ia32"){
if(portable){
var zip="TheDesk-ia32.exe";
}else{
var zip="TheDesk-setup-ia32.exe";
}
}
}else if(platform=="linux"){
if(bit=="x64"){
var zip="TheDesk-linux-x64.zip";
}else if(bit=="ia32"){
var zip="TheDesk-linux-ia32.zip";
}
}else if(platform=="darwin"){
var zip="TheDesk-darwin-x64.zip";
}
//zip=zip+"?"+ver;
var l = 8;
// 生成する文字列に含める文字セット
var c = "abcdefghijklmnopqrstuvwxyz0123456789";
var cl = c.length;
var r = "";
for(var i=0; i<l; i++){
r += c[Math.floor(Math.random()*cl)];
}
updatewin.webContents.send('mess', "ダウンロードを開始します。");
const opts = {
directory:fullname,
openFolderWhenDone: true,
onProgress: function(e) {
updatewin.webContents.send('prog', e);
},
saveAs: false
};
download(BrowserWindow.getFocusedWindow(),
'https://dl.thedesk.top/'+zip, opts)
.then(dl => {
updatewin.webContents.send('mess', "ダウンロードが完了しました。");
app.quit();
})
.catch(console.error);
}
ipc.on('general-dl', (e, args) => {
var name="";
var platform=process.platform;
var bit=process.arch;
if(args[1]==""){
if(platform=="win32"){
var dir=app.getPath('home')+"\\Pictures\\TheDesk";
}else if(platform=="linux" || platform=="darwin" ){
var dir=app.getPath('home')+"/Pictures/TheDesk";
}
}else{
var dir=args[1];
}
mainWindow.webContents.send('general-dl-message', "ダウンロードを開始します。");
const opts = {
directory: dir,
filename:name,
openFolderWhenDone: true,
onProgress: function(e) {
mainWindow.webContents.send('general-dl-prog', e);
},
saveAs: false
};
download(BrowserWindow.getFocusedWindow(),
args[0], opts)
.then(dl => {
mainWindow.webContents.send('general-dl-message', "ダウンロードが完了しました。");
})
.catch(console.error);
});
ipc.on('quit', (e, args) => {
app.quit();
});
ipc.on('about', (e, args) => {
about();
});
function about(){
var ver=app.getVersion()
var window = new BrowserWindow({width: 300, height: 460,
"transparent": false, // ウィンドウの背景を透過
"frame": false, // 枠の無いウィンドウ
"resizable": false });
window.loadURL('file://' + __dirname + '/about.html?ver='+ver);
return "true"
}
ipc.on('itunes', (e, args) => {
var platform=process.platform;
var bit=process.arch;
if(platform=="darwin"){
const nowplaying = require("itunes-nowplaying-mac")
nowplaying.getRawData().then(function (value) {
mainWindow.webContents.send('itunes-np', value);
}).catch(function (error) {
// 非同期処理失敗。呼ばれない
console.log(error);
});
}
});
ipc.on('file-select', (e, args) => {
dialog.showOpenDialog(null, {
properties: ['openFile', 'multiSelections'],
title: '添付ファイルを選択',
defaultPath: '.',
filters: [
{name: 'メディアファイル', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg','mp4','webm']},
{name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg']},
{name: '動画', extensions: ['mp4','webm']},
{name: '全てのファイル', extensions: ['*']}
]
}, (fileNames) => {
if(!fileNames){
return false;
}
for(var i=0;i<fileNames.length;i++){
var path=fileNames[i];
var bin = fs.readFileSync(path, 'base64');
mainWindow.webContents.send('bmp-img-comp', [bin,'new']);
}
});
});
ipc.on('column-del', (e, args) => {
const options = {
type: 'info',
title: 'カラム削除',
message: "カラムを削除しますか?(すべてのカラムのリンク解析がOFFになります。)",
buttons: ['いいえ', 'はい']
}
dialog.showMessageBox(options, function(index) {
mainWindow.webContents.send('column-del-reply', index);
})
});
ipc.on('bmp-image', (e, args) => {
var m = args[0].match(/(.+)\\(.+)\.(.+)$/);
Jimp.read(args[0], function (err, lenna) {
if (err) throw err;
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
mainWindow.webContents.send('bmp-img-comp', [src,args[1]]);
});
});
});
ipc.on('nano', function (e, x, y) {
var nano_info_path = join(app.getPath("userData"), "nano-window-position.json");
var window_pos;
try {
window_pos = JSON.parse(fs.readFileSync(nano_info_path, 'utf8'));
} catch (e) {
window_pos = [0,0]; // デフォルトバリュー
}
var nanowindow = new BrowserWindow({width: 300, height: 200,
"transparent": false, // ウィンドウの背景を透過
"frame": false, // 枠の無いウィンドウ
"resizable": false });
nanowindow.loadURL('file://' + __dirname + '/nano.html');
nanowindow.setAlwaysOnTop(true);
nanowindow.setPosition(window_pos[0], window_pos[1]);
nanowindow.on('close', function() {
fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition()));
});
return true;
})
ipc.on('adobe', (e, arg) => {
if(!arg){
const options = {
type: 'info',
title: 'Adobeフォトエディタ',
message: "「許可」または「永続的に許可」をクリックするとTheDeskとAdobeで情報を共有します。\n次のウィンドウを開いている時以外は一切提供しません。",
buttons: ['拒否', '許可','永続的に許可']
}
dialog.showMessageBox(options, function(index) {
if(index==2){
mainWindow.webContents.send('adobeagree', "true");
}
if(index>0){
adobeWindow();
}
})
}else{
adobeWindow();
}
});
function adobeWindow(){
var window = new BrowserWindow({
width: 1000,
height: 750
});
window.loadURL('file://' + __dirname + '/adobe.html');
}
var cbTimer1;
ipc.on('startmem', (e, arg) => {
cbTimer1 = setInterval(mems, 1000);
});
ipc.on('endmem', (e, arg) => {
if(cbTimer1){
clearInterval(cbTimer1);
}
});
function mems(){
var mem=os.totalmem()-os.freemem();
if(mainWindow){
mainWindow.webContents.send('memory', [mem,os.cpus()[0].model,os.totalmem()]);
}
}
ipc.on('mkc', (e, arg) => {
var platform=process.platform;
if(platform=="linux" || platform=="win32" ){
var mkc = fs.readFileSync(__dirname + '/.tkn', 'utf8');
}else{
var mkc = "";
}
mainWindow.webContents.send('mkcr', mkc);
});
ipc.on('export', (e, args) => {
fs.writeFileSync(args[0], args[1]);
});
ipc.on('import', (e, arg) => {
mainWindow.webContents.send('config', fs.readFileSync(arg, 'utf8'));
});
app.setAsDefaultProtocolClient('thedesk')
app.setAsDefaultProtocolClient('thedesk')

105
app/main/css.js Normal file
View File

@@ -0,0 +1,105 @@
function css(mainWindow) {
const electron = require("electron");
const fs = require("fs");
const path = require('path')
var ipc = electron.ipcMain;
var JSON5 = require('json5');
const app = electron.app;
const join = require('path').join;
var customcss = join(app.getPath("userData"), "custom.css");
ipc.on('custom-css-create', function (e, arg) {
fs.writeFileSync(customcss, arg);
mainWindow.webContents.send('custom-css-create-complete', "");
})
ipc.on('custom-css-request', function (e, arg) {
try {
var css = fs.readFileSync(customcss, 'utf8');
} catch (e) {
var css = "";
}
mainWindow.webContents.send('custom-css-response', css);
})
ipc.on('theme-json-create', function (e, arg) {
var themecss = join(app.getPath("userData"), JSON5.parse(arg)["id"] +
".thedesktheme");
fs.writeFileSync(themecss, JSON.stringify(JSON5.parse(arg)));
if (JSON5.parse(arg)["id"]) {
mainWindow.webContents.send('theme-json-create-complete', "");
} else {
mainWindow.webContents.send('theme-json-create-complete', "error");
}
})
ipc.on('theme-json-delete', function (e, arg) {
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
console.log(themecss);
fs.unlink(themecss, function (err) {
mainWindow.webContents.send('theme-json-delete-complete', "");
});
})
ipc.on('theme-json-request', function (e, arg) {
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
mainWindow.webContents.send('theme-json-response', json);
})
ipc.on('theme-css-request', function (e, arg) {
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
try {
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
var primary = json.vars.primary;
var secondary = json.vars.secondary;
var text = json.vars.text;
if (json.base == "light") {
var drag = "rgba(255, 255, 255, 0.8)";
var beforehover = "#757575";
} else {
var drag = "rgba(0, 0, 0, 0.8)";
var beforehover = "#9e9e9e";
}
if (json.props) {
if (json.props.TheDeskAccent) {
var emphasized = json.props.TheDeskAccent
} else {
var emphasized = secondary;
}
} else {
var emphasized = primary;
}
var css = ".customtheme {--bg:" + secondary + ";--drag:" + drag + ";" +
"--color:" + text + ";--beforehover:" + beforehover + ";--modal:" +
secondary + ";--subcolor:" + primary + ";--box:" + primary +
";--sidebar:" + primary + ";--shared:" + emphasized + ";" +
"--notfbox:" + secondary + ";--emphasized:" + primary + ";--his-data:" +
secondary +
";--active:" + primary + ";--postbox:" + primary + ";--modalfooter:" +
primary +
";}.blacktheme #imagemodal{background: url(\"../img/pixel.svg\");}";
mainWindow.webContents.send('theme-css-response', css);
} catch (e) {
var css = "";
}
})
ipc.on('theme-json-list', function (e, arg) {
fs.readdir(app.getPath("userData"), function (err, files) {
if (err) throw err;
var fileList = files.filter(function (file) {
var tfile = join(app.getPath("userData"), file);
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile); //絞り込み
})
var themes = [];
for (var i = 0; i < fileList.length; i++) {
var themecss = join(app.getPath("userData"), fileList[i]);
var json = JSON.parse(fs.readFileSync(themecss, 'utf8'));
themes.push({
name: json.name,
id: json.id
})
}
mainWindow.webContents.send('theme-json-list-response', themes);
});
})
}
exports.css = css;

126
app/main/dl.js Normal file
View File

@@ -0,0 +1,126 @@
function dl(mainWindow, lang_path, base) {
const electron = require("electron");
const shell = electron.shell;
const fs = require("fs");
const { download } = require('electron-dl');
const BrowserWindow = electron.BrowserWindow;
const dialog = electron.dialog;
var updatewin = null;
var ipc = electron.ipcMain;
const app = electron.app;
const join = require('path').join;
ipc.on('update', function (e, x, y) {
var platform = process.platform;
var bit = process.arch;
if (platform != "others") {
updatewin = new BrowserWindow({
webPreferences: {
nodeIntegration:true
},
width: 600,
height: 400,
"transparent": false, // ウィンドウの背景を透過
"frame": false, // 枠の無いウィンドウ
"resizable": false,
"modal": true
});
var lang = fs.readFileSync(lang_path, 'utf8');
updatewin.loadURL(base + lang + '/update.html');
return "true"
} else {
return false;
}
})
//アプデDL
ipc.on('download-btn', (e, args) => {
var platform = process.platform;
var bit = process.arch;
dialog.showSaveDialog(null, {
title: 'Save',
defaultPath: app.getPath('home') + "/" + args[1]
}, (savedFiles) => {
console.log(savedFiles);
if (!savedFiles) {
return false;
}
if (platform == "win32") {
var m = savedFiles.match(/(.+)\\(.+)$/);
} else {
var m = savedFiles.match(/(.+)\/(.+)$/);
}
//console.log(m);
if (isExistFile(savedFiles)) {
fs.unlinkSync(savedFiles);
}
dl(args[0], args[1], m[1]);
});
});
function isExistFile(file) {
try {
fs.statSync(file);
return true
} catch (err) {
if (err.code === 'ENOENT') return false
}
}
function dl(url, file, dir) {
updatewin.webContents.send('mess', "ダウンロードを開始します。");
const opts = {
directory: dir,
openFolderWhenDone: true,
onProgress: function (e) {
updatewin.webContents.send('prog', e);
},
saveAs: false
};
download(updatewin,
url, opts)
.then(dl => {
updatewin.webContents.send('mess', "ダウンロードが完了しました。");
app.quit();
})
.catch(console.error);
}
ipc.on('general-dl', (e, args) => {
var name = "";
var platform = process.platform;
var bit = process.arch;
if (args[1] == "") {
if (platform == "win32") {
var dir = app.getPath('home') + "\\Pictures\\TheDesk";
} else if (platform == "linux" || platform == "darwin") {
var dir = app.getPath('home') + "/Pictures/TheDesk";
}
} else {
var dir = args[1];
}
const opts = {
directory: dir,
filename: name,
openFolderWhenDone: false,
onProgress: function (e) {
mainWindow.webContents.send('general-dl-prog', e);
},
saveAs: false
};
download(BrowserWindow.getFocusedWindow(),
args[0], opts)
.then(dl => {
mainWindow.webContents.send('general-dl-message', dir);
})
.catch(console.error);
});
ipc.on('open-finder', (e, folder) => {
shell.showItemInFolder(folder)
});
}
exports.dl = dl;

74
app/main/img.js Normal file
View File

@@ -0,0 +1,74 @@
function img(mainWindow, dir) {
const electron = require("electron");
const dialog = electron.dialog;
const fs = require("fs");
var Jimp = require("jimp");
var ipc = electron.ipcMain;
const BrowserWindow = electron.BrowserWindow;
ipc.on('file-select', (e, args) => {
dialog.showOpenDialog(null, {
properties: ['openFile', 'multiSelections'],
title: '添付ファイルを選択',
defaultPath: '.',
filters: [
{ name: 'メディアファイル', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm'] },
{ name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] },
{ name: '動画', extensions: ['mp4', 'webm'] },
{ name: '全てのファイル', extensions: ['*'] }
]
}, (fileNames) => {
if (!fileNames) {
return false;
}
for (var i = 0; i < fileNames.length; i++) {
var path = fileNames[i];
var bin = fs.readFileSync(path, 'base64');
mainWindow.webContents.send('bmp-img-comp', [bin, 'new']);
}
});
});
ipc.on('adobe', (e, arg) => {
if (!arg) {
const options = {
type: 'info',
title: 'Adobeフォトエディタ',
message: "「許可」または「永続的に許可」をクリックするとTheDeskとAdobeで情報を共有します。\n次のウィンドウを開いている時以外は一切提供しません。",
buttons: ['拒否', '許可', '永続的に許可']
}
dialog.showMessageBox(options, function (index) {
if (index === 2) {
mainWindow.webContents.send('adobeagree', "true");
}
if (index > 0) {
adobeWindow();
}
})
} else {
adobeWindow();
}
});
function adobeWindow() {
var window = new BrowserWindow({
webPreferences: {
nodeIntegration:true
},
width: 1000,
height: 750
});
window.loadURL(dir + '/adobe.html');
}
ipc.on('bmp-image', (e, args) => {
var m = args[0].match(/(.+)\\(.+)\.(.+)$/);
Jimp.read(args[0], function (err, lenna) {
if (err) throw err;
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
mainWindow.webContents.send('bmp-img-comp', [src, args[1]]);
});
});
});
}
exports.img = img;

164
app/main/language.js Normal file
View File

@@ -0,0 +1,164 @@
// Create the Application's main menu
function templete(lang, mainWindow, packaged, dir) {
const electron = require("electron");
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
const dict = {
"application": {
"ja": "アプリケーション",
"en": "Application"
},
"about": {
"ja": "TheDeskについて",
"en": "About TheDesk"
},
"quit": {
"ja": "終了",
"en": "Quit"
},
"edit": {
"ja": "編集",
"en": "Edit"
},
"undo": {
"ja": "元に戻す",
"en": "Undo"
},
"redo": {
"ja": "やり直す",
"en": "Redo"
},
"cut": {
"ja": "切り取り",
"en": "Cut"
},
"copy": {
"ja": "コピー",
"en": "Copy"
},
"paste": {
"ja": "貼り付け",
"en": "Paste"
},
"selall": {
"ja": "すべて選択",
"en": "Select All"
},
"view": {
"ja": "表示",
"en": "View"
},
"reload": {
"ja": "再読み込み",
"en": "Reload"
},
"window": {
"ja": "ウィンドウ",
"en": "Window"
},
"minimun": {
"ja": "最小化",
"en": "Minimarize"
},
"close": {
"ja": "閉じる",
"en": "Close"
}
}
const menu = [{
label: dict.application[lang],
submenu: [
{
label: dict.about[lang], click: function () {
var ver = app.getVersion()
var window = new BrowserWindow({
webPreferences: {
nodeIntegration:true
},
width: 300, height: 460,
"transparent": false, // ウィンドウの背景を透過
"frame": false, // 枠の無いウィンドウ
"resizable": false
});
window.loadURL(dir + '/about.html?ver=' + ver);
}
},
{ type: "separator" },
{ label: dict.quit[lang], accelerator: "Command+Q", click: function () { app.quit(); } }
]
}, {
label: dict.edit[lang],
submenu: [
{ label: dict.undo[lang], accelerator: "CmdOrCtrl+Z", selector: "undo:" },
{ label: dict.redo[lang], accelerator: "Shift+CmdOrCtrl+Z", selector: "redo:" },
{ type: "separator" },
{ label: dict.cut[lang], accelerator: "CmdOrCtrl+X", selector: "cut:" },
{ label: dict.copy[lang], accelerator: "CmdOrCtrl+C", selector: "copy:" },
{ label: dict.paste[lang], accelerator: "CmdOrCtrl+V", selector: "paste:" },
{ label: dict.selall[lang], accelerator: "CmdOrCtrl+A", selector: "selectAll:" }
]
}, {
label: dict.view[lang],
submenu: [
{
label: 'Toggle Developer Tools',
accelerator: 'Alt+Command+I',
click: function () { if (!packaged) { mainWindow.toggleDevTools(); } }
},
{
label: dict.reload[lang],
accelerator: 'CmdOrCtrl+R',
click: function () { mainWindow.webContents.send('reload', " "); }
}
]
},
{
label: dict.window[lang],
role: 'window',
submenu: [
{
label: dict.minimun[lang],
accelerator: 'CmdOrCtrl+M',
role: 'minimize'
},
{
label: dict.close[lang],
accelerator: 'CmdOrCtrl+W',
role: 'close'
},
]
}
];
return menu;
}
function delsel(lang) {
const dict = {
"delete": {
"ja": "カラム削除",
"en": "Delete this column"
},
"mess": {
"ja": "カラムを削除しますか?(すべてのカラムのリンク解析がOFFになります。)",
"en": "Delete this column(URL analyzes of all windows will be disabled.)"
},
"yes": {
"ja": "はい",
"en": "Yes"
},
"no": {
"ja": "いいえ",
"en": "No"
}
}
const options = {
type: 'info',
title: dict.delete[lang],
message: dict.mess[lang],
buttons: [dict.no[lang], dict.yes[lang]]
}
return options;
}
exports.template = templete;
exports.delsel = delsel;

71
app/main/np.js Normal file
View File

@@ -0,0 +1,71 @@
function np(mainWindow) {
const electron = require("electron");
const join = require('path').join;
const app = electron.app;
const fs = require("fs");
var ipc = electron.ipcMain;
ipc.on('itunes', async (e, args) => {
//Verified on Windows
console.log("Access");
if (args[0] == "set") {
var { NowPlaying, PlayerName } = require("nowplaying-node");
var nppath = join(app.getPath("userData"), "nowplaying");
var npProvider;
try {
npProvider = args[1];
} catch (e) {
npProvider = "AIMP";
}
var myAIMP = new NowPlaying({
fetchCover: true,
player: PlayerName[npProvider],
});
fs.writeFileSync(nppath, npProvider);
} else {
var platform = process.platform;
var bit = process.arch;
if (platform == "darwin") {
try {
const nowplaying = require("itunes-nowplaying-mac");
const value = await nowplaying.getRawData();
mainWindow.webContents.send('itunes-np', value);
} catch (error) {
// エラーを返す
console.error(error);
mainWindow.webContents.send('itunes-np', error);
}
} else {
var { NowPlaying, PlayerName } = require("nowplaying-node");
var nppath = join(app.getPath("userData"), "nowplaying");
var npProvider;
try {
npProvider = fs.readFileSync(nppath, 'utf8');
} catch (e) {
npProvider = "AIMP";
}
var myAIMP = new NowPlaying({
fetchCover: true,
player: PlayerName[npProvider],
});
myAIMP.update();
var path = myAIMP.getCoverPath();
if (path) {
var bin = fs.readFileSync(path, 'base64');
} else {
var bin = false;
}
var value = {
win: true,
name: myAIMP.getTitle(),
artist: myAIMP.getArtist(),
album: myAIMP.getAlbum(),
path: bin
}
mainWindow.webContents.send('itunes-np', value);
}
}
});
}
exports.TheDeskNowPlaying = np;

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