Compare commits

...

90 Commits

Author SHA1 Message Date
cutls
7ff01413e5 some fix 2020-09-07 00:23:10 +09:00
cutls
48b3ed3aca some fix 2020-09-07 00:14:51 +09:00
cutls
e75d52f985 TheDesk 21.1.0 (Mayu) 2020-09-07 00:08:30 +09:00
cutls
3f95e755b5 cannot get next fav/flw/fler 2020-09-06 23:29:12 +09:00
cutls
9d0f4096f8 #317 nice reload 2020-09-06 22:57:20 +09:00
cutls
e402e0e7a7 materialize-css update 2020-09-06 21:39:16 +09:00
cutls
38c77fb39e streaming disconnect warrior 2020-09-06 21:38:15 +09:00
cutls
3020adbe9d #317 annoucement 2020-09-06 21:37:50 +09:00
cutls
4df390713c #317 announcement bug 2020-09-04 23:54:49 +09:00
cutls
bec4444388 #307 #317 margin between timelines 2020-09-04 23:43:04 +09:00
cutls
2d249f6f19 max/min width of column 2020-09-03 23:17:01 +09:00
cutls
4d1053ce99 Use proxy media url for unknown media 2020-09-03 22:57:53 +09:00
cutls
0522331977 Channel subscription type streaming 2020-09-03 11:21:20 +09:00
cutls
eb9520397c z-index 2020-09-03 11:20:57 +09:00
cutls
f0c93b8fce #342 emoji 2020-09-03 11:20:36 +09:00
cutls
b3e9c3d6ce wip: channel subscription type streaming 2020-09-02 13:24:59 +09:00
cutls
99793f2e20 TheDesk Nano fixed 2020-09-02 12:11:02 +09:00
cutls
f43bd64be2 minimum hashtag streaming 2020-09-02 12:02:31 +09:00
cutls
fa440e8d9b fix some CSS 2020-08-30 22:42:49 +09:00
cutls
91bc8c8bdd WIP #317 last.fm 2020-08-12 10:01:14 +09:00
cutls
74d756d43b #317 for a11y 2020-08-12 09:48:28 +09:00
cutls
2281d0ca35 #317 WebView prefer 2020-08-05 12:46:10 +09:00
cutls
31cc929c68 #317 last_status type 2020-08-05 12:38:51 +09:00
cutls
80ce93785a #317 context menu 2020-08-05 12:26:59 +09:00
cutls
1710ab0035 [WIP] linting 2020-08-02 16:08:07 +09:00
cutls
dafc50bbd7 TheDesk 21.0.5 (Mayu) 2020-08-02 13:26:18 +09:00
cutls
50f58f8d3b Merge branch 'master' of github.com:cutls/TheDesk 2020-08-02 13:16:45 +09:00
cutls
b9be1529cc Change InstanceTicker to OpenSticker 2020-08-02 13:16:31 +09:00
Cutls
fb3a89b547 Merge pull request #318 from cutls/dependabot/npm_and_yarn/app/sweetalert2-9.17.0
Bump sweetalert2 from 9.15.2 to 9.17.0 in /app
2020-07-21 09:21:23 +09:00
Cutls
c01915c397 Merge pull request #319 from cutls/dependabot/npm_and_yarn/app/fortawesome/fontawesome-free-5.14.0
Bump @fortawesome/fontawesome-free from 5.13.1 to 5.14.0 in /app
2020-07-21 09:20:57 +09:00
Cutls
e9a774c1d4 Merge pull request #315 from cutls/dependabot/npm_and_yarn/app/lodash-4.17.19
[Security] Bump lodash from 4.17.15 to 4.17.19 in /app
2020-07-21 09:20:20 +09:00
Cutls
04d08ae6c1 Merge pull request #320 from cutls/dependabot/npm_and_yarn/app/chokidar-3.4.1
Bump chokidar from 3.4.0 to 3.4.1 in /app
2020-07-21 09:19:54 +09:00
dependabot-preview[bot]
0585f95a85 Bump @fortawesome/fontawesome-free from 5.13.1 to 5.14.0 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.13.1 to 5.14.0.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.13.1...5.14.0)

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

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

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

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-07-17 20:58:08 +00:00
Cutls
7941eb7e9d Update FUNDING.yml 2020-07-17 11:17:25 +09:00
dependabot-preview[bot]
a8dedc94e9 Bump sweetalert2 from 9.15.2 to 9.17.0 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 9.15.2 to 9.17.0.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v9.15.2...v9.17.0)

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

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

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

* New translations setting.json (Czech)

* New translations index.json (Danish)

* New translations setting.json (Danish)

* New translations index.json (German)

* New translations setting.json (German)

* New translations index.json (Finnish)

* New translations setting.json (Finnish)

* New translations index.json (Hebrew)

* New translations setting.json (Hebrew)

* New translations index.json (Hungarian)

* New translations index.json (Romanian)

* New translations index.json (Czech)

* New translations setting.json (Greek)

* New translations setting.json (Catalan)

* New translations index.json (Afrikaans)

* New translations setting.json (Romanian)

* New translations index.json (French)

* New translations setting.json (French)

* New translations index.json (Spanish)

* New translations setting.json (Spanish)

* New translations setting.json (Bulgarian)

* New translations index.json (Catalan)

* New translations index.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations index.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations index.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations index.json (Chinese Simplified)

* New translations setting.json (Turkish)

* New translations setting.json (Ukrainian)

* New translations index.json (Ukrainian)

* New translations index.json (Turkish)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Spanish, Argentina)

* New translations index.json (Vietnamese)

* New translations setting.json (Vietnamese)

* New translations index.json (Portuguese, Brazilian)

* New translations setting.json (Portuguese, Brazilian)

* New translations index.json (Spanish, Argentina)

* New translations index.json (English)

* New translations setting.json (Swedish)

* New translations index.json (Polish)

* New translations setting.json (Hungarian)

* New translations index.json (Italian)

* New translations setting.json (Italian)

* New translations index.json (Dutch)

* New translations setting.json (Dutch)

* New translations index.json (Norwegian)

* New translations setting.json (Norwegian)

* New translations index.json (Swedish)

* New translations setting.json (Polish)

* New translations index.json (Portuguese)

* New translations setting.json (Portuguese)

* New translations index.json (Russian)

* New translations setting.json (Russian)

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

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

* New translations setting.json (English)

* New translations index.json (Afrikaans)

* New translations index.json (Romanian)

* New translations index.json (Bulgarian)

* New translations index.json (Arabic)

* New translations index.json (Spanish)

* New translations index.json (French)

* New translations index.json (Ukrainian)

* New translations index.json (Turkish)

* New translations index.json (Swedish)

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

* New translations index.json (Russian)

* New translations index.json (Portuguese, Brazilian)

* New translations index.json (English)

* New translations index.json (Spanish, Argentina)

* New translations index.json (Chinese Simplified)

* New translations index.json (Vietnamese)

* New translations index.json (Chinese Traditional)

* New translations index.json (Portuguese)

* New translations index.json (Greek)

* New translations index.json (German)

* New translations index.json (Danish)

* New translations index.json (Finnish)

* New translations index.json (Czech)

* New translations index.json (Catalan)

* New translations index.json (Polish)

* New translations index.json (Norwegian)

* New translations index.json (Dutch)

* New translations index.json (Italian)

* New translations index.json (Hungarian)

* New translations index.json (Hebrew)

* New translations main.json (Catalan)

* New translations main.json (Czech)

* New translations main.json (Bulgarian)

* New translations main.json (Danish)

* New translations main.json (German)

* New translations main.json (Spanish)

* New translations main.json (Romanian)

* New translations main.json (French)

* New translations main.json (Arabic)

* New translations main.json (Afrikaans)

* New translations main.json (Chinese Simplified)

* New translations main.json (Ukrainian)

* New translations main.json (Turkish)

* New translations main.json (Swedish)

* New translations main.json (English)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Vietnamese)

* New translations main.json (Chinese Traditional)

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

* New translations main.json (Hungarian)

* New translations main.json (Hebrew)

* New translations main.json (Italian)

* New translations main.json (Finnish)

* New translations main.json (Greek)

* New translations main.json (Russian)

* New translations main.json (Portuguese)

* New translations main.json (Polish)

* New translations main.json (Norwegian)

* New translations main.json (Dutch)

* New translations main.json (Swedish)

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

* New translations main.json (Russian)

* New translations main.json (Turkish)

* New translations main.json (Portuguese)

* New translations main.json (Polish)

* New translations main.json (Norwegian)

* New translations main.json (Vietnamese)

* New translations main.json (English)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations main.json (Ukrainian)

* New translations main.json (Dutch)

* New translations main.json (Catalan)

* New translations main.json (Bulgarian)

* New translations main.json (Arabic)

* New translations main.json (Afrikaans)

* New translations main.json (Spanish)

* New translations main.json (French)

* New translations main.json (Romanian)

* New translations main.json (Czech)

* New translations main.json (Finnish)

* New translations main.json (Italian)

* New translations main.json (Hungarian)

* New translations main.json (Hebrew)

* New translations main.json (Greek)

* New translations main.json (German)

* New translations main.json (Danish)

* New translations main.json (Swedish)

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

* New translations main.json (Russian)

* New translations main.json (Turkish)

* New translations main.json (Portuguese)

* New translations main.json (Polish)

* New translations main.json (Norwegian)

* New translations main.json (Vietnamese)

* New translations main.json (English)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations main.json (Ukrainian)

* New translations main.json (Dutch)

* New translations main.json (Catalan)

* New translations main.json (Bulgarian)

* New translations main.json (Arabic)

* New translations main.json (Afrikaans)

* New translations main.json (Spanish)

* New translations main.json (French)

* New translations main.json (Romanian)

* New translations main.json (Czech)

* New translations main.json (Finnish)

* New translations main.json (Italian)

* New translations main.json (Hungarian)

* New translations main.json (Hebrew)

* New translations main.json (Greek)

* New translations main.json (German)

* New translations main.json (Danish)

* New translations acct.json (Romanian)

* New translations acct.json (Danish)

* New translations acct.json (German)

* New translations acct.json (Greek)

* New translations acct.json (Finnish)

* New translations acct.json (Hebrew)

* New translations acct.json (Czech)

* New translations acct.json (Afrikaans)

* New translations acct.json (French)

* New translations acct.json (Spanish)

* New translations acct.json (Bulgarian)

* New translations acct.json (Arabic)

* New translations acct.json (Catalan)

* New translations acct.json (Chinese Simplified)

* New translations acct.json (Chinese Traditional)

* New translations acct.json (Ukrainian)

* New translations acct.json (Turkish)

* New translations acct.json (Spanish, Argentina)

* New translations acct.json (English)

* New translations acct.json (Vietnamese)

* New translations acct.json (Portuguese, Brazilian)

* New translations acct.json (Dutch)

* New translations acct.json (Hungarian)

* New translations acct.json (Italian)

* New translations acct.json (Norwegian)

* New translations acct.json (Polish)

* New translations acct.json (Swedish)

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

* New translations acct.json (Russian)

* New translations acct.json (Portuguese)

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

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

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

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

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-29 20:15:35 +00:00
heguro
3747020876 Fix quote_muted 2020-06-26 14:22:30 +09:00
dependabot-preview[bot]
5ed5a9ade3 Bump sweetalert2 from 9.10.12 to 9.15.2 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 9.10.12 to 9.15.2.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v9.10.12...v9.15.2)

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

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

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

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-16 02:57:33 +00:00
cutls
2b5637f388 netlify 2020-06-16 11:36:03 +09:00
cutls
6d478906a0 width mistake 2020-06-16 11:22:58 +09:00
cutls
e436aed6c5 TheDesk 21.0.3 (Mayu) 2020-06-16 11:06:22 +09:00
cutls
25867690f3 re-challenge 2020-06-16 11:00:12 +09:00
cutls
b5efbebadb TheDesk 21.0.2 (Mayu) 2020-06-16 10:42:10 +09:00
cutls
e93f860c0c directly import setting 2020-06-13 01:59:05 +09:00
cutls
df04ebca4c quote_muted param 2020-06-13 01:46:26 +09:00
cutls
d2aaf2c2cf timeline delete bug 2020-06-13 01:40:32 +09:00
cutls
8386cd675c votebutton-fixed, and <pre> fixed 2020-06-13 01:33:30 +09:00
cutls
ad7b3cf485 follow request 2020-06-12 22:13:06 +09:00
cutls
f9f2aeab23 font change error 2020-06-12 21:06:12 +09:00
cutls
ea735d279f font-change bug 2020-06-12 20:58:10 +09:00
cutls
fa616d56fd Merge branch 'master' of github.com:cutls/TheDesk 2020-06-10 12:09:32 +09:00
cutls
907e55e6d7 column deleting 2020-06-10 12:09:17 +09:00
Cutls
874be5bca8 Merge pull request #292 from heguro/fix-could-not-see-column-list
Fix: cannot sort column if using some kind of TL
2020-05-24 16:07:14 +09:00
heguro
f49907e5e5 Fix: cannot sort column when using some kind of TL 2020-05-24 05:45:15 +09:00
183 changed files with 3926 additions and 2687 deletions

2
.github/FUNDING.yml vendored
View File

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

View File

@@ -165,4 +165,3 @@ Please write issues to improve TheDesk affinity with Pleroma.
## Vulnerabilities when `npm i`???
No, if your npm says materialize-css has vulnerabilities(CVE-2019-11002/3/4), look at [here](https://github.com/Dogfalo/materialize/issues/6286) under discussion.

5
app/.eslintignore Normal file
View File

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

14
app/.eslintrc.json Normal file
View File

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

View File

@@ -21,6 +21,15 @@ html {
align-items: flex-start;
}
#acct-list .btn-flat.white-text {
color: inherit !important;
}
#acct-list .btn-flat.red-text {
background-color: white !important;
}
.lts {
font-size: 150%;
}
@@ -48,6 +57,12 @@ html {
.first .hide-first {
display: none;
}
.hide-second {
display: none;
}
.first .hide-second {
display: inline;
}
#compt {
margin-top: 20px;

View File

@@ -178,6 +178,7 @@ pre {
border-top-left-radius: 0.75rem;
border-bottom-right-radius: 0.75rem;
border-bottom-left-radius: 0.75rem;
white-space: normal;
}
blockquote,
.quote p {
@@ -230,6 +231,7 @@ blockquote:before,
width: 100vw;
height: calc(100vh - 3rem);
background-color: var(--bg);
filter: brightness(50%);
color: var(--color);
z-index: 99999;
justify-content: center;
@@ -339,7 +341,7 @@ blockquote:before,
}
#menu {
position: fixed;
z-index: 9999;
z-index: 999;
background-color: var(--postbox);
width: 540px;
top: calc(50% - 150px);
@@ -376,6 +378,9 @@ blockquote:before,
#left-menu a.active {
background-color: var(--emphasized);
}
#left-menu a.active span {
text-decoration: underline;
}
#right-menu {
width: 100%;
overflow-y: scroll;
@@ -605,3 +610,6 @@ textarea {
.darwin .win {
display: none;
}
.dropdown-content.header:hover {
background-color: white;
}

View File

@@ -157,7 +157,8 @@ iframe,
}
.box {
overflow: hidden;
min-width: 23rem;
min-width: 300px;
max-width: 600px;
flex: 1;
border-top: none;
display: flex;
@@ -217,10 +218,14 @@ iframe,
.emoji,
.emoji-img {
width: 1.153rem;
height: 1.153rem;
object-fit: cover;
}
.area-toot .emoji,
.area-toot .emoji-img {
width: 1.538rem;
height: 1.538rem;
object-fit: cover;
vertical-align: middle;
margin: -1px 0;
}
@@ -238,6 +243,7 @@ iframe,
flex: 1;
overflow-y: scroll;
overflow-x: hidden;
background-color: var(--bg);
}
.additional {
overflow-x: scroll;
@@ -714,7 +720,7 @@ p:not(:last-child) {
background-color: var(--beforehover);
cursor: pointer;
width: 3.8rem;
padding: 1.5rem;
height: 1.7rem;
display: inline-block;
text-align: center;
margin-top: 0.38rem;

View File

@@ -87,6 +87,7 @@
overflow-y: scroll;
overflow-x: hidden;
height: calc(100% - 3.4rem);
padding-bottom: 60px;
}
#my-data-nav .btn {
width: 10.7rem;
@@ -142,6 +143,9 @@
#hisdropdown{
background-color: var(--bg);
}
#hisdropdown li a {
color: white;
}
#hisdropdown li:hover{
background-color: var(--active);
}

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

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

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

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

View File

@@ -10,7 +10,7 @@ $(document).ready(function () {
belowOrigin: false, // Displays dropdown below the button
alignment: 'left', // Displays dropdown with edge aligned to the left of button
stopPropagation: false
});
})
$('.dropdown-trigger').dropdown({
inDuration: 300,
outDuration: 225,
@@ -21,9 +21,9 @@ $(document).ready(function () {
alignment: 'left', // Displays dropdown with edge aligned to the left of button
stopPropagation: false // Stops event propagation
}
);
$('.collapsible').collapsible();
)
$('.collapsible').collapsible()
$('#videomodal').modal({
onCloseEnd: stopVideo
});
});
})
})

View File

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

View File

@@ -4,18 +4,21 @@ function verck(ver, jp) {
$('body').addClass(localStorage.getItem('platform'))
var date = new Date()
var showVer = false
if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) {
//ちょっと削除とリンク解析の都合上アレ(s)
//対象外のアプデ:storageが20の最初まで"Usamin (18.6.5)"
if (!localStorage.getItem('usamin_18_6_5_flag')) {
localStorage.setItem('usamin_18_6_5_flag', true)
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
for (var i = 0; i < obj.length; i++) {
localStorage.removeItem('card_' + i)
}
//Spotify
if (localStorage.getItem('spotify')) {
localStorage.removeItem('spotify')
localStorage.removeItem('spotify-refresh')
var spDc = 'Spotify NowPlaying sysytem was changed, please re-login to Spotify'
if(lang.language == 'ja') {
spDc = 'Spotify NowPlayingの機能が変更されたため、もう一度ログインしてください'
}
//ちょっと削除とリンク解析の都合上アレ(e)
Swal.fire({
type: 'info',
title: spDc,
})
}
//Spotify(e)
if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) {
showVer = true
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
$(document).ready(function() {

View File

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

View File

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

View File

@@ -590,7 +590,7 @@ function enc(ver) {
}
//インスタンスティッカー
function ticker() {
var start = 'https://toot.app/toot/index.php'
var start = 'https://s.0px.io/json'
fetch(start, {
method: 'GET',
cors: true,
@@ -611,7 +611,8 @@ function ticker() {
})
.then(function(json) {
if (json) {
localStorage.setItem('ticker', JSON.stringify(json))
localStorage.removeItem('ticker')
localStorage.setItem('sticker', JSON.stringify(json))
}
})
}

View File

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

View File

@@ -252,11 +252,31 @@ function multiDel(target) {
var newdom = oldcol.domain
}
var type = oldcol.type
var data = null
if(oldcol.data) {
data = oldcol.data
}
var background = null
if(oldcol.background) {
background = oldcol.background
}
var text = null
if(oldcol.text) {
text = oldcol.text
}
var left_fold = false
if(oldcol.left_fold) {
left_fold = true
}
//消した垢のコラムじゃないときコピー
if (target != oldcol.domain) {
var add = {
domain: newdom,
type: type
type: type,
data: data,
background: background,
text: text,
left_fold: left_fold
}
newcols.push(add)
}

View File

@@ -130,17 +130,11 @@ function playSound() {
volumeControl.gain.value = vol
source.start(0)
soundFile = source
function newFunction() {
var source
return source
}
}
function nano() {
postMessage(['nano', null], '*')
}
onmessage = function(e) {
console.log(e)
if (e.data[0] == 'details') {
details(e.data[1][0], e.data[1][1])
} else if (e.data[0] == 'udg') {

View File

@@ -122,6 +122,10 @@ function post(mode, postvis) {
console.log('This toot will be posted at:' + scheduled)
schedule()
toot.scheduled_at = scheduled
if($('#sch-box').hasClass('expire')) {
toot.scheduled_at = null
toot.expires_at = scheduled
}
} else {
var scheduled = ''
}
@@ -195,6 +199,20 @@ function post(mode, postvis) {
}
}
}
function expPostMode() {
$('#sch-box').toggleClass('expire')
if($('#sch-box').hasClass('expire')) {
Swal.fire({
type: 'info',
title: 'Expiring toot On'
})
} else {
Swal.fire({
type: 'info',
title: 'Expireing toot Off'
})
}
}
function misskeyPost() {
var str = $('#textarea').val()
var acct_id = $('#post-acct-sel').val()

View File

@@ -160,8 +160,14 @@ function bkm(id, acct_id, tlid) {
//フォロー
async function follow(acct_id, resolve) {
if($('#his-data').hasClass('locked')) {
locked = true
} else {
locked = false
}
if (!acct_id && acct_id != 'selector') {
var acct_id = $('#his-data').attr('use-acct')
} else if (acct_id == 'selector') {
var acct_id = $('#user-acct-sel').val()
}
@@ -172,6 +178,7 @@ async function follow(acct_id, resolve) {
var flag = 'follow'
var flagm = 'create'
}
var id = $('#his-data').attr('user-id')
if (resolve == 'selector') {
var fullacct = $('#his-acct').attr('fullname')
@@ -205,7 +212,11 @@ async function follow(acct_id, resolve) {
$('#his-follow-btn-text').text(lang.lang_status_follow)
} else {
$('#his-data').addClass('following')
$('#his-follow-btn-text').text(lang.lang_status_unfollow)
if(locked) {
$('#his-follow-btn-text').text(lang.lang_status_requesting)
} else {
$('#his-follow-btn-text').text(lang.lang_status_unfollow)
}
}
}
}
@@ -669,7 +680,8 @@ function staEx(mode) {
})
return
}
function toggleAction(elem, height) {
function toggleAction(elem, ct) {
var height = ct * 39 + 6
var cont = elem.parents('.cvo').find('.contextMenu')
if (cont.hasClass('hide')) {
$('#contextWrap').removeClass('hide')
@@ -680,6 +692,7 @@ function toggleAction(elem, height) {
cont.removeClass('bottom')
cont.addClass('top')
} else {
top = elem.offset().top - 105
cont.removeClass('top')
cont.addClass('bottom')
}

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -194,7 +194,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
var local = []
var times = []
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var domain = localStorage.getItem('domain_' + acct_id)
var toot = obj[key]
if (type == 'dm') {
@@ -214,7 +214,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.account.emojis).forEach(function(key5) {
Object.keys(toot.account.emojis).forEach(function (key5) {
var emoji = toot.account.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
@@ -273,7 +273,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
</i><span class="voice">${lang.lang_parse_notffilter}</span></span>
<span class="cbadge cbadge-hover" title="${date(toot.created_at, 'absolute')}(${
lang.lang_parse_notftime
})" aria-hidden="true"><i class="far fa-clock"></i>
})" aria-hidden="true"><i class="far fa-clock"></i>
${date(toot.created_at, datetype)}
</span>
<span class="voice">${date(toot.created_at, 'absolute')}(${lang.lang_parse_notftime})</span>
@@ -369,7 +369,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.account.emojis).forEach(function(key5) {
Object.keys(toot.account.emojis).forEach(function (key5) {
var emoji = toot.account.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
@@ -393,8 +393,8 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
} else {
noticeavatar = toot.account.avatar_static
}
noticeavatar = `<a onclick="udg('${toot.account.id}','${acct_id}');" user="${toot.account.acct}" class="notf-icon udg" aria-hidden="true">
<img draggable="false" src="${noticeavatar}" width="20" class="prof-img"
noticeavatar = `<a onclick="udg('${toot.account.id}','${acct_id}');" user="${toot.account.acct}" class="udg" aria-hidden="true">
<img draggable="false" src="${noticeavatar}" width="20" class="notf-icon prof-img"
user="${toot.account.acct}" onerror="this.src=\'../../img/loading.svg\'">
</a>`
var rebtxt = lang.lang_parse_btedsimple
@@ -426,7 +426,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.account.emojis).forEach(function(key5) {
Object.keys(toot.account.emojis).forEach(function (key5) {
var emoji = toot.account.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
@@ -454,7 +454,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var fullname = toot.account.acct + '@' + domain
}
if (useremp) {
Object.keys(useremp).forEach(function(key10) {
Object.keys(useremp).forEach(function (key10) {
var user = useremp[key10]
if (user == fullname) {
boostback = 'emphasized'
@@ -494,7 +494,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var via = escapeHTML(toot.application.name)
if (empCli) {
//強調チェック
Object.keys(empCli).forEach(function(key6) {
Object.keys(empCli).forEach(function (key6) {
var empCliList = empCli[key6]
if (empCliList == via) {
boostback = 'emphasized'
@@ -503,7 +503,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
if (muteCli) {
//ミュートチェック
Object.keys(muteCli).forEach(function(key7) {
Object.keys(muteCli).forEach(function (key7) {
var muteCliList = muteCli[key7]
if (muteCliList == via) {
boostback = 'hide'
@@ -597,7 +597,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
if (mediack) {
hasmedia = 'hasmedia'
var cwdt = 100 / toot.media_attachments.length
Object.keys(toot.media_attachments).forEach(function(key2) {
Object.keys(toot.media_attachments).forEach(function (key2) {
var media = toot.media_attachments[key2]
var purl = media.preview_url
media_ids = media_ids + media.id + ','
@@ -628,7 +628,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var mty = media.remote_url.match(/.+(\..+)$/)[1]
viewer =
viewer +
`<a href="${media.remote_url}" title="${media.remote_url}">[${lang.lang_parse_unknown}(${mty})]</a> `
`<a href="${media.url ? media.url : media.remote_url}" title="${media.remote_url} from ${media.url}">[${lang.lang_parse_unknown}(${mty})]</a> `
} else if (media.type == 'audio') {
viewer =
viewer +
@@ -669,7 +669,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
if (menck) {
mentions = ''
var to_mention = []
Object.keys(toot.mentions).forEach(function(key3) {
Object.keys(toot.mentions).forEach(function (key3) {
var mention = toot.mentions[key3]
//自分は除外
//自インスタンスかどうかを確認し、IDの一致
@@ -704,19 +704,19 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
var tags = ''
//タグであれば
if (tagck) {
Object.keys(toot.tags).forEach(function(key4) {
Object.keys(toot.tags).forEach(function (key4) {
var tag = toot.tags[key4]
var featured = ` <a onclick="tagFeature('${tag.name}','${acct_id}')" class="pointer" title="add it to Featured tags">Feature</a> `
tags =
tags +
`<span class="hide" data-tag="${tag.name}" data-regTag="${tag.name.toLowerCase()}">#${
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}')"
'{{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}}',
@@ -812,7 +812,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
//ワードミュート
if (wordmuteList) {
Object.keys(wordmuteList).forEach(function(key8) {
Object.keys(wordmuteList).forEach(function (key8) {
var worde = wordmuteList[key8]
if (worde) {
if (worde.tag) {
@@ -829,7 +829,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
//ワード強調
if (wordempList) {
Object.keys(wordempList).forEach(function(key9) {
Object.keys(wordempList).forEach(function (key9) {
var wordList = wordempList[key9]
if (wordList) {
var wordList = wordList.tag
@@ -845,7 +845,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function(key5) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
@@ -871,7 +871,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
}
//絵文字があれば(nico)
if (nicoemojick) {
Object.keys(toot.profile_emojis).forEach(function(keynico) {
Object.keys(toot.profile_emojis).forEach(function (keynico) {
var emoji = toot.profile_emojis[keynico]
var shortcode = emoji.shortcode
var emoji_url = `<img draggable="false" src="${emoji.url}" class="emoji-img" data-emoji="${shortcode}" alt=" :${shortcode}: "
@@ -918,9 +918,10 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
//Ticker
var tickerdom = ''
if (ticker) {
var tickerdata = localStorage.getItem('ticker')
var tickerdata = localStorage.getItem('sticker')
if (tickerdata) {
var tickerdata = JSON.parse(tickerdata)
var tickerdataRaw = JSON.parse(tickerdata)
var tickerdata = tickerdataRaw.data
var thisdomain = toot.account.acct.split('@')
if (thisdomain.length > 1) {
@@ -929,14 +930,41 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
for (var i = 0; i < tickerdata.length; i++) {
var value = tickerdata[i]
if (value.domain == thisdomain) {
var tickerdom = `<div aria-hidden="true" style="user-select:none;cursor:default;background:linear-gradient(90deg, ${
value.bg
}, transparent 96%) !important; color:${
value.text
};width:100%; height:0.9rem; font-size:0.8rem;" class="tickers">
var bgColor = value.bgColor
var fontColor = value.fontColor
if (!value.bgColor || !value.fontColor) {
if (value.type == 'mastodon') {
if (!value.bgColor) bgColor = tickerdataRaw.default.mastodon.bgColor
if (!value.fontColor) fontColor = tickerdataRaw.default.mastodon.fontColor
} else if (value.type == 'pleroma') {
if (!value.bgColor) bgColor = tickerdataRaw.default.pleroma.bgColor
if (!value.fontColor) fontColor = tickerdataRaw.default.pleroma.fontColor
} else if (value.type == 'misskey') {
if (!value.bgColor) bgColor = tickerdataRaw.default.misskey.bgColor
if (!value.fontColor) fontColor = tickerdataRaw.default.misskey.fontColor
} else if (value.type == 'misskeylegacy') {
if (!value.bgColor) bgColor = tickerdataRaw.default.misskeylegacy.bgColor
if (!value.fontColor) fontColor = tickerdataRaw.default.misskeylegacy.fontColor
} else if (value.type == 'pixelfed') {
if (!value.bgColor) bgColor = tickerdataRaw.default.pixelfed.bgColor
if (!value.fontColor) fontColor = tickerdataRaw.default.pixelfed.fontColor
}
} else {
var bgColor = value.bgColor
var fontColor = value.fontColor
}
bgColorCSS = ''
for (let j = 0; j < bgColor.length; j++) {
const bg = bgColor[j]
bgColorCSS = bgColorCSS + bg + ','
}
bgColorCSS = `linear-gradient(90deg, ${bgColorCSS} transparent)`
var tickerdom = `<div aria-hidden="true" style="user-select:none;cursor:default;background:${bgColorCSS} !important; color:${
fontColor
};width:100%; height:0.9rem; font-size:0.8rem;" class="tickers">
<img draggable="false" src="${
value.image
}" style="height:100%;" onerror="this.src=\'../../img/loading.svg\'">
value.favicon
}" style="height:100%;" onerror="this.src=\'../../img/loading.svg\'">
<span style="position:relative; top:-0.2rem;">${escapeHTML(value.name)}</span>
</div>`
break
@@ -950,13 +978,14 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
if (!quoteUser) {
quoteUser = toot.quote.account.acct
}
poll =
poll +
`<div class="quote-renote">
if (!toot.quote.quote_muted) {
poll =
poll +
`<div class="quote-renote">
<div class="renote-icon">
<a onclick="udg('${toot.quote.account.id}','${acct_id}');" user="${
toot.quote.account.acct
}" class="udg">
}" class="udg">
<img draggable="false" src="${toot.quote.account.avatar}">
</a>
</div>
@@ -968,12 +997,18 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
</div>
<div class="renote-details">
<a onclick="details('${
toot.quote.id
}','${acct_id}','${tlid}','normal')" class="waves-effect waves-dark btn-flat details" style="padding:0">
toot.quote.id
}','${acct_id}','${tlid}','normal')" class="waves-effect waves-dark btn-flat details" style="padding:0">
<i class="text-darken-3 material-icons">more_vert</i>
</a>
</div>
</div>`
} else {
poll =
poll +
`<span class="gray sml">${lang.lang_parse_hidden}</span>`
}
}
//menuは何個
var menuct = 2
@@ -1062,8 +1097,8 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
</div>
<div class="action ${can_rt} ${disp['rt']} ${noauth}">
<a onclick="rt('${
toot.id
}','${acct_id}','${tlid}')" class="waves-effect waves-dark btn-flat actct bt-btn"
toot.id
}','${acct_id}','${tlid}')" class="waves-effect waves-dark btn-flat actct bt-btn"
style="padding:0" title="${lang.lang_parse_bt}">
<i class="fas fa-retweet ${if_rt} rt_${toot.id}"></i>
<span class="voice">${lang.lang_parse_bt} </span>
@@ -1097,7 +1132,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
</div>
<div class="area-side">
<div class="action ${noauth}">
<a onclick="toggleAction($(this), ${menuct * 39 + 6})"
<a onclick="toggleAction($(this), ${menuct})"
class="ctxMenu waves-effect waves-dark btn-flat" style="padding:0">
<i class="text-darken-3 material-icons act-icon" aria-hidden="true">expand_more</i>
<span class="voice">Other actions</span>
@@ -1174,7 +1209,7 @@ function userparse(obj, auth, acct_id, tlid, popup) {
}
var templete = ''
var datetype = localStorage.getItem('datetype')
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var toot = obj[key]
if (toot) {
if (!toot.username) {
@@ -1211,7 +1246,6 @@ function userparse(obj, auth, acct_id, tlid, popup) {
} else if (auth == 'request') {
var ftxt = lang.lang_parse_request
}
console.log(auth, ftxt)
if (popup > 0 || popup == -1 || notf) {
var notftext = ftxt + '<br>'
} else {
@@ -1251,7 +1285,7 @@ function userparse(obj, auth, acct_id, tlid, popup) {
}
//絵文字があれば
if (actemojick) {
Object.keys(toot.emojis).forEach(function(key5) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
@@ -1284,7 +1318,7 @@ function userparse(obj, auth, acct_id, tlid, popup) {
} else {
var udg = `<a onclick="udg('${toot.id}','${acct_id}');" user="${toot.acct}" class="udg">`
}
var latest = date(toot.last_status_at, 'relative')
var latest = date(toot.last_status_at, 'relative', true)
if (toot.last_status_at) {
var latesthtml = `<div class="cbadge" style="width:100px;">Last <span class="voice">toot</span>: ${latest}</div>`
} else {
@@ -1362,7 +1396,7 @@ function client(name) {
M.toast({ html: escapeHTML(name) + lang.lang_status_emphas, displayLength: 2000 })
} else {
var can
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
var cliT = obj[key]
if (cliT != name && !can) {
can = false
@@ -1450,7 +1484,7 @@ function pollParse(poll, acct_id, emojis) {
var max = 0
}
Object.keys(choices).forEach(function(keyc) {
Object.keys(choices).forEach(function (keyc) {
var choice = choices[keyc]
var voteit = ''
for (var i = 0; i < minechoice.length; i++) {
@@ -1485,7 +1519,7 @@ function pollParse(poll, acct_id, emojis) {
var choiceText = escapeHTML(choice.title)
if (emojis) {
//絵文字があれば
Object.keys(emojis).forEach(function(key5) {
Object.keys(emojis).forEach(function (key5) {
var emoji = emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
@@ -1525,3 +1559,283 @@ function pollParse(poll, acct_id, emojis) {
</div>`
return pollHtml
}
//MastodonBaseStreaming
var mastodonBaseWs = {}
var mastodonBaseWsStatus = {}
function mastodonBaseStreaming(acct_id) {
const domain = localStorage.getItem(`domain_${acct_id}`)
if(mastodonBaseWsStatus[domain]) return
mastodonBaseWsStatus[domain] = 'undetected'
const at = localStorage.getItem(`acct_${acct_id}_at`)
const start = `wss://${domain}/api/v1/streaming/?access_token=${at}`
mastodonBaseWs[domain] = new WebSocket(start)
mastodonBaseWs[domain].onopen = function () {
mastodonBaseWsStatus[domain] = 'connecting'
setTimeout(function () {
mastodonBaseWsStatus[domain] = 'available'
}, 3000)
mastodonBaseWs[domain].send(`{"type":"subscribe","stream":"user"}`)
$('.notice_icon_acct_' + acct_id).removeClass('red-text')
}
mastodonBaseWs[domain].onmessage = function (mess) {
const typeA = JSON.parse(mess.data).event
if (typeA == 'delete') {
$(`[unique-id=${JSON.parse(mess.data).payload}]`).hide()
$(`[unique-id=${JSON.parse(mess.data).payload}]`).remove()
} else if (typeA == 'update' || typeA == 'conversation') {
//markers show中はダメ
const tl = JSON.parse(mess.data).stream
const obj = JSON.parse(JSON.parse(mess.data).payload)
const tls = getTlMeta(tl[0], tl, acct_id, obj)
insertTl(obj, tls)
} else if (typeA == 'filters_changed') {
filterUpdate(acct_id)
} else if (~typeA.indexOf('announcement')) {
announ(acct_id, tlid)
} else if (typeA == 'notification') {
const obj = JSON.parse(JSON.parse(mess.data).payload)
let template = ''
localStorage.setItem('lastnotf_' + acct_id, obj.id)
let popup = localStorage.getItem('popup')
if (!popup) {
popup = 0
}
if (obj.type != 'follow' && obj.type != 'follow_request') {
template = parse([obj], 'notf', acct_id, 'notf', popup)
} else if (obj.type == 'follow_request') {
template = userparse([obj.account], 'request', acct_id, 'notf', -1)
} else {
template = userparse([obj], obj.type, acct_id, 'notf', popup)
}
if (!$('div[data-notfIndv=' + acct_id + '_' + obj.id + ']').length) {
$('div[data-notf=' + acct_id + ']').prepend(template)
$('div[data-const=notf_' + acct_id + ']').prepend(template)
}
jQuery('time.timeago').timeago()
} else {
console.error('unknown type ' + typeA)
}
}
mastodonBaseWs[domain].onerror = function (error) {
notf(acct_id, 0) //fallback
console.error("Error closing " + domain)
console.error(error)
if (mastodonBaseWsStatus[domain] == 'available') alert(domain)
mastodonBaseWsStatus[domain] = 'cannotuse'
setTimeout(function () {
mastodonBaseWsStatus[domain] = 'cannotuse'
}, 3000)
mastodonBaseWs[domain] = false
return false
}
mastodonBaseWs[domain].onclose = function () {
notf(acct_id, 0) //fallback
console.warn("Closing " + domain)
if (mastodonBaseWsStatus[domain] == 'available') alert(domain)
mastodonBaseWs[domain] = false
mastodonBaseWsStatus[domain] = 'cannotuse'
setTimeout(function () {
mastodonBaseWsStatus[domain] = 'cannotuse'
}, 3000)
return false
}
}
function insertTl(obj, tls) {
for (const timeline of tls) {
const { id, voice, type, acct_id } = timeline
const mute = getFilterTypeByAcct(acct_id, type)
if ($(`#unread_${id} .material-icons`).hasClass('teal-text')) continue
if (!$(`#timeline_${id} [toot-id=${obj.id}]`).length) {
if (voice) {
say(obj.content)
}
const template = parse([obj], type, acct_id, id, '', mute, type)
console.log($(`#timeline_box_${id}_box .tl-box`).scrollTop(), `timeline_box_${id}_box .tl-box`)
if (
$(`#timeline_box_${id}_box .tl-box`).scrollTop() === 0
) {
$(`#timeline_${id}`).prepend(template)
} else {
let pool = localStorage.getItem('pool_' + id)
if (pool) {
pool = template + pool
} else {
pool = template
}
localStorage.setItem('pool_' + id, pool)
}
scrollck()
additional(acct_id, id)
jQuery('time.timeago').timeago()
}
}
}
function getTlMeta(type, data, num, status) {
const acct_id = num.toString()
const columns = localStorage.getItem('column')
const obj = JSON.parse(columns)
let ret = []
let i = 0
switch (type) {
case 'user':
for (const tl of obj) {
if (tl.domain != acct_id) continue
if (tl.type == 'mix' || tl.type == 'home') {
let voice = false
if (localStorage.getItem('voice_' + i)) voice = true
ret.push({
id: i,
voice: voice,
type: tl.type,
acct_id: tl.domain
})
}
i++
}
break
case 'public:local':
for (const tl of obj) {
if (tl.domain != acct_id) continue
if (tl.type == 'mix' || tl.type == 'local') {
let voice = false
if (localStorage.getItem('voice_' + i)) voice = true
ret.push({
id: i,
voice: voice,
type: tl.type,
acct_id: tl.domain
})
}
i++
}
break
case 'public:local:media':
for (const tl of obj) {
if (tl.domain != acct_id) continue
if (tl.type == 'local-media') {
let voice = false
if (localStorage.getItem('voice_' + i)) voice = true
ret.push({
id: i,
voice: voice,
type: tl.type,
acct_id: tl.domain
})
}
i++
}
break;
case 'public':
for (const tl of obj) {
if (tl.domain != acct_id) continue
if (tl.type == 'pub') {
let voice = false
if (localStorage.getItem('voice_' + i)) voice = true
ret.push({
id: i,
voice: voice,
type: tl.type,
acct_id: tl.domain
})
}
i++
}
break;
case 'public:media':
for (const tl of obj) {
if (tl.domain != acct_id) continue
if (tl.type == 'pub-media') {
let voice = false
if (localStorage.getItem('voice_' + i)) voice = true
ret.push({
id: i,
voice: voice,
type: tl.type,
acct_id: tl.domain
})
}
i++
}
break;
case 'list':
for (const tl of obj) {
if (tl.domain != acct_id) continue
if (tl.type == 'list' && tl.data == data[1]) {
let voice = false
if (localStorage.getItem('voice_' + i)) voice = true
ret.push({
id: i,
voice: voice,
type: tl.type,
acct_id: tl.domain
})
}
i++
}
break;
case 'direct':
for (const tl of obj) {
if (tl.domain != acct_id) continue
if (tl.type == 'dm') {
let voice = false
if (localStorage.getItem('voice_' + i)) voice = true
ret.push({
id: i,
voice: voice,
type: tl.type,
acct_id: tl.domain
})
}
i++
}
break;
case 'hashtag':
for (const tl of obj) {
if (tl.domain != acct_id) continue
const columnDataRaw = tl.data
let columnData
if (!columnDataRaw.name) {
columnData = { name: columnDataRaw }
} else {
columnData = columnDataRaw
}
if (tl.type == 'tag') {
let voice = false
let can = false
if (columnData.name == data[1]) can = true
//any
if (columnData.any.split(',').includes(data[1])) can = true
//all
const { tags } = status
if (columnData.all) can = true
for (const { name } of tags) {
if (!columnData.all.split(',').includes(name)) {
can = false
break
}
}
//none
if (columnData.none) can = true
for (const { name } of tags) {
if (columnData.none.split(',').includes(name)) {
can = false
break
}
}
if (localStorage.getItem('voice_' + i)) voice = true
ret.push({
id: i,
voice: voice,
type: tl.type,
acct_id: tl.domain
})
}
i++
}
break;
default:
console.error(`Cannot catch`);
}
return ret
}

View File

@@ -44,10 +44,10 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
//Integratedなら飛ばす
$('#notice_' + tlid).text(
'Integrated TL(' +
localStorage.getItem('user_' + acct_id) +
'@' +
domain +
')'
localStorage.getItem('user_' + acct_id) +
'@' +
domain +
')'
)
$('#notice_icon_' + tlid).text('merge_type')
mixtl(acct_id, tlid, 'integrated', delc, voice)
@@ -56,10 +56,10 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
//Local+なら飛ばす
$('#notice_' + tlid).text(
'Local+ TL(' +
localStorage.getItem('user_' + acct_id) +
'@' +
domain +
')'
localStorage.getItem('user_' + acct_id) +
'@' +
domain +
')'
)
$('#notice_icon_' + tlid).text('people_outline')
mixtl(acct_id, tlid, 'plus', delc, voice)
@@ -69,11 +69,11 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
notf(acct_id, tlid, 'direct')
$('#notice_' + tlid).text(
cap(type, data, acct_id) +
'(' +
localStorage.getItem('user_' + acct_id) +
'@' +
domain +
')'
'(' +
localStorage.getItem('user_' + acct_id) +
'@' +
domain +
')'
)
$('#notice_icon_' + tlid).text('notifications')
return
@@ -82,11 +82,11 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
getBookmark(acct_id, tlid)
$('#notice_' + tlid).text(
cap(type, data, acct_id) +
'(' +
localStorage.getItem('user_' + acct_id) +
'@' +
domain +
')'
'(' +
localStorage.getItem('user_' + acct_id) +
'@' +
domain +
')'
)
$('#notice_icon_' + tlid).text('bookmark')
return
@@ -95,11 +95,11 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
getUtl(acct_id, tlid, data, false)
$('#notice_' + tlid).text(
cap(type, data, acct_id) +
'(' +
localStorage.getItem('user_' + acct_id) +
'@' +
domain +
')'
'(' +
localStorage.getItem('user_' + acct_id) +
'@' +
domain +
')'
)
$('#notice_icon_' + tlid).text('person')
return
@@ -117,11 +117,11 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
}
$('#notice_' + tlid).text(
cap(type, data, acct_id) +
'(' +
localStorage.getItem('user_' + acct_id) +
'@' +
domain +
')'
'(' +
localStorage.getItem('user_' + acct_id) +
'@' +
domain +
')'
)
} else {
var hdr = {
@@ -206,7 +206,7 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
additional(acct_id, tlid)
jQuery('time.timeago').timeago()
todc()
reload(type, '', acct_id, tlid, data, mute, delc, voice)
reload(type, 'from timeline to reload', acct_id, tlid, data, mute, delc, voice)
if (type == 'home' || type == 'notf') {
//Markers
var markers = localStorage.getItem('markers')
@@ -247,194 +247,243 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
}
}, 100)
} else {
var misskey = false
if (localStorage.getItem('streaming_' + acct_id)) {
var wss = localStorage.getItem('streaming_' + acct_id)
} else {
var wss = 'wss://' + domain
}
if (type == 'home') {
var start = wss + '/api/v1/streaming/?stream=user&access_token=' + at
} else if (type == 'pub') {
var add = ''
if(remoteOnlyCk(tlid)){
add = '&remote=true'
}
var start = wss + '/api/v1/streaming/?stream=public&access_token=' + at + add
} else if (type == 'pub-media') {
var add = ''
if(remoteOnlyCk(tlid)){
add = '&remote=true'
}var start =
wss + '/api/v1/streaming/?stream=public:media&access_token=' + at + add
} else if (type == 'local') {
var start =
wss + '/api/v1/streaming/?stream=public:local&access_token=' + at
} else if (type == 'local-media') {
var start =
wss +
'/api/v1/streaming/?stream=public:local:media&only_media=true&access_token=' +
at
} else if (type == 'tag') {
if (type == 'tag') {
var tag = localStorage.getItem('tag-range')
if (tag == 'local') {
data = data + '&local=true'
var domain = localStorage.getItem('domain_' + acct_id)
if (mastodonBaseWsStatus[domain] == 'cannotuse') {
oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode)
} else if (mastodonBaseWsStatus[domain] == 'undetected' || mastodonBaseWsStatus[domain] == 'connecting') {
const mbws = setInterval(function () {
if (mastodonBaseWsStatus[domain] == 'cannotuse') {
oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode)
clearInterval(mbws)
} else if (mastodonBaseWsStatus[domain] == 'available') {
$('#notice_icon_' + tlid).removeClass('red-text')
stremaingSubscribe(type, acct_id, data)
clearInterval(mbws)
}
}
var start =
wss +
'/api/v1/streaming/?stream=hashtag&tag=' +
data +
'&access_token=' +
at
} else if (type == 'noauth') {
var start = 'wss://' + acct_id + '/api/v1/streaming/?stream=public:local'
} else if (type == 'list') {
var start =
wss +
'/api/v1/streaming/?stream=list&list=' +
data +
'&access_token=' +
at
} else if (type == 'dm') {
var start = wss + '/api/v1/streaming/?stream=direct&access_token=' + at
}
var wsid = websocket.length
localStorage.setItem('wss_' + tlid, wsid)
websocket[wsid] = new WebSocket(start)
websocket[wsid].onopen = function (mess) {
console.table({
tlid: tlid,
type: 'Connect Streaming API' + type,
domain: domain,
message: [mess],
})
errorct = 0
}, 1000)
} else if (mastodonBaseWsStatus[domain] == 'available') {
$('#notice_icon_' + tlid).removeClass('red-text')
}
websocket[wsid].onmessage = function (mess) {
console.log([tlid + ':Receive Streaming API:', JSON.parse(mess.data)])
if (misskey) {
if (JSON.parse(mess.data).type == 'note') {
var obj = JSON.parse(mess.data).body
if (voice) {
say(obj.text)
}
websocketNotf[acct_id].send(
JSON.stringify({
type: 'capture',
id: obj.id,
})
)
var templete = misskeyParse([obj], type, acct_id, tlid, '', mute)
var pool = localStorage.getItem('pool_' + tlid)
if (pool) {
pool = templete + pool
} else {
pool = templete
}
localStorage.setItem('pool_' + tlid, pool)
scrollck()
jQuery('time.timeago').timeago()
}
} else {
var typeA = JSON.parse(mess.data).event
if (typeA == 'delete') {
var obj = JSON.parse(mess.data).payload
if (delc == 'true') {
$(
'#timeline_' +
tlid +
' [unique-id=' +
JSON.parse(mess.data).payload +
']'
).addClass('emphasized')
$(
'#timeline_' +
tlid +
' [unique-id=' +
JSON.parse(mess.data).payload +
']'
).addClass('by_delcatch')
} else {
$('[unique-id=' + JSON.parse(mess.data).payload + ']').hide()
$('[unique-id=' + JSON.parse(mess.data).payload + ']').remove()
}
} else if (typeA == 'update' || typeA == 'conversation') {
if (
!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')
) {
//markers show中はダメ
var obj = JSON.parse(JSON.parse(mess.data).payload)
if (
$('#timeline_' + tlid + ' [toot-id=' + obj.id + ']').length < 1
) {
if (voice) {
say(obj.content)
}
var templete = parse([obj], type, acct_id, tlid, '', mute, type)
if (
$('timeline_box_' + tlid + '_box .tl-box').scrollTop() === 0
) {
$('#timeline_' + tlid).prepend(templete)
} else {
var pool = localStorage.getItem('pool_' + tlid)
if (pool) {
pool = templete + pool
} else {
pool = templete
}
localStorage.setItem('pool_' + tlid, pool)
}
scrollck()
additional(acct_id, tlid)
jQuery('time.timeago').timeago()
} else {
todo('二重取得発生中')
}
todc()
}
} else if (typeA == 'filters_changed') {
filterUpdate(acct_id)
} else if (~typeA.indexOf('announcement')) {
announ(acct_id, tlid)
}
}
}
websocket[wsid].onerror = function (error) {
console.error('Error closing')
console.error(error)
if (mode == 'error') {
$('#notice_icon_' + tlid).addClass('red-text')
todo('WebSocket Error ' + error)
} else {
errorct++
console.log(errorct)
if (errorct < 3) {
reconnector(tlid, type, acct_id, data, 'error')
}
}
return false
}
websocket[wsid].onclose = function () {
console.warn('Closing ' + tlid)
if (mode == 'error') {
$('#notice_icon_' + tlid).addClass('red-text')
todo('WebSocket Closed')
} else {
errorct++
console.log(errorct)
if (errorct < 3) {
reconnector(tlid, type, acct_id, data, 'error')
}
}
return false
stremaingSubscribe(type, acct_id, data)
}
}
}
function stremaingSubscribe(type, acct_id, data, unsubscribe) {
let command = 'subscribe'
if (unsubscribe) command = 'unsubscribe'
let stream
const domain = localStorage.getItem('domain_' + acct_id)
if(type == 'home') return false
if (type === 'local' || type === 'mix') { stream = 'public:local' }
else if (type === 'local-media') { stream = 'public:local:media' }
else if (type === 'pub') { stream = 'public' }
else if (type === 'pub-media') { stream = 'public:media' }
else if (type === 'list') {
mastodonBaseWs[domain].send(`{"type":"${command}","stream":"list","list":"${data}"}`)
return true
} else if (type === 'tag') {
let arr = []
let name = data
if (data.name) name = data.name
arr.push(name)
if (data.any) arr = arr.concat(data.any.split(','))
if (data.all) arr = arr.concat(data.all.split(','))
for (const tag of arr) {
mastodonBaseWs[domain].send(`{"type":"${command}","stream":"hashtag","tag":"${tag}"}`)
}
return true
}
mastodonBaseWs[domain].send(`{"type":"${command}","stream":"${stream}"`)
}
function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
var misskey = false
const 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
}
if (type == 'home') {
var start = wss + '/api/v1/streaming/?stream=user&access_token=' + at
} else if (type == 'pub') {
var add = ''
if (remoteOnlyCk(tlid)) {
add = '&remote=true'
}
var start = wss + '/api/v1/streaming/?stream=public&access_token=' + at + add
} else if (type == 'pub-media') {
var add = ''
if (remoteOnlyCk(tlid)) {
add = '&remote=true'
} var start =
wss + '/api/v1/streaming/?stream=public:media&access_token=' + at + add
} else if (type == 'local') {
var start =
wss + '/api/v1/streaming/?stream=public:local&access_token=' + at
} else if (type == 'local-media') {
var start =
wss +
'/api/v1/streaming/?stream=public:local:media&only_media=true&access_token=' +
at
} else if (type == 'tag') {
var tag = localStorage.getItem('tag-range')
if (tag == 'local') {
data = data + '&local=true'
}
if (data.name) {
data = data.name
}
var start =
wss +
'/api/v1/streaming/?stream=hashtag&tag=' +
data +
'&access_token=' +
at + add
} else if (type == 'noauth') {
var start = 'wss://' + acct_id + '/api/v1/streaming/?stream=public:local'
} else if (type == 'list') {
var start =
wss +
'/api/v1/streaming/?stream=list&list=' +
data +
'&access_token=' +
at
} else if (type == 'dm') {
var start = wss + '/api/v1/streaming/?stream=direct&access_token=' + at
}
var wsid = websocket.length
localStorage.setItem('wss_' + tlid, wsid)
websocket[wsid] = new WebSocket(start)
websocket[wsid].onopen = function (mess) {
console.table({
tlid: tlid,
type: 'Connect Streaming API' + type,
domain: domain,
message: [mess],
})
errorct = 0
$('#notice_icon_' + tlid).removeClass('red-text')
}
websocket[wsid].onmessage = function (mess) {
console.log([tlid + ':Receive Streaming API:', JSON.parse(mess.data)])
if (misskey) {
if (JSON.parse(mess.data).type == 'note') {
var obj = JSON.parse(mess.data).body
if (voice) {
say(obj.text)
}
websocketNotf[acct_id].send(
JSON.stringify({
type: 'capture',
id: obj.id,
})
)
var templete = misskeyParse([obj], type, acct_id, tlid, '', mute)
var pool = localStorage.getItem('pool_' + tlid)
if (pool) {
pool = templete + pool
} else {
pool = templete
}
localStorage.setItem('pool_' + tlid, pool)
scrollck()
jQuery('time.timeago').timeago()
}
} else {
var typeA = JSON.parse(mess.data).event
if (typeA == 'delete') {
var obj = JSON.parse(mess.data).payload
if (delc == 'true') {
$(
'#timeline_' +
tlid +
' [unique-id=' +
JSON.parse(mess.data).payload +
']'
).addClass('emphasized')
$(
'#timeline_' +
tlid +
' [unique-id=' +
JSON.parse(mess.data).payload +
']'
).addClass('by_delcatch')
} else {
$('[unique-id=' + JSON.parse(mess.data).payload + ']').hide()
$('[unique-id=' + JSON.parse(mess.data).payload + ']').remove()
}
} else if (typeA == 'update' || typeA == 'conversation') {
if (
!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')
) {
//markers show中はダメ
var obj = JSON.parse(JSON.parse(mess.data).payload)
if (
$('#timeline_' + tlid + ' [toot-id=' + obj.id + ']').length < 1
) {
if (voice) {
say(obj.content)
}
var templete = parse([obj], type, acct_id, tlid, '', mute, type)
if (
$('timeline_box_' + tlid + '_box .tl-box').scrollTop() === 0
) {
$('#timeline_' + tlid).prepend(templete)
} else {
var pool = localStorage.getItem('pool_' + tlid)
if (pool) {
pool = templete + pool
} else {
pool = templete
}
localStorage.setItem('pool_' + tlid, pool)
}
scrollck()
additional(acct_id, tlid)
jQuery('time.timeago').timeago()
} else {
todo('二重取得発生中')
}
todc()
}
} else if (typeA == 'filters_changed') {
filterUpdate(acct_id)
} else if (~typeA.indexOf('announcement')) {
announ(acct_id, tlid)
}
}
}
websocket[wsid].onerror = function (error) {
console.error('Error closing')
console.error(error)
if (mode == 'error') {
$('#notice_icon_' + tlid).addClass('red-text')
todo('WebSocket Error ' + error)
} else {
errorct++
console.log(errorct)
if (errorct < 3) {
reconnector(tlid, type, acct_id, data, 'error')
}
}
return false
}
websocket[wsid].onclose = function () {
console.warn('Closing ' + tlid)
if (mode == 'error') {
$('#notice_icon_' + tlid).addClass('red-text')
todo('WebSocket Closed')
} else {
errorct++
console.log(errorct)
if (errorct < 3) {
reconnector(tlid, type, acct_id, data, 'error')
}
}
return false
}
}
//一定のスクロールで発火
function moreload(type, tlid) {
var multi = localStorage.getItem('column')
@@ -851,7 +900,7 @@ function cap(type, data, acct_id) {
} else if (type == 'bookmark') {
var response = 'Bookmarks'
} else if (type == 'utl') {
var response = 'User TL(' + data.acct + ')'
var response = 'User TL(' + escapeHTML(data.acct) + ')'
}
return response
}
@@ -866,13 +915,13 @@ function com(type, data, tlid) {
return 'public?local=true&only_media=true&'
} else if (type == 'pub') {
var add = ''
if(remoteOnlyCk(tlid)){
if (remoteOnlyCk(tlid)) {
add = 'remote=true&'
}
return 'public?' + add
} else if (type == 'pub-media') {
var add = ''
if(remoteOnlyCk(tlid)){
if (remoteOnlyCk(tlid)) {
add = 'remote=true&'
}
return 'public?only_media=true&' + add
@@ -998,7 +1047,7 @@ function reconnector(tlid, type, acct_id, data, mode) {
var voice = false
}
var mute = getFilterTypeByAcct(acct_id, type)
reload(type, '', acct_id, tlid, data, mute, '', voice, mode)
var domain = localStorage.getItem('domain_' + acct_id)
}
M.toast({ html: lang.lang_tl_reconnect, displayLength: 2000 })
}
@@ -1008,6 +1057,12 @@ function columnReload(tlid, type) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
var acct_id = obj[tlid].domain
var domain = localStorage.getItem('domain_' + acct_id)
if (mastodonBaseWsStatus[domain] == 'available') {
stremaingSubscribe(type, acct_id, obj[tlid].data, true)
parseColumn(tlid, true)
return true
}
if (type == 'mix' || type == 'integrated' || type == 'plus') {
if (localStorage.getItem('voice_' + tlid)) {
var voice = true
@@ -1027,15 +1082,10 @@ function columnReload(tlid, type) {
$('#notice_icon_' + tlid).removeClass('red-text')
getBookmark(acct_id, tlid, false)
} else {
var wss = localStorage.getItem('wss_' + tlid)
websocket[wss].close()
if (localStorage.getItem('voice_' + tlid)) {
var voice = true
} else {
var voice = false
}
var mute = getFilterTypeByAcct(acct_id, type)
parseColumn(tlid)
parseColumn(tlid, false)
}
}
//Markers
@@ -1078,10 +1128,10 @@ function getMarker(tlid, type, acct_id) {
$('#unread_' + tlid).attr(
'title',
lang.lang_layout_unread +
':' +
json.updated_at +
' v' +
json.version
':' +
json.updated_at +
' v' +
json.version
)
$('#unread_' + tlid).attr('data-id', json.last_read_id)
} else {
@@ -1285,8 +1335,8 @@ function asReadEnd() {
onBeforeOpen: () => {
Swal.showLoading()
},
onClose: () => {},
}).then((result) => {})
onClose: () => { },
}).then((result) => { })
} else {
postMessage(['asReadComp', ''], '*')
}
@@ -1349,8 +1399,8 @@ function getUtl(acct_id, tlid, data, more) {
moreloading = true
if (more) {
var sid = $('#timeline_' + tlid + ' .cvo')
.last()
.attr('unique-id')
.last()
.attr('unique-id')
var ad = '?max_id=' + sid
} else {
var ad = ''
@@ -1418,7 +1468,7 @@ function announ(acct_id, tlid) {
$('.notf-announ_' + acct_id).addClass('hide')
}
var templete = announParse(json, acct_id, tlid)
$('#announce_' + tlid).html(templete)
$('.announce_' + acct_id).html(templete)
jQuery('time.timeago').timeago()
todc()
}
@@ -1426,7 +1476,7 @@ function announ(acct_id, tlid) {
}
//buildQuery
function buildQuery(name, data) {
if(!data || data == '') return ''
if (!data || data == '') return ''
var arr = data.split(',')
var str = ''
for (var i = 0; i < arr.length; i++) {

View File

@@ -120,7 +120,7 @@ function imageXhr(id, key, murl) {
element.onload = function() {
var width = element.naturalWidth
if(width < 650) {
width = 650;
width = 650
}
var height = element.naturalHeight
var windowH = $(window).height()
@@ -182,7 +182,7 @@ function zoom(z) {
$('#imagewrap img').css('height', hgt + 'px')
}
//スマホ対応ドラッグ移動システム
;(function() {
(function() {
$.fn.dragScroll = function() {
var target = this
$(this)

View File

@@ -42,18 +42,16 @@ function parseColumn(target, dontclose) {
var multi = localStorage.getItem('multi')
if (multi) {
var obj = JSON.parse(multi)
var templete
Object.keys(obj).forEach(function (key) {
var acct = obj[key]
localStorage.setItem('name_' + key, acct.name)
localStorage.setItem('user_' + key, acct.user)
localStorage.setItem('user-id_' + key, acct.id)
localStorage.setItem('prof_' + key, acct.prof)
localStorage.setItem('domain_' + key, acct.domain)
localStorage.setItem('acct_' + key + '_at', acct.at)
notf(key, 0)
if(!target) mastodonBaseStreaming(key)
ckdb(key)
//フィルターデータ読もう
getFilter(key)
@@ -76,8 +74,12 @@ function parseColumn(target, dontclose) {
var obj = [
{
domain: 0,
type: 'local',
type: 'home',
},
{
domain: 0,
type: 'local',
}
]
var json = JSON.stringify(obj)
localStorage.setItem('column', json)
@@ -158,15 +160,21 @@ function parseColumn(target, dontclose) {
} else {
localStorage.removeItem('hasNotfC_' + acct.domain)
}
var css = ''
var width = localStorage.getItem('width')
if (width) {
var css = ' min-width:' + width + 'px;'
css = ' min-width:' + width + 'px;'
}
var maxWidth = localStorage.getItem('max-width')
if (maxWidth) {
css = css +'max-width:' + maxWidth + 'px;'
}
var margin = localStorage.getItem('margin')
if (margin) {
css = css +'margin-right:' + margin + 'px;'
}
if (acct.width) {
var css = ' min-width:' + acct.width + 'px;max-width:' + acct.width + 'px;'
}
if (!css) {
var css = ''
css = css + ' min-width:' + acct.width + 'px !important;max-width:' + acct.width + 'px !important;'
}
if (acct.type == 'webview') {
if (localStorage.getItem('fixwidth')) {
@@ -370,7 +378,7 @@ function parseColumn(target, dontclose) {
<div class="boxIn" id="timeline_box_${key}_box" tlid="${key}" data-acct="${acct.domain}" style="${addHeight}">
<div class="notice-box z-depth-2" id="menu_${key}" style="${insert}">
<div class="area-notice">
<i class="material-icons waves-effect ${isMisRed}" id="notice_icon_${key}" ${notf_attr}
<i class="material-icons waves-effect ${isMisRed} notice_icon_acct_${acct.domain}" id="notice_icon_${key}" ${notf_attr}
style="font-size:40px; padding-top:25%;"
onclick="checkStr('${acct.type}','${data}','${acct.domain}', '${key}', '${delc}','${voice}',null)"
title="${lang.lang_layout_gotop}" aria-hidden="true">
@@ -413,7 +421,7 @@ function parseColumn(target, dontclose) {
</div>
</div>
<div class="column-hide notf-indv-box z-depth-4" id="notf-box_${notfKey}">
<div id="announce_${notfKey}" style="border: 1px solid"></div>
<div class="announce_${acct.domain}" style="border: 1px solid"></div>
<div id="notifications_${notfKey}" data-notf="${notfDomain}" data-type="notf" class="notf-timeline">
</div>
</div>
@@ -646,11 +654,15 @@ function removeColumn(tlid) {
if (result.value) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
var data = obj[tlid]
obj.splice(tlid, 1)
var json = JSON.stringify(obj)
localStorage.setItem('column', json)
sortLoad()
$('#timeline_box_' + tlid + '_parentBox').remove()
$('#timeline_box_' + tlid + '_box').remove()
if (!data.left_fold) {
$('#timeline_box_' + tlid + '_parentBox').remove()
}
}
$('#sort-box').removeClass('hide')
$('#sort-box').addClass('show')
@@ -782,7 +794,8 @@ function webviewParse(url, key, insert, icnsert, css) {
<i class="fab fa-twitter waves-effect" id="notice_icon_${key}" style="font-size:40px; padding-top:25%;"></i>
</div>
<div class="area-notice_name tl-title">WebView('${url}')</div>
<div class="area-sta"></div>
<div class="area-sta">
</div>
<div class="area-a2">
<a onclick="removeColumn('${key}')" class="setting nex">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_delthis}" ${icnsert}>cancel</i>
@@ -825,7 +838,7 @@ function unstreamingTL(type, key, basekey, insert, icnsert, left_fold, css, anim
${lang.lang_layout_leftUnfold}
</span><br>`
}
if(type == 'utl') {
if (type == 'utl') {
var dataHtml = false
} else {
var dataHtml = data
@@ -895,13 +908,13 @@ function bookmark(key, data) {
tl('bookmark', '', data, key, 'false', voice, '')
}
function utl(key, acct_id, data) {
if(!data) {
if (!data) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
data = obj[key].data
acct_id = obj[key].domain
}
console.log(key, data)
if (localStorage.getItem('voice_' + key)) {
var voice = true

View File

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

View File

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

View File

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

View File

@@ -99,14 +99,14 @@ function settings() {
var fontd = $('#font').val()
if (fontd) {
if (fontd != localStorage.getItem('font')) {
M.toast({ html: lang.lang_setting_font.replace('{{set}}', ct), displayLength: 3000 })
M.toast({ html: lang.lang_setting_font.replace('{{set}}', fontd), displayLength: 3000 })
}
localStorage.setItem('font', fontd)
themes()
} else {
if (localStorage.getItem('font')) {
localStorage.removeItem('font')
M.toast({ html: lang.lang_setting_font.replace('{{set}}', ct), displayLength: 3000 })
M.toast({ html: lang.lang_setting_font.replace('{{set}}', '"default"'), displayLength: 3000 })
themes()
}
}

View File

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

View File

@@ -1,30 +1,44 @@
function spotifyConnect() {
var auth = 'https://accounts.spotify.com/authorize?client_id=0f18e54abe0b4aedb4591e353d3aff69&redirect_uri=https://thedesk.top/spotify-connect&response_type=code&scope=user-read-currently-playing'
var platform = localStorage.getItem('platform')
if (platform == 'win32') {
postMessage(['openUrl', auth], '*')
postMessage(['sendSinmpleIpc', 'quit'], '*')
} else {
auth = auth + '&state=code'
$('#spotify-code-show').removeClass('hide')
postMessage(['openUrl', auth], '*')
}
var auth = 'https://spotify.thedesk.top/connect'
$('#spotify-code-show').removeClass('hide')
postMessage(['openUrl', auth], '*')
}
function spotifyAuth() {
var code = $('#spotify-code').val()
localStorage.setItem('spotify', 'code')
localStorage.setItem('spotify-refresh', code)
localStorage.setItem('spotify-token', code)
$('#spotify-code-show').addClass('hide')
$('#spotify-enable').addClass('disabled')
$('#spotify-disable').removeClass('disabled')
}
function spotifyDisconnect() {
localStorage.removeItem('spotify')
localStorage.removeItem('spotify-refresh')
checkSpotify()
var start = 'https://spotify.thedesk.top/disconnect?code=' + localStorage.getItem('spotify-token')
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
},
})
.then(function (response) {
if (!response.ok) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
if (!json.success) alert('error')
localStorage.removeItem('spotify-token')
checkSpotify()
})
}
function checkSpotify() {
if (localStorage.getItem('spotify')) {
if (localStorage.getItem('spotify-token')) {
$('#spotify-enable').addClass('disabled')
$('#spotify-disable').removeClass('disabled')
} else {
@@ -71,8 +85,8 @@ function aMusicFlagSave() {
}
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')
var start = 'https://spotify.thedesk.top/current-playing?code=' + localStorage.getItem('spotify-token')
var at = localStorage.getItem('spotify-token')
if (at) {
fetch(start, {
method: 'GET',
@@ -93,7 +107,10 @@ function nowplaying(mode) {
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
.then(function (jsonRaw) {
var code = jsonRaw.token
localStorage.setItem('spotify-token', code)
var json = jsonRaw.data
console.table(json)
if (json.length < 1) {
return false
@@ -169,11 +186,10 @@ function nowplaying(mode) {
return false
}
var item = json.recenttracks.track[0]
if(!item['@attr']) return false
if (!item['@attr']) return false
var img = item.image[3]['#text']
var isImg = item.streamable*1
var flag = localStorage.getItem('artwork')
if (flag && isImg && img) {
if (flag && img != 'https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png' && img) {
postMessage(['bmpImage', [img, 0]], '*')
}
var content = localStorage.getItem('np-temp')
@@ -187,7 +203,7 @@ function nowplaying(mode) {
var regExp = new RegExp('{artist}', 'g')
content = content.replace(regExp, item.artist['#text'])
var regExp = new RegExp('{url}', 'g')
content = content.replace(regExp,'')
content = content.replace(regExp, '')
var regExp = new RegExp('{composer}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{hz}', 'g')

View File

@@ -131,12 +131,8 @@ function trendTagonTip() {
spotint = null
function spotifytips() {
if (spotint) clearInterval(spotint)
var start =
'https://thedesk.top/now-playing?at=' +
localStorage.getItem('spotify') +
'&rt=' +
localStorage.getItem('spotify-refresh')
var at = localStorage.getItem('spotify')
var start = 'https://spotify.thedesk.top/current-playing?code=' + localStorage.getItem('spotify-token')
var at = localStorage.getItem('spotify-token')
if (at) {
fetch(start, {
method: 'GET',
@@ -157,7 +153,10 @@ function spotifytips() {
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function(jsonRaw) {
var code = jsonRaw.token
localStorage.setItem('spotify-token', code)
var json = jsonRaw.data
var ms = json.progress_ms
if(!ms) {
tips('ver')

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@@ -79,7 +79,11 @@ function createWindow() {
if(lang == 'ja') {
const maxims = JSON.parse(fs.readFileSync(__dirname + '/maxim.ja.json'))
var show = maxims[Math.floor(Math.random() * maxims.length)]
} else {
} else if(lang == 'ja-KS') {
//ja-KSも作れたらいいね
const maxims = JSON.parse(fs.readFileSync(__dirname + '/maxim.ja.json'))
var show = maxims[Math.floor(Math.random() * maxims.length)]
} else{
var show = 'TheDesk 2018'
}
const data = JSON.parse(package)

View File

@@ -28,6 +28,7 @@ function dl(mainWindow, lang_path, base, dirname) {
show: false
})
var lang = fs.readFileSync(lang_path, 'utf8')
//updatewin.toggleDevTools()
updatewin.loadURL(base + lang + '/update.html')
updatewin.webContents.once('dom-ready', () => {
updatewin.show()

View File

@@ -1,5 +1,4 @@
[
"TheDeskは自称ステイホームの必須アイテム",
"あと数秒でPCのファンが全力で回り始める",
"カラムの数だけ夢があるがネットワークは逼迫する",
"朝起きたらストリーミングが止まっていた…",
@@ -44,5 +43,13 @@
"たまにここに何も出ないことがあるけど、なんでかはわからない",
"Kawaii->Mayu(今ここ)->Koume->Chieri->Anastasia->Aiko",
"言語設定を日本語以外にするとこの表示はどうなると思う?",
"今日も使ってくれてありがとう。利用者カウンターがキリ番ならご報告を"
]
"今日も使ってくれてありがとう。利用者カウンターがキリ番ならご報告を",
"Ctrl+Eで通知の赤くなって「Fav: 1」とかなってるのをリセットできる",
"このアプリケーションの正式な名称は小文字thedeskだけど、内部でしか使われてない",
"N押すとトゥートのボックスが出て、すぐ打ち込める。",
"Xを押すとトゥートのボックスは出るけど、打ち込めない。その代わりもう一度押すと消せる。",
"トゥートした後ボックスを閉じるとかそのままにしておくとかは、設定で変えられます。",
"OpenStickerへの登録データ募集中",
"Microsoft Store版のアップデートは向こうに止められてます",
"いのちの輝き版ロゴ"
]

View File

@@ -6,6 +6,7 @@
<link href="./css/tl.css" type="text/css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
<link href="./node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="./node_modules/grapheme-splitter/index.js"></script>
<title>TheDesk Nano</title>
<style>
html {
@@ -82,12 +83,16 @@
.cvo {
grid-template-rows: auto 1rem 1fr auto 2rem;
}
.voice {
display: none;
}
</style>
</head>
<body>
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
<script>
var pwa = false
$.strip_tags = function(str, allowed) {
if (!str) {
return "";
@@ -141,7 +146,7 @@
}
</script>
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="view/en/main.js"></script>
<script type="text/javascript" src="./js/platform/first.js"></script>
<script type="text/javascript" src="./js/post/status.js"></script>
<script type="text/javascript" src="./js/post/post.js"></script>
<script type="text/javascript" src="./js/post/use-txtbox.js"></script>

5
app/netlify.toml Normal file
View File

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

View File

@@ -75,7 +75,7 @@
</head>
<body class="center" style="overflow: hidden;">
<img src="./img/desk-animation.svg" style="max-width: 62%;" />
<img src="./img/desk-animation.svg" id="leader" style="max-width: 62%;" />
<h1>TheDesk</h1>
<span id="ver"></span><br />
<span class="loading"></span><br />
@@ -84,11 +84,12 @@
<script>
if (location.search) {
var m = location.search.match(/\?ver=([0-9.]+)&codename=([a-zA-Z]+)&maxim=(.+)/)
var maxim = decodeURI(m[3])
if(maxim == 'いのちの輝き版ロゴ') document.getElementById('leader').setAttribute('src', './img/2025.svg')
var ver = m[1]
var code = m[2]
var maxim = m[3]
document.getElementById('ver').innerText = `${ver}(${code})`
document.getElementById('maxim').innerText = `${decodeURI(maxim)}`
document.getElementById('maxim').innerText = maxim
}
</script>
</div>

View File

@@ -1,6 +1,6 @@
{
"name": "thedesk",
"version": "21.0.1",
"version": "21.1.0",
"codename": "Mayu",
"description": "TheDesk is a Mastodon client for PC.",
"repository": "https://github.com/cutls/TheDesk",
@@ -15,7 +15,9 @@
"build": "node view/make/make.js --automatic && npx electron-builder",
"build:all": "npx electron-builder --win --linux",
"build:win": "npx electron-builder --win",
"build:pwa": "node view/make/make.js --automatic --pwa"
"build:pwa": "node view/make/make.js --automatic --pwa",
"lint:fix": "eslint js --fix" ,
"lint": "eslint js"
},
"keywords": [
"mastodon",
@@ -33,7 +35,8 @@
"url": "https://cutls.dev",
"email": "p@cutls.com"
},
"contributor": [{
"contributor": [
{
"name": "とねぢ",
"url": "https://minohdon.jp/@toneji",
"email": "solfa.tono@gmail.com"
@@ -51,17 +54,17 @@
],
"license": "GPL-3.0",
"dependencies": {
"@fortawesome/fontawesome-free": "^5.13.0",
"custom-electron-titlebar": "^3.2.2-hotfix62",
"electron-dl": "^3.0.0",
"jimp": "^0.10.3",
"jquery": "^3.5.0",
"@fortawesome/fontawesome-free": "^5.14.0",
"custom-electron-titlebar": "^3.2.3",
"electron-dl": "^3.0.1",
"jimp": "^0.14.0",
"jquery": "^3.5.1",
"jquery-ui-dist": "^1.12.1",
"json5": "^2.1.3",
"lodash": "^4.17.15",
"lodash": "^4.17.19",
"materialize-css": "git://github.com/cutls/materialize#v1-dev",
"sumchecker": "^3.0.1",
"sweetalert2": "^9.10.12",
"sweetalert2": "^9.17.0",
"system-font-families": "^0.4.1",
"vue": "^2.6.11"
},
@@ -69,10 +72,11 @@
"itunes-nowplaying-mac": "0.3.1"
},
"devDependencies": {
"chokidar": "^3.3.1",
"electron": "^8.2.3",
"electron-builder": "^22.5.1",
"electron-rebuild": "^1.10.1",
"chokidar": "^3.4.1",
"electron": "^9.1.1",
"electron-builder": "^22.7.0",
"electron-rebuild": "^1.11.0",
"eslint": "^7.6.0",
"readline-sync": "1.4.10"
},
"build": {
@@ -123,8 +127,8 @@
]
},
"electronDownload": {
"version": "8.0.0"
"version": "9.0.5"
},
"electronVersion": "8.0.0"
"electronVersion": "9.0.5"
}
}
}

View File

@@ -1,5 +1,10 @@
{
"latest":[],
"3.2.0": [],
"3.1.5": [],
"3.1.4": [
"リモート限定の連合タイムライン"
],
"3.1.3": [],
"3.1.2": [],
"3.1.1": [],

View File

@@ -53,6 +53,9 @@
<div id="acct-list"></div>
<div class="divider"></div>
</div>
<div class="hide-second">
<a href="setting.html">@@haveExported@@</a>
</div>
<div>
<h5>@@add@@</h5>
<br />

View File

@@ -138,7 +138,7 @@
id="acct-sel-prof"
title="@@showSelectProf@@(Ctrl+Shift+P)"
data-trans-title="post_box_prof"
width="1.8rem"
style="width: 1.8rem"
/>
</a>
</div>
@@ -404,7 +404,7 @@
style="margin:0"
/>
<div id="sch-box">
@@postat@@<br /><span class="sml">@@scheduleWarn@@</span><br />
@@postat@@<br /><span class="sml">@@scheduleWarn@@</span><a onclick="expPostMode()">Expire mode(beta)</a><br />
<input
type="datetime-local"
id="sch-date"
@@ -417,9 +417,6 @@
</div>
<!-- 公開範囲 Dropdown Structure -->
<ul id="dropdown1" class="dropdown-content">
<li style="font-size: 1.2rem; display: block; line-height: 1.69rem; padding: 1.1rem 1.23rem;">
@@selectVis@@
</li>
<li>
<a onclick="vis('public')">@@publicJP@@(Public)</a>
</li>
@@ -1120,60 +1117,6 @@
>
</div>
</div>
<!--mstdn.jp useragent-->
<div
id="askjp_jp_ua"
class="hide"
style="z-index:505;width:100vw;height:100vh; background-color: #530f0f;color:white;padding:20px;overflow-y:scroll;position:absolute;"
>
<p style="font-size:300%">【緊急】mstdn.jpへのアクセスについて</p>
<br />
<p style="font-size:200%">問題の概要</p>
<p>
合同会社分散型ソーシャルネットワーク機構は非公開審査によってユーザーエージェントベースで個々のアプリに対してAPIへのアクセスを許可する方法を取っています。
</p>
<p>
TheDesk開発者はこれに強く反発し、TheDeskのユーザーエージェントをそのアプリからのアクセスであると特定することができない値にすることを決めました。
</p>
<p>具体的には、"Mastodon client: [起動毎に変わる100文字の英数記号]"と設定しました。</p>
<p style="font-size:200%">ユーザーによる対策</p>
<p>
このバージョンのTheDeskでは任意のユーザーエージェントを適用できます。「設定」内の「環境設定」で設定していただけます。<a
href="setting.html"
>設定</a
>
</p>
<p style="font-size:150%">1. 「TheDesk」を含む値に設定する</p>
<p>
「設定」内の「環境設定」、「ユーザーエージェント」に「TheDesk」を含む値を入れてください。大文字小文字に注意してください。
</p>
<p><b>懸念点</b></p>
<p>
TheDesk開発者は合同会社分散型ソーシャルネットワーク機構に対しこの件についてメールで問い合わせを行っています(抗議ではありません)。問い合わせの過程でアプリ許可が取り消され、使用不能になる可能性があります。
</p>
<p><u>ちなみに</u></p>
<p>
合同会社分散型ソーシャルネットワーク機構はmstdn.jpのお知らせアカウントに対するリプライに書かれたサードパーティクライアントを「審査」の後許可するとトゥートし、複数ユーザーがTheDeskの名前を挙げました。
事実、トゥートの翌日までにTheDeskに対してアクセス許可が出されました。しかし、許可を出す際にTheDeskの標準ユーザーエージェントを機構は一切確認せず、「TheDesk」という文字列が入ったユーザーエージェントを一律で許可する設定にしたようです。
結果として実際の標準ユーザーエージェントはそれに合致せず、不許可のままとなっていました。前バージョンまでの標準ユーザーエージェントは、パッケージ名の都合上全て小文字の「thedesk」を採用していました。
</p>
<p style="font-size:150%">2. 「認定済み」クライアントの名前を含む値に設定する</p>
<p>
「設定」内の「環境設定」、「ユーザーエージェント」に、<a href="https://mstdn.jp/about"
>mstdn.jpのトップページ</a
>記載のアプリ名を含む値を入れてください。大文字小文字やスペースに注意してください。
</p>
<p>
「Mastodon日本鯖です」と書かれた以降の一段を全てコピーして記載してもアクセス可能です。<u
>これほどまでにユーザーエージェント制限は「抜け道」が多いのです。</u
><a href="setting.html">設定</a>
</p>
<p><b>懸念点</b></p>
<p>
その記載されたアプリと合同会社分散型ソーシャルネットワーク機構になんの関係があるかは知りませんが、どちらにしろ他のクライアントの名を借りてアクセスの許可をいただくというあまり道徳的によろしくない方法です。
</p>
<button onclick="$('#askjp_jp_ua').addClass('hide')" class="btn waves-effect">閉じる</button>
</div>
<!-- Modal Structure Release Note-->
<div id="releasenote" class="modal modal-fixed-footer scr">
<div class="modal-content">
@@ -1181,28 +1124,28 @@
<a href="https://thedesk.top" target="_blank">HP</a><br />
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br />
<br />
<div id="release-21-0-1_Mayu" class="release-do" style="display:none; ">
<div id="release-21-1-0_Mayu" class="release-do" style="display:none; ">
<br />
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br />
Pixiv
FanboxやPatreonでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br />
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note 21.0.1 (Mayu)</h5>
・画像がアップロードできない <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <a onclick="udgEx('popn_ja@popon.pptdn.jp','main')" class="contributor"><img src="https://avatars3.githubusercontent.com/u/24523508?s=88&v=4">kaias1jp</a><br>
・画像のリサイズに失敗する <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <a onclick="udgEx('popn_ja@popon.pptdn.jp','main')" class="contributor"><img src="https://avatars3.githubusercontent.com/u/24523508?s=88&v=4">kaias1jp</a><br>
画像をダウンロードした後、ボタンを押しても保存先フォルダが表示されない <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
ユーザーマッチングを削除 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
<h5>Release Note 21.0.0 (Mayu)</h5>
・フォロリクをストリーミングで受け取ったときにNo status hereになる <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
Apple MusicのNowPlayingでアルバム情報がないときの挙動を改善 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
Last.fm NowPlaying <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
テーマCSSに関するバグ <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
プラットフォームやPWAか否か等で表示を切り替える <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
ユーザータイムラインをカラム化 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <img src="">anonymous user<br>
スプラッシュスクリーンを追加 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
アイコンの微調整 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
FTLのRemote only <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
<h5>Release Note 21.1.0 (Mayu)</h5>
<!--上のdivのidも変えてね-->
・コンテキストメニューが大きくずれるのを修正(今でもそれなりにズレます) <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
last_statusが日付だけ返すように変更されたことを受けての変更 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
アクセシビリティ対応の向上(色覚異常者用) <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
・Last.fmのアルバムアートワークについて、暫定的に添付可能に <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
・ハッシュタグストリーミングについて、追加のタグのストリーミングを実装(master追従インスタンスのみ対応) <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
・TheDesk Nanoについて全く動いていなかったのを修正 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
サブスクリプションタイプのストリーミングに対応し、軽量化や安定性の向上が見込まれます。(master追従インスタンスのみ対応) <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
Unknownなメディアに対して、proxyを使うようにした。 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
タイムライン間のマージンを変更できるように <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <img src="https://user-images.githubusercontent.com/17561618/92328367-4b2c1a00-f09b-11ea-9d7f-e2b2f586d806.png">axfelix<br>
アナウンスメントでリアクションが付与できないバグを修正 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
ストリーミングが切れる可能性があるときに、画面を再読み込みするように。(master追従インスタンスのみ対応) <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
セレクタやドロップダウンのデザインの変更 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
フォローやフォロワー、お気に入りの遡りが上手くできていなかった <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
一部のカスタム絵文字を含むユーザー名の表示が崩れる <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <a onclick="udgEx('AmaiSaeta@oransns.com','main')" class="contributor"><img src="https://user-images.githubusercontent.com/17561618/92328483-1a001980-f09c-11ea-92c7-4c30a276b8f8.png">AmaiSaeta</a><br>
</div>
<div id="release-en" style="display:none">

View File

@@ -20,5 +20,6 @@
"thisismisskey": "Login as Misskey",
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
"nodata": "No data",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
}

View File

@@ -11,8 +11,6 @@
"cwDes": "Hide text behind warning",
"selfile": "Attach..",
"insertEmoji": "Emojis",
"NPSpotify": "NowPlaying(Spotify)",
"NPiTunes": "NowPlaying(macOS)",
"schedule": "Scheduled toot",
"postat": "Post at",
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
@@ -77,6 +75,7 @@
"toots": "Toots",
"follow": "Follow",
"follower": "Follower",
"utlColumn": "Show as a column",
"timeline": "Timeline",
"operateOtherAcct": "Cross-account",
"list": "List",

View File

@@ -127,6 +127,7 @@
"lang_layout_delthis": "Remove this column",
"lang_layout_setthis": "Preferences of this column",
"lang_layout_mediafil": "Media filtering",
"lang_layout_remoteOnly": "Remote only",
"lang_layout_linkana": "Auto Link Analyzer",
"lang_layout_linkanades": "Auto link analyzer",
"lang_layout_tts": "Text to speech ",
@@ -165,6 +166,7 @@
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_status_requesting": "Requesting",
"lang_parse_mentioned": " replied to you",
"lang_parse_faved": " favourited your toot",
"lang_parse_bted": " boosted your toot",
@@ -219,6 +221,7 @@
"lang_parse_nsfw": "sensitive media",
"lang_parse_html": "Show embed HTML",
"lang_parse_notffilter": "Show this user's notifications",
"lang_parse_hidden": "Unvisible quoted toot",
"lang_misskeyparse_renote": "Repost",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaction",

View File

@@ -167,6 +167,7 @@
"linkwarn": "TheDesk save your data on thedesk.top server.",
"connect": "Connect",
"disconnect": "Disconnect",
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
"templateedit": "Edit a template",
"templateeditwarn": "",
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",

View File

@@ -20,5 +20,6 @@
"thisismisskey": "Login as Misskey",
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
"nodata": "No data",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
}

View File

@@ -11,8 +11,6 @@
"cwDes": "Hide text behind warning",
"selfile": "Attach..",
"insertEmoji": "Emojis",
"NPSpotify": "NowPlaying(Spotify)",
"NPiTunes": "NowPlaying(macOS)",
"schedule": "Scheduled toot",
"postat": "Post at",
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
@@ -77,6 +75,7 @@
"toots": "Toots",
"follow": "Follow",
"follower": "Follower",
"utlColumn": "Show as a column",
"timeline": "Timeline",
"operateOtherAcct": "Cross-account",
"list": "List",

View File

@@ -127,6 +127,7 @@
"lang_layout_delthis": "Remove this column",
"lang_layout_setthis": "Preferences of this column",
"lang_layout_mediafil": "Media filtering",
"lang_layout_remoteOnly": "Remote only",
"lang_layout_linkana": "Auto Link Analyzer",
"lang_layout_linkanades": "Auto link analyzer",
"lang_layout_tts": "Text to speech ",
@@ -165,6 +166,7 @@
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_status_requesting": "Requesting",
"lang_parse_mentioned": " replied to you",
"lang_parse_faved": " favourited your toot",
"lang_parse_bted": " boosted your toot",
@@ -219,6 +221,7 @@
"lang_parse_nsfw": "sensitive media",
"lang_parse_html": "Show embed HTML",
"lang_parse_notffilter": "Show this user's notifications",
"lang_parse_hidden": "Unvisible quoted toot",
"lang_misskeyparse_renote": "Repost",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaction",

View File

@@ -167,6 +167,7 @@
"linkwarn": "TheDesk save your data on thedesk.top server.",
"connect": "Connect",
"disconnect": "Disconnect",
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
"templateedit": "Edit a template",
"templateeditwarn": "",
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",

View File

@@ -20,5 +20,6 @@
"thisismisskey": "Влезте като Misskey",
"misskeylogin": "Прочетете <a href=\"https://thedesk.top/how-to-misskey-login.html\">Документацията</a>, за да влезете в Misskey.",
"nodata": "Няма данни",
"accessTokenSetup": "Използвайте маркера за достъп и вход (щракнете след попълване, но не код, а знак за достъп в поле: Разширено)"
"accessTokenSetup": "Използвайте маркера за достъп и вход (щракнете след попълване, но не код, а знак за достъп в поле: Разширено)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
}

View File

@@ -11,8 +11,6 @@
"cwDes": "Скриване на текста зад предупреждение",
"selfile": "Прикачи..",
"insertEmoji": "Емотикони",
"NPSpotify": "Възпроизвеждане сега (Spotify)",
"NPiTunes": "Възпроизвеждане сега (macOS)",
"schedule": "Планиран тоот",
"postat": "Публикация в",
"scheduleWarn": "2.7.0 ~ Минимален интервал от време:5мин. (часовникът на сървъра може да не е точен.)",
@@ -77,6 +75,7 @@
"toots": "Тоот",
"follow": "Следвам",
"follower": "Последователи",
"utlColumn": "Show as a column",
"timeline": "Времева линия",
"operateOtherAcct": "Свързан-профил",
"list": "Списък",

View File

@@ -127,6 +127,7 @@
"lang_layout_delthis": "Премахване на тази колона",
"lang_layout_setthis": "Предпочитания за тази колона",
"lang_layout_mediafil": "Филтриране на медиите",
"lang_layout_remoteOnly": "Remote only",
"lang_layout_linkana": "Автоматичен анализатор на връзки",
"lang_layout_linkanades": "Автоматичен анализатор на връзки",
"lang_layout_tts": "Текст към говор ",
@@ -165,6 +166,7 @@
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Следвайте, за да добавите този потребител към списъците.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_status_requesting": "Requesting",
"lang_parse_mentioned": " replied to you",
"lang_parse_faved": " favourited your toot",
"lang_parse_bted": " boosted your toot",
@@ -219,6 +221,7 @@
"lang_parse_nsfw": "NSFW media",
"lang_parse_html": "Показване на вграденият HTML код",
"lang_parse_notffilter": "Показване на известията от този потребител",
"lang_parse_hidden": "Unvisible quoted toot",
"lang_misskeyparse_renote": "Повторно публикуване",
"lang_misskeyparse_renoteqt": "Повторна бележка",
"lang_misskeyparse_reaction": "Реакция",

View File

@@ -167,6 +167,7 @@
"linkwarn": "TheDesk save your data on thedesk.top server.",
"connect": "Connect",
"disconnect": "Disconnect",
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
"templateedit": "Edit a template",
"templateeditwarn": "",
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",

View File

@@ -20,5 +20,6 @@
"thisismisskey": "Login as Misskey",
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
"nodata": "No data",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
}

View File

@@ -11,8 +11,6 @@
"cwDes": "Hide text behind warning",
"selfile": "Attach..",
"insertEmoji": "Emojis",
"NPSpotify": "NowPlaying(Spotify)",
"NPiTunes": "NowPlaying(macOS)",
"schedule": "Scheduled toot",
"postat": "Post at",
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
@@ -77,6 +75,7 @@
"toots": "Toots",
"follow": "Follow",
"follower": "Follower",
"utlColumn": "Show as a column",
"timeline": "Timeline",
"operateOtherAcct": "Cross-account",
"list": "List",

View File

@@ -127,6 +127,7 @@
"lang_layout_delthis": "Remove this column",
"lang_layout_setthis": "Preferences of this column",
"lang_layout_mediafil": "Media filtering",
"lang_layout_remoteOnly": "Remote only",
"lang_layout_linkana": "Auto Link Analyzer",
"lang_layout_linkanades": "Auto link analyzer",
"lang_layout_tts": "Text to speech ",
@@ -165,6 +166,7 @@
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_status_requesting": "Requesting",
"lang_parse_mentioned": " replied to you",
"lang_parse_faved": " favourited your toot",
"lang_parse_bted": " boosted your toot",
@@ -219,6 +221,7 @@
"lang_parse_nsfw": "sensitive media",
"lang_parse_html": "Show embed HTML",
"lang_parse_notffilter": "Show this user's notifications",
"lang_parse_hidden": "Unvisible quoted toot",
"lang_misskeyparse_renote": "Repost",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaction",

View File

@@ -167,6 +167,7 @@
"linkwarn": "TheDesk save your data on thedesk.top server.",
"connect": "Connect",
"disconnect": "Disconnect",
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
"templateedit": "Edit a template",
"templateeditwarn": "",
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",

View File

@@ -20,5 +20,6 @@
"thisismisskey": "Přihlásit jako Misskey",
"misskeylogin": "Pro přihlášení do Misskey si přečtěte <a href=\"https://thedesk.top/how-to-misskey-login.html\">dokumentaci (ja)</a>.",
"nodata": "No data",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
}

View File

@@ -11,8 +11,6 @@
"cwDes": "Skrýt text za varováním",
"selfile": "Přiložit...",
"insertEmoji": "Emoji",
"NPSpotify": "NowPlaying(Spotify)",
"NPiTunes": "NowPlaying(macOS)",
"schedule": "Plánovaný toot",
"postat": "Odeslat jak",
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
@@ -77,6 +75,7 @@
"toots": "Tooty",
"follow": "Sledovat",
"follower": "Sledující",
"utlColumn": "Show as a column",
"timeline": "Časová osa",
"operateOtherAcct": "Cross-account",
"list": "Seznam",

View File

@@ -127,6 +127,7 @@
"lang_layout_delthis": "Odstranit tento sloupec",
"lang_layout_setthis": "Nastavení tohoto sloupce",
"lang_layout_mediafil": "Filtrování médií",
"lang_layout_remoteOnly": "Remote only",
"lang_layout_linkana": "Automatický analyzátor odkazů",
"lang_layout_linkanades": "Automatický analyzátor odkazů",
"lang_layout_tts": "Převod textu na řeč ",
@@ -165,6 +166,7 @@
"lang_showontl_domain": "Doména ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_status_requesting": "Requesting",
"lang_parse_mentioned": " vám odpověděl/a",
"lang_parse_faved": " si oblíbil/a váš toot",
"lang_parse_bted": " boostnul/a váš toot",
@@ -219,6 +221,7 @@
"lang_parse_nsfw": "NSFW media",
"lang_parse_html": "Show embed HTML",
"lang_parse_notffilter": "Show this user's notifications",
"lang_parse_hidden": "Unvisible quoted toot",
"lang_misskeyparse_renote": "Znovusdílení",
"lang_misskeyparse_renoteqt": "Renotování",
"lang_misskeyparse_reaction": "Reakce",

View File

@@ -167,6 +167,7 @@
"linkwarn": "TheDesk save your data on thedesk.top server.",
"connect": "Connect",
"disconnect": "Disconnect",
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
"templateedit": "Edit a template",
"templateeditwarn": "",
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",

View File

@@ -20,5 +20,6 @@
"thisismisskey": "Login as Misskey",
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
"nodata": "No data",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
}

View File

@@ -11,8 +11,6 @@
"cwDes": "Hide text behind warning",
"selfile": "Attach..",
"insertEmoji": "Emojis",
"NPSpotify": "NowPlaying(Spotify)",
"NPiTunes": "NowPlaying(macOS)",
"schedule": "Scheduled toot",
"postat": "Post at",
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
@@ -77,6 +75,7 @@
"toots": "Toots",
"follow": "Follow",
"follower": "Follower",
"utlColumn": "Show as a column",
"timeline": "Timeline",
"operateOtherAcct": "Cross-account",
"list": "List",

View File

@@ -127,6 +127,7 @@
"lang_layout_delthis": "Remove this column",
"lang_layout_setthis": "Preferences of this column",
"lang_layout_mediafil": "Media filtering",
"lang_layout_remoteOnly": "Remote only",
"lang_layout_linkana": "Auto Link Analyzer",
"lang_layout_linkanades": "Auto link analyzer",
"lang_layout_tts": "Text to speech ",
@@ -165,6 +166,7 @@
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_status_requesting": "Requesting",
"lang_parse_mentioned": " replied to you",
"lang_parse_faved": " favourited your toot",
"lang_parse_bted": " boosted your toot",
@@ -219,6 +221,7 @@
"lang_parse_nsfw": "sensitive media",
"lang_parse_html": "Show embed HTML",
"lang_parse_notffilter": "Show this user's notifications",
"lang_parse_hidden": "Unvisible quoted toot",
"lang_misskeyparse_renote": "Repost",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaction",

View File

@@ -167,6 +167,7 @@
"linkwarn": "TheDesk save your data on thedesk.top server.",
"connect": "Connect",
"disconnect": "Disconnect",
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
"templateedit": "Edit a template",
"templateeditwarn": "",
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",

View File

@@ -20,5 +20,6 @@
"thisismisskey": "Als Misskey anmelden",
"misskeylogin": "Lies die <a href=\"https://thedesk.top/how-to-misskey-login.html\">Doku (japanisch)</a> um dich bei Misskey einzuloggen.",
"nodata": "Keine Daten",
"accessTokenSetup": "Benutze Zugangs-Token zum Anmelden (Klicke nach Ausfüllen nicht den Code, sondern den Access-Token im Kästchen: Erweitert)"
"accessTokenSetup": "Benutze Zugangs-Token zum Anmelden (Klicke nach Ausfüllen nicht den Code, sondern den Access-Token im Kästchen: Erweitert)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
}

View File

@@ -2,7 +2,7 @@
"draghere": "Zum Hochladen hier her ziehen",
"close": "Schließen",
"webSrc": "Suche im Internet",
"tsSrc": "Search on tootsearch",
"tsSrc": "Bei Tootsearch suchen",
"showSelectProf": "Ausgewähltes Konto anzeigen",
"closethisbox": "Diesen Dialog schließen",
"toot": "Tröt",
@@ -11,8 +11,6 @@
"cwDes": "Text hinter Warnung verstecken",
"selfile": "Anhängen...",
"insertEmoji": "Emojis",
"NPSpotify": "Wird gerade gespielt (Spotify)",
"NPiTunes": "Wird gerade wiedergegeben(macOS)",
"schedule": "Geplanter Tröt",
"postat": "Senden um",
"scheduleWarn": "2.7.0~ Mindestzeitabstand: von 5min(Uhr auf dem Server ist möglicherweise ungenau.)",
@@ -77,6 +75,7 @@
"toots": "Tröts",
"follow": "Folgen",
"follower": "Abonnenten",
"utlColumn": "Show as a column",
"timeline": "Verlauf",
"operateOtherAcct": "Cross-Account",
"list": "Liste",
@@ -179,11 +178,11 @@
"active": "Kürzlich aktiv",
"newcomer": "Neu eingetroffen",
"local_only": "Nur lokal",
"menu": "Menu",
"menu": "Menü",
"demoBottomBtns": "Willkommensguide",
"lookAtBottom": "Schauen Sie sich den unteren Teil des Fensters an. Hier sind einige Tipps darüber.",
"acctManDesc": "Fügen Sie weitere Konten hinzu und loggen Sie sie aus.",
"settingDesc": "Many and many preferences here. You will couldn't check it all!",
"settingDesc": "Hier sind sehr, sehr viele Einstellungen. Du könntest gar nicht alles ausprobieren!",
"nanoDescPlus": "Mini-Fenster-Klient (experimentell)",
"menuDesc": "All daily TheDesk and Mastodon tuning like <b>add and sort columns</b>, <b>list and filter check</b>."
}

View File

@@ -127,6 +127,7 @@
"lang_layout_delthis": "Diese Spalte löschen",
"lang_layout_setthis": "Einstellungen dieser Spalte",
"lang_layout_mediafil": "Medien filtern",
"lang_layout_remoteOnly": "Remote only",
"lang_layout_linkana": "Automatische Link-Analyse",
"lang_layout_linkanades": "Automatische Link-Analyse",
"lang_layout_tts": "Sprachausgabe ",
@@ -165,6 +166,7 @@
"lang_showontl_domain": "Domäne ",
"lang_showontl_listwarn": "Folgen, um diesen Benutzer zu Listen hinzuzufügen.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_status_requesting": "Requesting",
"lang_parse_mentioned": " hat dir geantwortet",
"lang_parse_faved": " favorisierte deinen Tröt",
"lang_parse_bted": " hat deinen Tröt verstärkt",
@@ -219,6 +221,7 @@
"lang_parse_nsfw": "NSFW Medien",
"lang_parse_html": "Show embed HTML",
"lang_parse_notffilter": "Benachrichtigungen dieses Benutzers anzeigen",
"lang_parse_hidden": "Unvisible quoted toot",
"lang_misskeyparse_renote": "Weiterleiten",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaktion",

View File

@@ -167,6 +167,7 @@
"linkwarn": "TheDesk speichert Ihre Daten auf dem thedesk.top Server.",
"connect": "Verbinden",
"disconnect": "Trennen",
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
"templateedit": "Edit a template",
"templateeditwarn": "",
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",

View File

@@ -20,5 +20,6 @@
"thisismisskey": "Login as Misskey",
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
"nodata": "No data",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
}

View File

@@ -11,8 +11,6 @@
"cwDes": "Hide text behind warning",
"selfile": "Attach..",
"insertEmoji": "Emojis",
"NPSpotify": "NowPlaying(Spotify)",
"NPiTunes": "NowPlaying(macOS)",
"schedule": "Scheduled toot",
"postat": "Post at",
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
@@ -77,6 +75,7 @@
"toots": "Toots",
"follow": "Follow",
"follower": "Follower",
"utlColumn": "Show as a column",
"timeline": "Timeline",
"operateOtherAcct": "Cross-account",
"list": "List",

View File

@@ -127,6 +127,7 @@
"lang_layout_delthis": "Remove this column",
"lang_layout_setthis": "Preferences of this column",
"lang_layout_mediafil": "Media filtering",
"lang_layout_remoteOnly": "Remote only",
"lang_layout_linkana": "Auto Link Analyzer",
"lang_layout_linkanades": "Auto link analyzer",
"lang_layout_tts": "Text to speech ",
@@ -165,6 +166,7 @@
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_status_requesting": "Requesting",
"lang_parse_mentioned": " replied to you",
"lang_parse_faved": " favourited your toot",
"lang_parse_bted": " boosted your toot",
@@ -219,6 +221,7 @@
"lang_parse_nsfw": "sensitive media",
"lang_parse_html": "Show embed HTML",
"lang_parse_notffilter": "Show this user's notifications",
"lang_parse_hidden": "Unvisible quoted toot",
"lang_misskeyparse_renote": "Repost",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaction",

View File

@@ -167,6 +167,7 @@
"linkwarn": "TheDesk save your data on thedesk.top server.",
"connect": "Connect",
"disconnect": "Disconnect",
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
"templateedit": "Edit a template",
"templateeditwarn": "",
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",

View File

@@ -20,5 +20,6 @@
"thisismisskey": "crwdns3052:0crwdne3052:0",
"misskeylogin": "crwdns3054:0crwdne3054:0",
"nodata": "crwdns3056:0crwdne3056:0",
"accessTokenSetup": "crwdns4362:0crwdne4362:0"
"accessTokenSetup": "crwdns4362:0crwdne4362:0",
"haveExported": "crwdns4500:0crwdne4500:0"
}

View File

@@ -11,8 +11,6 @@
"cwDes": "crwdns3072:0crwdne3072:0",
"selfile": "crwdns3074:0crwdne3074:0",
"insertEmoji": "crwdns3076:0crwdne3076:0",
"NPSpotify": "crwdns3078:0crwdne3078:0",
"NPiTunes": "crwdns3080:0crwdne3080:0",
"schedule": "crwdns3082:0crwdne3082:0",
"postat": "crwdns3084:0crwdne3084:0",
"scheduleWarn": "crwdns3086:0crwdne3086:0",
@@ -77,6 +75,7 @@
"toots": "crwdns3198:0crwdne3198:0",
"follow": "crwdns3200:0crwdne3200:0",
"follower": "crwdns3202:0crwdne3202:0",
"utlColumn": "crwdns4492:0crwdne4492:0",
"timeline": "crwdns3204:0crwdne3204:0",
"operateOtherAcct": "crwdns3206:0crwdne3206:0",
"list": "crwdns3208:0crwdne3208:0",

View File

@@ -127,6 +127,7 @@
"lang_layout_delthis": "crwdns3640:0crwdne3640:0",
"lang_layout_setthis": "crwdns3642:0crwdne3642:0",
"lang_layout_mediafil": "crwdns3644:0crwdne3644:0",
"lang_layout_remoteOnly": "crwdns4494:0crwdne4494:0",
"lang_layout_linkana": "crwdns3646:0crwdne3646:0",
"lang_layout_linkanades": "crwdns3648:0crwdne3648:0",
"lang_layout_tts": "crwdns3650:0crwdne3650:0",
@@ -165,6 +166,7 @@
"lang_showontl_domain": "crwdns3710:0crwdne3710:0",
"lang_showontl_listwarn": "crwdns3712:0crwdne3712:0",
"lang_showontl_verified": "crwdns3714:0crwdne3714:0",
"lang_status_requesting": "crwdns4496:0crwdne4496:0",
"lang_parse_mentioned": "crwdns3716:0crwdne3716:0",
"lang_parse_faved": "crwdns3718:0crwdne3718:0",
"lang_parse_bted": "crwdns3720:0crwdne3720:0",
@@ -219,6 +221,7 @@
"lang_parse_nsfw": "crwdns3800:0crwdne3800:0",
"lang_parse_html": "crwdns4388:0crwdne4388:0",
"lang_parse_notffilter": "crwdns3802:0crwdne3802:0",
"lang_parse_hidden": "crwdns4498:0crwdne4498:0",
"lang_misskeyparse_renote": "crwdns3804:0crwdne3804:0",
"lang_misskeyparse_renoteqt": "crwdns3806:0crwdne3806:0",
"lang_misskeyparse_reaction": "crwdns3808:0crwdne3808:0",

View File

@@ -167,6 +167,7 @@
"linkwarn": "crwdns4194:0crwdne4194:0",
"connect": "crwdns4196:0crwdne4196:0",
"disconnect": "crwdns4198:0crwdne4198:0",
"lastFmWarn": "crwdns4490:0crwdne4490:0",
"templateedit": "crwdns4340:0crwdne4340:0",
"templateeditwarn": "crwdns4342:0crwdne4342:0",
"template1": "crwdns4344:0{song}crwdnd4344:0{album}crwdnd4344:0{artist}crwdnd4344:0{url}crwdne4344:0",

View File

@@ -20,5 +20,6 @@
"thisismisskey":"Login as Misskey",
"misskeylogin":"Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
"nodata":"No data",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
}

View File

@@ -130,7 +130,7 @@
"notf":"Notifications",
"bookmark": "Bookmarks",
"showThisTL":"Show this TL:",
"webviewWarn":"TweetDeck with customed TJDeck(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Code</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>). Keyboard shortcuts will irritate you. When you feel so, you check 'Prefer WebView' on top of the column.",
"webviewWarn":"TweetDeck with customed TJDeck(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Code</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>).",
"add":"Add",
"search":"Search",
"sortSet":"Sort",

View File

@@ -166,6 +166,7 @@
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_status_requesting": "Requesting",
"lang_parse_mentioned": " replied to you",
"lang_parse_faved": " favourited your toot",
"lang_parse_bted": " boosted your toot",
@@ -220,6 +221,7 @@
"lang_parse_nsfw": "sensitive media",
"lang_parse_html": "Show embed HTML",
"lang_parse_notffilter": "Show this user's notifications",
"lang_parse_hidden": "Unvisible quoted toot",
"lang_misskeyparse_renote": "Repost",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaction",

View File

@@ -24,10 +24,11 @@
"nativenotf": "Native notification",
"nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test",
"minwidth": "Minimum width of columns",
"minwidthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
"width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "",
"margin": "Margin between timelines",
"above": "above",
"font": "Font",
"fontwarn": "Select your favorite font to 'Select'(On Linux, it may not work.)",
@@ -101,8 +102,8 @@
"or": "or",
"imgheight": "Height of images",
"imgheightwarn": "Option:Set \"full\" to uncrop.",
"ticker": "Enable #InstanceTicker",
"tickerwarn": "Show colorful stickers about the server. <a href=\"https://github.com/MiyonMiyon/InstanceTicker_List\">About #InstanceTicker</a> (c)2018-2020 MiyonMiyon. Released under the MIT License.",
"ticker": "Enable OpenSticker",
"tickerwarn": "Show the instance name and favicon of tooters <a href=\"https://opensticker.0px.io\">About OpenSticker</a>",
"animation": "Animation of timelines",
"markers": "Markers(mark as read) on HTL and notifications",
"markerswarn": "Mastodon 3.0~. Shared on WebUI and third-party supported clients.",

View File

@@ -20,5 +20,6 @@
"thisismisskey": "Iniciar sesión con Misskey",
"misskeylogin": "Leé <a href=\"https://docs.thedesk.top/\">la documentación (en japonés)</a> para usar Misskey.",
"nodata": "Sin datos",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
}

View File

@@ -11,8 +11,6 @@
"cwDes": "Ocultar texto con advertencia de contenido",
"selfile": "Adjuntar…",
"insertEmoji": "Emojis",
"NPSpotify": "Ahora suena (Spotify)",
"NPiTunes": "Ahora suena (macOS)",
"schedule": "Toot programado",
"postat": "Publicar el",
"scheduleWarn": "2.7.0~ Intervalo mínimo: 5 minutos (el reloj en el servidor podría no ser preciso).",
@@ -77,6 +75,7 @@
"toots": "Toots",
"follow": "Seguir",
"follower": "Seguidor",
"utlColumn": "Show as a column",
"timeline": "Línea temporal",
"operateOtherAcct": "Cuenta cruzada",
"list": "Enlistar",

View File

@@ -127,6 +127,7 @@
"lang_layout_delthis": "Quitar esta columna",
"lang_layout_setthis": "Configuración de esta columna",
"lang_layout_mediafil": "Filtro de medio",
"lang_layout_remoteOnly": "Remote only",
"lang_layout_linkana": "Analizador automático de enlace",
"lang_layout_linkanades": "Analizador automático de enlace",
"lang_layout_tts": "Texto hablado ",
@@ -165,6 +166,7 @@
"lang_showontl_domain": "Dominio ",
"lang_showontl_listwarn": "Seguí a este usuario para agregarlo a las listas.",
"lang_showontl_verified": "Este sitio web está verificado por su propietario en ",
"lang_status_requesting": "Requesting",
"lang_parse_mentioned": " te respondió",
"lang_parse_faved": " marcó tu toot como favorito",
"lang_parse_bted": " retooteó tu toot",
@@ -219,6 +221,7 @@
"lang_parse_nsfw": "medios sensibles",
"lang_parse_html": "Mostrar HTML insertado",
"lang_parse_notffilter": "Mostrar notificaciones de este usuario",
"lang_parse_hidden": "Unvisible quoted toot",
"lang_misskeyparse_renote": "Republicar",
"lang_misskeyparse_renoteqt": "Renovar",
"lang_misskeyparse_reaction": "Reacción",

View File

@@ -167,6 +167,7 @@
"linkwarn": "TheDesk guarda tus datos en el servidor thedesk.top.",
"connect": "Conectar",
"disconnect": "Desconectar",
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
"templateedit": "Editar plantilla",
"templateeditwarn": "",
"template1": "Spotify: {artist}: nombre del artista // {song}: nombre del tema // {album}: nombre del álbum // {url}: dirección web a Spotify",

View File

@@ -20,5 +20,6 @@
"thisismisskey": "Iniciar sesión como Misskey",
"misskeylogin": "Leer <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> para iniciar sesión en Misskey.",
"nodata": "Sin datos",
"accessTokenSetup": "Usar el token de acceso para iniciar sesión (haga clic después de completar no el código si no el token de acceso en el casilla: avanzado)"
"accessTokenSetup": "Usar el token de acceso para iniciar sesión (haga clic después de completar no el código si no el token de acceso en el casilla: avanzado)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
}

View File

@@ -11,8 +11,6 @@
"cwDes": "Hide text behind warning",
"selfile": "Attach..",
"insertEmoji": "Emojis",
"NPSpotify": "NowPlaying(Spotify)",
"NPiTunes": "NowPlaying(macOS)",
"schedule": "Scheduled toot",
"postat": "Post at",
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
@@ -77,6 +75,7 @@
"toots": "Toots",
"follow": "Follow",
"follower": "Follower",
"utlColumn": "Show as a column",
"timeline": "Timeline",
"operateOtherAcct": "Cross-account",
"list": "List",

View File

@@ -127,6 +127,7 @@
"lang_layout_delthis": "Remove this column",
"lang_layout_setthis": "Preferences of this column",
"lang_layout_mediafil": "Media filtering",
"lang_layout_remoteOnly": "Remote only",
"lang_layout_linkana": "Auto Link Analyzer",
"lang_layout_linkanades": "Auto link analyzer",
"lang_layout_tts": "Text to speech ",
@@ -165,6 +166,7 @@
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_status_requesting": "Requesting",
"lang_parse_mentioned": " replied to you",
"lang_parse_faved": " favourited your toot",
"lang_parse_bted": " boosted your toot",
@@ -219,6 +221,7 @@
"lang_parse_nsfw": "sensitive media",
"lang_parse_html": "Show embed HTML",
"lang_parse_notffilter": "Show this user's notifications",
"lang_parse_hidden": "Unvisible quoted toot",
"lang_misskeyparse_renote": "Repost",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaction",

View File

@@ -167,6 +167,7 @@
"linkwarn": "TheDesk save your data on thedesk.top server.",
"connect": "Connect",
"disconnect": "Disconnect",
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
"templateedit": "Edit a template",
"templateeditwarn": "",
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",

View File

@@ -20,5 +20,6 @@
"thisismisskey": "Login as Misskey",
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
"nodata": "No data",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
}

View File

@@ -11,8 +11,6 @@
"cwDes": "Hide text behind warning",
"selfile": "Attach..",
"insertEmoji": "Emojis",
"NPSpotify": "NowPlaying(Spotify)",
"NPiTunes": "NowPlaying(macOS)",
"schedule": "Scheduled toot",
"postat": "Post at",
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
@@ -77,6 +75,7 @@
"toots": "Toots",
"follow": "Follow",
"follower": "Follower",
"utlColumn": "Show as a column",
"timeline": "Timeline",
"operateOtherAcct": "Cross-account",
"list": "List",

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