Compare commits

..

226 Commits

Author SHA1 Message Date
f0ddcb8d6d Images now actually send filenames to the server. Server may still disregard them, but pleromer will actually detect mime type properly and generate a sane URL. 2024-04-14 20:25:39 +10:00
9e43a19084 Baked in twemoji to energised.botegirl.parts. This will later become a config option. 2024-04-03 17:38:17 +11:00
85017bbfd7 Start of a way to override cert issues, for self-signed instances 2023-12-08 00:14:08 +11:00
3fd79df1c2 Not sure where that came from 2022-12-26 20:11:02 +11:00
7ece60d925 merge 2022-12-26 18:30:30 +11:00
cutls
0c59d3140e misskey cannot show TL 2022-12-24 22:40:11 +09:00
cutls
89e0109cba google to mastodon providing api 2022-12-11 17:56:05 +09:00
cutls
9af6c5536a Fix emoji in HTML attribute value 2022-12-10 12:29:49 +09:00
cutls
bf4f3c2e5e revert 2022-12-10 12:29:06 +09:00
cutls
6f247c9f09 Merge branch 'master' of github.com:cutls/TheDesk 2022-12-10 12:27:50 +09:00
cutls
e4a9eca514 Fix emoji in HTML attribute value 2022-12-10 12:27:46 +09:00
Cutls
f735858339
Update manager.js 2022-12-08 09:57:21 +09:00
cutls
29d6146e02 add universal package for macOS 2022-12-08 02:52:28 +09:00
cutls
704d235feb 23.0.3 2022-12-08 01:30:37 +09:00
cutls
3b58f2a2ad release note 2022-12-08 01:30:17 +09:00
cutls
06e1b08398 nano mode 2022-12-08 01:20:03 +09:00
cutls
d09efb0b05 sort hidden 2022-12-08 01:19:55 +09:00
cutls
f432b13cc0 i18n of continueCw 2022-12-08 01:07:45 +09:00
cutls
5504c4039a trend link design 2022-12-08 01:07:31 +09:00
cutls
af3442b414 font size change 2022-12-08 01:07:17 +09:00
cutls
fdaa7dfb62 easy tweetdeck add 2022-12-08 01:07:04 +09:00
cutls
c71e2e52be to 2m.cutls.com 2022-12-08 01:06:30 +09:00
cutls
f225e216e0 image loading count 2022-12-08 00:29:30 +09:00
cutls
fa4d42a1f0 fix notification filter 2022-12-08 00:27:32 +09:00
cutls
d5ca0bad24 pre: code-skip setup, fix: compatible info 2022-12-08 00:25:09 +09:00
cutls
f573ecc9eb preffer using code-skip setup and show compatible data 2022-12-08 00:24:28 +09:00
cutls
a298228143 cannot launch notarized app 2022-12-07 23:23:50 +09:00
cutls
0fb7670d2d remove debug alert 2022-12-07 23:22:51 +09:00
cutls
4ef964f539 vue dependency update #788 2022-12-07 23:22:36 +09:00
cutls
12163aaa3d revert electron to 21.1.0 2022-12-06 00:26:45 +09:00
Cutls
622a5419bc
New Crowdin updates (#738)
* New translations index.json (Romanian)

* New translations main.json (Portuguese)

* New translations index.json (Italian)

* New translations main.json (Italian)

* New translations index.json (Dutch)

* New translations main.json (Dutch)

* New translations index.json (Norwegian)

* New translations main.json (Norwegian)

* New translations index.json (Polish)

* New translations main.json (Polish)

* New translations index.json (Portuguese)

* New translations index.json (Russian)

* New translations index.json (Hungarian)

* New translations main.json (Russian)

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

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

* New translations index.json (Swedish)

* New translations main.json (Swedish)

* New translations index.json (Turkish)

* New translations main.json (Turkish)

* New translations index.json (Ukrainian)

* New translations main.json (Ukrainian)

* New translations index.json (Chinese Simplified)

* New translations main.json (Hungarian)

* New translations main.json (Hebrew)

* New translations main.json (Romanian)

* New translations index.json (Catalan)

* New translations index.json (French)

* New translations main.json (French)

* New translations index.json (Spanish)

* New translations main.json (Spanish)

* New translations index.json (Afrikaans)

* New translations main.json (Afrikaans)

* New translations index.json (Arabic)

* New translations main.json (Arabic)

* New translations index.json (Bulgarian)

* New translations main.json (Bulgarian)

* New translations main.json (Catalan)

* New translations index.json (Hebrew)

* New translations index.json (Czech)

* New translations main.json (Czech)

* New translations index.json (Danish)

* New translations main.json (Danish)

* New translations index.json (German)

* New translations main.json (German)

* New translations index.json (Greek)

* New translations main.json (Greek)

* New translations index.json (Finnish)

* New translations main.json (Finnish)

* New translations main.json (Chinese Simplified)

* New translations index.json (Chinese Traditional)

* New translations main.json (Chinese Traditional)

* New translations index.json (Vietnamese)

* New translations main.json (Vietnamese)

* New translations index.json (Portuguese, Brazilian)

* New translations main.json (Portuguese, Brazilian)

* New translations index.json (Spanish, Argentina)

* New translations main.json (Spanish, Argentina)

* New translations index.json (Sinhala)

* New translations main.json (Sinhala)

* New translations index.json (Cornish)

* New translations main.json (Cornish)

* New translations index.json (English)

* New translations main.json (English)

* New translations index.json (German)

* New translations main.json (German)

* New translations acct.json (Spanish)

* New translations index.json (Spanish)

* New translations update.json (Spanish)

* New translations acct.json (Spanish)

* New translations index.json (Spanish)

* New translations main.json (Spanish)

* New translations setting.json (Spanish)

* New translations acct.json (Korean)

* New translations index.json (Korean)

* New translations main.json (Korean)

* New translations setting.json (Korean)

* New translations update.json (Korean)

* New translations main.json (Korean)

* New translations main.json (Romanian)

* New translations main.json (French)

* New translations main.json (Spanish)

* New translations main.json (Afrikaans)

* New translations main.json (Arabic)

* New translations main.json (Bulgarian)

* New translations main.json (Catalan)

* New translations main.json (Czech)

* New translations main.json (Danish)

* New translations main.json (German)

* New translations main.json (Greek)

* New translations main.json (Finnish)

* New translations main.json (Hebrew)

* New translations main.json (Hungarian)

* New translations main.json (Italian)

* New translations main.json (Dutch)

* New translations main.json (Norwegian)

* New translations main.json (Polish)

* New translations main.json (Portuguese)

* New translations main.json (Russian)

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

* New translations main.json (Swedish)

* New translations main.json (Turkish)

* New translations main.json (Ukrainian)

* New translations main.json (Chinese Simplified)

* New translations main.json (Chinese Traditional)

* New translations main.json (Vietnamese)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Sinhala)

* New translations main.json (Cornish)

* New translations main.json (English)
2022-12-06 00:23:41 +09:00
Cutls
77fee7add6
Merge pull request #740 from cutls/dependabot/npm_and_yarn/app/chokidar-3.5.3
Bump chokidar from 3.5.2 to 3.5.3 in /app
2022-12-06 00:23:25 +09:00
Cutls
c9968ed5e6
Merge branch 'master' into dependabot/npm_and_yarn/app/chokidar-3.5.3 2022-12-06 00:22:41 +09:00
Cutls
e06672b220
Merge pull request #742 from cutls/dependabot/npm_and_yarn/app/json5-2.2.1
Bump json5 from 2.2.0 to 2.2.1 in /app
2022-12-06 00:22:09 +09:00
dependabot[bot]
2a83cc745a
Bump chokidar from 3.5.2 to 3.5.3 in /app
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.5.2 to 3.5.3.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.5.2...3.5.3)

---
updated-dependencies:
- dependency-name: chokidar
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:21:59 +00:00
Cutls
cbafc36d14
Merge pull request #744 from cutls/dependabot/npm_and_yarn/app/dotenv-16.0.3
Bump dotenv from 10.0.0 to 16.0.3 in /app
2022-12-06 00:21:57 +09:00
Cutls
ed94e5e38b
Merge pull request #745 from cutls/dependabot/npm_and_yarn/app/jquery-3.6.1
Bump jquery from 3.6.0 to 3.6.1 in /app
2022-12-06 00:21:49 +09:00
Cutls
d1886fe903
Merge pull request #746 from cutls/dependabot/npm_and_yarn/app/uuid-9.0.0
Bump uuid from 8.3.2 to 9.0.0 in /app
2022-12-06 00:21:33 +09:00
dependabot[bot]
fd0c8dbad5
Bump uuid from 8.3.2 to 9.0.0 in /app
Bumps [uuid](https://github.com/uuidjs/uuid) from 8.3.2 to 9.0.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v8.3.2...v9.0.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:21:24 +00:00
dependabot[bot]
7a2ef9cecf
Bump dotenv from 10.0.0 to 16.0.3 in /app
Bumps [dotenv](https://github.com/motdotla/dotenv) from 10.0.0 to 16.0.3.
- [Release notes](https://github.com/motdotla/dotenv/releases)
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v10.0.0...v16.0.3)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:21:16 +00:00
Cutls
009fa9efbf
Merge pull request #754 from cutls/dependabot/npm_and_yarn/app/electron-notarize-1.2.2
Bump electron-notarize from 1.2.1 to 1.2.2 in /app
2022-12-06 00:20:53 +09:00
dependabot[bot]
c959366686
Bump electron-notarize from 1.2.1 to 1.2.2 in /app
Bumps [electron-notarize](https://github.com/electron/notarize) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/electron/notarize/releases)
- [Changelog](https://github.com/electron/notarize/blob/main/.releaserc.json)
- [Commits](https://github.com/electron/notarize/compare/v1.2.1...v1.2.2)

---
updated-dependencies:
- dependency-name: electron-notarize
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:20:30 +00:00
Cutls
68ee6ed0c4
Merge pull request #765 from cutls/dependabot/npm_and_yarn/app/vue-3.2.45
Bump vue from 2.6.14 to 3.2.45 in /app
2022-12-06 00:20:19 +09:00
dependabot[bot]
6cee1228fb
Bump jquery from 3.6.0 to 3.6.1 in /app
Bumps [jquery](https://github.com/jquery/jquery) from 3.6.0 to 3.6.1.
- [Release notes](https://github.com/jquery/jquery/releases)
- [Commits](https://github.com/jquery/jquery/compare/3.6.0...3.6.1)

---
updated-dependencies:
- dependency-name: jquery
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:20:15 +00:00
Cutls
5e1f5f02ed
Merge pull request #766 from cutls/dependabot/npm_and_yarn/app/fortawesome/fontawesome-free-6.2.1
Bump @fortawesome/fontawesome-free from 5.15.4 to 6.2.1 in /app
2022-12-06 00:20:09 +09:00
dependabot[bot]
8d7f46ac54
Bump vue from 2.6.14 to 3.2.45 in /app
Bumps [vue](https://github.com/vuejs/core) from 2.6.14 to 3.2.45.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/commits/v3.2.45)

---
updated-dependencies:
- dependency-name: vue
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:19:59 +00:00
dependabot[bot]
1ad3d7bdaa
Bump @fortawesome/fontawesome-free from 5.15.4 to 6.2.1 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.15.4 to 6.2.1.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.15.4...6.2.1)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-free"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:19:42 +00:00
dependabot[bot]
68bcd6a51d
Bump json5 from 2.2.0 to 2.2.1 in /app
Bumps [json5](https://github.com/json5/json5) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.2.0...v2.2.1)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-05 15:19:04 +00:00
Cutls
918f214a6c
Merge pull request #781 from cutls/dependabot/npm_and_yarn/app/electron-22.0.0
Bump electron from 21.1.0 to 22.0.0 in /app
2022-12-06 00:18:55 +09:00
Cutls
8d4784da82
Merge branch 'master' into dependabot/npm_and_yarn/app/electron-22.0.0 2022-12-06 00:18:45 +09:00
Cutls
768b041616
Merge pull request #782 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.6.15
Bump sweetalert2 from 11.4.38 to 11.6.15 in /app
2022-12-06 00:18:04 +09:00
cutls
b825298bc6 23.0.2 2022-12-06 00:15:14 +09:00
cutls
30d4dae0c4 use translate api 2022-12-05 23:43:15 +09:00
Cutls
c67b4b7037
Merge pull request #780 from b-xb/patch-1
Update tl.css
2022-12-05 23:36:31 +09:00
Cutls
a21f555507
Merge pull request #769 from osapon/base_master
fix error thread view
2022-12-05 23:31:15 +09:00
osapon
c83079bb80 fix error thread view 2022-12-05 23:26:08 +09:00
cutls
ed4431e15a Merge branch 'master' of github.com:cutls/TheDesk 2022-12-05 23:22:18 +09:00
osapon
796d422222 delete amazonwidhlist 2022-12-05 23:22:14 +09:00
Cutls
7671c8c4cf
Merge pull request #207 from osapon/shortcode_replace
Use DOM for shortcode replacement.
2022-12-05 23:21:34 +09:00
Cutls
ec6d93ad80
Merge branch 'master' into shortcode_replace 2022-12-05 23:21:22 +09:00
cutls
ccc6d96172 newcomer notifiation 2022-12-05 23:12:33 +09:00
dependabot[bot]
b32f3b2730
Bump sweetalert2 from 11.4.38 to 11.6.15 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.4.38 to 11.6.15.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v11.4.38...v11.6.15)

---
updated-dependencies:
- dependency-name: sweetalert2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-30 20:02:46 +00:00
dependabot[bot]
f4fd6d30d2
Bump electron from 21.1.0 to 22.0.0 in /app
Bumps [electron](https://github.com/electron/electron) from 21.1.0 to 22.0.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v21.1.0...v22.0.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-30 20:01:43 +00:00
b-xb
b4f064e98c
Update tl.css
FIx Display Name area so that the Display Name is set to the correct size
2022-11-30 16:41:34 +00:00
Cutls
77f567f821
[WIP] #770 2022-11-21 13:20:38 +09:00
osapon
2abca19e69 fix error thread view 2022-11-19 11:29:02 +09:00
cutls
f5d42fa806 pwa 2022-10-24 18:28:33 +09:00
765fcafce9 Merge remote-tracking branch 'refs/remotes/upstream/master' 2022-10-14 21:15:24 +11:00
cutls
7ba34c1074 on about window open link with external browser 2022-10-11 01:03:14 +09:00
cutls
03b2fed9ef add keyboard shortcut with textarea focus 2022-10-11 01:02:48 +09:00
cutls
4629e74c30 for m1 mac updator 2022-10-11 00:17:05 +09:00
cutls
6372c77509 debug complete 2022-10-10 23:58:11 +09:00
cutls
8fcead947d electron-userland/electron-builder issue 7050 2022-10-10 23:44:27 +09:00
cutls
a4f7f8dfd8 syntax error 2022-10-10 23:26:07 +09:00
cutls
f7ce12ca9e debug start 2022-10-10 23:25:06 +09:00
cutls
48f0c37985 security and dependency update with 23.0.1 2022-10-10 22:11:59 +09:00
cutls
a0171cfc50 debug for arm notarize 2022-10-10 21:04:49 +09:00
cutls
742b93bbef add toot-edit 2022-10-10 17:19:30 +09:00
cutls
cb9a3c4af1 add trending links, statuses for v3.5.0 2022-10-10 16:09:32 +09:00
cutls
48c872909d add limited flags of moderated account 2022-10-10 16:09:17 +09:00
cutls
c2ccc9a493 work on debian 2022-10-10 15:17:22 +09:00
cutls
49c78d2263 copy image to clipboard #715 2022-10-10 15:08:57 +09:00
cutls
dff544c3d2 Merge branch 'master' of github.com:cutls/TheDesk 2022-10-10 15:08:37 +09:00
cutls
97ebd1ddc4 update deps 2022-10-10 15:06:10 +09:00
Cutls
d742cc768a
Merge pull request #700 from cutls/dependabot/npm_and_yarn/app/electron-rebuild-3.2.9
Bump electron-rebuild from 3.2.0 to 3.2.9 in /app
2022-10-10 14:28:59 +09:00
dependabot[bot]
00649ccf72
Bump electron-rebuild from 3.2.0 to 3.2.9 in /app
Bumps [electron-rebuild](https://github.com/electron/electron-rebuild) from 3.2.0 to 3.2.9.
- [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/v3.2.0...v3.2.9)

---
updated-dependencies:
- dependency-name: electron-rebuild
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:09:40 +00:00
Cutls
7667afcdc1
New Crowdin updates (#559)
* New translations index.json (Spanish, Argentina)

* New translations index.json (Dutch)

* New translations index.json (Cornish)

* New translations index.json (Portuguese, Brazilian)

* New translations index.json (Vietnamese)

* New translations index.json (Chinese Traditional)

* New translations index.json (Chinese Simplified)

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

* New translations index.json (Polish)

* New translations index.json (Norwegian)

* New translations index.json (Italian)

* New translations index.json (Sinhala)

* New translations index.json (Hungarian)

* New translations index.json (Hebrew)

* New translations index.json (Finnish)

* New translations index.json (Greek)

* New translations index.json (German)

* New translations index.json (Danish)

* New translations index.json (Czech)

* New translations index.json (Catalan)

* New translations index.json (Bulgarian)

* New translations index.json (Arabic)

* New translations index.json (Afrikaans)

* New translations index.json (Spanish)

* New translations index.json (French)

* New translations index.json (Romanian)

* New translations index.json (English)

* New translations setting.json (Romanian)

* New translations setting.json (Polish)

* New translations setting.json (Cornish)

* New translations setting.json (Sinhala)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Vietnamese)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Ukrainian)

* New translations setting.json (Turkish)

* New translations setting.json (Swedish)

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

* New translations setting.json (Russian)

* New translations setting.json (Portuguese)

* New translations setting.json (Norwegian)

* New translations setting.json (French)

* New translations setting.json (Dutch)

* New translations setting.json (Italian)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (Danish)

* New translations setting.json (Czech)

* New translations setting.json (Catalan)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations setting.json (Spanish)

* New translations acct.json (Russian)

* New translations update.json (Russian)

* New translations main.json (German)

* New translations index.json (French)

* New translations main.json (French)

* New translations setting.json (French)

* New translations setting.json (French)

* New translations acct.json (Polish)

* New translations acct.json (Polish)

* New translations acct.json (Polish)

* New translations update.json (Polish)

* New translations update.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations main.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations setting.json (Polish)

* New translations main.json (Polish)

* New translations main.json (Polish)

* New translations setting.json (Polish)

* New translations main.json (Polish)

* New translations main.json (Polish)

* New translations index.json (Polish)

* New translations acct.json (Chinese Simplified)

* New translations index.json (Chinese Simplified)

* New translations index.json (Chinese Simplified)

* New translations setting.json (German)
2022-10-10 14:06:58 +09:00
Cutls
14d07b60dc
Merge pull request #626 from cutls/dependabot/npm_and_yarn/app/cached-path-relative-1.1.0
Bump cached-path-relative from 1.0.2 to 1.1.0 in /app
2022-10-10 14:06:30 +09:00
Cutls
4676d062e7
Merge pull request #646 from cutls/dependabot/npm_and_yarn/app/electron-notarize-1.2.1
Bump electron-notarize from 1.1.0 to 1.2.1 in /app
2022-10-10 14:06:09 +09:00
Cutls
0fbc3786f5
Merge pull request #669 from cutls/dependabot/npm_and_yarn/app/ejs-3.1.8
Bump ejs from 3.1.6 to 3.1.8 in /app
2022-10-10 14:05:57 +09:00
Cutls
73d7160525
Merge pull request #686 from cutls/dependabot/npm_and_yarn/app/shell-quote-1.7.3
Bump shell-quote from 1.7.2 to 1.7.3 in /app
2022-10-10 14:05:49 +09:00
Cutls
736021f6e9
Merge pull request #709 from cutls/dependabot/npm_and_yarn/app/jquery-ui-dist-1.13.2
Bump jquery-ui-dist from 1.12.1 to 1.13.2 in /app
2022-10-10 14:05:13 +09:00
Cutls
35cb2f3278
Merge pull request #725 from cutls/dependabot/npm_and_yarn/app/sanitize-html-2.7.2
Bump sanitize-html from 2.4.0 to 2.7.2 in /app
2022-10-10 14:05:04 +09:00
Cutls
5cbb791d94
Merge pull request #733 from cutls/dependabot/npm_and_yarn/app/electron-21.1.0
Bump electron from 13.2.2 to 21.1.0 in /app
2022-10-10 14:04:56 +09:00
dependabot[bot]
b5999e9657
Bump electron-notarize from 1.1.0 to 1.2.1 in /app
Bumps [electron-notarize](https://github.com/electron/electron-notarize) from 1.1.0 to 1.2.1.
- [Release notes](https://github.com/electron/electron-notarize/releases)
- [Changelog](https://github.com/electron/electron-notarize/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-notarize/compare/v1.1.0...v1.2.1)

---
updated-dependencies:
- dependency-name: electron-notarize
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:04:08 +00:00
dependabot[bot]
26073403f3
Bump electron from 13.2.2 to 21.1.0 in /app
Bumps [electron](https://github.com/electron/electron) from 13.2.2 to 21.1.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.2.2...v21.1.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:03:47 +00:00
dependabot[bot]
f40c9d7648
Bump sanitize-html from 2.4.0 to 2.7.2 in /app
Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.4.0 to 2.7.2.
- [Release notes](https://github.com/apostrophecms/sanitize-html/releases)
- [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.4.0...2.7.2)

---
updated-dependencies:
- dependency-name: sanitize-html
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:02:47 +00:00
dependabot[bot]
cf5cc87219
Bump ejs from 3.1.6 to 3.1.8 in /app
Bumps [ejs](https://github.com/mde/ejs) from 3.1.6 to 3.1.8.
- [Release notes](https://github.com/mde/ejs/releases)
- [Changelog](https://github.com/mde/ejs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mde/ejs/compare/v3.1.6...v3.1.8)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:02:38 +00:00
Cutls
7f2944fbb3
Merge pull request #737 from cutls/dependabot/npm_and_yarn/app/eslint-8.25.0
Bump eslint from 7.32.0 to 8.25.0 in /app
2022-10-10 14:01:42 +09:00
Cutls
b6afd53e7a
Merge pull request #736 from cutls/dependabot/npm_and_yarn/app/electron-dl-3.4.0
Bump electron-dl from 3.2.1 to 3.4.0 in /app
2022-10-10 14:01:12 +09:00
Cutls
fd47e28f5c
Merge branch 'master' into dependabot/npm_and_yarn/app/electron-dl-3.4.0 2022-10-10 14:01:05 +09:00
dependabot[bot]
4e60164ff4
Bump eslint from 7.32.0 to 8.25.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.32.0 to 8.25.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.32.0...v8.25.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:00:43 +00:00
dependabot[bot]
f20e7c3d40
Bump electron-dl from 3.2.1 to 3.4.0 in /app
Bumps [electron-dl](https://github.com/sindresorhus/electron-dl) from 3.2.1 to 3.4.0.
- [Release notes](https://github.com/sindresorhus/electron-dl/releases)
- [Commits](https://github.com/sindresorhus/electron-dl/compare/v3.2.1...v3.4.0)

---
updated-dependencies:
- dependency-name: electron-dl
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 05:00:06 +00:00
Cutls
aa9e0489f0
Merge pull request #735 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.4.38
Bump sweetalert2 from 11.1.4 to 11.4.38 in /app
2022-10-10 13:59:41 +09:00
Cutls
7e37194b02
Merge branch 'master' into dependabot/npm_and_yarn/app/sweetalert2-11.4.38 2022-10-10 13:59:36 +09:00
Cutls
fa3fc120b4
Merge pull request #582 from cutls/dependabot/npm_and_yarn/app/system-font-families-0.6.0
Bump system-font-families from 0.4.1 to 0.6.0 in /app
2022-10-10 13:58:43 +09:00
dependabot[bot]
b172838643
Bump sweetalert2 from 11.1.4 to 11.4.38 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.1.4 to 11.4.38.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v11.1.4...v11.4.38)

---
updated-dependencies:
- dependency-name: sweetalert2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-07 20:03:55 +00:00
5d5f0c20f5 ?? 2022-09-28 18:27:41 +10:00
dependabot[bot]
882be07dcd
Bump jquery-ui-dist from 1.12.1 to 1.13.2 in /app
Bumps [jquery-ui-dist](https://github.com/jquery/jquery-ui) from 1.12.1 to 1.13.2.
- [Release notes](https://github.com/jquery/jquery-ui/releases)
- [Commits](https://github.com/jquery/jquery-ui/compare/1.12.1...1.13.2)

---
updated-dependencies:
- dependency-name: jquery-ui-dist
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 20:09:02 +00:00
d94e829090 Polls now work again 2022-06-26 19:05:20 +10:00
dependabot[bot]
190badbfd8
Bump shell-quote from 1.7.2 to 1.7.3 in /app
Bumps [shell-quote](https://github.com/substack/node-shell-quote) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/substack/node-shell-quote/releases)
- [Changelog](https://github.com/substack/node-shell-quote/blob/master/CHANGELOG.md)
- [Commits](https://github.com/substack/node-shell-quote/compare/v1.7.2...1.7.3)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 08:26:02 +00:00
d231297a5d fixing videos not being unloaded when closed 2022-04-03 19:19:44 +10:00
dependabot[bot]
931630820b
Bump cached-path-relative from 1.0.2 to 1.1.0 in /app
Bumps [cached-path-relative](https://github.com/ashaffer/cached-path-relative) from 1.0.2 to 1.1.0.
- [Release notes](https://github.com/ashaffer/cached-path-relative/releases)
- [Commits](https://github.com/ashaffer/cached-path-relative/commits)

---
updated-dependencies:
- dependency-name: cached-path-relative
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-27 15:31:02 +00:00
16fef709f6 Merge remote-tracking branch 'refs/remotes/upstream/master' 2022-01-22 03:19:37 +11:00
Cutls
cefcadfaa5
Merge pull request #622 from epixinvites/master
I updated a little bit of typos and grammatical errors in the en/setting.json
2022-01-18 15:47:00 +09:00
epixinvites
334cf50138
Update setting.json 2022-01-18 14:42:45 +08:00
49016e57e4 Fixed videos not playing on pleroma, and fixed saving images after changing image on a local post with caching disabled 2021-12-03 02:14:15 +11:00
9856c34adc Merge remote-tracking branch 'refs/remotes/upstream/master' 2021-12-03 00:59:53 +11:00
yu-chicken
1e589edc23 Style correction when account notation is long at Toot. 2021-11-05 21:00:13 +11:00
Cutls
d63e60e096
Merge pull request #584 from yu-chicken/modify-dropdownContent-style
Style correction when account notation is long at Toot.
2021-10-30 18:42:40 +09:00
yu-chicken
ac56c71181 Style correction when account notation is long at Toot. 2021-10-30 17:08:24 +09:00
dependabot[bot]
6050c733cc
Bump system-font-families from 0.4.1 to 0.6.0 in /app
Bumps [system-font-families](https://github.com/rBurgett/system-font-families) from 0.4.1 to 0.6.0.
- [Release notes](https://github.com/rBurgett/system-font-families/releases)
- [Commits](https://github.com/rBurgett/system-font-families/commits)

---
updated-dependencies:
- dependency-name: system-font-families
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-10-21 20:03:12 +00:00
db39fea577 fix merge 2021-08-29 19:33:42 +10:00
cutls
c4ebdb93fb unnotarize on M1 2021-08-28 20:05:00 +09:00
cutls
ab80d6e868 M1 build 2021-08-28 19:59:16 +09:00
cutls
fbaf6e0a80 pl-PL delete 2021-08-28 19:53:35 +09:00
cutls
a36116be0a git ignore 2021-08-28 19:53:06 +09:00
cutls
c7fa139cef ignore 2021-08-28 19:52:20 +09:00
cutls
276751f206 TheDesk 22.3.1(Koume) 2021-08-28 19:32:42 +09:00
cutls
a550841eeb Add mute duration 2021-08-28 19:21:36 +09:00
Cutls
4dfad6aa02
New Crowdin updates (#535)
* New translations index.json (German)

* New translations index.json (Spanish, Argentina)

* New translations main.json (Spanish, Argentina)

* New translations acct.json (Sinhala)

* New translations index.json (Sinhala)

* New translations main.json (Sinhala)

* New translations setting.json (Sinhala)

* New translations index.json (Sinhala)

* New translations main.json (Sinhala)

* New translations setting.json (Sinhala)
2021-08-26 00:00:24 +09:00
Cutls
131c68dd66
Merge pull request #542 from cutls/dependabot/npm_and_yarn/app/eslint-7.32.0
Bump eslint from 7.28.0 to 7.32.0 in /app
2021-08-26 00:00:11 +09:00
dependabot[bot]
2bb8032ea9
Bump eslint from 7.28.0 to 7.32.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.28.0 to 7.32.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.28.0...v7.32.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-25 15:00:02 +00:00
Cutls
64d93d92d7
Merge pull request #545 from cutls/dependabot/npm_and_yarn/app/fortawesome/fontawesome-free-5.15.4
Bump @fortawesome/fontawesome-free from 5.15.3 to 5.15.4 in /app
2021-08-25 23:59:35 +09:00
Cutls
492b9efcf0
Merge pull request #547 from cutls/dependabot/npm_and_yarn/app/electron-notarize-1.1.0
Bump electron-notarize from 1.0.0 to 1.1.0 in /app
2021-08-25 23:59:26 +09:00
Cutls
cb8a2cac14
Merge branch 'master' into dependabot/npm_and_yarn/app/electron-notarize-1.1.0 2021-08-25 23:59:20 +09:00
Cutls
8e7608921a
Merge pull request #551 from cutls/dependabot/npm_and_yarn/app/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7 in /app
2021-08-25 23:58:37 +09:00
Cutls
52b7eec8d7
Merge pull request #555 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.1.4
Bump sweetalert2 from 11.0.17 to 11.1.4 in /app
2021-08-25 23:58:16 +09:00
Cutls
72ce1b80c4
Merge pull request #556 from cutls/dependabot/npm_and_yarn/app/electron-rebuild-3.2.0
Bump electron-rebuild from 2.3.5 to 3.2.0 in /app
2021-08-25 23:58:06 +09:00
Cutls
bfacf0fb51
Merge pull request #557 from cutls/dependabot/npm_and_yarn/app/electron-13.2.2
Bump electron from 13.1.2 to 13.2.2 in /app
2021-08-25 23:57:53 +09:00
dependabot[bot]
aa41adebc0
Bump electron from 13.1.2 to 13.2.2 in /app
Bumps [electron](https://github.com/electron/electron) from 13.1.2 to 13.2.2.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.1.2...v13.2.2)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-24 20:03:36 +00:00
dependabot[bot]
2eef97be6f
Bump electron-rebuild from 2.3.5 to 3.2.0 in /app
Bumps [electron-rebuild](https://github.com/electron/electron-rebuild) from 2.3.5 to 3.2.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/v2.3.5...v3.2.0)

---
updated-dependencies:
- dependency-name: electron-rebuild
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-20 20:03:37 +00:00
dependabot[bot]
a68d0d8516
Bump sweetalert2 from 11.0.17 to 11.1.4 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.0.17 to 11.1.4.
- [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/v11.0.17...v11.1.4)

---
updated-dependencies:
- dependency-name: sweetalert2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-19 20:03:22 +00:00
dependabot[bot]
b60852c67c
Bump path-parse from 1.0.6 to 1.0.7 in /app
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-11 11:47:30 +00:00
dependabot[bot]
744705ca2a
Bump electron-notarize from 1.0.0 to 1.1.0 in /app
Bumps [electron-notarize](https://github.com/electron/electron-notarize) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/electron/electron-notarize/releases)
- [Changelog](https://github.com/electron/electron-notarize/blob/master/.releaserc.json)
- [Commits](https://github.com/electron/electron-notarize/compare/v1.0.0...v1.1.0)

---
updated-dependencies:
- dependency-name: electron-notarize
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-09 20:03:20 +00:00
dependabot[bot]
019c4d8e96
Bump @fortawesome/fontawesome-free from 5.15.3 to 5.15.4 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.15.3 to 5.15.4.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.15.3...5.15.4)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-free"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-04 20:04:23 +00:00
f45ab949b2 Mouseover/click for action buttons now works properly in notification trays, and unique ID for elements is now actually unique. 2021-07-11 13:27:41 +10:00
cutls
ab460d1401 introduce uuid yeah 2021-06-19 19:16:08 +09:00
cutls
679151e8ea TheDesk 22.3.0 2021-06-18 17:06:45 +09:00
cutls
da76c6732d Merge branch 'master' of https://github.com/cutls/TheDesk 2021-06-18 16:29:07 +09:00
Cutls
b108f0e09d
Update README.md 2021-06-18 16:29:01 +09:00
cutls
8d30d5d6dc dependabot 2021-06-18 16:22:32 +09:00
cutls
8b5a9520b2 git 2021-06-18 16:21:51 +09:00
Cutls
0f99a1098e
Merge pull request #509 from cutls/dependabot/npm_and_yarn/app/dotenv-10.0.0
Bump dotenv from 9.0.2 to 10.0.0 in /app
2021-06-18 16:21:25 +09:00
Cutls
a773315bf6
Merge branch 'master' into dependabot/npm_and_yarn/app/dotenv-10.0.0 2021-06-18 16:21:19 +09:00
Cutls
6e247502da
Merge pull request #519 from cutls/dependabot/npm_and_yarn/app/eslint-7.28.0
Bump eslint from 7.27.0 to 7.28.0 in /app
2021-06-18 16:20:49 +09:00
Cutls
3151ed383e
Merge branch 'master' into dependabot/npm_and_yarn/app/eslint-7.28.0 2021-06-18 16:20:42 +09:00
Cutls
607a6a204b
Merge pull request #520 from cutls/dependabot/npm_and_yarn/app/vue-2.6.14
Bump vue from 2.6.12 to 2.6.14 in /app
2021-06-18 16:20:18 +09:00
Cutls
0dae100c84
Merge pull request #521 from cutls/dependabot/npm_and_yarn/app/electron-13.1.2
Bump electron from 13.0.1 to 13.1.2 in /app
2021-06-18 16:20:09 +09:00
Cutls
d011c94ea2
Merge branch 'master' into dependabot/npm_and_yarn/app/electron-13.1.2 2021-06-18 16:20:04 +09:00
Cutls
cd59a644a5
Merge pull request #522 from cutls/dependabot/npm_and_yarn/app/normalize-url-4.5.1
Bump normalize-url from 4.5.0 to 4.5.1 in /app
2021-06-18 16:19:39 +09:00
Cutls
31ebb2df3f
Merge pull request #524 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.11.7
Bump electron-builder from 22.11.5 to 22.11.7 in /app
2021-06-18 16:19:30 +09:00
Cutls
9c49a78318
New Crowdin updates (#527)
* New translations index.json (Romanian)

* New translations index.json (Polish)

* New translations index.json (Cornish)

* New translations index.json (Sinhala)

* New translations index.json (Spanish, Argentina)

* New translations index.json (Portuguese, Brazilian)

* New translations index.json (Vietnamese)

* New translations index.json (Chinese Traditional)

* New translations index.json (Chinese Simplified)

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

* New translations index.json (Norwegian)

* New translations index.json (French)

* New translations index.json (Dutch)

* New translations index.json (Italian)

* New translations index.json (Hungarian)

* New translations index.json (Hebrew)

* New translations index.json (Finnish)

* New translations index.json (Greek)

* New translations index.json (German)

* New translations index.json (Danish)

* New translations index.json (Czech)

* New translations index.json (Catalan)

* New translations index.json (Bulgarian)

* New translations index.json (Arabic)

* New translations index.json (Afrikaans)

* New translations index.json (Spanish)

* New translations index.json (English)
2021-06-18 16:19:19 +09:00
Cutls
e3c10550d5
Merge pull request #525 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.0.17
Bump sweetalert2 from 11.0.12 to 11.0.17 in /app
2021-06-18 16:19:08 +09:00
Cutls
75dd9174a8
Merge pull request #526 from cutls/dependabot/npm_and_yarn/app/chokidar-3.5.2
Bump chokidar from 3.5.1 to 3.5.2 in /app
2021-06-18 16:18:58 +09:00
cutls
d62bc57368 add new fi 2021-06-18 16:16:37 +09:00
dependabot[bot]
184a2bf3aa
Bump chokidar from 3.5.1 to 3.5.2 in /app
Bumps [chokidar](https://github.com/paulmillr/chokidar) from 3.5.1 to 3.5.2.
- [Release notes](https://github.com/paulmillr/chokidar/releases)
- [Commits](https://github.com/paulmillr/chokidar/compare/3.5.1...3.5.2)

---
updated-dependencies:
- dependency-name: chokidar
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-15 20:04:49 +00:00
dependabot[bot]
49c4c3f23f
Bump sweetalert2 from 11.0.12 to 11.0.17 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.0.12 to 11.0.17.
- [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/v11.0.12...v11.0.17)

---
updated-dependencies:
- dependency-name: sweetalert2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-14 20:03:35 +00:00
dependabot[bot]
aa377b78e0
Bump electron-builder from 22.11.5 to 22.11.7 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.11.5 to 22.11.7.
- [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.11.5...v22.11.7)

---
updated-dependencies:
- dependency-name: electron-builder
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-11 20:03:24 +00:00
dependabot[bot]
a64813d2d9
Bump normalize-url from 4.5.0 to 4.5.1 in /app
Bumps [normalize-url](https://github.com/sindresorhus/normalize-url) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/sindresorhus/normalize-url/releases)
- [Commits](https://github.com/sindresorhus/normalize-url/commits)

---
updated-dependencies:
- dependency-name: normalize-url
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-10 10:31:59 +00:00
dependabot[bot]
ffcbe71ecb
Bump electron from 13.0.1 to 13.1.2 in /app
Bumps [electron](https://github.com/electron/electron) from 13.0.1 to 13.1.2.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v13.0.1...v13.1.2)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-09 20:02:54 +00:00
dependabot[bot]
f9462ad5ae
Bump vue from 2.6.12 to 2.6.14 in /app
Bumps [vue](https://github.com/vuejs/vue) from 2.6.12 to 2.6.14.
- [Release notes](https://github.com/vuejs/vue/releases)
- [Commits](https://github.com/vuejs/vue/compare/v2.6.12...v2.6.14)

---
updated-dependencies:
- dependency-name: vue
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-07 20:05:18 +00:00
dependabot[bot]
bb73a7eda7
Bump eslint from 7.27.0 to 7.28.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.27.0 to 7.28.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.27.0...v7.28.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-07 20:04:47 +00:00
cutls
36ad187296 with acct lookup 2021-06-02 15:59:36 +09:00
cutls
5621ffbe42 fix and merge 2021-06-02 15:20:31 +09:00
cutls
9758a2a7d8 Merge branch 'master' of https://github.com/cutls/TheDesk 2021-06-02 15:20:09 +09:00
cutls
d6fd519086 fix keyboard layout 2021-06-02 15:19:58 +09:00
dependabot[bot]
b9ff0ec817
Bump dotenv from 9.0.2 to 10.0.0 in /app
Bumps [dotenv](https://github.com/motdotla/dotenv) from 9.0.2 to 10.0.0.
- [Release notes](https://github.com/motdotla/dotenv/releases)
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v9.0.2...v10.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-30 19:29:30 +00:00
Cutls
3601bfc664
Merge pull request #508 from cutls/dependabot/npm_and_yarn/app/sanitize-html-2.4.0
Bump sanitize-html from 2.3.3 to 2.4.0 in /app
2021-05-31 04:27:48 +09:00
Cutls
73a8a117b0
Merge pull request #512 from cutls/dependabot/npm_and_yarn/app/eslint-7.27.0
Bump eslint from 7.26.0 to 7.27.0 in /app
2021-05-31 04:27:30 +09:00
Cutls
4af29e0caa
Merge pull request #513 from cutls/dependabot/npm_and_yarn/app/electron-13.0.1
Bump electron from 12.0.8 to 13.0.1 in /app
2021-05-31 04:27:19 +09:00
Cutls
8519980638
Merge pull request #514 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.0.12
Bump sweetalert2 from 11.0.8 to 11.0.12 in /app
2021-05-31 04:27:09 +09:00
Cutls
c7df190d79
New Crowdin updates (#506)
* 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 (Italian)

* New translations main.json (Hungarian)

* New translations main.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations main.json (Ukrainian)

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

* New translations main.json (Turkish)

* New translations main.json (Swedish)

* New translations main.json (Hebrew)

* 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 (Catalan)

* New translations main.json (Finnish)

* New translations main.json (Greek)

* New translations main.json (German)

* New translations main.json (Czech)

* New translations main.json (Danish)

* New translations main.json (Cornish)

* New translations main.json (Sinhala)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Vietnamese)

* New translations main.json (English)

* New translations index.json (Italian)

* New translations main.json (Italian)
2021-05-31 04:26:46 +09:00
dependabot[bot]
9290c146e3
Bump sweetalert2 from 11.0.8 to 11.0.12 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.0.8 to 11.0.12.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v11.0.8...v11.0.12)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-27 20:04:32 +00:00
dependabot[bot]
7769113b3c
Bump electron from 12.0.8 to 13.0.1 in /app
Bumps [electron](https://github.com/electron/electron) from 12.0.8 to 13.0.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/v12.0.8...v13.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-25 20:03:03 +00:00
dependabot[bot]
dafc36b01d
Bump eslint from 7.26.0 to 7.27.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.26.0 to 7.27.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.26.0...v7.27.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-24 20:06:14 +00:00
dependabot[bot]
55a3571edd
Bump sanitize-html from 2.3.3 to 2.4.0 in /app
Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.3.3 to 2.4.0.
- [Release notes](https://github.com/apostrophecms/sanitize-html/releases)
- [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.3.3...2.4.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-20 20:03:30 +00:00
cutls
bdae21bd12 plist resolutions to take xmldom's security fix 2021-05-20 15:26:42 +09:00
cutls
ac26f2ca6b Merge branch 'master' of https://github.com/cutls/TheDesk 2021-05-20 15:17:02 +09:00
cutls
723ff59a21 improve some styles with rounded-button 2021-05-20 15:16:58 +09:00
Cutls
c3feca504c
Merge pull request #503 from cutls/dependabot/npm_and_yarn/app/electron-12.0.8
Bump electron from 12.0.7 to 12.0.8 in /app
2021-05-20 15:14:56 +09:00
Cutls
a294b1143b
Merge branch 'master' into dependabot/npm_and_yarn/app/electron-12.0.8 2021-05-20 15:14:52 +09:00
Cutls
541826f2fd
Merge pull request #504 from cutls/dependabot/npm_and_yarn/app/sweetalert2-11.0.8
Bump sweetalert2 from 10.16.7 to 11.0.8 in /app
2021-05-20 15:14:08 +09:00
Cutls
aa6c2ad186
Merge pull request #505 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.11.5
Bump electron-builder from 22.11.2 to 22.11.5 in /app
2021-05-20 15:13:59 +09:00
dependabot[bot]
c51dae6d60
Bump electron-builder from 22.11.2 to 22.11.5 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.11.2 to 22.11.5.
- [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.11.2...v22.11.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-19 20:04:58 +00:00
dependabot[bot]
b2a87ae99d
Bump sweetalert2 from 10.16.7 to 11.0.8 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 10.16.7 to 11.0.8.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v10.16.7...v11.0.8)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-19 20:04:17 +00:00
dependabot[bot]
5230c6d672
Bump electron from 12.0.7 to 12.0.8 in /app
Bumps [electron](https://github.com/electron/electron) from 12.0.7 to 12.0.8.
- [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/v12.0.7...v12.0.8)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-18 20:04:44 +00:00
Cutls
29d0e80f24
Merge pull request #497 from cutls/dependabot/npm_and_yarn/app/dotenv-9.0.2
Bump dotenv from 9.0.1 to 9.0.2 in /app
2021-05-12 01:26:44 +09:00
Cutls
4b147593ca
Merge pull request #498 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.11.2
Bump electron-builder from 22.11.1 to 22.11.2 in /app
2021-05-12 01:26:34 +09:00
dependabot[bot]
b1137d175a
Bump electron-builder from 22.11.1 to 22.11.2 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.11.1 to 22.11.2.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v22.11.1...v22.11.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 20:06:15 +00:00
dependabot[bot]
bbc90b6d6f
Bump dotenv from 9.0.1 to 9.0.2 in /app
Bumps [dotenv](https://github.com/motdotla/dotenv) from 9.0.1 to 9.0.2.
- [Release notes](https://github.com/motdotla/dotenv/releases)
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v9.0.1...v9.0.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 20:05:34 +00:00
Cutls
9fe9bcd04e
Merge pull request #495 from cutls/dependabot/npm_and_yarn/app/eslint-7.26.0
Bump eslint from 7.23.0 to 7.26.0 in /app
2021-05-11 03:13:57 +09:00
dependabot[bot]
79ae11aea8
Bump eslint from 7.23.0 to 7.26.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.23.0 to 7.26.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.23.0...v7.26.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 18:12:40 +00:00
Cutls
50582d49f0
New Crowdin updates (#478)
* New translations index.json (German)

* New translations setting.json (Russian)

* New translations setting.json (Turkish)

* New translations setting.json (Swedish)

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

* New translations setting.json (Portuguese)

* New translations setting.json (Polish)

* New translations setting.json (Norwegian)

* New translations setting.json (Dutch)

* New translations setting.json (Cornish)

* New translations setting.json (Sinhala)

* New translations setting.json (Spanish, Argentina)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Ukrainian)

* New translations setting.json (Vietnamese)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations setting.json (Spanish)

* New translations setting.json (Romanian)

* New translations setting.json (French)

* New translations setting.json (Catalan)

* New translations setting.json (Italian)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (Danish)

* New translations setting.json (Czech)

* New translations setting.json (English)

* New translations setting.json (Russian)

* New translations setting.json (Turkish)

* New translations setting.json (Swedish)

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

* New translations setting.json (Portuguese)

* New translations setting.json (Polish)

* New translations setting.json (Norwegian)

* New translations setting.json (Dutch)

* New translations setting.json (Cornish)

* New translations setting.json (Sinhala)

* New translations setting.json (Spanish, Argentina)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Ukrainian)

* New translations setting.json (Vietnamese)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations setting.json (Spanish)

* New translations setting.json (Romanian)

* New translations setting.json (French)

* New translations setting.json (Catalan)

* New translations setting.json (Italian)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (Danish)

* New translations setting.json (Czech)

* New translations setting.json (English)

* New translations index.json (Catalan)

* New translations index.json (Bulgarian)

* New translations index.json (Arabic)

* New translations index.json (Afrikaans)

* New translations index.json (Romanian)

* New translations index.json (French)

* New translations index.json (Spanish)

* New translations index.json (Chinese Simplified)

* 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 (Chinese Traditional)

* New translations index.json (Cornish)

* New translations index.json (Sinhala)

* New translations index.json (Spanish, Argentina)

* New translations index.json (Portuguese, Brazilian)

* New translations index.json (Vietnamese)

* New translations index.json (Russian)

* New translations index.json (Finnish)

* New translations index.json (Greek)

* New translations index.json (German)

* New translations index.json (Danish)

* New translations index.json (Czech)

* New translations index.json (Hebrew)

* New translations index.json (Portuguese)

* New translations index.json (Norwegian)

* New translations index.json (Dutch)

* New translations index.json (Polish)

* New translations index.json (Italian)

* New translations index.json (Hungarian)

* New translations index.json (English)

* New translations main.json (Russian)

* New translations setting.json (Russian)

* New translations main.json (Russian)

* New translations main.json (Russian)

* New translations setting.json (Russian)

* New translations index.json (Spanish, Argentina)

* New translations setting.json (Spanish, Argentina)
2021-05-11 03:11:28 +09:00
Cutls
897fb3082d
Merge pull request #494 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.11.1
Bump electron-builder from 22.10.5 to 22.11.1 in /app
2021-05-11 03:10:55 +09:00
Cutls
947d0b77bd
Merge pull request #496 from cutls/dependabot/npm_and_yarn/app/dotenv-9.0.1
Bump dotenv from 8.2.0 to 9.0.1 in /app
2021-05-11 03:10:45 +09:00
dependabot[bot]
e07e79a918
Bump dotenv from 8.2.0 to 9.0.1 in /app
Bumps [dotenv](https://github.com/motdotla/dotenv) from 8.2.0 to 9.0.1.
- [Release notes](https://github.com/motdotla/dotenv/releases)
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v8.2.0...v9.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 18:05:46 +00:00
dependabot[bot]
cdc3b22752
Bump electron-builder from 22.10.5 to 22.11.1 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.10.5 to 22.11.1.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v22.10.5...v22.11.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 18:04:57 +00:00
Cutls
0988728bb2
Merge pull request #491 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.11.1
Bump electron-builder from 22.10.5 to 22.11.1 in /app
2021-05-11 03:04:12 +09:00
dependabot-preview[bot]
0ad628b259
Bump electron-builder from 22.10.5 to 22.11.1 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.10.5 to 22.11.1.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v22.10.5...v22.11.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-10 18:03:22 +00:00
Cutls
44af72f9e6
Merge pull request #486 from cutls/dependabot/npm_and_yarn/app/eslint-7.25.0
Bump eslint from 7.23.0 to 7.25.0 in /app
2021-05-11 03:02:51 +09:00
Cutls
2d0316035f
Merge pull request #489 from cutls/dependabot/npm_and_yarn/app/sweetalert2-10.16.7
Bump sweetalert2 from 10.15.7 to 10.16.7 in /app
2021-05-11 03:02:36 +09:00
Cutls
735c2e153e
Merge pull request #487 from cutls/dependabot/add-v2-config-file
Upgrade to GitHub-native Dependabot
2021-05-11 03:02:27 +09:00
Cutls
6f9d6cb35f
Merge pull request #473 from cutls/dependabot/npm_and_yarn/app/sanitize-html-2.3.3
Bump sanitize-html from 2.3.2 to 2.3.3 in /app
2021-05-11 03:02:09 +09:00
Cutls
de796db39a
Merge pull request #474 from cutls/dependabot/npm_and_yarn/app/fortawesome/fontawesome-free-5.15.3
Bump @fortawesome/fontawesome-free from 5.15.2 to 5.15.3 in /app
2021-05-11 03:02:01 +09:00
Cutls
88cb706ff5
Merge pull request #492 from cutls/dependabot/npm_and_yarn/app/electron-12.0.7
Bump electron from 12.0.2 to 12.0.7 in /app
2021-05-11 03:01:34 +09:00
Cutls
6bc19354c9
Merge pull request #493 from cutls/dependabot/npm_and_yarn/app/postcss-8.2.14
[Security] Bump postcss from 8.2.3 to 8.2.14 in /app
2021-05-11 03:01:22 +09:00
dependabot-preview[bot]
c70b69d043
[Security] Bump postcss from 8.2.3 to 8.2.14 in /app
Bumps [postcss](https://github.com/postcss/postcss) from 8.2.3 to 8.2.14. **This update includes a security fix.**
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.2.3...8.2.14)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-10 15:35:46 +00:00
dependabot-preview[bot]
f53e0f4550
Bump electron from 12.0.2 to 12.0.7 in /app
Bumps [electron](https://github.com/electron/electron) from 12.0.2 to 12.0.7.
- [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/v12.0.2...v12.0.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-07 20:14:15 +00:00
dependabot-preview[bot]
672de930ce
Bump sweetalert2 from 10.15.7 to 10.16.7 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 10.15.7 to 10.16.7.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v10.15.7...v10.16.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-03 20:15:58 +00:00
dependabot-preview[bot]
2ba4d2303a
Bump eslint from 7.23.0 to 7.25.0 in /app
Bumps [eslint](https://github.com/eslint/eslint) from 7.23.0 to 7.25.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v7.23.0...v7.25.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-27 23:37:00 +00:00
cutls
8acf86d9cb fetch the data with dialog 2021-04-18 19:11:39 +09:00
cutls
5de0ede4e1 font select 2021-04-18 18:47:30 +09:00
dependabot-preview[bot]
7feea86cf7
Bump @fortawesome/fontawesome-free from 5.15.2 to 5.15.3 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.15.2 to 5.15.3.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.15.2...5.15.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-01 20:14:49 +00:00
dependabot-preview[bot]
269405a40f
Bump sanitize-html from 2.3.2 to 2.3.3 in /app
Bumps [sanitize-html](https://github.com/apostrophecms/sanitize-html) from 2.3.2 to 2.3.3.
- [Release notes](https://github.com/apostrophecms/sanitize-html/releases)
- [Changelog](https://github.com/apostrophecms/sanitize-html/blob/main/CHANGELOG.md)
- [Commits](https://github.com/apostrophecms/sanitize-html/compare/2.3.2...2.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-01 20:14:23 +00:00
osapon
7b2254948b Use DOM for shortcode replacement. 2020-01-01 19:21:35 +09:00
204 changed files with 17501 additions and 17676 deletions

37
.github/workflows/build-debug-macos.bup vendored Normal file
View File

@ -0,0 +1,37 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: macOS debug build
on: push
jobs:
build:
runs-on: macos-latest
environment:
name: build
env:
APPLEID: ${{ secrets.APPLEID }}
APPLEIDPASS: ${{ secrets.APPLEIDPASS }}
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
CSC_LINK: ${{ secrets.CSC_LINK}}
strategy:
matrix:
node-version: [14.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- run: cd app && yarn
- run: cd app && yarn build --skipX64 --withArm64
- name: Deploy to S3
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run:
aws s3 sync --delete --region ap-northeast-1 ./build/ s3://cutls-s3-backup/debug

4
.gitignore vendored
View File

@ -26,7 +26,7 @@ app/git
*.code-workspace
releasenote.md
app/yarn-error.log
app/js/platform/aiscript.js
app/js/platform/native.js
app/view/es-ES
app/view/fr-FR
app/view/no-NO
@ -34,7 +34,9 @@ app/view/zh-CN
app/view/ru-RU
app/view/zh-TW
app/view/pt-BR
app/view/si-LK
app/build.js
app/view/make/make.js
app/view/make/makeCli.ts
app/.env
app/view/make/index.generated.html

8
.prettierrc Normal file
View File

@ -0,0 +1,8 @@
{
"tabWidth": 4,
"useTabs": true,
"semi": false,
"singleQuote": true,
"printWidth": 200,
"jsxBracketSameLine": true
}

46
PKGBUILD Normal file
View File

@ -0,0 +1,46 @@
# Maintainer: Zergling_man, from fedora.email
pkgname=thedesk
_pkgname=TheDesk
pkgver=24.2.1
_electronversion=22
pkgrel=2
pkgdesc="Mastodon Client for PC, Zergling_man's pleroma-focused fork."
arch=("x86_64")
url="https://thedesk.top/"
license=('GPL3')
conflicts=("${pkgname%-bin}")
depends=("npm")
makedepends=("npm")
optdeps=('hicolor-icon-theme')
source=("git+http://precious.harpy.faith/Zergling_man/TheDesk.git")
sha256sums=('SKIP')
build()
{
cd ${srcdir}/${_pkgname}/app
npm run build
npm run construct
}
package()
{
cd ${pkgdir}
install -d opt/${_pkgname}/ usr/share/icons/hicolor usr/share/applications/ usr/share/licenses/thedesk/ usr/bin/
cd ${srcdir}/${_pkgname}
mv thedesk ${pkgdir}/usr/bin/
chmod 555 ${pkgdir}/usr/bin/thedesk
mv thedesk.desktop ${pkgdir}/usr/share/applications/
mv LICENSE ${pkgdir}/usr/share/licenses/thedesk/
cd app/img/icons/
sizes=($(ls | grep -Eo '[0-9x]+'))
for size in ${sizes[@]}; do
install -d ${pkgdir}/usr/share/icons/hicolor/$size/apps/
mv icon-$size.png ${pkgdir}/usr/share/icons/hicolor/$size/apps/desk.png
done
cd ..
rm -d icons
cd ${srcdir}
cp -r ${_pkgname} ${pkgdir}/opt/
}

View File

@ -44,9 +44,7 @@ Please write issues to improve TheDesk affinity with Pleroma.
## Contributors
* <img src="https://user-images.githubusercontent.com/17561618/66582029-162df380-ebbc-11e9-8a6f-1832b3a35d89.png" width="20">[toneji](https://minohdon.jp/@toneji) Build for macOS(Now: Travis CI)
* <img src="https://avatars3.githubusercontent.com/u/24523508?s=88&v=4" width="20">[popn_ja](https://popon.pptdn.jp/@popn_ja) Build for Linux(Now: Travis CI)
* <img src="https://user-images.githubusercontent.com/17561618/66582379-a3714800-ebbc-11e9-8402-d81a35a3be9f.png" width="20">[kPherox](https://pl.kpherox.dev/kPherox) Fellow coder
[![](https://opencollective.com/TheDesk/contributors.svg?width=400&button=false)](https://github.com/cutls/TheDesk/graphs/contributors)
## Support

View File

@ -35,9 +35,10 @@ Crowdinから翻訳に参加してみませんか: https://translate.thedesk.
Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。
Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。
## 詳しく
## よみもの
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)
* [TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)
* [TheDeskを作って思う今クライアントを作る意味 | Cutls Code Archives ](https://code.cutls.com/thedesk-log/)
## ライセンス
@ -47,9 +48,7 @@ Issuesに書いてある問題についてはなるべく対処しますので
## 主なコントリビューター
* <img src="https://user-images.githubusercontent.com/17561618/66582029-162df380-ebbc-11e9-8a6f-1832b3a35d89.png" width="20">[とねぢ](https://minohdon.jp/@toneji) macOSビルダー(現在はTravis CI)
* <img src="https://avatars3.githubusercontent.com/u/24523508?s=88&v=4" width="20">[ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja) Linuxビルダー(現在はTravis CI)
* <img src="https://user-images.githubusercontent.com/17561618/66582379-a3714800-ebbc-11e9-8402-d81a35a3be9f.png" width="20">[kPherox](https://pl.kpherox.dev/kPherox)
[![](https://opencollective.com/TheDesk/contributors.svg?width=400&button=false)](https://github.com/cutls/TheDesk/graphs/contributors)
## 支援

View File

@ -1,9 +1,10 @@
<!DOCTYPE html>
<html lang="ja">
<head>
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
<link href="./node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="./node_modules/@cutls/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="./css/font-awesome.css" rel="stylesheet" type="text/css" />
<link href="./css/themes.css" type="text/css" rel="stylesheet" />
<link href="./css/master.css" type="text/css" rel="stylesheet" />
@ -81,13 +82,13 @@
grid-area: data6;
}
</style>
</head>
</head>
<body class="center" style="overflow: hidden;">
<body class="center" style="overflow: hidden;">
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
<script type="text/javascript" src="./node_modules/materialize-css/dist/js/materialize.js"></script>
<img src="./img/desk.svg" style="max-width: 62%;" />
<script type="text/javascript" src="./node_modules/@cutls/materialize-css/dist/js/materialize.js"></script>
<img src="./img/desk.svg" style="max-width: 58%;" />
<h5>TheDesk</h5>
<div class="container">
<div class="area-name1">Display version</div>
@ -104,15 +105,8 @@
<div class="area-data6" id="node"></div>
</div>
<div class="cp">
Copyright &copy; TheDesk 2018<br />
Main developer(author): <a href="https://cutls.com/@Cutls" target="_blank">Cutls P</a><br />
Thanks:<a href="https://minohdon.jp/@toneji" target="_blank">toneji</a>/<a href="https://popon.pptdn.jp/@popn_ja" target="_blank">popn_ja</a>/<a
href="https://pl.kpherox.dev/kPherox"
target="_blank"
>kPherox</a
>
and all users
<img draggable="false" style="width: 0.8rem; top: 1px; margin-left: 1px; position: relative;" alt="❤️" title=":heart:" src="https://twemoji.maxcdn.com/2/72x72/2764.png" />
Copyright &copy; TheDesk 2018<br /> Main developer(author): <a href="https://2m.cutls.com/@Cutls" target="_blank">Cutls P</a><br />
<a href="https://github.com/cutls/TheDesk/graphs/contributors" style="text-align: center; user-select: none;"><img src="https://opencollective.com/TheDesk/contributors.svg?width=700&button=false" style="width: 100%"></a>
<br /><a href="https://thedesk.top" target="_blank">Web site</a>
</div>
<button onclick="window.close()" class="btn waves-effect indigo" style="width: calc(100% - 10px);"><i class="material-icons left">close</i>Close</button>
@ -130,10 +124,12 @@
}
$('#hash').html('<a href="https://github.com/cutls/TheDesk/commits/' + about[3] + '" target="_blank">' + about[3].slice(0, 7) + '</a>')
$(document).on('click', 'a', (e) => {
e.preventDefault()
var url = $(e.target).attr('href')
postMessage(['openUrl', url], '*')
postMessage(['openUrlMainProcess', url], '*')
return false
})
</script>
</body>
</body>
</html>

1
app/build.d.ts vendored
View File

@ -10,5 +10,6 @@ declare function _exports(options?: {
skipLinux?: boolean;
skipMacOS?: boolean;
unnotarize?: boolean;
skipUniversal?: boolean;
}): void;
export = _exports;

View File

@ -11,6 +11,7 @@ const construct = require('./view/make/make.js')
const { platform, arch } = process
const Platform = builder.Platform
const Arch = builder.Arch
require('dotenv').config()
const artifactName = 'TheDesk-setup-${arch}.${ext}'
const config = {
productName: 'TheDesk',
@ -41,6 +42,9 @@ const config = {
target: ['zip', 'appImage', 'snap', 'deb'],
category: 'Network',
},
deb: {
depends: ['gconf2', 'gconf-service', 'libnotify4', 'libappindicator1', 'libxtst6', 'libnss3']
},
mac: {
hardenedRuntime: true,
gatekeeperAssess: false,
@ -70,8 +74,8 @@ async function cmd(options) {
if (isTrue(options, 'onlyStore') || isTrue(options, 'withStore')) {
console.log('start building for application stores')
construct(ver, basefile, false, true)
if ((platform == 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) {
if ((isTrue(options, 'withIa32') && arch == 'x64') || arch == 'ia32') {
if ((platform === 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) {
if ((isTrue(options, 'withIa32') && arch === 'x64') || arch === 'ia32') {
config.nsis.artifactName = artifactName.replace('${arch}', 'ia32')
await build(Platform.WINDOWS, Arch.ia32, config)
fs.renameSync(
@ -83,7 +87,7 @@ async function cmd(options) {
'../build/TheDesk-setup-ia32-store.exe'
)
}
if (arch == 'x64') {
if (arch === 'x64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'x64')
await build(Platform.WINDOWS, Arch.x64, config)
fs.renameSync(
@ -96,14 +100,14 @@ async function cmd(options) {
)
}
}
if ((platform == 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) {
if (arch == 'ia32') {
if ((platform === 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) {
if (arch === 'ia32') {
await build(Platform.LINUX, Arch.ia32, config)
}
if ((isTrue(options, 'withIa32') && arch == 'x64')) {
if ((isTrue(options, 'withIa32') && arch === 'x64')) {
console.log('snapcraft does not curretly support builing i386 on amd64')
}
if (arch == 'x64') {
if (arch === 'x64') {
await build(Platform.LINUX, Arch.x64, config)
if (!isTrue(options, 'onlyStore')) {
fs.renameSync(
@ -117,8 +121,8 @@ async function cmd(options) {
if (!isTrue(options, 'onlyStore')) {
console.log('start building for normal usage')
construct(ver, basefile, false, false)
if ((platform == 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) {
if ((isTrue(options, 'withIa32') && arch == 'x64') || arch == 'ia32') {
if ((platform === 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) {
if ((isTrue(options, 'withIa32') && arch === 'x64') || arch === 'ia32') {
config.nsis.artifactName = artifactName.replace('${arch}', 'ia32')
await build(Platform.WINDOWS, Arch.ia32, config)
fs.renameSync(
@ -126,7 +130,7 @@ async function cmd(options) {
'../build/TheDesk-ia32.exe'
)
}
if (arch == 'x64') {
if (arch === 'x64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'x64')
await build(Platform.WINDOWS, Arch.x64, config)
fs.renameSync(
@ -138,7 +142,7 @@ async function cmd(options) {
'../build/TheDesk-setup.exe'
)
}
if ((isTrue(options, 'withArm64') && arch == 'x64') || arch == 'arm64') {
if ((isTrue(options, 'withArm64') && arch === 'x64') || arch === 'arm64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'arm64')
await build(Platform.WINDOWS, Arch.arm64, config)
fs.renameSync(
@ -147,14 +151,14 @@ async function cmd(options) {
)
}
}
if ((platform == 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) {
if (arch == 'ia32') {
if ((platform === 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) {
if (arch === 'ia32') {
await build(Platform.LINUX, Arch.ia32, config)
}
if (isTrue(options, 'withIa32') && arch == 'x64') {
if (isTrue(options, 'withIa32') && arch === 'x64') {
console.log('snapcraft does not curretly support builing i386 on amd64')
}
if (arch == 'x64') {
if (arch === 'x64') {
await build(Platform.LINUX, Arch.x64, config)
fs.renameSync(
`../build/thedesk_${version}_amd64.snap`,
@ -168,9 +172,27 @@ async function cmd(options) {
}
}
}
if (platform == 'darwin' && !isTrue(options, 'skipMacOS')) {
if(isTrue(options, 'unnotarize')) delete config.afterSign
if (platform === 'darwin' && !isTrue(options, 'skipMacOS')) {
if (isTrue(options, 'unnotarize')) delete config.afterSign
if (isTrue(options, 'unnotarize')) delete config.mac.entitlements
if (isTrue(options, 'unnotarize')) delete config.mac.entitlementsInherit
if (isTrue(options, 'unnotarize')) process.env.CSC_IDENTITY_AUTO_DISCOVERY = false
if (isTrue(options, 'unnotarize')) delete config.afterSign
if (!isTrue(options, 'skipUniversal')) await build(Platform.MAC, Arch.universal, config)
if (isTrue(options, 'withArm64')) {
await build(Platform.MAC, Arch.arm64, config)
fs.renameSync(
`../build/TheDesk-${version}.dmg`,
`../build/TheDesk-${version}-arm64.dmg`
)
}
if (isTrue(options, 'withX64')) {
await build(Platform.MAC, Arch.x64, config)
fs.renameSync(
`../build/TheDesk-${version}.dmg`,
`../build/TheDesk-${version}-x64.dmg`
)
}
}
}
}
@ -210,6 +232,10 @@ TheDesk Builder command tool
[only macOS]
--unnotarize: Without notarize
Build as a "universal" package.
--skipUniversal: skip build for universal enviroment
--withX64: build x64-only build
--withArm64: build arm64-only build
`
}
@ -223,4 +249,4 @@ TheDesk Builder command tool
* @param {boolean} [options.withArm64] - [Windows only(beta)] arm64 build on x64 system(if your machine is arm64, it will be built if this arg is not passed, and not build store build for arm64)
* @return {void}
*/
module.exports = cmd
module.exports = cmd

View File

@ -2,7 +2,13 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
</dict>
</plist>

View File

@ -1,10 +1,6 @@
require('dotenv').config()
const { notarize } = require('electron-notarize')
// Notarizeをしない場合、下のuseNotarizeをtrueからfalseに変更してください。
const { notarize } = require('@electron/notarize')
const useNotarize = true
exports.default = async function notarizing(context) {
const { electronPlatformName, appOutDir } = context
if (electronPlatformName !== 'darwin' || !useNotarize) return

23
app/build/notarize.old.js Normal file
View File

@ -0,0 +1,23 @@
require('dotenv').config()
const { notarize } = require('electron-notarize')
// Notarizeをしない場合、下のuseNotarizeをtrueからfalseに変更してください。
const useNotarize = true
exports.default = async function notarizing(context) {
const { electronPlatformName, appOutDir } = context
if (electronPlatformName !== 'darwin' || !useNotarize) return
const appName = context.packager.appInfo.productFilename
console.log(`start notarize: ${appOutDir}/${appName}.app`)
try {
return await notarize({
appBundleId: 'top.thedesk',
appPath: `${appOutDir}/${appName}.app`,
appleId: process.env.APPLEID,
appleIdPassword: process.env.APPLEIDPASS,
})
} catch (e) {
throw console.log(e)
}
}

View File

@ -28,7 +28,9 @@ html {
text-transform: none;
height: 2.76rem;
line-height: 2.76rem;
border-radius: 0.5rem;
}
.markdown {
display: none;
}
@ -84,11 +86,12 @@ option {
#imagemodal .modal-footer {
overflow-x: hidden;
overflow-y: hidden;
height: 56px;
}
#imagewrap {
width: 100%;
height: 100%;
height: calc(100% - 4px);
}
#imagewrap img.rotate-90 {
transform: rotate(-90deg);
@ -234,6 +237,12 @@ blockquote:before,
right: 0;
top: 0;
}
.menu-icon {
font-size: 1.4rem !important;
top: 0.3rem;
line-height: 1rem !important;
position: relative;
}
#start {
display: none;
position: fixed;
@ -329,8 +338,26 @@ blockquote:before,
.collapsible-header:focus {
background-color: var(--thirdColor) !important;
}
.modal-footer {
.modal .modal-footer {
background-color: var(--modalfooter) !important;
border-radius: 0;
padding: 0;
}
.modal {
border-radius: 1.5rem;
}
.progress .determinate,
.progress .indeterminate {
background-color: var(--active);
}
.nomargin {
margin: 0;
}
#imginfo {
float: left;
padding-top: 0.23rem;
line-height: normal;
padding-left: 1rem;
}
.font {
font-size: 1.5rem;
@ -342,7 +369,8 @@ blockquote:before,
.release-do {
border: solid 2px;
border-color: var(--text);
padding: 5px;
padding: 1.5rem;
border-radius: 0.5rem;
}
#pickers {
display: flex;
@ -392,7 +420,8 @@ input[type='color']::-webkit-color-swatch {
color: var(--text);
}
#left-menu a:hover {
background-color: var(--beforehover);
background-color: var(--emphasized);
filter: brightness(80%);
}
#left-menu span {
margin-left: 0.4rem;
@ -401,7 +430,9 @@ input[type='color']::-webkit-color-swatch {
background-color: var(--emphasized);
}
#left-menu a.active span {
text-decoration: underline;
text-decoration: none;
border-bottom: 1px solid;
padding-bottom: 0.5px;
}
#right-menu {
width: 100%;
@ -436,7 +467,8 @@ input[type='color']::-webkit-color-swatch {
overflow: hidden;
}
#tltype .type:hover {
background-color: var(--beforehover);
background-color: var(--emphasized);
filter: brightness(80%);
}
#tltype .active {
background-color: var(--emphasized);
@ -720,3 +752,12 @@ button {
position: relative;
top: -4px;
}
#fonts {
overflow-y: scroll;
width: 22rem;
height: 40rem;
position: absolute;
background-color: var(--bg);
z-index: 2;
padding: 5px;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -297,7 +297,7 @@ iframe,
.area-display_name {
user-select: text;
height: 1.5em;
height: 1.5rem;
margin: 0.15rem;
margin-left: 0.4rem;
overflow: hidden;
@ -391,6 +391,8 @@ iframe,
overflow: hidden;
max-width: calc(100% - 150px);
display: inline-block;
position: relative;
top: 0.2rem;
}
.cusr {
user-select: text;
@ -416,6 +418,12 @@ iframe,
margin-top: 0.46rem;
margin-left: 0.46rem;
}
.landing {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
}
.quote-inline {
display: none;
@ -449,6 +457,12 @@ iframe,
.btn-flat {
color: var(--text);
}
.sublink {
font-size: 1.4rem !important;
position: relative;
top: 0.4rem;
cursor: pointer;
}
.area-side i {
margin-left: 0.75rem;
}
@ -459,6 +473,9 @@ iframe,
font-size: 1.2rem;
margin-right: 0.15rem;
}
.action li i {
margin-right: 0.5rem;
}
.action .fa-quote-right {
margin-top: 0.15rem;
}
@ -763,6 +780,11 @@ p:not(:last-child) {
.dropdown-content li {
padding-top: 0.4rem;
}
.dropdown-content li > a, .dropdown-content li > span {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.fa-2x > .emoji-img {
width: 2.3rem !important;
height: 2.3rem !important;

File diff suppressed because it is too large Load Diff

View File

@ -1,54 +1,66 @@
/*アイコンをクリックした時とかにでてくるユーザーデータ*/
#his-data {
background-repeat: no-repeat;
background-image: url('../img/loading.svg');
overflow-y: hidden;
}
#his-data .btn .material-icons {
float: left;
}
#his-data-content {
display: flex;
justify-content: center;
}
#his-name {
font-size: 1.5rem;
}
#his-prof {
width: 7.7rem;
margin-right: 0.4rem;
}
.his-float {
overflow-y: scroll;
padding: 0.4rem;
}
#his-float-data {
height: 100%;
overflow-y: hidden;
}
#his-leftside {
width: 28.4rem;
max-width: 30vw;
}
#his-float-timeline {
max-width: 47.5rem;
min-width: calc(100% - 29.4rem);
width: calc(100% - 28.4rem);
height: 100%;
overflow-y: hidden;
}
#his-basic-prof {
display: flex;
min-height: 10rem;
}
#his-field {
vertical-align: baseline;
text-align: center;
padding: 0;
}
#his-field tr {
height: 1.5rem;
}
.his-field-title {
height: 1.5rem;
padding: 0;
@ -58,22 +70,27 @@
margin-bottom: 1px;
width: 30%;
}
.his-field-content {
height: 1.5rem;
padding: 0;
padding-left: 0.4rem;
}
.his-var-content a span.ellipsis:after {
content: '...';
}
.his-var-content a:not(.mention) span:last-of-type {
display: none;
}
#his-data a .rep_ct,
#his-data a .rt_ct,
#his-data a .fav_ct {
display: inline !important;
}
#his-data-show {
margin: 1.5rem;
margin-left: 3.8rem;
@ -83,39 +100,51 @@
margin-bottom: 0;
padding: 0.4rem;
}
#his-data-wrap {
display: flex;
}
.his-var-content {
overflow-y: scroll;
overflow-x: hidden;
height: calc(100% - 3.4rem);
padding-bottom: 60px;
}
#my-data-nav .btn {
width: 10.6rem;
}
#my-data-nav .active-back {
display: none;
}
#his-name .emojione,
#his-name .emoji-img {
width: 1.538rem;
}
#his-plus-action .btn {
padding-right: 0.4rem;
padding-left: 0.4rem;
}
.tabs {
display: flex;
}
.tabs .tab a {
padding: 0.6rem 0.9rem;
}
#his-des {
max-height: 17.7rem;
overflow-y: scroll;
user-select: text;
cursor: text;
}
#his-sign-action {
border: 1px solid;
border-radius: 0.4rem;
@ -125,20 +154,31 @@
padding-right: 0.75rem;
flex-wrap: wrap;
}
#his-sign-action .btn {
flex-basis: calc(50% - 10.6px);
#his-sign-action .shrinker {
margin-right: 0.5rem;
flex-basis: calc(50% - 1rem);
}
#his-sign-action .shrinker.btn {
width: 100%;
}
#his-sign-action .dropdown-trigger {
flex-basis: 100%;
}
#his-des .mention {
color: #039be5;
cursor: pointer;
}
#his-table {
max-height: 11.538rem;
max-height: 9.2rem;
overflow-y: scroll;
user-select: text;
}
#his-float-blocked {
display: flex;
justify-content: center;
@ -146,15 +186,19 @@
font-size: 2rem;
height: 100%;
}
#hisdropdown {
background-color: var(--bg);
}
#hisdropdown li a {
color: white;
color: var(--text);
}
#hisdropdown li:hover {
background-color: var(--active);
}
#his-data-title-wrap {
width: 100%;
text-align: center;
@ -163,8 +207,13 @@
justify-content: center;
align-items: center;
}
#his-data-title .material-icons {
position: relative;
top: 7px;
top: 5px;
margin-right: 3px;
}
#his-data-title a {
color: white;
}

View File

@ -1,7 +1,12 @@
<!doctype html>
<html>
<head>
<meta http-equiv=”refresh” content=”0;URL=./view/ja'” />
<script>location.href = './view/ja';</script>
<script>
if (/^ja\b/.test(navigator.language)) {
location.href = './view/ja'
} else {
location.href = './view/en'
}
</script>
</head>
</html>

View File

@ -94,7 +94,7 @@ $(function($) {
if (e.keyCode === 88) {
if (!$('#post-box').hasClass('appear')) {
show()
$('textarea').focus()
document.getElementById('textarea').focus()
} else {
hide()
}
@ -105,7 +105,8 @@ $(function($) {
if (!$('#post-box').hasClass('appear')) {
show()
}
$('textarea').focus()
document.getElementById('textarea').focus()
return false
}
//Ctrl+E:全ての通知未読を既読にする

View File

@ -1,32 +1,18 @@
//バージョンチェッカー
function verck(ver, jp) {
async function verck(ver, jp) {
if (store) return false
console.log('%c Welcome😊 ' + ver, 'color: red;font-size:200%;')
$('body').addClass(localStorage.getItem('platform'))
var date = new Date()
var showVer = false
//Spotify
if (localStorage.getItem('spotify')) {
localStorage.removeItem('spotify')
localStorage.removeItem('spotify-refresh')
var spDc = 'Spotify NowPlaying sysytem was changed, please re-login to Spotify'
if(lang.language == 'ja') {
spDc = 'Spotify NowPlayingの機能が変更されたため、もう一度ログインしてください'
}
Swal.fire({
type: 'info',
title: spDc,
})
}
//Spotify(e)
const date = new Date()
let showVer = false
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() {
$(document).ready(function () {
if (localStorage.getItem('winstore') && !pwa) {
$('#releasenote').modal('open')
}
verp = ver.replace('(', '')
let verp = ver.replace('(', '')
verp = verp.replace('.', '-')
verp = verp.replace('.', '-')
verp = verp.replace('[', '-')
@ -44,22 +30,32 @@ function verck(ver, jp) {
localStorage.setItem('ver', ver)
if (!showVer) {
console.log(showVer)
let nextmonth
if (!localStorage.getItem('showSupportMe')) {
if (date.getMonth() == 11) {
const yrs = date.getFullYear() + 1
nextmonth = yrs * 100 + 1
} else {
const yrs = date.getFullYear()
nextmonth = yrs * 100 + date.getMonth() + 2
}
localStorage.setItem('showSupportMe', nextmonth)
} else {
if (
date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe') ||
!localStorage.getItem('showSupportMe')
date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe')
) {
if (date.getMonth() == 11) {
var yrs = date.getFullYear() + 1
var nextmonth = yrs * 100 + 1
const yrs = date.getFullYear() + 1
nextmonth = yrs * 100 + 1
} else {
var yrs = date.getFullYear()
var nextmonth = yrs * 100 + date.getMonth() + 2
const yrs = date.getFullYear()
nextmonth = yrs * 100 + date.getMonth() + 2
}
localStorage.setItem('showSupportMe', nextmonth)
if (lang.language != 'ja') {
$('#support-btm-ja').addClass('hide')
$('#support-btm-en').removeClass('hide')
}
localStorage.setItem('showSupportMe', nextmonth)
$('#support-btm').removeClass('hide')
$('#support-btm').animate(
{
@ -71,60 +67,37 @@ function verck(ver, jp) {
)
}
}
var platform = localStorage.getItem('platform')
}
const platform = localStorage.getItem('platform')
console.log('Your platform:' + platform)
//if (!localStorage.getItem('winstore') && !pwa) {
// $('#start').css('display', 'flex')
//}
if (
localStorage.getItem('winstore') == 'brewcask' ||
const winstore = localStorage.getItem('winstore') == 'brewcask' ||
localStorage.getItem('winstore') == 'snapcraft' ||
localStorage.getItem('winstore') == 'winstore'
) {
var winstore = true
} else {
var winstore = false
}
var l = 5
const l = 5
// 生成する文字列に含める文字セット
var c = 'abcdefghijklmnopqrstuvwxyz0123456789'
var cl = c.length
var r = ''
const c = 'abcdefghijklmnopqrstuvwxyz0123456789'
const cl = c.length
let r = ''
for (var i = 0; i < l; i++) {
r += c[Math.floor(Math.random() * cl)]
}
var start = 'https://thedesk.top/ver.json'
fetch(start, {
method: 'GET'
})
.then(function(response) {
const start1 = 'https://thedesk.top/ver.json'
const response = await fetch(start1, { method: 'GET' })
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(mess) {
const mess = await response.json()
console.table(mess)
if (mess) {
//askjp_jp_ua: 2019年10月24日、mstdn.jpによるユーザーエージェントアクセス制限
if (jp && mess.jp_ua && !localStorage.getItem('askjp_jp_ua')) {
localStorage.setItem('askjp_jp_ua', true)
$('#askjp_jp_ua').removeClass('hide')
}
var platform = localStorage.getItem('platform')
if (platform == 'darwin') {
var newest = mess.desk_mac
} else {
var newest = mess.desk
}
const platform = localStorage.getItem('platform')
const newest = platform == 'darwin' ? mess.desk_mac : mess.desk
if (newest == ver) {
todo(lang.lang_version_usever.replace('{{ver}}', mess.desk))
//betaかWinstoreならアプデチェックしない
@ -143,7 +116,6 @@ function verck(ver, jp) {
}
}
}
})
if (!localStorage.getItem('last-notice-id')) {
localStorage.setItem('last-notice-id', 0)
}
@ -152,20 +124,20 @@ function verck(ver, jp) {
method: 'GET',
cors: true
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(mess) {
.then(function (mess) {
if (mess.length < 1) {
return false
} else {
@ -199,7 +171,7 @@ function verck(ver, jp) {
if (multi) {
showVer = false
var accts = JSON.parse(multi)
Object.keys(accts).forEach(function(key) {
Object.keys(accts).forEach(function (key) {
var acct = accts[key]
if (acct.domain == obj.domain) {
showVer = true
@ -226,11 +198,11 @@ function verck(ver, jp) {
var infostreaming = false
function infowebsocket() {
infows = new WebSocket('wss://thedesk.top/ws/')
infows.onopen = function(mess) {
infows.onopen = function (mess) {
console.log([tlid, ':Connect Streaming Info:', mess])
infostreaming = true
}
infows.onmessage = function(mess) {
infows.onmessage = function (mess) {
console.log([tlid, ':Receive Streaming:', JSON.parse(mess.data)])
var obj = JSON.parse(mess.data)
if (obj.type != 'counter') {
@ -258,7 +230,7 @@ function infowebsocket() {
if (multi) {
showVer = false
var accts = JSON.parse(multi)
Object.keys(accts).forEach(function(key) {
Object.keys(accts).forEach(function (key) {
var acct = accts[key]
if (acct.domain == obj.domain) {
showVer = true
@ -283,18 +255,18 @@ function infowebsocket() {
$('#persons').text(obj.text)
}
}
infows.onerror = function(error) {
infows.onerror = function (error) {
infostreaming = false
console.error('Error closing:info')
console.error(error)
return false
}
infows.onclose = function() {
infows.onclose = function () {
infostreaming = false
console.error('Closing:info')
}
}
setInterval(function() {
setInterval(function () {
if (!infostreaming) {
console.log('try to connect to base-streaming')
infowebsocket()
@ -322,7 +294,7 @@ function closeSupport() {
},
{
duration: 300,
complete: function() {
complete: function () {
$('#support-btm').addClass('hide')
}
}

View File

@ -611,8 +611,9 @@ function multiSelector(parseC) {
$('#add-acct-sel').append(
'<option value="noauth">' +
lang.lang_login_noauth +
`</option>${webview ? `<option value="webview">TweetDeck</option>` : ''}`
`</option><option value="webview">TweetDeck</option>`
)
if (!webview) $('#webview-add').append(`<br /><span style="font-size: 0.7rem">${lang.lang_setting_webview_warn}</span>`)
$('#dir-acct-sel').append('<option value="noauth">' + lang.lang_login_noauth + '</option>')
}
$('select').formSelect()

View File

@ -367,9 +367,13 @@ function support() {
}
})
}
function backToInit() {
$('#auth').hide()
$('#add').show()
}
//URL指定してポップアップ
function login(url) {
async function login(url) {
var multi = localStorage.getItem('multi')
var obj = JSON.parse(multi)
if ($('#misskey:checked').val() == 'on') {
@ -378,16 +382,18 @@ function login(url) {
return
}
$('#compt').hide()
if ($('#linux:checked').val() == 'on') {
var red = 'urn:ietf:wg:oauth:2.0:oob'
const start = `https://${url}/api/v1/apps`
$('#loginBtn').attr('disabled', true)
const nextSetup = await versionChecker(url)
$('#loginBtn').attr('disabled', false)
let red = 'thedesk://manager'
if (!nextSetup) {
red = 'urn:ietf:wg:oauth:2.0:oob'
if (~url.indexOf('pixelfed')) {
red = 'https://thedesk.top/hello.html'
}
} else {
var red = 'thedesk://manager'
}
localStorage.setItem('redirect', red)
var start = 'https://' + url + '/api/v1/apps'
var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
@ -420,103 +426,86 @@ function login(url) {
localStorage.setItem('client_id', json['client_id'])
localStorage.setItem('client_secret', json['client_secret'])
$('#auth').show()
versionChecker(url)
$('#add').hide()
postMessage(['openUrl', auth], '*')
}
}
}
function versionChecker(url) {
var start = 'https://' + url + '/api/v1/instance'
fetch(start, {
async function versionChecker(url) {
const start = `https://${url}/api/v1/instance`
try {
const response = await 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) {
var version = json.version
const json = await response.json()
const version = json.version
if (version) {
var reg = version.match(/^([0-9])\.[0-9]\.[0-9]/u)
if (reg) {
versionCompat(reg[1], reg, json.title, reg[0])
}
}
})
}
function versionCompat(prefix, ver, title, real) {
$('#compt-instance').text(title)
$('#compt-ver').text(real)
if (~real.indexOf('compatible')) {
const reg = version.match(/^([0-9])\.[0-9]\.[0-9]/u)
if (reg) versionCompat(json.title, version)
if (version.match('compatible')) {
$('#compt-warn').show()
return false
} else {
$('#compt-warn').hide()
if (pwa) return false
const codeSetupCheck = await Swal.fire({
title: lang.lang_manager_codesetup_title,
text: lang.lang_manager_codesetup,
icon: 'info',
showCancelButton: true
})
if (!codeSetupCheck.isConfirmed) return false
return true
}
}
} catch {
return false
}
}
async function versionCompat(title, version) {
const [sem, a, b, c] = version.match(/^([0-9]+)\.([0-9]+)\.([0-9]+)/)
$('#compt-instance').text(title)
$('#compt-ver').text(version)
$('#compt-list').html('')
var start = '../../source/version.json'
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
const response = await fetch(start)
const json = await response.json()
const keys = Object.keys(json)
let i = 0
let onceAdd = false
for (const targetVersion of keys) {
const data = json[targetVersion]
const [tsem, ta, tb, tc] = targetVersion.match(/^([0-9]+)\.([0-9]+)\.([0-9]+)/)
let add = false
if (ta === a) {
if (tb === b) {
if (tc > c) {
add = true
}
})
.then(function (response) {
if (!response.ok) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
} else if (tb > b) {
add = true
}
return response.json()
})
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
var complete = false
var ct = 0
var jl = 0
var jl2 = 0
Object.keys(json).forEach(function (key) {
var data = json[key]
if (data) {
jl++
if (key != real && !complete) {
for (var i = 0; i < data.length; i++) {
var e = ''
if (i == 0) {
e = '(' + key + ')'
} else if (ta > a) {
add = true
}
$('#compt-list').append('<li>' + data[i] + e + '</li>')
ct++
e = ''
if (!add) break
if (add) onceAdd = true
for (const note of data) {
$('#compt-list').append(`<li>${note}(${targetVersion})</li>`)
}
jl2++
} else if (!complete) {
complete = true
i++
}
}
})
if (lang.language == 'ja' && ct > 0) {
if (jl2 != jl && prefix != '1') {
if (lang.language == 'ja' && onceAdd) {
$('#compt').show()
}
}
})
}
//これが後のMisskeyである。
function misskeyLogin(url) {
@ -1156,9 +1145,8 @@ function asReadEnd() {
// Or with jQuery
$(document).ready(function(){
$(document).ready(function () {
$('input.autocomplete').autocomplete({
data: {},
});
});
});

View File

@ -29,7 +29,7 @@ $(document).on('click', 'a', e => {
acct_id = 0
}
$a.parent().addClass('loadp')
$a.parent().text('Loading...')
detEx(url, acct_id)
}
} else if (tags) {
@ -145,7 +145,7 @@ onmessage = function (e) {
} else if (e.data[0] == 'udg') {
udg(e.data[1][0], e.data[1][1])
} else if (e.data[0] == 'media') {
media(e.data[1][0], e.data[1][1], e.data[1][2], e.data[1][3])
media(e.data[1][0], e.data[1][1], e.data[1][2], e.data[1][3], e.data[1][4])
} else if (e.data[0] == 'post') {
post('pass')
} else if (e.data[0] == 'toastSaved') {

View File

@ -1,21 +1,26 @@
window.onload = function () {
window.onload = function() {
console.log('loaded')
initPostbox()
connection()
initPlugin(plugins)
if (localStorage.getItem('control-center-np')) $('#ccnp').removeClass('hide')
}
$.strip_tags = function (str, allowed) {
const size = localStorage.getItem('size')
if (size) $('html,body').css('font-size', `${size}px`)
$.strip_tags = function(str, allowed) {
if (!str) {
return ''
}
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('')
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi
return str.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''
})
}
function escapeHTML(str) {
if (!str) {
return ''
@ -36,6 +41,7 @@ function nl2br(str) {
str = str.replace(/(\n|\r)/g, '<br />')
return str
}
function br2nl(str) {
if (!str) {
return ''
@ -43,6 +49,7 @@ function br2nl(str) {
str = str.replace(/<br \/>/g, '\r\n')
return str
}
function formattime(date) {
var str = date.getFullYear() + '-'
if (date.getMonth() + 1 < 10) {
@ -68,6 +75,7 @@ function formattime(date) {
}
return escapeHTML(str)
}
function formattimeutc(date) {
var str = date.getUTCFullYear() + '-'
if (date.getUTCMonth() + 1 < 10) {
@ -94,30 +102,13 @@ function formattimeutc(date) {
return escapeHTML(str)
}
postMessage(['sendSinmpleIpc', 'custom-css-request'], '*')
function makeCID() {
let chars = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("")
for (let i = 0, len = chars.length; i < len; i++) {
switch (chars[i]) {
case "x":
chars[i] = Math.floor(Math.random() * 16).toString(16)
break
case "y":
chars[i] = (Math.floor(Math.random() * 4) + 8).toString(16)
break
}
}
return chars.join("")
}
function randomStr(l) {
// 生成する文字列に含める文字セット
var c = 'abcdefghijklmnopqrstuvwxyz0123456789'
var cl = c.length
var r = ''
for (var i = 0; i < l; i++) {
r += c[Math.floor(Math.random() * cl)]
}
return r
incrementid=0
function makeCID()
{
return incrementid++
}
function rgbToHex(color) {
// HEXに変換したものを代入する変数
var hex = ''
@ -155,15 +146,15 @@ function rgbToHex(color) {
console.error(color + ':第1引数はRGB形式で入力')
}
/*マルチバイト用切り出し*/
$.isSurrogatePear = function (upper, lower) {
$.isSurrogatePear = function(upper, lower) {
return 0xd800 <= upper && upper <= 0xdbff && 0xdc00 <= lower && lower <= 0xdfff
}
$.mb_strlen = function (str) {
$.mb_strlen = function(str) {
var splitter = new GraphemeSplitter()
var arr = splitter.splitGraphemes(str)
return arr.length
}
$.mb_substr = function (str, begin, end) {
$.mb_substr = function(str, begin, end) {
//配列にする
var splitter = new GraphemeSplitter()
var arr = splitter.splitGraphemes(str)
@ -174,8 +165,8 @@ $.mb_substr = function (str, begin, end) {
}
}
return newarr.join('')
}
//ソートするやつ
}
//ソートするやつ
function object_array_sort(data, key, order, fn) {
var num_a = -1
var num_b = 1
@ -183,7 +174,7 @@ function object_array_sort(data, key, order, fn) {
num_a = 1
num_b = -1
}
data = data.sort(function (a, b) {
data = data.sort(function(a, b) {
var x = a[key]
var y = b[key]
if (x > y) return num_a
@ -200,6 +191,7 @@ function object_array_sort(data, key, order, fn) {
}
fn(data)
}
function setLog(txt1, txt2, txt3) {
//url,statuscode,responsetext
var text = new Date().toUTCString()
@ -207,6 +199,7 @@ function setLog(txt1, txt2, txt3) {
console.error(text)
postMessage(['log', text], '*')
}
function escapeCsv(str) {
if (!str) {
return str
@ -218,6 +211,7 @@ function escapeCsv(str) {
}
return result
}
function evalAttr(json, attr, lenCk) {
if (json[attr]) {
if (lenCk) {
@ -233,6 +227,7 @@ function evalAttr(json, attr, lenCk) {
return false
}
}
function statusModel(now) {
if (!now) {
var now = new Date().toString()
@ -290,6 +285,7 @@ function statusModel(now) {
poll: null
}
}
function webviewFinder() {
const webview = document.querySelector('webview')
webview.addEventListener('did-navigate', (e) => {
@ -301,12 +297,13 @@ function webviewFinder() {
}
})
}
function initWebviewEvent() {
if (document.querySelector('webview')) { webviewFinder() } else {
const timerWV = setInterval(function () {
document.querySelector('webview')
? (webviewFinder(), clearInterval(timerWV))
: console.log('まだロード中')
const timerWV = setInterval(function() {
document.querySelector('webview') ?
(webviewFinder(), clearInterval(timerWV)) :
console.log('まだロード中')
}, 500)
}
}

View File

@ -48,13 +48,13 @@ function initPlugin() {
})
})
asCommon['TheDesk:confirm'] = asValue.FN_NATIVE(async (z) => {
const alert = await Swal.fire({
const alertSwal = await Swal.fire({
title: z[0].value,
text: z[1].value,
icon: z[2] ? z[2].value : 'info',
showCancelButton: true
})
return asUtil.jsToVal(!!(alert.value && alert.value === true))
return asUtil.jsToVal(!!(alertSwal.value && alertSwal.value === true))
})
asCommon['TheDesk:css'] = asValue.FN_NATIVE((z) => {
$(escapeHTML(z[0].value)).css(escapeHTML(z[1].value), escapeHTML(z[2].value))
@ -227,13 +227,13 @@ async function testExec(exe) {
})
})
asCommon['TheDesk:confirm'] = asValue.FN_NATIVE(async (z) => {
const alert = await Swal.fire({
const alertSwal = await Swal.fire({
title: z[0].value,
text: z[1].value,
icon: z[2] ? z[2].value : 'info',
showCancelButton: true
})
return asUtil.jsToVal(!!(alert.value && alert.value === true))
return asUtil.jsToVal(!!(alertSwal.value && alertSwal.value === true))
})
asCommon['TheDesk:css'] = asValue.FN_NATIVE((z) => {
$(escapeHTML(z[0].value)).css(escapeHTML(z[1].value), escapeHTML(z[2].value))

View File

@ -7,12 +7,17 @@ window.addEventListener('DOMContentLoaded', () => {
ipc.send('acsCheck', '')
})
onmessage = function(e) {
onmessage = async function (e) {
if (e.data[0] == 'openUrl') {
urls = e.data[1].match(/https?:\/\/(.+)/)
if (urls) {
shell.openExternal(e.data[1])
}
} else if (e.data[0] == 'openUrlMainProcess') {
urls = e.data[1].match(/https?:\/\/(.+)/)
if (urls) {
ipc.send('openUrl', e.data[1])
}
} else if (e.data[0] == 'sendSinmpleIpc') {
ipc.send(e.data[1], '')
} else if (e.data[0] == 'dialogStore') {
@ -79,6 +84,8 @@ onmessage = function(e) {
ipc.send('sendMarkersComplete', null)
} else if (e.data[0] == 'copy') {
ipc.send('copy', e.data[1])
} else if (e.data[0] == 'copyBinary') {
ipc.send('copyBinary', e.data[1])
} else if (e.data[0] == 'log') {
ipc.send('log', e.data[1])
} else if (e.data[0] == 'twitterLogin') {
@ -89,17 +96,16 @@ onmessage = function(e) {
}
//version.js
ipc.send('getPlatform', '')
ipc.on('platform', function(event, args) {
ipc.on('platform', function (event, args) {
localStorage.setItem('platform', args[0])
localStorage.setItem('bit', args[1])
localStorage.setItem('about', JSON.stringify([args[2], args[3], args[4], args[5]]))
})
ipc.on('reload', function(event, arg) {
ipc.on('reload', function (event, arg) {
location.reload()
})
//Native Notf
ipc.on('shownotf', function(event, args) {
ipc.on('shownotf', function (event, args) {
if (args['type'] == 'toot') {
postMessage(['details', [id, acct_id]], '*')
} else if (args['type'] == 'userdata') {
@ -108,7 +114,7 @@ ipc.on('shownotf', function(event, args) {
})
//first.js
ipc.on('custom-css-response', function(event, arg) {
ipc.on('custom-css-response', function (event, arg) {
if (arg == '') {
return false
}
@ -119,7 +125,7 @@ ipc.on('custom-css-response', function(event, arg) {
styleNode.append(content)
document.getElementsByTagName('head')[0].append(styleNode)
})
ipc.on('theme-css-response', function(event, arg) {
ipc.on('theme-css-response', function (event, arg) {
if (arg == '') {
return false
}
@ -131,7 +137,7 @@ ipc.on('theme-css-response', function(event, arg) {
document.getElementsByTagName('head')[0].append(styleNode)
})
//img.js
ipc.on('bmp-img-comp', function(event, b64) {
ipc.on('bmp-img-comp', function (event, b64) {
if (b64[2]) {
var stamped = true
} else {
@ -139,108 +145,108 @@ ipc.on('bmp-img-comp', function(event, b64) {
}
postMessage(['media', [b64[0], 'image/png', b64[1], stamped]], '*')
})
ipc.on('resizeJudgement', function(event, b64) {
ipc.on('resizeJudgement', function (event, b64) {
var resize = localStorage.getItem('uploadCrop') * 1
if (resize > 0) {
var element = new Image()
var width
element.onload = function() {
element.onload = function () {
var width = element.naturalWidth
var height = element.naturalHeight
if (width > resize || height > resize) {
ipc.send('resize-image', [b64[0], resize])
} else {
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
postMessage(['media', [b64[0], 'image/png', b64[1], null, b64[2]]], '*')
}
}
element.src = 'data:image/png;base64,' + b64[0]
} else {
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
postMessage(['media', [b64[0], 'image/png', b64[1], null, b64[2]]], '*')
}
})
//ui,img.js
ipc.on('general-dl-prog', function(event, arg) {
ipc.on('general-dl-prog', function (event, arg) {
console.log('Progress: ' + arg)
})
ipc.on('general-dl-message', function(event, arg) {
ipc.on('general-dl-message', function (event, arg) {
var argC = arg.replace(/\\/g, '\\\\')
console.log('saved')
postMessage(['toastSaved', [arg, argC]], '*')
})
//setting.js
ipc.on('langres', function(event, arg) {
ipc.on('langres', function (event, arg) {
location.href = '../' + arg + '/setting.html'
})
ipc.on('exportSettingsFile', function(event, arg) {
ipc.on('exportSettingsFile', function (event, arg) {
postMessage(['exportSettingsCore', arg], '*')
})
ipc.on('exportAllComplete', function(event, arg) {
ipc.on('exportAllComplete', function (event, arg) {
postMessage(['alert', 'Complete'], '*')
})
ipc.on('config', function(event, arg) {
ipc.on('config', function (event, arg) {
postMessage(['importSettingsCore', arg], '*')
})
ipc.on('savefolder', function(event, arg) {
ipc.on('savefolder', function (event, arg) {
localStorage.setItem('savefolder', arg)
})
ipc.on('font-list', function(event, arg) {
ipc.on('font-list', function (event, arg) {
postMessage(['fontList', arg], '*')
})
ipc.on('customSoundRender', function(event, args) {
ipc.on('customSoundRender', function (event, args) {
postMessage(['customSoundSave', [args[0], args[1]]], '*')
})
ipc.on('theme-json-list-response', function(event, args) {
ipc.on('theme-json-list-response', function (event, args) {
postMessage(['ctLoadCore', args], '*')
})
ipc.on('theme-json-delete-complete', function(event, args) {
ipc.on('theme-json-delete-complete', function (event, args) {
postMessage(['ctLoad', ''], '*')
})
ipc.on('theme-json-response', function(event, args) {
ipc.on('theme-json-response', function (event, args) {
postMessage(['customConnect', args], '*')
})
ipc.on('theme-json-create-complete', function(event, args) {
if(args != '') alert(args)
ipc.on('theme-json-create-complete', function (event, args) {
if (args != '') alert(args)
postMessage(['clearCustomImport', ''], '*')
postMessage(['ctLoad', ''], '*')
})
//spotify.js
ipc.on('itunes-np', function(event, arg) {
ipc.on('itunes-np', function (event, arg) {
postMessage(['npCore', arg], '*')
})
//tips.js
ipc.on('memory', function(event, arg) {
ipc.on('memory', function (event, arg) {
var use = arg[0]
var cpu = arg[1]
var total = arg[2]
postMessage(['renderMem', [use, cpu, total, arg[3], arg[4]]], '*')
})
//log
ipc.on('logData', function(event, args) {
ipc.on('logData', function (event, args) {
postMessage(['logData', args], '*')
})
//update.html
ipc.on('prog', function(event, arg) {
ipc.on('prog', function (event, arg) {
postMessage(['updateProg', arg], '*')
})
ipc.on('mess', function(event, arg) {
ipc.on('mess', function (event, arg) {
postMessage(['updateMess', arg], '*')
})
//misc
ipc.on('asRead', function(event, arg) {
ipc.on('asRead', function (event, arg) {
postMessage(['asRead', ''], '*')
})
ipc.on('asReadEnd', function(event, arg) {
ipc.on('asReadEnd', function (event, arg) {
postMessage(['asReadEnd', ''], '*')
})
ipc.on('accessibility', function(event, arg) {
ipc.on('accessibility', function (event, arg) {
postMessage(['accessibility', 'true'], '*')
})
ipc.on('twitterLoginComplete', function(event, arg) {
ipc.on('twitterLoginComplete', function (event, arg) {
postMessage(['twitterLoginComplete', ''], '*')
})
ipc.on('alert', function(event, arg) {
ipc.on('alert', function (event, arg) {
postMessage(['alert', arg], '*')
})
ipc.on('customUrl', function(event, args) {
ipc.on('customUrl', function (event, args) {
postMessage(['customUrl', args], '*')
})

View File

@ -19,7 +19,7 @@ function emojiToggle(reaction) {
if (width) {
width = width.replace('px', '') * 1 + 300
} else {
width = 600
width = reaction ? 300 : 600
}
$('#post-box').css('width', width + 'px')
$('#suggest').html('')

View File

@ -57,6 +57,7 @@ function fileselect() {
//ファイル読み込み
function handleFileUpload(files, obj, no) {
console.log('nignog\n'+files+'\n'+obj+'\n'+no)
var fr = new FileReader()
fr.onload = function(evt) {
var b64 = evt.target.result
@ -72,21 +73,24 @@ function handleFileUpload(files, obj, no) {
return false
} else {
$('#b64-box').val(b64)
var ret = media(b64, files['type'], no)
var ret = media(b64, files['type'], no, null, files['name'])
}
}
element.src = b64
return false
}
$('#b64-box').val(b64)
var ret = media(b64, files['type'], no)
var ret = media(b64, files['type'], no, null, files['name'])
}
fr.readAsDataURL(files)
$('#mec').append(files['name'] + '/')
}
//ファイルアップロード
async function media(b64, type, no, stamped) {
async function media(b64, type, no, stamped, filename) {
if (filename) filename=filename.split('/').slice(-1)
else filename='image.png' // probably from clipboard
console.log('nognig\n'+type+'\n'+no+'\n'+stamped)
var acct_id = $('#post-acct-sel').val()
var domain = localStorage.getItem('domain_' + acct_id)
var user = localStorage.getItem('user_' + acct_id)
@ -112,7 +116,7 @@ async function media(b64, type, no, stamped) {
todo('Image Upload...')
var media = toBlob(b64, type)
var fd = new FormData()
fd.append('file', media)
fd.append('file', media, filename)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var httpreq = new XMLHttpRequest()
if (localStorage.getItem('mode_' + domain) == 'misskey') {
@ -265,7 +269,7 @@ element.addEventListener('paste', function(e) {
var i = mediav.split(',').length
}
// DataTransferItem の type に mime tipes があるのでそれを使う
media(base64, imageType, i)
media(base64, imageType, i, null, 'image.png')
}
fr.readAsDataURL(imageFile)

View File

@ -82,7 +82,13 @@ function post(mode, postvis, dry) {
$('.toot-btn-group').prop('disabled', true)
todo('Posting')
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/statuses'
let start = 'https://' + domain + '/api/v1/statuses'
let method = 'POST'
const editTarget = $('#tootmodal').attr('data-edit')
if (editTarget) {
start = start + `/${editTarget}`
method = 'PUT'
}
var reply = $('#reply').val()
if (str.indexOf(localStorage.getItem('stable')) == -1) {
str + ' #' + localStorage.getItem('stable')
@ -174,7 +180,7 @@ function post(mode, postvis, dry) {
return toot
}
var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true)
httpreq.open(method, start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.setRequestHeader('Idempotency-Key', ideKey)
@ -375,5 +381,6 @@ function clear() {
width = 300
}
$('#post-box').css('width', width)
$('#tootmodal').attr('data-edit', null)
mdCheck()
}

View File

@ -110,6 +110,7 @@ function rt(id, acct_id, remote, vis) {
}
}
}
function boostWith(vis) {
var id = $('#tootmodal').attr('data-id')
var acct_id = $('#tootmodal').attr('data-acct')
@ -167,7 +168,6 @@ async function follow(acct_id, resolve) {
}
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()
}
@ -182,7 +182,8 @@ async function follow(acct_id, resolve) {
var id = $('#his-data').attr('user-id')
if (resolve == 'selector') {
var fullacct = $('#his-acct').attr('fullname')
var id = await acctResolve(acct_id, fullacct)
var data = await acctResolve(acct_id, fullacct)
var { id } = data
console.log(id)
}
var domain = localStorage.getItem('domain_' + acct_id)
@ -223,28 +224,47 @@ async function follow(acct_id, resolve) {
}
async function acctResolve(acct_id, user) {
console.log('Get user data of ' + user)
var domain = localStorage.getItem('domain_' + acct_id)
const domain = localStorage.getItem('domain_' + acct_id)
if (localStorage.getItem('mode_' + domain) == 'misskey') {
return false
}
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + user
let promise = await fetch(start, {
const at = localStorage.getItem('acct_' + acct_id + '_at')
const options = {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
Authorization: 'Bearer ' + at,
},
}
})
var idJson = await promise.json()
try {
const start = `https://${domain}/api/v1/accounts/lookup?acct=${user}`
const promise = fetch(start, options)
const idJson = await promise.json()
if (idJson) {
return idJson
} else {
return await acctResolveLegacy(domain, user, options)
}
} catch {
return await acctResolveLegacy(domain, user, options)
}
}
async function acctResolveLegacy(domain, user, options) {
console.log(`Get user data of ${user} with legacy method`)
try {
const start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + user
const promise = fetch(start, options)
const idJson = await promise.json()
if (idJson.accounts[0]) {
var id = idJson.accounts[0].id
return idJson.accounts[0]
} else {
M.toast({ html: lang.lang_fatalerroroccured, displayLength: 2000 })
}
return id
} catch {
console.log('Error occured on searching and fetching with resolve')
}
}
//ブロック
function block(acct_id) {
if ($('#his-data').hasClass('blocking')) {
@ -260,8 +280,8 @@ function block(acct_id) {
type: 'warning',
showCancelButton: true,
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then(result => {
cancelButtonText: lang.lang_no,
}).then((result) => {
if (result.value) {
if (!acct_id) {
var acct_id = $('#his-data').attr('use-acct')
@ -311,8 +331,8 @@ function muteDo(acct_id) {
type: 'warning',
showCancelButton: true,
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then(result => {
cancelButtonText: lang.lang_no,
}).then((result) => {
if (result.value) {
if (!acct_id) {
var acct_id = $('#his-data').attr('use-acct')
@ -320,13 +340,23 @@ function muteDo(acct_id) {
var id = $('#his-data').attr('user-id')
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
const days = parseInt($('#days_mute').val(), 10)
const hours = parseInt($('#hours_mute').val(), 10)
const mins = parseInt($('#mins_mute').val(), 10)
const notf = $('#notf_mute:checked').val() === '1'
let duration = days * 24 * 60 * 60 + hours * 60 + mins
if (localStorage.getItem('mode_' + domain) == 'misskey') {
var start = 'https://' + domain + '/api/mute/' + flagm
var ent = { i: at, userId: id }
var rq = JSON.stringify(ent)
} else {
var start = 'https://' + domain + '/api/v1/accounts/' + id + '/' + flag
var rq = ''
const q = {
notifications: notf
}
if (duration > 0) q.duration = duration * 60
if (days < 0 || hours < 0 || mins < 0) return Swal.fire('Invalid number')
var rq = JSON.stringify(q)
}
var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true)
@ -351,6 +381,15 @@ function muteDo(acct_id) {
}
})
}
function muteMenu() {
$('#muteDuration').toggleClass('hide')
!$('#muteDuration').hasClass('hide') ? $('#his-des').css('max-height', '112px') : $('#his-des').css('max-height', '196px')
}
function muteTime(day, hour, min) {
$('#days_mute').val(day)
$('#hours_mute').val(hour)
$('#mins_mute').val(min)
}
//投稿削除
function del(id, acct_id) {
@ -390,8 +429,8 @@ function redraft(id, acct_id) {
type: 'warning',
showCancelButton: true,
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then(result => {
cancelButtonText: lang.lang_no,
}).then((result) => {
if (result.value) {
show()
var domain = localStorage.getItem('domain_' + acct_id)
@ -420,30 +459,50 @@ function redraft(id, acct_id) {
setLog(start, this.status, this.response)
}
var json = httpreq.response
draftToPost(json, acct_id, id)
draftToPost(json, acct_id, null)
}
}
}
})
}
// edit
function editToot(id, acct_id) {
show()
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/statuses/' + id + '/source'
var httpreq = new XMLHttpRequest()
httpreq.open('GET', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if (this.status !== 200) {
setLog(start, this.status, this.response)
}
var json = httpreq.response
draftToPost(json, acct_id, id)
}
}
}
function draftToPost(json, acct_id, id) {
$('#post-acct-sel').prop('disabled', true)
$('#post-acct-sel').val(acct_id)
$('select').formSelect()
if (id) $('#tootmodal').attr('data-edit', id)
mdCheck()
mediack = null
if(json.media_attachments) mediack = json.media_attachments[0]
if (json.media_attachments) mediack = json.media_attachments[0]
//メディアがあれば
var media_ids = []
if (mediack) {
for (var i = 0; i <= 4; i++) {
if (json.media_attachments[i]) {
media_ids.push(json.media_attachments[i].id)
$('#preview').append(
'<img src="' +
json.media_attachments[i].preview_url +
'" style="width:50px; max-height:100px;">'
)
$('#preview').append('<img src="' + json.media_attachments[i].preview_url + '" style="width:50px; max-height:100px;">')
} else {
break
}
@ -645,8 +704,8 @@ function staEx(mode) {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
Authorization: 'Bearer ' + at,
},
})
.then(function (response) {
if (!response.ok) {
@ -677,6 +736,7 @@ function staEx(mode) {
})
return
}
function toggleAction(elm) {
console.log(elm)
const instance = M.Dropdown.init(elm)

View File

@ -6,7 +6,7 @@ function additional(acct_id, tlid) {
$('#timeline-container .mention').addClass('parsed')
$('#timeline-container .hashtag, #timeline-container [rel=tag]').each(function(i, elem) {
$('#timeline-container .hashtatwemg, #timeline-container [rel=tag]').each(function(i, elem) {
var tags = $(this)
.attr('href')
.match(/https?:\/\/([-a-zA-Z0-9@.]+)\/tags?\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/)
@ -233,10 +233,10 @@ function cardHtml(json, acct_id, id) {
if (json.html || json.provider_name == 'Twitter') {
if(isHad) {
var prved = `<img class="emoji" draggable="false" alt="✅"
src="https://twemoji.maxcdn.com/v/12.1.3/72x72/2705.png">`
src="https://energised.botegirl.parts/v/12.1.3/72x72/2705.png">`
var title = lang.lang_cards_trusted
}else{
var prved = '<img class="emoji" draggable="false" alt="⚠️" src="https://twemoji.maxcdn.com/v/12.1.4/72x72/26a0.png">'
var prved = '<img class="emoji" draggable="false" alt="⚠️" src="https://energised.botegirl.parts/v/12.1.4/72x72/26a0.png">'
var title = lang.lang_cards_untrusted
}
analyze =`<a onclick="cardHtmlShow('${acct_id}','${id}')" class="add-show pointer" title="${title}">
@ -335,7 +335,17 @@ function cardCheck(tlid) {
}
}
function mov(id, tlid, type, rand, target) {
function mov(id, tlid, type, rand, target)
{
mouseover=localStorage.getItem('mouseover')
switch (mouseover)
{
case 'yes': if (type=='mv') $(target).removeClass('hide-actions'); break;
case 'click': if (type=='cl') $(target).toggleClass('hide-actions'); break;
case 'no': break;
}
}
/*function mov(id, tlid, type, rand, target) {
const dropdownTrigger = `dropdown_${rand}`
let elm = document.querySelector(`#timeline_${tlid} #${dropdownTrigger}`)
if(tlid == 'notf') {
@ -383,7 +393,7 @@ function mov(id, tlid, type, rand, target) {
//$(tlide + " [toot-id=" + id + "] .area-actions").toggleClass("hide")
//$(tlide + " [toot-id=" + id + "] .area-side").toggleClass("hide")
}
}
}*/
function resetmv(type) {
var mouseover = localStorage.getItem('mouseover')

View File

@ -1,12 +1,12 @@
//トゥートの詳細
function details(id, acct_id, tlid, mode) {
async function details(id, acct_id, tlid, mode) {
if (mode == 'dm') {
$('.dm-hide').hide()
} else {
$('.dm-hide').show()
}
const context = localStorage.getItem('moreContext')
if(context != 'yes') {
if (context != 'yes') {
$('.contextTool').hide()
} else {
$('.contextTool').show()
@ -39,25 +39,18 @@ function details(id, acct_id, tlid, mode) {
}
}
}
fetch(start, i)
.then(function(response) {
try {
const response = await fetch(start, i)
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
const json = await response.json()
console.log(['Toot data:', json])
if (!$('#timeline_' + tlid + ' #pub_' + id).length) {
var html = parse([json], '', acct_id)
var mute = getFilterTypeByAcct(acct_id, 'thread')
var html = parse([json], '', acct_id, '', '', mute)
$('#toot-this').html(html)
jQuery('time.timeago').timeago()
}
@ -112,6 +105,18 @@ function details(id, acct_id, tlid, mode) {
afterFTLToot(id, acct_id, dom)
faved(id, acct_id)
rted(id, acct_id)
if (json.edited_at) {
$('.edited-hide').show()
try {
const history = await (await fetch(`https://${domain}/api/v1/statuses/${id}/history`, i)).json()
const temp = parse(history, 'noauth', acct_id)
console.log(temp)
$('#toot-edit').html(temp)
} catch(e) { console.error(e) }
} else {
$('#toot-edit').html('')
$('.edited-hide').hide()
}
if ($('#toot-this div').hasClass('cvo')) {
$('#toot-this').removeClass('cvo')
} else {
@ -122,7 +127,11 @@ function details(id, acct_id, tlid, mode) {
if (!$('#activator').hasClass('active')) {
$('#det-col').collapsible('open', 4)
}
})
} catch (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
}
}
//返信タイムライン
@ -145,20 +154,20 @@ function replyTL(id, acct_id) {
return false
}
fetch(start, i)
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
var mute = getFilterTypeByAcct(acct_id, 'thread')
if (localStorage.getItem('mode_' + domain) == 'misskey') {
var templete = misskeyParse([json], '', acct_id, '', '', mute)
@ -201,20 +210,20 @@ function getContext(id, acct_id) {
}
}
fetch(start, i)
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (localStorage.getItem('mode_' + domain) == 'misskey') {
json.reverse()
var templete = misskeyParse(json, '', acct_id, '', '', [])
@ -269,20 +278,20 @@ function beforeToot(id, acct_id, domain) {
untilID: id
})
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
var templete = misskeyParse(json, 'noauth', acct_id)
$('#toot-before').html(templete)
jQuery('time.timeago').timeago()
@ -295,20 +304,20 @@ function beforeToot(id, acct_id, domain) {
'content-type': 'application/json'
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
var templete = parse(json, 'noauth', acct_id)
if (templete != '') {
$('#toot-before .no-data').hide()
@ -335,20 +344,20 @@ function userToot(id, acct_id, user) {
userId: user
})
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
var templete = misskeyParse(json, 'noauth', acct_id)
$('#user-before').html(templete)
jQuery('time.timeago').timeago()
@ -362,20 +371,20 @@ function userToot(id, acct_id, user) {
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
var templete = parse(json, '', acct_id)
if (templete != '') {
$('#user-before .no-data').hide()
@ -396,20 +405,20 @@ function afterToot(id, acct_id, domain) {
'content-type': 'application/json'
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
var templete = parse(json, 'noauth', acct_id)
if (templete != '') {
$('#ltl-after .no-data').hide()
@ -430,20 +439,20 @@ function afterUserToot(id, acct_id, user) {
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
var templete = parse(json, '', acct_id)
if (templete != '') {
$('#user-after .no-data').hide()
@ -463,20 +472,20 @@ function afterFTLToot(id, acct_id, domain) {
'content-type': 'application/json'
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
var templete = parse(json, 'noauth', acct_id)
if (templete != '') {
$('#ftl-after .no-data').hide()
@ -501,20 +510,20 @@ function faved(id, acct_id) {
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
var templete = userparse(json, '', acct_id)
if (templete != '') {
$('#toot-fav .no-data').hide()
@ -539,20 +548,20 @@ function rted(id, acct_id) {
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
var templete = userparse(json, '', acct_id)
$('#toot-rt').html(templete)
jQuery('time.timeago').timeago()
@ -591,44 +600,38 @@ function staCopy(id) {
}
//翻訳
function trans(tar, to, elem) {
var html = elem.parents('.cvo').find('.toot').html()
if (html.match(/^<p>(.+)<\/p>$/)) {
html = html.match(/^<p>(.+)<\/p>$/)[1]
var id = elem.parents('.cvo').attr('toot-id')
//alert(id)
$('#toot-this .additional').text('Loading...(Powered by Mastodon API)')
var domain = localStorage.getItem('domain_' + acct_id)
if (localStorage.getItem('mode_' + domain) == 'misskey') {
return false
}
html = html.replace(/<br\s?\/?>/g, '\n')
html = html.replace(/<p>/g, '\n')
html = html.replace(/<\/p>/g, '\n')
html = $.strip_tags(html)
if (~tar.indexOf('zh')) {
tar = 'zh'
}
$('#toot-this .additional').text('Loading...(Powered by Google Translate)')
var exec =
'https://script.google.com/macros/s/AKfycbxhwW5tjjop9Irg-y1zr_WsXlCKEzwWG6KuoOt_vVRDfEbRv0c/exec?format=json&text=' +
encodeURIComponent(html) +
'&source=' +
tar +
'&target=' +
to
console.log('Try to translate from ' + tar + ' to ' + to + ' at ' + exec)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var exec = `https://${domain}/api/v1/statuses/${id}/translate`
fetch(exec, {
method: 'GET'
method: 'POST',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(text) {
elem.parents('.cvo').find('.toot').append('<span class="gray translate">' + text.text + '</span>')
.then(function (text) {
console.log(text)
elem.parents('.cvo').find('.toot').append('<span class="gray translate">' + text.content + '</span>')
})
}
//ブラウザで開く
@ -637,34 +640,22 @@ function brws() {
postMessage(['openUrl', url], '*')
}
//外部からトゥート開く
function detEx(url, acct_id) {
async function detEx(url, acct_id) {
if (acct_id == 'main') {
acct_id = localStorage.getItem('main')
}
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + encodeURIComponent(url)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
})
.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) {
Swal.fire({
title: 'Loading...',
html: lang.lang_details_fetch,
showConfirmButton: false,
showCloseButton: true,
onBeforeOpen: () => {
Swal.showLoading()
},
onClose: () => { },
}).then((result) => { })
const json = await detExCore(url, acct_id)
Swal.close()
if (!json.statuses) {
postMessage(['openUrl', url], '*')
} else {
@ -673,6 +664,24 @@ function detEx(url, acct_id) {
$('.loadp').removeClass('loadp')
details(id, acct_id, 0)
}
})
return
}
async function detExCore(url, acct_id) {
const domain = localStorage.getItem('domain_' + acct_id)
const start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + encodeURIComponent(url)
const at = localStorage.getItem('acct_' + acct_id + '_at')
let promise = await fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
})
const json = await promise.json()
if (json) {
return json
} else {
return false
}
}

View File

@ -1,58 +1,71 @@
//ディレクトリ
//ディレクトリトグル
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('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()
if (acct == "noauth") {
$("#dirNoAuth").removeClass("hide")
var acct = $('#dir-acct-sel').val()
if (acct == 'noauth') {
$('#dirNoAuth').removeClass('hide')
} else {
$("#dirNoAuth").addClass("hide")
directory()
$('#dirNoAuth').addClass('hide')
directory('check')
}
}
function directory(isMore) {
var order = $("[name=sort]:checked").val()
function dirChange(mode) {
if (mode === 'directory') $('#directoryConfig').removeClass('hide')
if (mode === 'suggest') $('#directoryConfig').addClass('hide')
directory(mode)
}
function directory(modeRaw, isMore) {
const mode = modeRaw === 'check' ? $('[name=dirsug]:checked').val() : modeRaw
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()
if (acct_id == "noauth") {
var domain = $("#dirNoAuth-url").val()
var at = ""
var acct_id = $('#dir-acct-sel').val()
if (acct_id == 'noauth') {
var domain = $('#dirNoAuth-url').val()
var at = ''
} else {
var domain = localStorage.getItem("domain_" + acct_id)
var at = localStorage.getItem("acct_" + acct_id + "_at")
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
$('#dir-contents').append(`<div class="progress transparent"><div class="indeterminate"></div></div>`)
} else {
var addOffset = 0
$("#dir-contents").html("")
$('#dir-contents').html(`<div class="progress transparent"><div class="indeterminate"></div></div>`)
}
var start = "https://" + domain + "/api/v1/directory?order=" + order + "&local=" + local_only + "&offset=" + addOffset
let start = `https://${domain}/api/v1/directory?order=${order}&local=${local_only}&offset=${addOffset}`
if (mode === 'suggest') start = `https://${domain}/api/v2/suggestions`
console.log(start)
fetch(start, {
method: "GET",
method: 'GET',
headers: {
"content-type": "application/json",
Authorization: "Bearer " + at
}
'content-type': 'application/json',
Authorization: 'Bearer ' + at,
},
})
.then(function(response) {
$('#dir-contents .progress').remove()
if (!response.ok) {
$('#dir-contents').html(`v2 follow suggestion is supported by Mastodon 3.4.0 or above.`)
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
@ -60,17 +73,24 @@ function directory(isMore) {
return response.json()
})
.catch(function(error) {
setLog(start, "JSON", 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')
let obj = []
if (mode === 'suggest') {
$('#moreDir').addClass('disabled')
for (const suggest of json) obj.push(suggest.account)
} else {
$("#moreDir").addClass("disabled")
obj = json
}
var html = userparse(obj, null, acct_id, 'dir', null)
$('#dir-contents').append(html)
jQuery('time.timeago').timeago()
} else {
$('#moreDir').addClass('disabled')
}
})
}

View File

@ -42,6 +42,7 @@ function remoteOnly(tlid, type) {
}
columnReload(tlid, type)
}
function remoteOnlyCk(tlid) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
@ -125,6 +126,7 @@ function catchToggle(tlid) {
parseColumn(tlid)
}
}
function catchCheck(tlid) {
var catchck = localStorage.getItem('catch_' + tlid)
if (catchck) {
@ -135,6 +137,7 @@ function catchCheck(tlid) {
$('#sta-del-' + tlid).css('color', 'red')
}
}
function delreset(tlid) {
$('[tlid=' + tlid + '] .by_delcatch').hide()
$('[tlid=' + tlid + '] .by_delcatch').remove()
@ -146,6 +149,7 @@ function filterMenu() {
$('.menu-content').addClass('hide')
$('#filter-box').removeClass('hide')
}
function filter() {
$('#filtered-words').html('')
$('#filter-edit-id').val('')
@ -160,23 +164,23 @@ function filter() {
Authorization: 'Bearer ' + at,
},
})
.then(function (response) {
.then(function(response) {
if (!response.ok) {
response.text().then(function (text) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
.then(function(json) {
if (json) {
var filters = ''
Object.keys(json).forEach(function (key) {
Object.keys(json).forEach(function(key) {
var filterword = json[key]
var context = filterword.context.join(',')
filters =
@ -199,11 +203,13 @@ function filter() {
}
})
}
function filterTime(day, hour, min) {
$('#days_filter').val(day)
$('#hours_filter').val(hour)
$('#mins_filter').val(min)
}
function makeNewFilter() {
var acct_id = $('#filter-acct-sel').val()
var phr = $('#filter-add-word').val()
@ -256,7 +262,7 @@ function makeNewFilter() {
expires_in: time,
})
)
httpreq.onreadystatechange = function () {
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@ -280,6 +286,7 @@ function makeNewFilter() {
}
}
}
function filterEdit(id, acct_id) {
$('#filter-add-word').val('')
$('#home_filter').prop('checked', false)
@ -303,26 +310,26 @@ function filterEdit(id, acct_id) {
Authorization: 'Bearer ' + at,
},
})
.then(function (response) {
.then(function(response) {
if (!response.ok) {
response.text().then(function (text) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
.then(function(json) {
if (json) {
var now = new Date()
now = now.getTime()
var now = Math.floor(now / 1000)
$('#filter-add-word').val(json.phrase)
Object.keys(json.context).forEach(function (key) {
Object.keys(json.context).forEach(function(key) {
var context = json.context[key]
$('[value=' + context + ']').prop('checked', true)
})
@ -342,6 +349,7 @@ function filterEdit(id, acct_id) {
}
})
}
function filterDel(id, acct_id) {
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
@ -352,7 +360,7 @@ function filterDel(id, acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function () {
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@ -363,6 +371,7 @@ function filterDel(id, acct_id) {
}
}
}
function getFilter(acct_id) {
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
@ -375,26 +384,27 @@ function getFilter(acct_id) {
Authorization: 'Bearer ' + at,
},
})
.then(function (response) {
.then(function(response) {
if (!response.ok) {
response.text().then(function (text) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
.then(function(json) {
localStorage.setItem('filter_' + acct_id, JSON.stringify(json))
})
} else {
localStorage.setItem('filter_' + acct_id, JSON.stringify({}))
}
}
function getFilterType(json, type) {
if (!json) {
return []
@ -407,7 +417,7 @@ function getFilterType(json, type) {
type = 'notifi'
}
var mutedfilters = []
Object.keys(json).forEach(function (key) {
Object.keys(json).forEach(function(key) {
var filterword = json[key]
var phrases = filterword.phrase
var arr = filterword.context
@ -421,6 +431,7 @@ function getFilterType(json, type) {
})
return mutedfilters
}
function getFilterTypeByAcct(acct_id, type) {
if (localStorage.getItem('filter_' + acct_id) != 'undefined') {
var mute = getFilterType(JSON.parse(localStorage.getItem('filter_' + acct_id)), type)
@ -429,6 +440,7 @@ function getFilterTypeByAcct(acct_id, type) {
}
return mute
}
function filterUpdate(acct_id) {
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
@ -440,20 +452,20 @@ function filterUpdate(acct_id) {
Authorization: 'Bearer ' + at,
},
})
.then(function (response) {
.then(function(response) {
if (!response.ok) {
response.text().then(function (text) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
.then(function(json) {
localStorage.setItem('filter_' + acct_id, JSON.stringify(json))
filterUpdateInternal(json, 'home')
filterUpdateInternal(json, 'local')
@ -461,6 +473,7 @@ function filterUpdate(acct_id) {
filterUpdateInternal(json, 'pub')
})
}
function filterUpdateInternal(json, type) {
var home = getFilterType(json, type)
var wordmute = localStorage.getItem('word_mute')
@ -469,11 +482,11 @@ function filterUpdateInternal(json, type) {
home = home.concat(wordmute)
}
if (home) {
$('[data-acct=' + acct_id + '] [data-type=' + type + '] .cvo').each(function (i, elem) {
$('[data-acct=' + acct_id + '] [data-type=' + type + '] .cvo').each(function(i, elem) {
var id = $(elem).attr('toot-id')
$('[toot-id=' + id + ']').removeClass('hide')
var text = $(elem).find('.toot').html()
Object.keys(home).forEach(function (key8) {
Object.keys(home).forEach(function(key8) {
var word = home[key8]
var regExp = new RegExp(word.replace(/[.*+?^=!:${}()|[\]\/\\]/g, '\\$&'), 'g')
if ($.strip_tags(text).match(regExp)) {
@ -523,11 +536,11 @@ function exclude(key) {
} else {
excludetxt = '?exclude_types[]=poll'
}
} else {
}
} else {}
localStorage.setItem('exclude-' + key, excludetxt)
parseColumn(key)
}
function excludeCk(key, target) {
var exc = localStorage.getItem('exclude-' + key)
if (!exc) {
@ -539,6 +552,7 @@ function excludeCk(key, target) {
return ''
}
}
function checkNotfFilter(tlid) {
var excludetxt = localStorage.getItem('exclude-' + tlid)
if (!excludetxt || excludetxt != '') {
@ -547,10 +561,12 @@ function checkNotfFilter(tlid) {
return false
}
}
function resetNotfFilter(tlid) {
localStorage.setItem('exclude-' + tlid, '')
parseColumn(tlid)
}
function notfFilter(id, tlid, acct_id) {
var excludetxt = localStorage.getItem('exclude-' + tlid)
if (excludetxt || excludetxt != '') {

View File

@ -89,7 +89,7 @@ function list() {
</a>/
<a onclick="listUser('${list.id}','${acct_id}')" class="pointer">
${lang.lang_list_users}
'</a><br>`
</a><br>`
})
$('#lists').html(lists)
} else {

View File

@ -8,7 +8,7 @@ function escapeHTMLtemp(str) {
.replace(/"/g, '&quot;')
.replace(/'/g, '&#039;')
}
$.strip_tagstemp = function (str, allowed) {
$.strip_tagstemp = function(str, allowed) {
if (!str) {
return ""
}
@ -16,11 +16,11 @@ $.strip_tagstemp = function (str, allowed) {
.join('')
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi
return str.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''
})
}
//オブジェクトパーサー(トゥート)
}
//オブジェクトパーサー(トゥート)
function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var templete = ''
localStorage.setItem("lastunix_" + tlid, date(obj[0].createdAt, 'unix'))
@ -158,7 +158,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}
var local = []
var times = []
Object.keys(obj).forEach(function (key) {
Object.keys(obj).forEach(function(key) {
var toot = obj[key]
var dis_name = toot.user.name
if (dis_name) {
@ -168,7 +168,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}
//絵文字があれば
if (toot.user.emojis) {
Object.keys(toot.user.emojis).forEach(function (key5) {
Object.keys(toot.user.emojis).forEach(function(key5) {
var emoji = toot.user.emojis[key5]
var shortcode = emoji.name
var emoji_url = '<img draggable="false" src="' + emoji.url +
@ -278,7 +278,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}
var if_notf = 'data-notfIndv="' + acct_id + "_" + toot.id + '"'
var toot = toot.note
var dis_name = escapeHTML(toot.user.name)
var dis_name = escapeHTML(toot.user.name || toot.user.username)
} else {
var if_notf = ""
if (toot.renote) {
@ -291,7 +291,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
if (!toot.text) {
var toot = toot.renote
}
var dis_name = escapeHTML(toot.user.name)
var dis_name = escapeHTML(toot.user.name || toot.user.username)
var uniqueid = toot.id
var actemojick = false
} else {
@ -306,7 +306,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var fullname = toot.user.username + "@" + domain
}
if (useremp) {
Object.keys(useremp).forEach(function (key10) {
Object.keys(useremp).forEach(function(key10) {
var user = useremp[key10]
if (user == fullname) {
boostback = "emphasized"
@ -343,14 +343,14 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
viashow = "via-hide"
}
//強調チェック
Object.keys(empCli).forEach(function (key6) {
Object.keys(empCli).forEach(function(key6) {
var empCliList = empCli[key6]
if (empCliList == via) {
boostback = "emphasized"
}
})
//ミュートチェック
Object.keys(muteCli).forEach(function (key7) {
Object.keys(muteCli).forEach(function(key7) {
var muteCliList = muteCli[key7]
if (muteCliList == via) {
boostback = "hide"
@ -430,7 +430,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) {
Object.keys(toot.emojis).forEach(function(key5) {
var emoji = toot.emojis[key5]
var shortcode = emoji.name
var emoji_url = '<img draggable="false" src="' + emoji.url +
@ -471,7 +471,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
if (mediack) {
hasmedia = "hasmedia"
var cwdt = 100 / toot[useparam].length
Object.keys(toot[useparam]).forEach(function (key2) {
Object.keys(toot[useparam]).forEach(function(key2) {
var media = toot[useparam][key2]
var purl = media.url
media_ids = media_ids + media.id + ","
@ -516,9 +516,9 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var tags = ""
//タグであれば
if (tagck) {
Object.keys(toot.tags).forEach(function (key4) {
Object.keys(toot.tags).forEach(function(key4) {
var tag = toot.tags[key4]
var tags = '<a onclick="tagShow(\'' + tag + '\', this)" class="pointer parsed">#' + tag + '</a><span class="hide" data-tag="' + tag + '" data-regTag="'+tag.toLowerCase()+'">#' + tag + ':<a onclick="tl(\'tag\',\'' + tag + '\',' + acct_id +
var tags = '<a onclick="tagShow(\'' + tag + '\', this)" class="pointer parsed">#' + tag + '</a><span class="hide" data-tag="' + tag + '" data-regTag="' + tag.toLowerCase() + '">#' + tag + ':<a onclick="tl(\'tag\',\'' + tag + '\',' + acct_id +
',\'add\')" class="pointer parsed" title="' + lang.lang_parse_tagTL.replace("{{tag}}", '#' + tag) + '">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer parsed" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", '#' + tag) + '">Toot</a> ' +
'<a onclick="tagPin(\'' + tag + '\')" class="pointer parsed" title="' + lang.lang_parse_tagpin.replace("{{tag}}", '#' + tag) + '">Pin</a></span> '
content = content.replace("#" + tag, tags)
@ -578,7 +578,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var avatar = toot.user.avatarUrl
//ワードミュート
if (wordmuteList) {
Object.keys(wordmuteList).forEach(function (key8) {
Object.keys(wordmuteList).forEach(function(key8) {
var worde = wordmuteList[key8]
if (worde) {
if (worde.tag) {
@ -595,7 +595,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}
//ワード強調
if (wordempList) {
Object.keys(wordempList).forEach(function (key9) {
Object.keys(wordempList).forEach(function(key9) {
var wordList = wordempList[key9]
if (wordList) {
var wordList = wordList.tag
@ -606,9 +606,8 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}
//Ticker
var tickerdom = ""
if (ticker) {
var tickerdata = JSON.parse(localStorage.getItem("ticker"))
if (ticker && tickerdata) {
var thisdomain = toot.user.username.split("@")
if (thisdomain.length > 1) {
thisdomain = thisdomain[1]
@ -625,7 +624,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var poll = ""
if (toot.poll) {
var choices = toot.poll.choices
Object.keys(choices).forEach(function (keyc) {
Object.keys(choices).forEach(function(keyc) {
var choice = choices[keyc]
if (choice.isVoted) {
var myvote = twemoji.parse("✅")
@ -649,18 +648,9 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
//Reactions
var addReact = ""
if (toot.reactions) {
Object.keys(toot.reactions).forEach(function (keye) {
Object.keys(toot.reactions).forEach(function(keye) {
var thisReact = toot.reactions[keye]
if (keye == "like") { var defaultEmoji = true }
else if (keye == "love") { var defaultEmoji = true }
else if (keye == "laugh") { var defaultEmoji = true }
else if (keye == "hmm") { var defaultEmoji = true }
else if (keye == "surprise") { var defaultEmoji = true }
else if (keye == "congrats") { var defaultEmoji = true }
else if (keye == "angry") { var defaultEmoji = true }
else if (keye == "confused") { var defaultEmoji = true }
else if (keye == "star") { var defaultEmoji = true }
else {
if (keye == "like") { var defaultEmoji = true } else if (keye == "love") { var defaultEmoji = true } else if (keye == "laugh") { var defaultEmoji = true } else if (keye == "hmm") { var defaultEmoji = true } else if (keye == "surprise") { var defaultEmoji = true } else if (keye == "congrats") { var defaultEmoji = true } else if (keye == "angry") { var defaultEmoji = true } else if (keye == "confused") { var defaultEmoji = true } else if (keye == "star") { var defaultEmoji = true } else {
var obj = JSON.parse(localStorage.getItem("emoji_" + acct_id))
if (obj) {
var num = obj.length
@ -743,8 +733,24 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
}
var fullhide = ""
} else {
var like = 0; var love = 0; var laugh = 0; var hmm = 0; var surprise = 0; var congrats = 0; var angry = 0; var confused = 0; var pudding = 0
var likehide = "hide"; var lovehide = "hide"; var laughhide = "hide"; var hmmhide = "hide"; var suphide = "hide"; var conghide = "hide"; var anghide = "hide"; var confhide = "hide"; var riphide = "hide"
var like = 0;
var love = 0;
var laugh = 0;
var hmm = 0;
var surprise = 0;
var congrats = 0;
var angry = 0;
var confused = 0;
var pudding = 0
var likehide = "hide";
var lovehide = "hide";
var laughhide = "hide";
var hmmhide = "hide";
var suphide = "hide";
var conghide = "hide";
var anghide = "hide";
var confhide = "hide";
var riphide = "hide"
var fullhide = "hide"
}
if (!addReact && likehide == "hide" && lovehide == "hide" && laughhide == "hide" && hmmhide == "hide" && suphide == "hide" && conghide == "hide" && anghide == "hide" && confhide == "hide" && riphide == "hide") {
@ -765,10 +771,10 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} else {
var actemojick = false
}
var rand = randomStr(8)
var rand = makeCID()
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
boostback + ' ' + fav_app + ' ' + rt_app + ' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="' + media_ids + ' " unixtime="' + date(obj[
key].created_at, 'unix') + '" ' + if_notf + ' onmouseover="mov(\'' + toot.id + '\',\'' + tlid + '\',\'mv\', \''+rand+'\')" onclick="mov(\'' + toot.id + '\',\'' + tlid + '\',\'cl\', \''+rand+'\')" onmouseout="resetmv(\'mv\')" reacted="' + reacted + '">' +
key].created_at, 'unix') + '" ' + if_notf + ' onmouseover="mov(\'' + toot.id + '\',\'' + tlid + '\',\'mv\', \'' + rand + '\')" onclick="mov(\'' + toot.id + '\',\'' + tlid + '\',\'cl\', \'' + rand + '\')" onmouseout="resetmv(\'mv\')" reacted="' + reacted + '">' +
'<div class="area-notice"><span class="gray sharesta">' + notice + home +
'</span></div>' +
'<div class="area-icon"><a onclick="udg(\'' + toot.user.id +
@ -791,7 +797,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
'</span>' +
'' + viewer + '' +
'</div><div class="area-additional"><span class="additional">' + analyze +
'<div class="reactions ' + fullhide + '" style="height: 25px;"><span class="' + likehide + ' reaction re-like"><a onclick="reaction(\'like\',\'' + toot.id + '\',' + acct_id +
'<div class="reactions ' + fullhide + '" style="height: 25px; position: relative; top: -7px;"><span class="' + likehide + ' reaction re-like"><a onclick="reaction(\'like\',\'' + toot.id + '\',' + acct_id +
',\'' + tlid + '\')" class="waves-effect waves-dark btn-flat" style="padding:0;margin-left:3px;">' + twemoji.parse("👍") + '</a><span class="re-likect">' + like +
'</span></span><span class="' + lovehide + ' reaction re-love"><a onclick="reaction(\'love\',\'' + toot.id + '\',' + acct_id +
',\'' + tlid + '\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">' + twemoji.parse("💓") + '</a><span class="re-lovect">' + love +
@ -810,8 +816,8 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
'</span></span><span class="' + riphide + ' reaction re-confused"><a onclick="reaction(\'confused\',\'' + toot.id + '\',' + acct_id +
',\'' + tlid + '\')" class="waves-effect waves-dark btn-flat pointer" style="padding:0;margin-left:3px;">' + twemoji.parse("😇") + '</a><span class="re-confusedct">' + rip +
'</span></span>' + addReact +
'<i class="material-icons pointer hide freeReact ' + freeReact + '" style="font-size:1.0rem; padding-left:5px;position: relative;top: 3px;" onclick="reactioncustom(\'' + acct_id + '\',\'' + id + '\')">add_box</i></div>'
+ poll + mentions + tags + '</div>' +
'<i class="material-icons pointer hide freeReact ' + freeReact + '" style="font-size:1.0rem; padding-left:5px;position: relative;top: 3px;" onclick="reactioncustom(\'' + acct_id + '\',\'' + id + '\')">add_box</i></div>' +
poll + mentions + tags + '</div>' +
'<div class="area-vis"></div>' +
'<div class="area-actions ' + mouseover + '">' +
'<div class="action">' + vis + '</div>' +
@ -835,8 +841,8 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_del + '"><i class="fas fa-trash"></i></a></div>' +
'<div class="' + if_mine + ' action pin ' + disp["pin"] + ' ' + noauth + '"><a onclick="pin(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_pin + '"><i class="fas fa-map-pin pin_' + toot.id + '"></i></a></div>'
+ '<div class="' + if_mine + ' action ' + disp["red"] + ' ' + noauth + '"><a onclick="redraft(\'' + toot.id + '\',' +
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_pin + '"><i class="fas fa-map-pin pin_' + toot.id + '"></i></a></div>' +
'<div class="' + if_mine + ' action ' + disp["red"] + ' ' + noauth + '"><a onclick="redraft(\'' + toot.id + '\',' +
acct_id +
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="' + lang.lang_parse_redraft + '"><i class="material-icons">redo</i></a></div>' + trans +
'<span class="cbadge viabadge waves-effect ' + viashow + ' ' + mine_via + '" onclick="client(\'' + $.strip_tagstemp(via) + '\')" title="via ' + $.strip_tagstemp(via) + '">via ' +
@ -863,7 +869,7 @@ function misskeyUserparse(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.followee) {
toot = toot.followee
@ -947,6 +953,7 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) {
})
return templete
}
function goGoogle(id) {
var val = $("#srcbox_" + id).val()
var url = "https://google.com/search?q=" + val
@ -954,6 +961,7 @@ function goGoogle(id) {
}
var misskeyws = []
var misskeywsstate = []
function connectMisskey(acct_id, re) {
var domain = localStorage.getItem("domain_" + acct_id)
var at = localStorage.getItem("acct_" + acct_id + "_at")
@ -962,14 +970,14 @@ function connectMisskey(acct_id, re) {
var wsid = misskeyws.length
localStorage.setItem("misskey_wss_" + acct_id, wsid)
misskeyws[wsid] = new WebSocket(start)
misskeyws[wsid].onopen = function (mess) {
misskeyws[wsid].onopen = function(mess) {
console.table({ "tlid": tlid, "type": "Connect Streaming API", "domain": domain, "message": [mess] })
misskeywsstate[wsid] = true
//$("#notice_icon_" + tlid).removeClass("red-text");
var send = '{"type":"connect","body":{"channel":"main","id":"notf:' + acct_id + '"}}'
misskeyws[wsid].send(send)
}
misskeyws[wsid].onmessage = function (mess) {
misskeyws[wsid].onmessage = function(mess) {
console.log([domain + ":Receive Streaming API:", data])
var data = JSON.parse(mess.data)
var obj = data.body.body
@ -1033,19 +1041,19 @@ function connectMisskey(acct_id, re) {
}
}
misskeyws[wsid].onerror = function (error) {
misskeyws[wsid].onerror = function(error) {
console.error("Error closing " + tlid)
console.error(error)
misskeywsstate[wsid] = false
if(!re){
if (!re) {
connectMisskey(acct_id, true)
}
return false
}
misskeyws[wsid].onclose = function () {
misskeyws[wsid].onclose = function() {
console.warn("Closing " + tlid)
misskeywsstate[wsid] = false
if(!re){
if (!re) {
connectMisskey(acct_id, true)
}
return false

View File

@ -191,6 +191,7 @@ async function mixmore(tlid, type) {
var obj = JSON.parse(multi)
var acct_id = obj[tlid].domain
moreloading = true
console.log('moreloading mixmore '+tlid+' '+type)
todo('Integrated TL MoreLoading...(Local)')
const domain = localStorage.getItem('domain_' + acct_id)
const sid = $('#timeline_' + tlid + ' .cvo')

View File

@ -7,6 +7,7 @@ function notf(acct_id, tlid, sys) {
notfCommon(acct_id, tlid, sys)
}
}
function notfColumn(acct_id, tlid, sys) {
todo('Notifications Loading...')
var native = localStorage.getItem('nativenotf')
@ -22,7 +23,7 @@ function notfColumn(acct_id, tlid, sys) {
httpreq.open('POST', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
var body = JSON.stringify({
i: at
i: at,
})
} else {
var misskey = false
@ -31,6 +32,7 @@ function notfColumn(acct_id, tlid, sys) {
} else {
var exc = ''
}
if (exc === 'null') exc = ''
var start = 'https://' + domain + '/api/v1/notifications' + exc
httpreq.open('GET', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
@ -40,10 +42,11 @@ function notfColumn(acct_id, tlid, sys) {
httpreq.responseType = 'json'
httpreq.send(body)
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
$('#landing_' + tlid).append(`<div>${this.status}</div><div>${escapeHTML(this.response)}`)
setLog(start, this.status, this.response)
}
var max_id = httpreq.getResponseHeader('link')
@ -54,7 +57,7 @@ function notfColumn(acct_id, tlid, sys) {
var templete = ''
var lastnotf = localStorage.getItem('lastnotf_' + acct_id)
localStorage.setItem('lastnotf_' + acct_id, json[0].id)
Object.keys(json).forEach(function(key) {
Object.keys(json).forEach(function (key) {
var obj = json[key]
if (lastnotf == obj.id && key > 0 && native == 'yes') {
var ct = key
@ -64,13 +67,13 @@ function notfColumn(acct_id, tlid, sys) {
var os = localStorage.getItem('platform')
var options = {
body: ct + lang.lang_notf_new,
icon: localStorage.getItem('prof_' + acct_id)
icon: localStorage.getItem('prof_' + acct_id),
}
var n = new Notification('TheDesk:' + domain, options)
}
var mute = getFilterTypeByAcct(acct_id, 'notif')
//Pleromaにはmoveというtypeがあるらしい。何が互換APIじゃ
if (obj.type != 'follow' && obj.type != 'move' && obj.type != 'follow_request') {
if (obj.type !== 'follow' && obj.type !== 'move' && obj.type !== 'request' && obj.type !== 'admin.sign_up') {
if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, tlid, -1, mute)
} else {
@ -88,7 +91,7 @@ function notfColumn(acct_id, tlid, sys) {
})
templete = templete + '<div class="hide notif-marker" data-maxid="' + max_id + '"></div>'
$('#timeline_' + tlid).html(templete)
$('#landing_' + tlid).hide()
// $('#landing_' + tlid).hide()
jQuery('time.timeago').timeago()
}
$('#notf-box').addClass('fetched')
@ -116,6 +119,7 @@ function notfColumn(acct_id, tlid, sys) {
var start = 'wss://' + domain + '/?i=' + at
}
}
function notfCommon(acct_id, tlid, sys, stream) {
todo('Notifications Loading...')
var native = localStorage.getItem('nativenotf')
@ -130,11 +134,11 @@ function notfCommon(acct_id, tlid, sys, stream) {
var i = {
method: 'POST',
headers: {
'content-type': 'application/json'
'content-type': 'application/json',
},
body: JSON.stringify({
i: at
})
i: at,
}),
}
} else {
var misskey = false
@ -143,35 +147,37 @@ function notfCommon(acct_id, tlid, sys, stream) {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
Authorization: 'Bearer ' + at,
},
}
}
}
if(stream == 'only') {
if (stream == 'only') {
notfWS(misskey, acct_id, tlid, domain, at)
return false
}
fetch(start, i)
.then(function(response) {
.then(function (response) {
console.log('header to get param:' + response.headers.get('link'))
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
console.log('notf error', 'div[data-notf=' + acct_id + '] .landing')
$('div[data-notf=' + acct_id + '] .landing').append(`<div>${response.status}</div><div>${escapeHTML(text)}`)
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
.then(function (json) {
if (json[0]) {
var templete = ''
var lastnotf = localStorage.getItem('lastnotf_' + acct_id)
localStorage.setItem('lastnotf_' + acct_id, json[0].id)
Object.keys(json).forEach(function(key) {
Object.keys(json).forEach(function (key) {
var obj = json[key]
if (lastnotf == obj.id && key > 0 && native == 'yes') {
var ct = key
@ -181,13 +187,13 @@ function notfCommon(acct_id, tlid, sys, stream) {
var os = localStorage.getItem('platform')
var options = {
body: ct + lang.lang_notf_new,
icon: localStorage.getItem('prof_' + acct_id)
icon: localStorage.getItem('prof_' + acct_id),
}
var n = new Notification('TheDesk:' + domain, options)
}
var mute = getFilterTypeByAcct(acct_id, 'notif')
//Pleromaにはmoveというtypeがあるらしい。何が互換APIじゃ
if (obj.type != 'follow' && obj.type != 'move') {
if (obj.type !== 'follow' && obj.type !== 'move' && obj.type !== 'request' && obj.type !== 'admin.sign_up') {
if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute)
} else {
@ -202,16 +208,17 @@ function notfCommon(acct_id, tlid, sys, stream) {
}
})
$('div[data-notf=' + acct_id + ']').html(templete)
$('#landing_' + tlid).hide()
// $('#landing_' + tlid).hide()
jQuery('time.timeago').timeago()
}
$('#notf-box').addClass('fetched')
todc()
if(stream != 'no') notfWS(misskey, acct_id, tlid, domain, at)
if (stream != 'no') notfWS(misskey, acct_id, tlid, domain, at)
})
}
function notfWS(misskey, acct_id, tlid, domain, at) {
if(mastodonBaseWsStatus[domain] == 'available') return false
if (mastodonBaseWsStatus[domain] == 'available') return false
if (!misskey) {
if (localStorage.getItem('streaming_' + acct_id)) {
var wss = localStorage.getItem('streaming_' + acct_id)
@ -222,16 +229,17 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
var wsid = websocketNotf.length
websocketNotf[acct_id] = new WebSocket(start)
websocketNotf[acct_id].onopen = function(mess) {
websocketNotf[acct_id].onopen = function (mess) {
console.table({
acct_id: acct_id,
type: 'Connect Streaming API(Notf)',
domain: domain,
message: [mess]
message: [mess],
})
$('i[data-notf=' + acct_id + ']').removeClass('red-text')
}
websocketNotf[acct_id].onmessage = function(mess) {
websocketNotf[acct_id].onmessage = function (mess) {
$('#landing_' + tlid).hide()
//console.log(["Receive Streaming API(Notf):" + acct_id + "(" + domain + ")", JSON.parse(JSON.parse(mess.data).payload)]);
var popup = localStorage.getItem('popup')
if (!popup) {
@ -244,7 +252,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
localStorage.setItem('lastnotf_' + acct_id, obj.id)
if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) {
//markers show中はダメ
if (obj.type != 'follow' && obj.type != 'follow_request') {
if (obj.type !== 'follow' && obj.type !== 'move' && obj.type !== 'request' && obj.type !== 'admin.sign_up') {
templete = parse([obj], 'notf', acct_id, 'notf', popup)
} else if (obj.type == 'follow_request') {
templete = userparse([obj.account], 'request', acct_id, 'notf', -1)
@ -262,7 +270,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
$('[toot-id=' + obj + ']').remove()
}
}
websocketNotf[acct_id].onerror = function(error) {
websocketNotf[acct_id].onerror = function (error) {
console.error('WebSocket Error ', error)
errorct++
console.log(errorct)
@ -270,7 +278,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
notfWS(misskey, acct_id, tlid, domain, at)
}
}
websocketNotf[acct_id].onclose = function(error) {
websocketNotf[acct_id].onclose = function (error) {
console.error('WebSocket Close ', error)
errorct++
console.log(errorct)
@ -298,6 +306,7 @@ function notfmore(tlid) {
var domain = localStorage.getItem('domain_' + acct_id)
if (sid && !moreloading) {
moreloading = true
console.log('moreloading notfmore '+tlid)
var httpreq = new XMLHttpRequest()
if (localStorage.getItem('mode_' + domain) == 'misskey') {
var misskey = true
@ -306,7 +315,7 @@ function notfmore(tlid) {
httpreq.setRequestHeader('Content-Type', 'application/json')
var body = JSON.stringify({
i: at,
untilID: sid
untilID: sid,
})
} else {
var misskey = false
@ -324,7 +333,7 @@ function notfmore(tlid) {
httpreq.responseType = 'json'
httpreq.send(body)
httpreq.onreadystatechange = function() {
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@ -336,10 +345,10 @@ function notfmore(tlid) {
var templete = ''
var lastnotf = localStorage.getItem('lastnotf_' + acct_id)
localStorage.setItem('lastnotf_' + acct_id, json[0].id)
Object.keys(json).forEach(function(key) {
Object.keys(json).forEach(function (key) {
var obj = json[key]
var mute = getFilterTypeByAcct(acct_id, 'notif')
if (obj.type != 'follow') {
if (obj.type !== 'follow' && obj.type !== 'move' && obj.type !== 'request' && obj.type !== 'admin.sign_up') {
if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute)
} else {
@ -356,7 +365,7 @@ function notfmore(tlid) {
moreloading = false
templete = templete + '<div class="hide notif-marker" data-maxid="' + max_id + '"></div>'
$('#timeline_' + tlid).append(templete)
$('#landing_' + tlid).hide()
// $('#landing_' + tlid).hide()
jQuery('time.timeago').timeago()
}
$('#notf-box').addClass('fetched')
@ -370,35 +379,30 @@ function notfmore(tlid) {
function notfToggle(acct, tlid) {
if ($('#notf-box_' + tlid).hasClass('column-hide')) {
$('#notf-box_' + tlid).css('display', 'block')
$('#notf-box_' + tlid).animate(
{
height: '400px'
},
{
$('#notf-box_' + tlid).animate({
height: '400px',
}, {
duration: 300,
complete: function() {
complete: function () {
$('#notf-box_' + tlid).css('overflow-y', 'scroll')
$('#notf-box_' + tlid).removeClass('column-hide')
}
}
)
},
})
} else {
$('#notf-box_' + tlid).css('overflow-y', 'hidden')
$('#notf-box_' + tlid).animate(
{
height: '0'
},
{
$('#notf-box_' + tlid).animate({
height: '0',
}, {
duration: 300,
complete: function() {
complete: function () {
$('#notf-box_' + tlid).addClass('column-hide')
$('#notf-box_' + tlid).css('display', 'none')
}
}
)
},
})
}
notfCanceler(acct)
}
function notfCanceler(acct) {
$('.notf-reply_' + acct).text(0)
localStorage.removeItem('notf-reply_' + acct)
@ -413,18 +417,21 @@ function notfCanceler(acct) {
localStorage.removeItem('notf-follow_' + acct)
$('.notf-follow_' + acct).addClass('hide')
$('.notf-icon_' + acct).removeClass('red-text')
var id = $('#announce_' + acct + ' .announcement').first().attr('data-id')
$('.notf-announ_' + acct + '_ct').text("")
var id = $('#announce_' + acct + ' .announcement')
.first()
.attr('data-id')
$('.notf-announ_' + acct + '_ct').text('')
$(`.boxIn[data-acct=${acct}] .notice-box`).removeClass('has-notf')
if(id) {
if (id) {
localStorage.setItem('announ_' + acct, id)
}
}
function allNotfRead() {
var multi = localStorage.getItem('multi')
if (multi) {
var obj = JSON.parse(multi)
Object.keys(obj).forEach(function(key) {
Object.keys(obj).forEach(function (key) {
notfCanceler(key)
})
}

View File

@ -3,8 +3,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
var splitter = new GraphemeSplitter()
var templete = ''
if (obj[0]) {
if (tlid === 1) {
}
if (tlid === 1) { }
localStorage.setItem('lastunix_' + tlid, date(obj[0].created_at, 'unix'))
}
@ -343,8 +342,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
if (native == 'yes') {
var os = localStorage.getItem('platform')
var options = {
body:
toot.account.display_name +
body: toot.account.display_name +
'(' +
toot.account.acct +
')' +
@ -485,6 +483,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
} else {
var locked = ''
}
if (toot.edited_at) {
locked = locked + ` <i class="material-icons teal-text" style="font-size: 0.8rem" title="Edited at ${date(toot.edited_at, 'absolute')}">create</i>`
}
if (!toot.application) {
var via = ''
viashow = 'hide'
@ -593,7 +594,6 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
if (toot.poll) {
var poll = pollParse(toot.poll, acct_id, false)
}
var mediack = toot.media_attachments[0]
//メディアがあれば
var media_ids = ''
@ -622,7 +622,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
if (media.pleroma && media.pleroma.mime_type.indexOf('video') !== -1) {
viewer =
viewer +
`<a onclick="imgv('${id}','${key2}','${acct_id}')" id="${id}'-image-${key2}"
`<a onclick="imgv('${id}','${key2}','${acct_id}')" id="${id}-image-${key2}"
data-url="${url}" data-type="video" class="img-parsed">
<video src="${purl}" class="${sense} toot-img pointer" style="max-width:100%;" loop="true" alt="attached media">
</a></span>`
@ -631,7 +631,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
var mty = media.remote_url.match(/.+(\..+)$/)[1]
viewer =
viewer +
`<a href="${media.url ? media.url : media.remote_url}" title="${media.remote_url} from ${media.url}">[${lang.lang_parse_unknown}(${mty})]</a> `
`<a href="${media.url ? media.url : media.remote_url}" title="${media.url ? media.url : media.remote_url}">[${lang.lang_parse_unknown}(${mty})]</a>${media.url ? `<a href="${media.remote_url}"><i class="material-icons sublink" title="${media.remote_url}">open_in_new</i></a>` : ''} `
} else if (media.type == 'audio') {
viewer =
viewer +
@ -644,7 +644,6 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
} else {
var desc = ''
}
console.log('https://' + domain + '/storage/no-preview.png')
if (media.preview_url == 'https://' + domain + '/storage/no-preview.png') {
purl = url
nsfwmes = '<div class="nsfw-media">Unavailable preview</div>'
@ -666,10 +665,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
viewer = ''
hasmedia = 'nomedia'
}
var menck = toot.mentions[0]
var mentions = ''
//メンションであれば
if (menck) {
if (toot.mentions && toot.mentions[0]) {
mentions = ''
var to_mention = []
Object.keys(toot.mentions).forEach(function (key3) {
@ -822,23 +820,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
}
//絵文字があれば
if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
var emoSource = emoji.url
} else {
var emoSource = emoji.static_url
}
var emoji_url = `
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle('bigemoji');" loading="lazy">
`
var regExp = new RegExp(':' + shortcode + ':', 'g')
content = content.replace(regExp, emoji_url)
spoil = spoil.replace(regExp, emoji_url)
poll = poll.replace(regExp, emoji_url)
})
content = this.customEmojiReplace(content, toot, gif);
spoil = this.customEmojiReplace(spoil, toot, gif);
poll = this.customEmojiReplace(poll, toot, gif);
}
//ニコフレ絵文字
if (toot.profile_emojis) {
@ -860,7 +844,11 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
})
}
//デフォ絵文字
content = twemoji.parse(content)
const contentElement = document.createElement('div')
contentElement.innerHTML = content
const emojified = twemoji.parse(contentElement)
content = emojified.innerHTML
if (dis_name) {
dis_name = twemoji.parse(dis_name)
}
@ -996,7 +984,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
menuct++
}
//このトゥート内のアクションを完了させるために、適当にIDを振る
var rand = randomStr(8)
var rand = makeCID()
//プラグイン機構
var pluginBOT = plugins.buttonOnToot
var pluginHtml = ''
@ -1068,7 +1056,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
</a>
</div>
<div class="action ${disp['re']} ${noauth}">
<a onclick="re('${toot.id}','${to_mention}','${acct_id}','${visen}','${escapeHTML(toot.spoiler_text)}')"
<a onclick="re('${toot.id}','${to_mention}','${acct_id}','${visen}','${escapeHTML(toot.spoiler_text).replaceAll('\n','')}')"
class="waves-effect waves-dark btn-flat actct rep-btn"
data-men="${to_mention}" data-visen="${visen}" style="padding:0" title="${lang.lang_parse_replyto}">
<i class="fas fa-share"></i>
@ -1146,6 +1134,10 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
style="padding:0; padding-top: 5px;">
<i class="material-icons" aria-hidden="true">redo</i>${lang.lang_parse_redraft}
</li>
<li class="${if_mine}" onclick="editToot('${uniqueid}','${acct_id}')"
style="padding:0; padding-top: 5px;">
<i class="material-icons" aria-hidden="true">create</i>${lang.lang_edit}(v3.5.0~)
</li>
${trans}
<li onclick="postMessage(['openUrl', '${toot.url}'], '*')"
style="padding:0; padding-top: 5px;">
@ -1214,6 +1206,8 @@ function userparse(obj, auth, acct_id, tlid, popup) {
var ftxt = lang.lang_parse_moved
} else if (auth == 'request') {
var ftxt = lang.lang_parse_request
} else if (auth == 'admin.sign_up') {
var ftxt = lang.lang_parse_signup
}
if (popup > 0 || popup == -1 || notf) {
var notftext = ftxt + '<br>'
@ -1317,7 +1311,7 @@ function userparse(obj, auth, acct_id, tlid, popup) {
class="sml gray"
style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"
>
@ ${toot.acct}${locked}</span>
@${toot.acct}${locked}</span>
</div>
</div>
<div class="area-status">
@ -1400,7 +1394,7 @@ function client(name) {
}
//Poll Parser
function pollParse(poll, acct_id, emojis) {
var rand = randomStr(8)
var rand = makeCID()
var datetype = localStorage.getItem('datetype')
var anime = localStorage.getItem('animation')
if (anime == 'yes' || !anime) {
@ -1458,7 +1452,7 @@ function pollParse(poll, acct_id, emojis) {
var me = minechoice[i]
if (me == keyc) {
var voteit =
'<span class="ownMark"><img class="emoji" draggable="false" src="https://twemoji.maxcdn.com/v/12.1.4/72x72/2705.png"></span>'
'<span class="ownMark"><img class="emoji" draggable="false" src="https://energised.botegirl.parts/v/12.1.4/72x72/2705.png"></span>'
break
}
}
@ -1526,7 +1520,51 @@ function pollParse(poll, acct_id, emojis) {
</div>`
return pollHtml
}
function customEmojiReplace(content, toot, gif) {
var contentDiv = document.createElement('div');
contentDiv.style.display = 'none';
contentDiv.innerHTML = content;
var replace = false;
Object.keys(toot.emojis).forEach(function (key5) {
var emoji = toot.emojis[key5]
var shortcode = emoji.shortcode
if (gif == 'yes') {
var emoSource = emoji.url
} else {
var emoSource = emoji.static_url
}
var nodes = document.evaluate('//text()', contentDiv, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if (nodes.snapshotLength == 0) return;
var shortcodeBracket = (':' + shortcode + ':');
var img = document.createElement('img');
img.setAttribute('draggable', 'false');
img.setAttribute('src', emoSource);
img.setAttribute('class', 'emoji-img');
img.setAttribute('data-emoji', shortcode);
img.setAttribute('alt', shortcodeBracket);
img.setAttribute('title', shortcodeBracket);
img.setAttribute('onclick', "this.classList.toggle('bigemoji');");
for (var i = 0; i < nodes.snapshotLength; i++) {
var node = nodes.snapshotItem(i);
var txt = node.textContent;
var spos = txt.indexOf(shortcodeBracket);
if (spos == -1) continue;
var txtBefore = document.createTextNode(txt.substr(0, spos));
var txtAfter = document.createTextNode(txt.substr(spos + shortcodeBracket.length));
node.parentNode.insertBefore(txtBefore, node);
node.parentNode.insertBefore(img, node);
node.parentNode.insertBefore(txtAfter, node);
node.textContent = '';
replace = true;
}
})
if (replace) contentDiv.innerHTML = this.customEmojiReplace(contentDiv.innerHTML, toot, gif);
return contentDiv.innerHTML;
}
//MastodonBaseStreaming
var mastodonBaseWs = {}
var mastodonBaseWsStatus = {}
@ -1552,6 +1590,7 @@ function mastodonBaseStreaming(acct_id) {
$('.notice_icon_acct_' + acct_id).removeClass('red-text')
}
mastodonBaseWs[domain].onmessage = function (mess) {
$(`div[data-acct=${acct_id}] .landing`).hide()
const typeA = JSON.parse(mess.data).event
if (typeA == 'delete') {
$(`[unique-id=${JSON.parse(mess.data).payload}]`).hide()
@ -1566,6 +1605,13 @@ function mastodonBaseStreaming(acct_id) {
filterUpdate(acct_id)
} else if (~typeA.indexOf('announcement')) {
announ(acct_id, tlid)
} else if (typeA === 'status.update') {
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)
const template = insertTl(obj, tls, true)
$(`[unique-id=${obj.id}]`).html(template)
$(`[unique-id=${obj.id}] [unique-id=${obj.id}]`).unwrap()
} else if (typeA == 'notification') {
const obj = JSON.parse(JSON.parse(mess.data).payload)
let template = ''
@ -1574,7 +1620,7 @@ function mastodonBaseStreaming(acct_id) {
if (!popup) {
popup = 0
}
if (obj.type != 'follow' && obj.type != 'follow_request') {
if (obj.type !== 'follow' && obj.type !== 'move' && obj.type !== 'request' && obj.type !== 'admin.sign_up') {
template = parse([obj], 'notf', acct_id, 'notf', popup)
} else if (obj.type == 'follow_request') {
template = userparse([obj.account], 'request', acct_id, 'notf', -1)
@ -1636,7 +1682,7 @@ function mastodonBaseStreaming(acct_id) {
return false
}
}
function insertTl(obj, tls) {
function insertTl(obj, tls, dry) {
for (const timeline of tls) {
const { id, voice, type, acct_id } = timeline
const mute = getFilterTypeByAcct(acct_id, type)
@ -1646,6 +1692,7 @@ function insertTl(obj, tls) {
say(obj.content)
}
const template = parse([obj], type, acct_id, id, '', mute, type)
if (dry) return template
console.log($(`#timeline_box_${id}_box .tl-box`).scrollTop(), `timeline_box_${id}_box .tl-box`)
if (
$(`#timeline_box_${id}_box .tl-box`).scrollTop() === 0

View File

@ -13,16 +13,31 @@ function searchMenu() {
//検索取得
function src(mode, offset) {
if (!offset) {
$('#src-contents').html('')
$('#src-contents').html(`
<div class="preloader-wrapper small active" style="margin-left: calc(50% - 36px);">
<div class="spinner-layer spinner-blue-only">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="gap-patch">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
`)
var add = ''
} else {
var add = '&type=accounts&offset=' + $('#src-accts .cvo').length
var add = '&type=accounts&offset=' + $('#src-accts .cusr').length
}
var q = $('#src').val()
var acct_id = $('#src-acct-sel').val()
if (acct_id == 'tootsearch') {
tsAdd(q)
$('#src-contents').html('')
return false
}
localStorage.setItem('last-use', acct_id)
@ -48,24 +63,27 @@ function src(mode, offset) {
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
.then(function (response) {
if (!offset) {
$('#src-contents').html(``)
}
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
src('v1')
return false
})
.then(function(json) {
.then(function (json) {
console.log(['Search', json])
//ハッシュタグ
if (json.hashtags[0]) {
var tags = ''
Object.keys(json.hashtags).forEach(function(key4) {
Object.keys(json.hashtags).forEach(function (key4) {
var tag = json.hashtags[key4]
if (mode) {
tags =
@ -74,6 +92,11 @@ function src(mode, offset) {
#${escapeHTML(tag)}
</a>
<br> `
} else if (!tag.history) {
tags+=`<a onclick="tl('tag','${tag.name}','${acct_id}','add')" class="pointer">
#${escapeHTML(tag.name)}
</a>
<br> `
} else {
tags = tags + graphDraw(tag, acct_id)
}
@ -116,7 +139,7 @@ function tsAdd(q) {
parseColumn('add')
}
function tootsearch(tlid, q) {
if(!q || q=='undefined') {
if (!q || q == 'undefined') {
return false
}
var start = 'https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=' + q
@ -129,20 +152,20 @@ function tootsearch(tlid, q) {
'content-type': 'application/json'
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(raw) {
.then(function (raw) {
var templete = ''
var json = raw.hits.hits
var max_id = raw['hits'].length
@ -170,6 +193,7 @@ function moreTs(tlid, q) {
.last()
.attr('data-maxid')
moreloading = true
console.log('moreloading src '+tlid)
var start =
'https://tootsearch.chotto.moe/api/v1/search?from=' + sid + '&sort=created_at%3Adesc&q=' + q
$('#notice_' + tlid).text('tootsearch(' + q + ')')
@ -180,20 +204,20 @@ function moreTs(tlid, q) {
'content-type': 'application/json'
}
})
.then(function(response) {
.then(function (response) {
if (!response.ok) {
response.text().then(function(text) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(raw) {
.then(function (raw) {
var templete = ''
var json = raw.hits.hits
var max_id = raw['hits'].length
@ -267,51 +291,89 @@ function graphDrawCore(his, tag, acct_id) {
</div>
</div>`
}
/*
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
<path d="M0,0 L10,0 20,10 20,50" fill="#3F51B5"></path>
</svg>
*/
function trend() {
async function trend() {
console.log('get trend')
$('#src-contents').html('')
var acct_id = $('#src-acct-sel').val()
if (acct_id == 'tootsearch') {
return false
}
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/trends'
console.log(start)
fetch(start, {
const domain = localStorage.getItem('domain_' + acct_id)
const at = localStorage.getItem('acct_' + acct_id + '_at')
try {
const tagTrendUrl = 'https://' + domain + '/api/v1/trends'
const tagTrendResponse = await fetch(tagTrendUrl, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
if (!tagTrendResponse.ok) {
tagTrendResponse.text().then(function (text) {
setLog(tagTrendResponse.url, tagTrendResponse.status, text)
})
}
return response.json()
})
.catch(function(error) {
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
var tags = ''
Object.keys(json).forEach(function(keye) {
var tag = json[keye]
var his = tag.history
tags = graphDrawCore(his, tag, acct_id)
const tagTrends = await tagTrendResponse.json()
let tags = ''
for (const tag of tagTrends) {
const his = tag.history
tags = tags + graphDrawCore(his, tag, acct_id)
}
$('#src-contents').append(`<div id="src-content-tag">Trend Tags<br />${tags || 'none'}</div>`)
} catch {
$('#src-contents').append(tags)
}
try {
const tootTrendUrl = 'https://' + domain + '/api/v1/trends/statuses'
const tootTrendResponse = await fetch(tootTrendUrl, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
})
if (!tootTrendResponse.ok) {
tootTrendResponse.text().then(function (text) {
setLog(tootTrendResponse.url, tootTrendResponse.status, text)
})
}
const tootTrends = await tootTrendResponse.json()
if (tootTrends.length) {
const templete = parse(tootTrends, '', acct_id)
$('#src-contents').append(`<div id="src-content-status">Trend Statuses<br />${templete}</div>`)
} else {
$('#src-contents').append(`<div id="src-content-status">Trend Statuses<br />none</div>`)
}
} catch {
}
try {
const linkTrendUrl = 'https://' + domain + '/api/v1/trends/links'
const linkTrendResponse = await fetch(linkTrendUrl, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
})
if (!linkTrendResponse.ok) {
linkTrendResponse.text().then(function (text) {
setLog(linkTrendResponse.url, linkTrendResponse.status, text)
})
}
const linkTrends = await linkTrendResponse.json()
console.log(linkTrends)
let links = ''
for (const link of linkTrends) {
links = links + `<a href="${link.url}" target="_blank">${link.url}</a><br />` + cardHtml(link, acct_id, '') + `<hr />`
}
$('#src-contents').append(`<div id="src-content-link">Trend Links<br />${links}</div>`)
} catch {
}
}
function srcBox(mode) {
if (mode == 'open') {
@ -327,18 +389,18 @@ function doSrc(type) {
$('#pageSrc').addClass('hide')
$('#pageSrc').removeClass('keep')
var q = $('.srcQ').text()
if(type == 'web') {
if (type == 'web') {
var start = localStorage.getItem('srcUrl')
if(!start) {
if (!start) {
start = 'https://google.com/search?q={q}'
}
start = start.replace(/{q}/, q)
postMessage(["openUrl", start], "*")
} else if(type == 'ts') {
} else if (type == 'ts') {
tsAdd(q)
} else if(type == 'copy') {
} else if (type == 'copy') {
execCopy(q)
} else if(type == 'toot') {
} else if (type == 'toot') {
brInsert(q)
}
}

View File

@ -10,6 +10,7 @@ if (location.search) {
}
//よく使うタグ
function tagShow(tag, elm) {
tag = decodeURIComponent(tag)
const tagTL = lang.lang_parse_tagTL.replace('{{tag}}', '#' + tag)
const tagPin = lang.lang_parse_tagpin.replace('{{tag}}', '#' + tag)
const tagToot = lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag)

View File

@ -1,6 +1,7 @@
//TL取得
moreloading = false
var errorct = 0
function tl(type, data, acct_id, tlid, delc, voice, mode) {
scrollevent()
$('#unread_' + tlid + ' .material-icons').removeClass('teal-text')
@ -179,20 +180,22 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
console.log(['Try to get timeline of ' + tlid, start])
fetch(start, i)
.then(function (response) {
.then(function(response) {
if (!response.ok) {
response.text().then(function (text) {
response.text().then(function(text) {
$('#landing_' + tlid).append(`<div>${response.status}</div><div>${$.strip_tags(text)}`)
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
.then(function(json) {
if (!json) return true
console.log(['Result of getting timeline of ' + tlid, json])
$('#landing_' + tlid).hide()
var mute = getFilterTypeByAcct(acct_id, type)
@ -240,7 +243,7 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
'","id":"' +
tlid +
'"}}'
var mskyset = setInterval(function () {
var mskyset = setInterval(function() {
if (misskeywsstate[key]) {
misskeyws[key].send(send)
clearInterval(mskyset)
@ -251,7 +254,7 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
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 () {
const mbws = setInterval(function() {
if (mastodonBaseWsStatus[domain] == 'cannotuse') {
oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode)
clearInterval(mbws)
@ -267,33 +270,32 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
}
}
}
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(JSON.stringify({type: command, stream: 'list', list: data}))
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(JSON.stringify({ 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)
console.log(data.any, data.all, acct_id, type)
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(JSON.stringify({type: command, stream: 'hashtag', tag: tag}))
mastodonBaseWs[domain].send(JSON.stringify({ type: command, stream: 'hashtag', tag: tag }))
}
return true
}
mastodonBaseWs[domain].send(JSON.stringify({type: command, stream: stream}))
mastodonBaseWs[domain].send(JSON.stringify({ 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}`)
@ -315,7 +317,8 @@ function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
var add = ''
if (remoteOnlyCk(tlid)) {
add = '&remote=true'
} var start =
}
var start =
wss + '/api/v1/streaming/?stream=public:media&access_token=' + at + add
} else if (type == 'local') {
var start =
@ -354,7 +357,7 @@ function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
var wsid = websocket.length
localStorage.setItem('wss_' + tlid, wsid)
websocket[wsid] = new WebSocket(start)
websocket[wsid].onopen = function (mess) {
websocket[wsid].onopen = function(mess) {
console.table({
tlid: tlid,
type: 'Connect Streaming API' + type,
@ -364,7 +367,7 @@ function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
errorct = 0
$('#notice_icon_' + tlid).removeClass('red-text')
}
websocket[wsid].onmessage = function (mess) {
websocket[wsid].onmessage = function(mess) {
console.log([tlid + ':Receive Streaming API:', JSON.parse(mess.data)])
if (misskey) {
if (JSON.parse(mess.data).type == 'note') {
@ -413,9 +416,7 @@ function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
$('[unique-id=' + JSON.parse(mess.data).payload + ']').remove()
}
} else if (typeA == 'update' || typeA == 'conversation') {
if (
!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')
) {
if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) {
//markers show中はダメ
var obj = JSON.parse(JSON.parse(mess.data).payload)
if (
@ -454,7 +455,7 @@ function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
}
}
}
websocket[wsid].onerror = function (error) {
websocket[wsid].onerror = function(error) {
console.error('Error closing')
console.error(error)
if (mode == 'error') {
@ -469,7 +470,7 @@ function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
}
return false
}
websocket[wsid].onclose = function () {
websocket[wsid].onclose = function() {
console.warn('Closing ' + tlid)
if (mode == 'error') {
$('#notice_icon_' + tlid).addClass('red-text')
@ -539,6 +540,7 @@ function moreload(type, tlid) {
return
}
moreloading = true
console.log('moreloading moreload '+tlid)
localStorage.setItem('now', type)
todo(cap(type) + ' TL MoreLoading')
if (type != 'noauth') {
@ -602,20 +604,20 @@ function moreload(type, tlid) {
}
}
fetch(start, i)
.then(function (response) {
.then(function(response) {
if (!response.ok) {
response.text().then(function (text) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
.then(function(json) {
var mute = getFilterTypeByAcct(acct_id, type)
if (misskey) {
var templete = misskeyParse(json, '', acct_id, tlid, '', mute)
@ -672,6 +674,7 @@ function tlDiff(type, data, acct_id, tlid, delc, voice, mode) {
return
}
moreloading = true
console.log('moreloading tldiff '+tlid)
localStorage.setItem('now', type)
todo(cap(type) + ' TL MoreLoading')
if (type != 'noauth') {
@ -736,20 +739,20 @@ function tlDiff(type, data, acct_id, tlid, delc, voice, mode) {
}
fetch(start, i)
.then(function (response) {
.then(function(response) {
if (!response.ok) {
response.text().then(function (text) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
.then(function(json) {
console.log(['Result diff of TL' + tlid, json])
if (misskey) {
var templete = misskeyParse(json, '', acct_id, tlid, '', mute)
@ -771,7 +774,7 @@ function reloadTL(type, data, acct_id, key, delc, voice) {
//WebSocket切断
function tlCloser() {
Object.keys(websocket).forEach(function (tlid) {
Object.keys(websocket).forEach(function(tlid) {
if (websocketOld[tlid]) {
websocketOld[tlid].close()
console.log('%c Close Streaming API: Old' + tlid, 'color:blue')
@ -783,14 +786,14 @@ function tlCloser() {
}
})
websocket = []
Object.keys(wsHome).forEach(function (tlid) {
Object.keys(wsHome).forEach(function(tlid) {
if (wsHome[tlid]) {
wsHome[tlid].close()
console.log('%c Close Streaming API:Integrated Home' + tlid, 'color:blue')
}
})
wsHome = []
Object.keys(wsLocal).forEach(function (tlid) {
Object.keys(wsLocal).forEach(function(tlid) {
if (wsLocal[tlid]) {
wsLocal[tlid].close()
console.log(
@ -800,13 +803,13 @@ function tlCloser() {
}
})
wsLocal = []
Object.keys(websocketNotf).forEach(function (tlid) {
Object.keys(websocketNotf).forEach(function(tlid) {
if (websocketNotf[tlid]) {
websocketNotf[tlid].close()
console.log('%c Close Streaming API:Notf' + tlid, 'color:blue')
}
})
Object.keys(misskeyws).forEach(function (tlid) {
Object.keys(misskeyws).forEach(function(tlid) {
if (misskeyws[tlid]) {
misskeyws[tlid].close()
console.log('%c Close Streaming API:Misskey' + tlid, 'color:blue')
@ -967,6 +970,7 @@ function typePs(type) {
return 'userList'
}
}
function misskeycom(type, data) {
if (type == 'home') {
return 'timeline'
@ -1022,6 +1026,7 @@ function icon(type) {
}
return response
}
function reconnector(tlid, type, acct_id, data, mode) {
console.log('%c Reconnector:' + mode + '(timeline' + tlid + ')', 'color:pink')
if (type == 'mix' || type == 'integrated' || type == 'plus') {
@ -1051,6 +1056,7 @@ function reconnector(tlid, type, acct_id, data, mode) {
}
M.toast({ html: lang.lang_tl_reconnect, displayLength: 2000 })
}
function columnReload(tlid, type) {
$('#notice_icon_' + tlid).addClass('red-text')
$('#unread_' + tlid + ' .material-icons').removeClass('teal-text')
@ -1105,15 +1111,15 @@ function getMarker(tlid, type, acct_id) {
Authorization: 'Bearer ' + at,
},
})
.then(function (response) {
.then(function(response) {
if (!response.ok) {
response.text().then(function (text) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
.catch(function(error) {
$('#unread_' + tlid).attr(
'title',
lang.lang_layout_unread + ':' + lang.lang_nothing
@ -1121,7 +1127,7 @@ function getMarker(tlid, type, acct_id) {
$('#unread_' + tlid).attr('data-id', '')
return false
})
.then(function (json) {
.then(function(json) {
if (json) {
if (json[add]) {
json = json[add]
@ -1150,6 +1156,7 @@ function getMarker(tlid, type, acct_id) {
}
})
}
function showUnread(tlid, type, acct_id) {
if ($('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) {
goTop(tlid)
@ -1172,20 +1179,20 @@ function showUnread(tlid, type, acct_id) {
Authorization: 'Bearer ' + at,
},
})
.then(function (response) {
.then(function(response) {
if (!response.ok) {
response.text().then(function (text) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
.then(function(json) {
if (!json || !json.length) {
columnReload(tlid, type)
}
@ -1203,6 +1210,7 @@ function showUnread(tlid, type, acct_id) {
})
}
var ueloadlock = false
function ueload(tlid) {
if (ueloadlock) {
return false
@ -1228,20 +1236,20 @@ function ueload(tlid) {
Authorization: 'Bearer ' + at,
},
})
.then(function (response) {
.then(function(response) {
if (!response.ok) {
response.text().then(function (text) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
.then(function(json) {
if (!json) {
columnReload(tlid, type)
}
@ -1259,6 +1267,7 @@ function ueload(tlid) {
ueloadlock = false
})
}
function asRead(callback) {
//Markers
var markers = localStorage.getItem('markers')
@ -1301,7 +1310,7 @@ function asRead(callback) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send(JSON.stringify(poster))
httpreq.onreadystatechange = function () {
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@ -1318,6 +1327,7 @@ function asRead(callback) {
}
}
}
function asReadEnd() {
//Markers
var markers = localStorage.getItem('markers')
@ -1336,8 +1346,8 @@ function asReadEnd() {
onBeforeOpen: () => {
Swal.showLoading()
},
onClose: () => { },
}).then((result) => { })
onClose: () => {},
}).then((result) => {})
} else {
postMessage(['asReadComp', ''], '*')
}
@ -1345,6 +1355,7 @@ function asReadEnd() {
//ブックマーク
function getBookmark(acct_id, tlid, more) {
moreloading = true
console.log('moreloading getbookmark '+tlid)
console.log(acct_id, tlid, more)
if (more) {
var sid = $('#timeline_' + tlid + ' .notif-marker')
@ -1363,7 +1374,7 @@ function getBookmark(acct_id, tlid, more) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function () {
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@ -1395,9 +1406,11 @@ function getBookmark(acct_id, tlid, more) {
}
}
}
function getUtl(acct_id, tlid, data, more) {
moreloading = true
console.log('moreloading getutl '+tlid)
if (more) {
var sid = $('#timeline_' + tlid + ' .cvo')
.last()
@ -1415,7 +1428,7 @@ function getUtl(acct_id, tlid, data, more) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function () {
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
@ -1447,7 +1460,7 @@ function announ(acct_id, tlid) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function () {
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {

View File

@ -21,21 +21,41 @@ function imgv(id, key, acct_id) {
if (remote_img == 'yes') {
murl = ourl
}
$(document).ready(function() {
if (type == 'image') {
$(document).ready(function () {
if (type == 'image') {display_image(murl,id,key)}
else if (type == 'video') {display_video(murl)}
else if (type == 'gifv')
{
if (remote_img == 'no') {display_video(murl)}
else
{
// Need to detect if it's a video or a gif, depends if it came from pleroma or mastodon
// Using extension is a bad idea but w/e
// Actually if it's from mastodon the extension will be mp4.
if (murl.endsWith('.mp4')) {display_video(murl)}
else {display_image(murl,id,key)}
}
}
})
}
function display_image(murl,id,key)
{
$('#imagemodal').modal('open')
imageXhr(id, key, murl)
$('#imagewrap').dragScroll() // ドラッグスクロール設定
$('#imgmodal').show()
$('#imagemodal').attr('data-key', key)
$('#imagemodal').attr('data-id', id)
} else if (type == 'video' || type == 'gifv') {
}
function display_video(murl,id=null,key=null)
{
$('#video').attr('src', murl)
$('#videomodal').modal('open')
$('#imgmodal').show()
}
})
}
//イメージビューワーの送り
function imgCont(type) {
var key = $('#imagemodal').attr('data-key')
@ -47,6 +67,9 @@ function imgCont(type) {
}
var murl = $('#' + id + '-image-' + key).attr('data-url')
var ourl = $('#' + id + '-image-' + key).attr('data-original')
if (!ourl || ourl == 'null') {
ourl = murl
}
var type = $('#' + id + '-image-' + key).attr('data-type')
$('#imagemodal').attr('data-id', id)
$('#imagemodal').attr('data-acct', acct_id)
@ -54,7 +77,7 @@ function imgCont(type) {
$('#imagemodal').attr('data-image', murl)
//表示はリモートを使うか(どちらにしろコピーはオリジナル)
var remote_img = localStorage.getItem('remote_img')
if (remote_img == 'yes' && ourl != 'null') {
if (remote_img == 'yes') {
murl = ourl
}
if (murl) {
@ -62,7 +85,7 @@ function imgCont(type) {
$('#imgsec').text(0)
$('#imgmodal').attr('src', '../../img/loading.svg')
var type = $('#' + id + '-image-' + key).attr('data-type')
$(document).ready(function() {
$(document).ready(function () {
if (type == 'image') {
imageXhr(id, key, murl)
$('#imagewrap').dragScroll() // ドラッグスクロール設定
@ -76,17 +99,29 @@ function imgCont(type) {
}
}
function imageXhr(id, key, murl) {
let time = 0
var startTime = new Date()
const timer = setInterval(function () {
time = time + 1
$('#imgsec').text(time < 5000 ? time : '?')
}, 10)
$('#imgmodal-progress div').removeClass('determinate')
$('#imgmodal-progress div').addClass('indeterminate')
$('#imgmodal-progress').removeClass('hide')
xhr = new XMLHttpRequest()
xhr.open('GET', murl, true)
xhr.responseType = 'arraybuffer'
xhr.addEventListener(
'progress',
function(event) {
function (event) {
if (event.lengthComputable) {
var total = event.total
var now = event.loaded
$('#imgbyte').text(`${Math.floor(now / 1024)}KB/${Math.floor(total / 1024)}`)
var per = (now / total) * 100
$('#imgmodal-progress div').removeClass('indeterminate')
$('#imgmodal-progress div').addClass('determinate')
$('#imgmodal-progress div').css('width', `${per}%`)
$('#imgprog').text(Math.floor(per))
}
},
@ -94,31 +129,35 @@ function imageXhr(id, key, murl) {
)
xhr.addEventListener(
'loadend',
function(event) {
function (event) {
var total = event.total
$('#imgbyte').text(Math.floor(total / 1024))
var now = event.loaded
var per = (now / total) * 100
$('#imgprog').text(Math.floor(per))
$('#imgmodal-progress').addClass('hide')
$('#imgmodal-progress div').css('width', '0%')
$('#imgmodal-progress div').removeClass('determinate')
$('#imgmodal-progress div').addClass('indeterminate')
},
false
)
xhr.addEventListener(
'error',
function(event) {
function (event) {
$('#imgmodal').attr('src', murl)
},
false
)
xhr.onreadystatechange = function() {
xhr.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
r = new FileReader()
r.readAsDataURL(this.response)
r.onload = function() {
r.onload = function () {
var b64 = r.result
var element = new Image()
var width
element.onload = function() {
element.onload = function () {
var width = element.naturalWidth
var height = element.naturalHeight
calcNiceAspect(width, height)
@ -137,6 +176,7 @@ function imageXhr(id, key, murl) {
}
element.src = b64
var endTime = new Date()
clearInterval(timer)
var proctime = endTime.getTime() - startTime.getTime()
$('#imgsec').text(proctime)
$('#imgmodal').attr('src', b64)
@ -146,8 +186,8 @@ function imageXhr(id, key, murl) {
xhr.responseType = 'blob'
xhr.send()
}
function calcNiceAspect( width, height ) {
if(width < 650) {
function calcNiceAspect(width, height) {
if (width < 650) {
width = 650
}
var windowH = $(window).height()
@ -188,11 +228,11 @@ function zoom(z) {
$('#imagewrap img').css('height', hgt + 'px')
}
//スマホ対応ドラッグ移動システム
(function() {
$.fn.dragScroll = function() {
(function () {
$.fn.dragScroll = function () {
var target = this
$(this)
.mousedown(function(event) {
.mousedown(function (event) {
$(this)
.data('down', true)
.data('x', event.clientX)
@ -207,7 +247,7 @@ function zoom(z) {
})
// ウィンドウから外れてもイベント実行
$(document)
.mousemove(function(event) {
.mousemove(function (event) {
if ($(target).data('down') == true) {
// スクロール
target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') - event.clientX)
@ -215,11 +255,11 @@ function zoom(z) {
return false // 文字列選択を抑止
}
})
.mouseup(function(event) {
.mouseup(function (event) {
$(target).data('down', false)
})
$(this)
.on('touchstart', function(event) {
.on('touchstart', function (event) {
$(this)
.data('down', true)
.data('x', getX(event))
@ -232,7 +272,7 @@ function zoom(z) {
overflow: 'hidden', // スクロールバー非表示
cursor: 'move'
}) //指が触れたか検知
$(this).on('touchmove', function(event) {
$(this).on('touchmove', function (event) {
if ($(target).data('down') === true) {
// スクロール
target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') - getX(event))
@ -241,7 +281,7 @@ function zoom(z) {
} else {
}
}) //指が動いたか検知
$(this).on('touchend', function(event) {
$(this).on('touchend', function (event) {
$(target).data('down', false)
})
@ -258,7 +298,7 @@ function getY(event) {
}
//マウスホイールで拡大
var element = document.getElementById('imagemodal')
element.onmousewheel = function(e) {
element.onmousewheel = function (e) {
var delta = e.wheelDelta
if (delta > 0) {
zoom(1.1)
@ -319,10 +359,23 @@ function openFinder(dir) {
postMessage(['openFinder', dir], '*')
}
function stopVideo() {
document.getElementById('video').pause()
video=document.getElementById('video')
video.pause()
video.src=''
//document.getElementById('video').pause()
}
function copyImgUrl() {
var murl = $('#imagemodal').attr('data-original')
execCopy(murl)
M.toast({ html: lang.lang_img_copyDone, displayLength: 1500 })
}
async function copyImgBinary() {
var murl = $('#imagemodal').attr('data-original')
const blob = await (await fetch(murl)).blob()
const reader = new FileReader()
reader.onloadend = function () {
postMessage(['copyBinary', reader.result], '*')
M.toast({ html: lang.lang_imgBin_copyDone, displayLength: 1500 })
}
reader.readAsDataURL(blob)
}

View File

@ -26,12 +26,6 @@ function parseColumn(target, dontclose) {
target = 'zero'
}
console.log('%c Parse column', 'color:red;font-size:125%')
var size = localStorage.getItem('size')
if (size) {
$('#timeline-container').css('font-size', size + 'px')
$('.toot-reset').css('font-size', size + 'px')
$('.cont-series').css('font-size', size + 'px')
}
if (localStorage.getItem('menu-done')) {
$('#fukidashi').addClass('hide')
}
@ -281,7 +275,7 @@ function parseColumn(target, dontclose) {
excludeNotf = excludeNotf + '</div>'
notfDomain = 'dummy'
notfKey = 'dummy'
var excludeHome =''
var excludeHome = ''
} else if (acct.type == 'home') {
var excludeNotf = ''
var excludeHome = `<a onclick="ebtToggle('${key}')" class="setting nex waves-effect">
@ -452,8 +446,20 @@ function parseColumn(target, dontclose) {
<div class="tl-box" tlid="${key}">
<div id="timeline_${key}" class="tl ${acct.type}-timeline " tlid="${key}"
data-type="${acct.type}" data-acct="${acct.domain}" data-const="${acct.type}_${acct.domain}">
<div id="landing_${key}" style="text-align:center">
${lang.lang_layout_nodata}
<div id="landing_${key}" class="landing">
<div class="preloader-wrapper small active " style="margin-top: calc(50vh - 15px)">
<div class="spinner-layer spinner-blue-only">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="gap-patch">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
</div>
</div>
</div>`
@ -636,8 +642,6 @@ function addselCk() {
}
//カラム削除
function removeColumn(tlid) {
$('#sort-box').addClass('hide')
$('#sort-box').removeClass('show')
Swal.fire({
title: lang.lang_layout_deleteColumn,
text: lang.lang_layout_deleteColumnDesc,
@ -659,8 +663,6 @@ function removeColumn(tlid) {
$('#timeline_box_' + tlid + '_parentBox').remove()
}
}
$('#sort-box').removeClass('hide')
$('#sort-box').addClass('show')
})
}

View File

@ -60,11 +60,10 @@ function goTop(id) {
$('#timeline_box_' + id + '_box .tl-box').animate({ scrollTop: 0 })
}
function goColumn(key) {
$('#sort-box').addClass('hide')
$('#sort-box').removeClass('show')
if ($('[tlid=' + key + ']').length) {
$('#timeline-container').animate({
scrollLeft: $('#timeline-container').scrollLeft() + $('[tlid=' + key + ']').offset().left
})
}
sortLoad()
}

View File

@ -1,19 +1,24 @@
//設定(setting.html)で読む
var envView = new Vue({
el: '#envView',
data: { config: envConstruction },
const envView = Vue.createApp({
data() {
return {
config: envConstruction
}
},
methods: {
complete: function (i, val) {
var ls = envView.config[i]
var ls = this.config[i]
let header = ls.text.head
if (!ls.data) {
ls = [ls]
} else {
ls = ls.data
}
console.log(ls)
for (var j = 0; j < ls.length; j++) {
var id = ls[j].id
localStorage.setItem(ls[j].storage, val)
var lsi = ls[j]
if (!val || j > 0) val = lsi.setValue
localStorage.setItem(lsi.storage, val)
}
if (ls[0].id == 'ha') {
hardwareAcceleration(val)
@ -27,17 +32,19 @@ var envView = new Vue({
if (ls[0].id == 'frame') {
frameSet(val)
}
if (ls[0].id == 'size') {
$('html,body').css('font-size', `${val}px`)
}
M.toast({ html: `Updated: ${header}`, displayLength: 3000 })
return true
},
},
})
var tlView = new Vue({
el: '#tlView',
data: { config: tlConstruction },
}).mount('#envView')
const tlView = Vue.createApp({
data() { return { config: tlConstruction } },
methods: {
complete: function (i, val) {
var ls = tlView.config[i]
var ls = this.config[i]
let header = ls.text.head
if (val) {
localStorage.setItem(ls.storage, val)
@ -57,17 +64,18 @@ var tlView = new Vue({
return true
},
},
})
var postView = new Vue({
el: '#postView',
data: {
}).mount('#tlView')
const postView = Vue.createApp({
data() {
return {
config: postConstruction,
kirishima: localStorage.getItem('kirishima'),
quoters: localStorage.getItem('quoters'),
}
},
methods: {
complete: function (i, val) {
var ls = postView.config[i]
var ls = this.config[i]
let header = ls.text.head
if (val) {
localStorage.setItem(ls.storage, val)
@ -88,7 +96,7 @@ var postView = new Vue({
return true
},
},
})
}).mount('#postView')
//設定ボタン押した。
function settings() {
var fontd = $('#font').val()
@ -185,6 +193,7 @@ function load() {
//$("#log").val(localStorage.getItem("errors"))
$('#lastFmUser').val(localStorage.getItem('lastFmUser'))
}
function customVol() {
var cvol = $('#soundvol').val()
$('#soundVolVal').text(cvol)
@ -241,6 +250,7 @@ function climute() {
})
}
}
function cliMuteDel(key) {
var cli = localStorage.getItem('client_mute')
var obj = JSON.parse(cli)
@ -260,6 +270,7 @@ function wordmute() {
data: obj,
})
}
function wordmuteSave() {
var word = M.Chips.getInstance($('#wordmute')).chipsData
var json = JSON.stringify(word)
@ -276,11 +287,13 @@ function wordemp() {
data: obj,
})
}
function wordempSave() {
var word = M.Chips.getInstance($('#wordemp')).chipsData
var json = JSON.stringify(word)
localStorage.setItem('word_emp', json)
}
function notftest() {
var os = localStorage.getItem('platform')
var options = {
@ -289,11 +302,13 @@ function notftest() {
}
var n = new Notification('TheDesk' + lang.lang_setting_notftest, options)
}
function oks(no) {
var txt = $('#oks-' + no).val()
localStorage.setItem('oks-' + no, txt)
M.toast({ html: lang.lang_setting_ksref, displayLength: 3000 })
}
function oksload() {
if (localStorage.getItem('oks-1')) {
$('#oks-1').val(localStorage.getItem('oks-1'))
@ -305,11 +320,13 @@ function oksload() {
$('#oks-3').val(localStorage.getItem('oks-3'))
}
}
function changeLang() {
const lang = $('#langsel-sel').val()
console.log(lang)
if (lang) postMessage(['lang', lang], '*')
}
function exportSettings() {
var exp = exportSettingsCore()
$('#imp-exp').val(JSON5.stringify(exp))
@ -326,6 +343,7 @@ function exportSettings() {
}
})
}
function exportSettingsCore() {
var exp = {}
//Accounts
@ -391,6 +409,7 @@ function exportSettingsCore() {
exp.meta.platform = localStorage.getItem('platform')
return exp
}
function importSettings() {
Swal.fire({
title: 'Warning',
@ -409,6 +428,7 @@ function importSettings() {
}
})
}
function importSettingsCore(obj) {
if (obj) {
localStorage.clear()
@ -502,13 +522,20 @@ function importSettingsCore(obj) {
})
}
}
function savefolder() {
postMessage(['sendSinmpleIpc', 'savefolder'], '*')
}
function font() {
if ($('#fonts').hasClass('hide')) {
postMessage(['sendSinmpleIpc', 'fonts'], '*')
$('#fonts').removeClass('hide')
} else {
$('#fonts').addClass('hide')
}
}
function fontList(arg) {
$('#fonts').removeClass('hide')
for (var i = 0; i < arg.length; i++) {
@ -516,16 +543,14 @@ function fontList(arg) {
$('#fonts').append('<div class="font pointer" style="font-family:' + font + '" onclick="insertFont(\'' + font + '\')">' + font + '</div>')
}
}
function insertFont(name) {
$('#fonts').addClass('hide')
$('#font').val(name)
}
function copyColor(from, to) {
let props = [
'background', 'subcolor', 'text', 'accent',
'modal', 'modalFooter', 'third', 'forth',
'bottom', 'emphasized', 'postbox', 'active',
'selected', 'selectedWithShared'
]
let props = ['background', 'subcolor', 'text', 'accent', 'modal', 'modalFooter', 'third', 'forth', 'bottom', 'emphasized', 'postbox', 'active', 'selected', 'selectedWithShared']
let i = 0
let color
for (tag of props) {
@ -553,6 +578,7 @@ function copyColor(from, to) {
i++
}
}
function customComp(preview) {
var nameC = $('#custom_name').val()
if (!nameC && !preview) {
@ -564,11 +590,7 @@ function customComp(preview) {
var textC = $('#color-picker1_value').val()
var accentC = $('#color-picker3_value').val()
var multi = localStorage.getItem('multi')
let advanced = [
'modal', 'modalFooter', 'third', 'forth',
'bottom', 'emphasized', 'postbox', 'active',
'selected', 'selectedWithShared'
]
let advanced = ['modal', 'modalFooter', 'third', 'forth', 'bottom', 'emphasized', 'postbox', 'active', 'selected', 'selectedWithShared']
var advanceTheme = {}
let i = 4
for (tag of advanced) {
@ -581,9 +603,7 @@ function customComp(preview) {
var my = JSON.parse(multi)[0].name
var id = $('#custom-edit-sel').val()
const defaults = [
'black', 'blue', 'brown', 'green', 'indigo', 'polar', 'snow', 'white'
]
const defaults = ['black', 'blue', 'brown', 'green', 'indigo', 'polar', 'snow', 'white']
if (id == 'add_new' || defaults.includes(id)) {
id = makeCID()
}
@ -597,11 +617,11 @@ function customComp(preview) {
background: bgC,
subcolor: subcolorC,
text: textC,
accent: accentC
accent: accentC,
},
advanced: advanceTheme,
id: id,
version: '2'
version: '2',
}
$('#custom_json').val(JSON.stringify(json))
if (preview) {
@ -615,8 +635,8 @@ function customComp(preview) {
})
postMessage(['themeJsonCreate', JSON.stringify(json)], '*')
}
}
function deleteIt() {
var id = $('#custom-sel-sel').val()
$('#custom_name').val('')
@ -629,9 +649,11 @@ function deleteIt() {
}
postMessage(['themeJsonDelete', id + '.thedesktheme'], '*')
}
function ctLoad() {
postMessage(['sendSinmpleIpc', 'theme-json-list'], '*')
}
function ctLoadCore(args) {
var template = ''
var editTemplate = ''
@ -682,16 +704,11 @@ function customConnect(raw) {
$('#color-picker2_value').val(args.primary.subcolor)
//Accent
$('#color-picker3_value').val(args.primary.accent)
let advanced = [
'modal', 'modalFooter', 'third', 'forth',
'bottom', 'emphasized', 'postbox', 'active',
'selected', 'selectedWithShared'
]
let advanced = ['modal', 'modalFooter', 'third', 'forth', 'bottom', 'emphasized', 'postbox', 'active', 'selected', 'selectedWithShared']
let i = 4
for (tag of advanced) {
if (args.advanced[tag]) {
$(`#color-picker${i}_value`).val(args.advanced[tag])
}
$(`#use-color_${i}`).prop('checked', true)
i++
@ -737,7 +754,7 @@ function customSoundSave(key, file) {
}
function pluginLoad() {
$('#plugin-edit-sel').val('add_new')
$(".plugin_delete").addClass('disabled')
$('.plugin_delete').addClass('disabled')
var template = ''
var pgns = localStorage.getItem('plugins')
var args = JSON.parse(pgns ? pgns : '[]')
@ -755,9 +772,9 @@ function pluginEdit() {
$('#plugin').attr('data-id', id)
if (id == 'add_new') {
editor.setValue('', -1)
$(".plugin_delete").addClass('disabled')
$('.plugin_delete').addClass('disabled')
} else {
$(".plugin_delete").removeClass('disabled')
$('.plugin_delete').removeClass('disabled')
var pgns = localStorage.getItem('plugins')
var args = JSON.parse(pgns ? pgns : '[]')
Object.keys(args).forEach(function (key) {
@ -795,7 +812,7 @@ function completePlugin(comp) {
id = makeCID()
args.push({
id: id,
content: inputPlugin
content: inputPlugin,
})
} else {
Object.keys(args).forEach(function (key) {
@ -826,12 +843,12 @@ function testExecTrg() {
testExec(inputPlugin)
}
async function deletePlugin() {
const alert = await Swal.fire({
const delIsIt = await Swal.fire({
title: 'delete',
icon: 'warning',
showCancelButton: true
showCancelButton: true,
})
if (!alert) return false
if (!delIsIt.isConfirmed) return false
editor.setValue('', -1)
var pgns = localStorage.getItem('plugins')
var args = JSON.parse(pgns ? pgns : '[]')
@ -931,4 +948,6 @@ function lastFmSet() {
M.toast({ html: 'Complete: last.fm', displayLength: 3000 })
}
function stopVideo() { return false }
function stopVideo() {
return false
}

View File

@ -1,40 +1,62 @@
//ユーザーデータ表示
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]
if (mode == "user") {
udgEx(codex, "main")
if (mode == 'user') {
udgEx(codex, 'main')
}
}
function udgEx(user, acct_id) {
if (user == "selector") {
user = $("#his-acct").attr("fullname")
async function udgEx(user, acct_id) {
if (user == 'selector') {
user = $('#his-acct').attr('fullname')
}
if (acct_id == "selector") {
acct_id = $("#user-acct-sel").val()
if (acct_id == 'selector') {
acct_id = $('#user-acct-sel').val()
}
if (acct_id == "main") {
acct_id = localStorage.getItem("main")
if (acct_id == 'main') {
acct_id = localStorage.getItem('main')
}
console.log("Get user data of " + user)
var domain = localStorage.getItem("domain_" + acct_id)
if (localStorage.getItem("mode_" + domain) == "misskey") {
console.log('Get user data of ' + user)
var domain = localStorage.getItem('domain_' + acct_id)
if (localStorage.getItem('mode_' + domain) == 'misskey') {
return false
}
var at = localStorage.getItem("acct_" + acct_id + "_at")
var start = "https://" + domain + "/api/v2/search?resolve=true&q=" + encodeURIComponent(user)
fetch(start, {
method: "GET",
headers: {
"content-type": "application/json",
Authorization: "Bearer " + at
var at = localStorage.getItem('acct_' + acct_id + '_at')
var data = await acctResolve(acct_id, user)
if (data.id) {
var { id } = data
udg(id, acct_id, true)
} else {
Swal.close()
postMessage(['openUrl', user], '*')
}
return true
var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + encodeURIComponent(user)
Swal.fire({
title: 'Loading...',
html: lang.lang_details_fetch,
showConfirmButton: false,
showCloseButton: true,
onBeforeOpen: () => {
Swal.showLoading()
},
onClose: () => { },
}).then((result) => { })
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at,
},
})
.then(function (response) {
if (!response.ok) {
Swal.close()
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
@ -43,81 +65,85 @@ function udgEx(user, acct_id) {
})
.catch(function (error) {
todo(error)
setLog(start, "JSON", 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)
udg(id, acct_id, true)
} else {
postMessage(["openUrl", user], "*")
Swal.close()
postMessage(['openUrl', user], '*')
}
})
return true
}
function udg(user, acct_id) {
async function udg(user, acct_id, isSwal) {
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)
if (localStorage.getItem("mode_" + domain) == "misskey") {
todo('User Data Loading...')
var domain = localStorage.getItem('domain_' + acct_id)
if (localStorage.getItem('mode_' + domain) == 'misskey') {
misskeyUdg(user, acct_id)
return
}
var at = localStorage.getItem("acct_" + acct_id + "_at")
var start = "https://" + domain + "/api/v1/accounts/" + user
fetch(start, {
method: "GET",
const at = localStorage.getItem('acct_' + acct_id + '_at')
const start = 'https://' + domain + '/api/v1/accounts/' + user
const response = await fetch(start, {
method: 'GET',
headers: {
"content-type": "application/json",
Authorization: "Bearer " + at
}
'content-type': 'application/json',
Authorization: 'Bearer ' + at,
},
})
.then(function (response) {
if (isSwal) Swal.close()
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) {
const json = await response.json()
//一つ前のユーザーデータ
if (!localStorage.getItem("history")) {
$("#his-history-btn").prop("disabled", true)
if (!localStorage.getItem('history')) {
$('#his-history-btn').prop('disabled', true)
} else {
$("#his-history-btn").prop("disabled", false)
$("#his-data").attr("history", localStorage.getItem("history"))
$('#his-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
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)
if (json.limited) {
const limitedCheck = await Swal.fire({
title: lang.lang_showontl_limited_title,
text: lang.lang_showontl_limited,
icon: 'info',
showCancelButton: true
})
if (!limitedCheck.isConfirmed) return false
}
$('#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")
$('#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)
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)
@ -133,7 +159,7 @@ function udg(user, acct_id) {
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")
var regExp = new RegExp(':' + shortcode + ':', 'g')
dis_name = dis_name.replace(regExp, emoji_url)
note = note.replace(regExp, emoji_url)
})
@ -143,106 +169,116 @@ function udg(user, acct_id) {
//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)
$("#util-add").removeClass("hide")
$('#his-name').html(dis_name)
$('#his-acct').text(json.acct)
$('#his-acct').attr('fullname', fullname)
$('#his-prof').attr('src', json.avatar)
$('#util-add').removeClass('hide')
const title = $('.column-first').html()
$("#my-data-nav .anc-link").removeClass("active-back")
$('.column-first').addClass("active-back")
$('#my-data-nav .anc-link').removeClass('active-back')
$('.column-first').addClass('active-back')
$('#his-data-title').html(title)
$("#his-data").css("background-image", "url(" + json.header + ")")
$("#his-sta").text(json.statuses_count)
$("#his-follow").text(json.following_count)
$('#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")
$('#his-des').css('max-height', '196px')
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
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").removeClass("hide")
$('#his-bot').html(lang.lang_showontl_botacct)
$('#his-bot').removeClass('hide')
}
$("#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)
if (json.acct == localStorage.getItem('user_' + acct_id)) {
showFav('', acct_id)
showBlo('', acct_id)
showMut('', acct_id)
showDom('', acct_id)
showReq('', acct_id)
showFrl('', acct_id)
$('#his-name-val').val(json.display_name)
if (json.fields.length > 0) {
if (json.fields[0]) {
$("#his-f1-name").val(json.fields[0].name)
$("#his-f1-val").val($.strip_tags(json.fields[0].value))
$('#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 = 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-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()
}
} else {
relations(user, acct_id)
$(".only-my-data").hide()
$(".only-his-data").show()
$('.only-my-data').hide()
$('.only-his-data').show()
}
todc()
if (json.locked) {
@ -252,30 +288,30 @@ function udg(user, acct_id) {
}
//外部データ取得(死かもしれないので)
udAdd(acct_id, user, json.url)
})
}
function misskeyUdg(user, acct_id) {
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)
if (localStorage.getItem("mode_" + domain) != "misskey") {
todo('User Data Loading...')
var domain = localStorage.getItem('domain_' + acct_id)
if (localStorage.getItem('mode_' + domain) != 'misskey') {
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",
method: 'POST',
headers: {
"content-type": "application/json"
'content-type': 'application/json',
},
body: JSON.stringify({
i: at,
userId: user
})
userId: user,
}),
})
.then(function (response) {
if (!response.ok) {
@ -287,126 +323,126 @@ function misskeyUdg(user, acct_id) {
})
.catch(function (error) {
todo(error)
setLog(start, "JSON", error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
//一つ前のユーザーデータ
if (!localStorage.getItem("history")) {
$("#his-history-btn").prop("disabled", true)
if (!localStorage.getItem('history')) {
$('#his-history-btn').prop('disabled', true)
} else {
$("#his-history-btn").prop("disabled", false)
$("#his-data").attr("history", localStorage.getItem("history"))
$('#his-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)
} else {
var dis_name = json.name
}
$("#his-name").html(dis_name)
$("#his-acct").text(json.username)
$("#his-acct").attr("fullname", fullname)
$("#his-prof").attr("src", json.avatarUrl)
$("#his-data").css("background-image", "url(" + json.bannerUrl + ")")
$("#his-sta").text(json.notesCount)
$("#his-follow").text(json.followingCount)
$("#his-follower").text(json.followersCount)
$("#his-since").text(crat(json.createdAt))
$('#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-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) {
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)
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-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()
}
} else {
if (json.isFollowing) {
//自分がフォローしている
$("#his-data").addClass("following")
$("#his-follow-btn-text").text(lang.lang_status_unfollow)
$('#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()
})
}
//一つ前のユーザーデータ表示
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)
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",
method: 'GET',
headers: {
"content-type": "application/json",
Authorization: "Bearer " + at
}
'content-type': 'application/json',
Authorization: 'Bearer ' + at,
},
})
.then(function (response) {
if (!response.ok) {
@ -418,7 +454,7 @@ function relations(user, acct_id) {
})
.catch(function (error) {
todo(error)
setLog(start, "JSON", error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
@ -426,148 +462,151 @@ function relations(user, acct_id) {
if (json.requested) {
//フォロリク中
$('#his-data').addClass('following')
$("#his-follow-btn-text").text(lang.lang_status_requesting)
$('#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)
$('#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)
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")
$('#his-data').modal('close')
reset()
$("#his-data").attr("history", "")
localStorage.removeItem("history")
$('#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-bot").addClass("hide")
$("#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-bot').addClass('hide')
$('#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")
$('#my-data-nav .anc-link').on('click', function () {
var target = $(this).attr('go')
if (target) {
let title = $(this).html()
if (target === '#his-tl') $("#util-add").removeClass("hide")
if (target != '#his-tl') $("#util-add").addClass("hide")
if (target === '#his-tl') $('#util-add').removeClass('hide')
if (target != '#his-tl') $('#util-add').addClass('hide')
$('#his-data-title').html(title)
$("#my-data-nav .anc-link").removeClass("active-back")
$(this).addClass("active-back")
$('#my-data-nav .anc-link').removeClass('active-back')
$(this).addClass('active-back')
$(target).show()
$(".his-var-content:not(" + target + ")").hide()
$('.his-var-content:not(' + target + ')').hide()
}
})

View File

@ -29,14 +29,10 @@ if (!gotTheLock) {
} else {
app.on('second-instance', (event, commandLine, workingDirector) => {
opening = false
const m = commandLine[2].match(/([a-zA-Z0-9]+)\/\?[a-zA-Z-0-9]+=(.+)/)
const m = commandLine[2].match(/([a-zA-Z0-9]+)\/?\?[a-zA-Z-0-9]+=(.+)/)
if (m) {
mainWindow.send('customUrl', [m[1], m[2]])
}
if (mainWindow) {
if (mainWindow.isMinimized()) mainWindow.restore()
mainWindow.focus()
}
})
}
@ -45,6 +41,13 @@ app.on('window-all-closed', function () {
electron.session.defaultSession.clearCache(() => { })
app.quit()
})
app.on('open-url', function (event, url) {
event.preventDefault()
const m = url.match(/([a-zA-Z0-9]+)\/?\?[a-zA-Z-0-9]+=(.+)/)
if (m) {
mainWindow.send('customUrl', [m[1], m[2]])
}
})
function isFile(file) {
try {
fs.statSync(file)
@ -55,6 +58,7 @@ function isFile(file) {
}
function createWindow() {
var lang_path = join(app.getPath('userData'), 'language')
console.log(lang_path)
if (isFile(lang_path)) {
var lang = fs.readFileSync(lang_path, 'utf8')
} else {
@ -167,6 +171,7 @@ function createWindow() {
nodeIntegration: false,
contextIsolation: true,
spellcheck: false,
sandbox: false,
preload: join(__dirname, 'js', 'platform', 'preload.js'),
},
width: window_size.width,

View File

@ -26,7 +26,7 @@ function img(mainWindow, dir) {
for (var i = 0; i < fileNames.length; i++) {
var path = fileNames[i]
var bin = fs.readFileSync(path, 'base64')
e.sender.send('resizeJudgement', [bin, 'new'])
e.sender.send('resizeJudgement', [bin, 'new', fileNames[i]])
}
})
ipc.on('bmp-image', (e, args) => {

View File

@ -1,3 +1,5 @@
const { shell } = require('electron')
function system(mainWindow, dir, lang, dirname) {
const electron = require('electron')
const app = electron.app
@ -7,6 +9,7 @@ function system(mainWindow, dir, lang, dirname) {
var JSON5 = require('json5')
var ipc = electron.ipcMain
const clipboard = electron.clipboard
const nativeImage = electron.nativeImage
var tmp_img = join(app.getPath('userData'), 'tmp.png')
var ha_path = join(app.getPath('userData'), 'hardwareAcceleration')
var wv_path = join(app.getPath('userData'), 'webview')
@ -143,6 +146,9 @@ function system(mainWindow, dir, lang, dirname) {
ipc.on('about', (e, args) => {
about()
})
ipc.on('openUrl', function (event, arg) {
shell.openExternal(arg)
})
function about() {
var ver = app.getVersion()
var window = new BrowserWindow({
@ -150,7 +156,9 @@ function system(mainWindow, dir, lang, dirname) {
webviewTag: false,
nodeIntegration: false,
contextIsolation: true,
preload: join(dirname, 'js', 'platform', 'preload.js'),
spellcheck: false,
sandbox: false,
preload: join(__dirname, 'js', 'platform', 'preload.js'),
},
width: 300,
height: 500,
@ -174,6 +182,7 @@ function system(mainWindow, dir, lang, dirname) {
webviewTag: false,
nodeIntegration: false,
contextIsolation: true,
sandbox: false,
preload: join(dirname, 'js', 'platform', 'preload.js'),
},
width: 350,
@ -255,6 +264,10 @@ function system(mainWindow, dir, lang, dirname) {
ipc.on('copy', (e, arg) => {
clipboard.writeText(arg)
})
ipc.on('copyBinary', (e, arg) => {
const ni = nativeImage.createFromDataURL(arg)
clipboard.writeImage(ni)
})
//ログ
ipc.on('log', (e, arg) => {
var today = new Date()
@ -316,6 +329,7 @@ function system(mainWindow, dir, lang, dirname) {
webviewTag: false,
nodeIntegration: false,
contextIsolation: true,
sandbox: false,
preload: join(dirname, 'js', 'platform', 'preload.js'),
},
width: 414,
@ -332,5 +346,12 @@ function system(mainWindow, dir, lang, dirname) {
}
})
})
function trust_insecure(event, webContents, url, error, certificate, callback)
{
if (url.startsWith('^')) // TODO: Load this from a conf file/option for each account, whatever.
{ event.preventDefault(); callback(true)}
else { callback(false) }
}
//app.on('certificate-error',trust_insecure)
}
exports.system = system

View File

@ -86,6 +86,9 @@
.voice {
display: none;
}
.contextMenu {
display: none;
}
</style>
</head>
@ -145,14 +148,18 @@
var lang = "ja";
}
</script>
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
<script src="https://energised.harpy.faith/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="./node_modules/lodash/lodash.min.js"></script>
<script type="text/javascript" src="./js/platform/first.js"></script>
<script type="text/javascript" src="./js/platform/plugin.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>
<script type="text/javascript" src="./js/platform/native.js"></script>
<script type="text/javascript" src="./js/tl/parse.js"></script>
<script type="text/javascript" src="./js/ui/theme.js"></script>
<script type="text/javascript" src="./js/tl/date.js"></script>
<script type="text/javascript" src="./js/tl/card.js"></script>
<script type="text/javascript" src="./js/common/time.js"></script>
<script type="text/javascript" src="./js/platform/nano.js"></script>
<script type="text/javascript" src="./js/platform/end.js"></script>

View File

@ -1,5 +1,7 @@
const { AiScript, parse, values, utils } = require('@syuilo/aiscript')
const gcc = require('textarea-caret')
const { v4: uuidv4 } = require('uuid')
global.uuid = uuidv4
global.getCaretCoordinates = gcc
global.sanitizeHtml = require('sanitize-html')
global.asValue = values

View File

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

View File

@ -1,7 +1,7 @@
{
"name": "thedesk",
"version": "22.2.0",
"codename": "Koume",
"version": "23.0.3",
"codename": "Chieri",
"description": "TheDesk is a Mastodon client for PC.",
"repository": "https://github.com/cutls/TheDesk",
"main": "main.js",
@ -9,7 +9,7 @@
"test": "echo \"Error: no test specified\" && exit 1",
"postinstall": "run-s util:*",
"util:hash": "node gitHash.js",
"util:browserify": "browserify aiscript.js -o js/platform/aiscript.js",
"util:browserify": "browserify native.js -o js/platform/native.js",
"construct": "node view/make/makeCli.js",
"construct:store": "node view/make/makeCli.js --store",
"dev": "run-p dev:*",
@ -18,7 +18,7 @@
"build": "node buildCli.js",
"build:pwa": "node view/make/makeCli.js --pwa",
"build:all:x64": "node buildCli.js --withStore",
"build:all": "node buildCli.js --withStore --withIa32 --withArm64",
"build:all": "node buildCli.js --withStore --withX64 --withIa32 --withArm64",
"lint:fix": "eslint js --fix",
"lint": "eslint js"
},
@ -57,36 +57,40 @@
],
"license": "GPL-3.0",
"dependencies": {
"@fortawesome/fontawesome-free": "^5.15.2",
"@cutls/materialize-css": "1.0.0",
"@fortawesome/fontawesome-free": "^6.2.1",
"@syuilo/aiscript": "^0.11.1",
"electron-dl": "^3.2.1",
"electron-dl": "^3.4.0",
"itunes-nowplaying-mac": "https://github.com/cutls/itunes-nowplaying-mac/releases/download/v0.4.0/itunes-nowplaying-mac-0.4.0.tgz",
"jimp": "^0.16.1",
"jquery": "^3.6.0",
"jquery-ui-dist": "^1.12.1",
"json5": "^2.2.0",
"jimp": "^0.16.2",
"jquery": "^3.6.1",
"jquery-ui-dist": "^1.13.2",
"json5": "^2.2.1",
"lodash": "^4.17.21",
"materialize-css": "git://github.com/cutls/materialize#v1-dev",
"sanitize-html": "^2.3.2",
"sanitize-html": "^2.7.2",
"sumchecker": "^3.0.1",
"sweetalert2": "^10.15.7",
"system-font-families": "^0.4.1",
"sweetalert2": "^11.6.15",
"system-font-families": "^0.6.0",
"textarea-caret": "^3.1.0",
"vue": "^2.6.12"
"uuid": "^9.0.0",
"vue": "^3.2.45"
},
"devDependencies": {
"@electron/notarize": "^1.2.3",
"browserify": "^17.0.0",
"chokidar": "^3.5.1",
"dotenv": "^8.2.0",
"electron": "^12.0.2",
"electron-builder": "^22.10.5",
"electron-notarize": "^1.0.0",
"electron-rebuild": "^2.3.5",
"eslint": "^7.23.0",
"chokidar": "^3.5.3",
"dotenv": "^16.0.3",
"electron": "^22.0.0",
"electron-builder": "^23.2.0",
"electron-rebuild": "^3.2.9",
"eslint": "^8.25.0",
"npm-run-all": "^4.1.5",
"readline-sync": "1.4.10"
},
"resolutions": {
"@types/fs-extra": "9.0.11"
"@types/fs-extra": "^9.0.11",
"plist": "^3.0.5",
"minimist": "^1.2.6",
"got": "^11.8.5"
}
}

View File

@ -1,5 +1,14 @@
{
"latest":[],
"4.0.0": [
"トゥートの翻訳"
],
"3.5.0": [
"投稿の編集",
"トレンドタグ・投稿"
],
"3.3.0": [
"ミュートの継続時間設定"
],
"3.2.0": [],
"3.1.5": [],
"3.1.4": [

View File

@ -5,29 +5,27 @@
<title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
<link href="../../css/themes.css" type="text/css" rel="stylesheet">
<link href="../../@@node_base@@/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="../../@@node_base@@/@cutls/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="../../css/master.css" type="text/css" rel="stylesheet" />
<link href="../../css/tl.css" rel="stylesheet" type="text/css" />
<link href="../../css/userdata.css" rel="stylesheet" type="text/css" />
<link href="../../@@node_base@@/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="../../css/sweetalert2-material.min.css" type="text/css" rel="stylesheet">
<link href="../../css/sweetalert2-material.css" type="text/css" rel="stylesheet">
<link href="../../css/acct.css" rel="stylesheet" type="text/css" />
<meta charset="utf-8" />
@@comment-start@@
<meta charset="utf-8" /> @@comment-start@@
<script type="text/javascript">
var _jipt = []
_jipt.push(['project', 'thedesk'])
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
@@comment-end@@
@@pwa@@ @@store@@
@@comment-end@@ @@pwa@@ @@store@@
</head>
<body id="mainView" class="@@pwaClass@@">
<script type="text/javascript" src="../../@@node_base@@/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../@@node_base@@/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../@@node_base@@/@cutls/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="main.js"></script>
<script type="text/javascript" src="../../@@node_base@@/sweetalert2/dist/sweetalert2.min.js"></script>
<script>
@ -57,8 +55,9 @@
<label for="autocomplete-input">URL</label>
</div>
<div class="col s4 loginBtnWrap">
<button class="btn waves-effect" onclick="instance()"><i
class="material-icons left">login</i>Login</button>
<button class="btn waves-effect" id="loginBtn" onclick="instance()">
<i class="material-icons left">login</i>Login
</button>
</div>
</div>
@ -82,6 +81,7 @@
</div>
<div id="auth" style="display:none">
@@codepastewarn@@<br />
<a onclick="backToInit()" class="pointer">@@redo@@</a>
<input type="text" id="code" placeholder="@@codepaste@@" required />
<button class="btn waves-effect" onclick="code()">Auth</button><br />
<br />
@ -89,8 +89,7 @@
<div id="compt" style="display:none" class="scr">
<h5>ログイン前に必ずご確認ください</h5>
<span id="compt-instance"></span>はバージョンが<span id="compt-ver"></span>のため以下の機能がご利用いただけません。
<span id="compt-warn"
style="display:none">また、このインスタンスはMastodonではなくそのAPI上の互換実装であり、TheDeskでは利用を想定していないため非保証となります。</span>
<span id="compt-warn" style="display:none">また、このインスタンスはMastodonではなくそのAPI上の互換実装であり、TheDeskでは利用を想定していないため非保証となります。</span>
<ul id="compt-list"></ul>
</div>
</div>
@ -117,16 +116,17 @@
Some instance data by
<a href="https://instances.social" target="_blank">instances.social API</a><br />
<h5 id="ins-title"></h5>
Administered by:<a id="ins-admin"></a><br />
Administered by:
<a id="ins-admin"></a><br />
<span id="ins-desc"></span><br />
<img src="../../img/loading.svg" id="ins-prof" width="200" /><br />
<br />
@@domain@@:<span id="ins-name"></span><br />
@@connect@@:<span id="ins-connect"></span>@@ko@@<br />
@@toots@@:<span id="ins-toot"></span>@@ko@@<br />
@@users@@:<span id="ins-user"></span>@@users@@<br />
@@safety@@:<span id="ins-per"></span>%<br />
@@ver@@:<span id="ins-ver"></span>@<span id="ins-upd"></span><br />
<br /> @@domain@@:
<span id="ins-name"></span><br /> @@connect@@:
<span id="ins-connect"></span>@@ko@@<br /> @@toots@@:
<span id="ins-toot"></span>@@ko@@<br /> @@users@@:
<span id="ins-user"></span>@@users@@<br /> @@safety@@:
<span id="ins-per"></span>%<br /> @@ver@@:
<span id="ins-ver"></span>@<span id="ins-upd"></span><br />
</div>
</div>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
@ -137,7 +137,9 @@
<script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/manager.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>
<script>$('body').addClass(localStorage.getItem('platform'))</script>
<script>
$('body').addClass(localStorage.getItem('platform'))
</script>
</body>

View File

@ -0,0 +1,56 @@
<!--bottom-->
<div id="bottom" class="reverse hide">
<div class="leftside reverse">
<div id="dambox">
<button id="posttgl" class="btn waves-effect" style="width: 100%; height: 2.5rem; line-height: 0; margin: 0">
<i class="material-icons" style="position: relative; top: 0.38rem; font-size: 1.5rem; text-align: center; margin-right: 0.76rem">edit</i>@@toot@@
</button>
</div>
<div class="leftside reverse" id="group">
<div class="btnsgroup">
<a href="acct.html" class="nex waves-effect">
<i class="material-icons nex big-icon" title="@@acctMan@@(Ctrl+Shift+M)">account_circle</i>
</a>
<a href="setting.html" class="nex waves-effect">
<i class="material-icons nex" title="@@setting@@(Ctrl+Shift+S)">settings</i>
</a>
<a onclick="nano()" class="nex waves-effect pwa">
<i class="material-icons" title="@@nanoDes@@TheDesk Nano" data-trans-title="nano_desp">remove_from_queue</i>
</a>
<a onclick="menu()" class="nex waves-effect">
<i class="material-icons" title="@@menu@@">apps</i>
</a>
<span id="fukidashi">@@hereAddColumns@@</span>
</div>
<a href="https://thedesk.top/bugs/?lang=@@lang@@" target="_blank" class="waves-effect bgReport" draggable="false" title="Feeling unlucky"> @@foundBug@@ </a>
</div>
</div>
<div>
<div id="tips-menu">
<div class="btnsgroup" style="height: 2.61rem">
<span class="grouptitle">Tips:</span>
<a onclick="tips('ver')" class="nex waves-effect">
<i class="material-icons nex" title="@@verTips@@" data-trans-title="ver">info</i>
</a>
<a onclick="tips('clock')" class="nex waves-effect">
<i class="material-icons nex" title="@@clockTips@@" data-trans-title="clock">access_time</i>
</a>
<a onclick="tips('memory')" class="nex waves-effect pwa">
<i class="material-icons nex" title="@@ramTips@@" data-trans-title="memory">memory</i>
</a>
<a onclick="tips('trend')" class="nex waves-effect imasonly" style="display: none">
<i class="material-icons nex" title="アイマストドントレンド" data-trans-title="trendtip">whatshot</i>
</a>
<a onclick="tips('spotify')" class="nex waves-effect">
<i class="fab fa-spotify nex" title="Spotify" data-trans-title="spotifytips"></i>
</a>
</div>
</div>
<div id="tips" class="hide">
<a onclick="tipsToggle()" class="nex waves-effect">
<i class="material-icons nex" title="@@changeTips@@" data-trans-title="tips">bubble_chart</i>
</a>
<div id="tips-text" style="width: 23rem; line-height: 1rem"></div>
</div>
</div>
</div>

View File

@ -0,0 +1,121 @@
<!DOCTYPE html>
<html lang="@@lang@@">
<head>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
<link href="../../css/themes.css" type="text/css" rel="stylesheet" />
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
<link href="../../@@node_base@@/@cutls/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="../../@@node_base@@/jquery-ui-dist/jquery-ui.min.css" type="text/css" rel="stylesheet" />
<link href="../../css/tl.css" rel="stylesheet" type="text/css" />
<link href="../../css/userdata.css" rel="stylesheet" type="text/css" />
<link href="../../css/post.css" rel="stylesheet" type="text/css" />
<link href="../../css/master.css" type="text/css" rel="stylesheet" />
<link href="../../css/sort.css" rel="stylesheet" type="text/css" />
<link href="../../css/sweetalert2-material.css" type="text/css" rel="stylesheet" />
<link href="../../@@node_base@@/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet" />
<meta charset="utf-8" />
@@comment-start@@
<script type="text/javascript">
var _jipt = []
_jipt.push(['project', 'thedesk'])
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
@@comment-end@@ @@pwa@@ @@store@@
</head>
<body class="@@pwaClass@@">
<script>
var ver = '@@versionLetter@@'
var gitHash = '@@gitHash@@'
//betaを入れるとバージョンチェックしない
//var ver="beta";
var acct_id = 0
var tlid = 0
</script>
@@preTL@@ @@starterAndDragHandler@@ @@postBox@@ @@tootModal@@ @@userDataModal@@ @@mediaModal@@ @@releaseNote@@
<!--PiP-->
<div id="pip" class="hide pip-bottom pip-left">
<i class="material-icons pip-horiz pointer" onclick="pipHoriz()">chevron_right</i>
<i class="material-icons pip-vert pointer" onclick="pipVert()">expand_less</i>
<i class="material-icons pointer" onclick="endPip()">close</i>
<div id="pip-content"></div>
</div>
@@menuHtml@@
<div id="main">
<!--TLのTL-->
<div id="timeline-container">
<div id="something-wrong">
<img src="../../img/thinking.svg" style="width: 150px; margin: 5px; display: none" draggable="false" />
<div class="stw" style="display: none">@@helloTheDesk@@</div>
</div>
</div>
</div>
@@bottomBarHtml@@ @@supportMe@@
<!--左下メッセージ-->
<div id="message"></div>
<!--Radio Happy(Yui) Taku Inoue-->
<audio src="" id="radio"></audio>
<!--JS-->
<script type="text/javascript" src="../../@@node_base@@/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../../js/platform/first.js"></script>
<script type="text/javascript" src="../../js/platform/native.js"></script>
<script type="text/javascript" src="../../js/platform/plugin.js"></script>
<script type="text/javascript" src="../../@@node_base@@/@cutls/materialize-css/dist/js/materialize.js"></script>
<script type="text/javascript" src="../../@@node_base@@/grapheme-splitter/index.js"></script>
<script type="text/javascript" src="../../@@node_base@@/lodash/lodash.min.js"></script>
<script type="text/javascript" src="main.js"></script>
<script type="text/javascript" src="../../js/common/time.js"></script>
<script type="text/javascript" src="../../js/common/blurhash.js"></script>
<script type="text/javascript" src="../../js/common/version.js"></script>
<script type="text/javascript" src="../../js/common/keyshortcut.js"></script>
<script type="text/javascript" src="../../js/common/modal.js"></script>
<script type="text/javascript" src="../../@@node_base@@/jquery-ui-dist/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../@@node_base@@/sweetalert2/dist/sweetalert2.min.js"></script>
<script type="text/javascript" src="../../js/platform/punycode.js"></script>
<script type="text/javascript" src="../../js/ui/tips.js"></script>
<script src="https://energised.botegirl.parts/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="../../js/common/about.js"></script>
<script type="text/javascript" src="../../js/tl/misskeyparse.js"></script>
<script type="text/javascript" src="../../js/tl/dm.js"></script>
<script type="text/javascript" src="../../js/ui/scroll.js"></script>
<script type="text/javascript" src="../../js/tl/announParse.js"></script>
<script type="text/javascript" src="../../js/tl/tl.js"></script>
<script type="text/javascript" src="../../js/tl/card.js"></script>
<script type="text/javascript" src="../../js/tl/parse.js"></script>
<script type="text/javascript" src="../../js/tl/poll.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>
<script type="text/javascript" src="../../js/tl/notification.js"></script>
<script type="text/javascript" src="../../js/tl/datails.js"></script>
<script type="text/javascript" src="../../js/tl/mix.js"></script>
<script type="text/javascript" src="../../js/tl/src.js"></script>
<script type="text/javascript" src="../../js/tl/directory.js"></script>
<script type="text/javascript" src="../../js/tl/filter.js"></script>
<script type="text/javascript" src="../../js/tl/tag.js"></script>
<script type="text/javascript" src="../../js/tl/list.js"></script>
<script type="text/javascript" src="../../js/tl/speech.js"></script>
<script type="text/javascript" src="../../js/ui/post-box.js"></script>
<script type="text/javascript" src="../../js/ui/layout.js"></script>
<script type="text/javascript" src="../../js/post/emoji.js"></script>
<script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/login.js"></script>
<script type="text/javascript" src="../../js/ui/img.js"></script>
<script type="text/javascript" src="../../js/ui/pip.js"></script>
<script type="text/javascript" src="../../js/ui/sort.js"></script>
<script type="text/javascript" src="../../js/ui/spotify.js"></script>
<script type="text/javascript" src="../../js/post/post.js"></script>
<script type="text/javascript" src="../../js/post/use-txtbox.js"></script>
<script type="text/javascript" src="../../js/post/secure.js"></script>
<script type="text/javascript" src="../../js/post/img.js"></script>
<script type="text/javascript" src="../../js/post/status.js"></script>
<script type="text/javascript" src="../../js/post/misskeystatus.js"></script>
<script type="text/javascript" src="../../js/post/suggest.js"></script>
<script type="text/javascript" src="../../js/post/bb-md.js"></script>
<script type="text/javascript" src="../../js/userdata/showOnTL.js"></script>
<script type="text/javascript" src="../../js/userdata/his-data.js"></script>
<script type="text/javascript" src="../../js/userdata/prof-edit.js"></script>
<script type="text/javascript" src="../../js/emoji/emojipack.js"></script>
<script type="text/javascript" src="../../js/emoji/default-emoji.js"></script>
<script type="text/javascript" src="../../js/platform/end.js"></script>
<script type="text/javascript" src="../../js/ui/menu.js"></script>
</body>
</html>

View File

@ -0,0 +1,12 @@
[
"bottomBarHtml",
"mediaModal",
"menuHtml",
"postBox",
"preTL",
"releaseNote",
"starterAndDragHandler",
"supportMe",
"tootModal",
"userDataModal"
]

View File

@ -0,0 +1,62 @@
<!-- Modal Structure Image-->
<div id="imagemodal" class="modal modal-fixed-footer">
<div class="modal-content">
<div id="imagewrap">
<img src="" id="imgmodal" />
</div>
<div class="progress nomargin hide transparent" id="imgmodal-progress">
<div class="indeterminate"></div>
</div>
<br />
</div>
<div class="modal-footer">
<div id="imginfo">
<span id="imgprog"></span>% <br />
<span id="imgsec"></span>ms <br /><span id="imgbyte"></span>KB
</div>
<span style="padding: 0.6rem" class="btnsgroup">
<a class="waves-effect white-text" onclick="zoom(2)">
<i class="material-icons">zoom_in</i>
</a>
<a class="waves-effect white-text" onclick="zoom(0.5)">
<i class="material-icons">zoom_out</i>
</a>
<a class="waves-effect white-text" onclick="rotate(false)">
<i class="material-icons">rotate_90_degrees_ccw</i>
</a>
</span>
<span style="padding: 0.6rem" class="btnsgroup">
<span style="position: relative; top: -2px;">Copy:</span>
<a class="waves-effect white-text" onclick="copyImgBinary()" title="@@copyBinary@@">
<i class="material-icons">image</i>
</a>
<a class="waves-effect white-text" onclick="copyImgUrl()" title="@@copyURL@@">
<i class="material-icons">link</i>
</a>
</span>
<button class="btn waves-effect purple" onclick="dlImg()">
<i class="material-icons">file_download</i>
</button>
<button class="btn waves-effect brown" onclick="detFromImg()" title="@@thisToot@@">
<i class="material-icons">pageview</i>
</button>
<button class="btn waves-effect orange" onclick="imgCont('prev')" id="image-prev">
<i class="material-icons">keyboard_arrow_left</i>
</button>
<button class="btn waves-effect orange" onclick="imgCont('next')" id="image-next">
<i class="material-icons">keyboard_arrow_right</i>
</button>
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">
<i class="material-icons">close</i>
</a>
</div>
</div>
<!-- Modal Structure Video-->
<div id="videomodal" class="modal modal-fixed-footer">
<div class="modal-content">
<video src="" id="video" style="max-width: 100%; max-height: 100%" controls loop="true" autoplay="true" />
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
</div>
</div>

View File

@ -0,0 +1,229 @@
<!--menu-->
<div id="menu" class="z-depth-5" style="display: none">
<div id="menu-bar" class="drag-bar"></div>
<span class="cancel">
<i class="material-icons waves-effect" onclick="menu()" title="@@closeThisBox@@(X)">cancel</i>
</span>
<div id="menu-wrapper">
<div id="left-menu">
<a class="waves-effect active" onclick="addColumnMenu()" id="addColumnMenu"> <i class="material-icons" aria-hidden="true">add</i><span>@@addColumn@@</span> </a>
<a class="waves-effect" onclick="sortMenu()" id="sortMenu"> <i class="material-icons" aria-hidden="true">sort</i><span>@@sortColumns@@</span> </a>
<a class="waves-effect" onclick="searchMenu()" id="searchMenu"> <i class="material-icons" aria-hidden="true">search</i><span>@@search@@</span> </a>
<a class="waves-effect" onclick="listMenu()" id="listMenu"> <i class="material-icons" aria-hidden="true">view_headline</i><span>@@list@@</span> </a>
<a class="waves-effect" onclick="dirMenu()" id="dirMenu"> <i class="material-icons" aria-hidden="true">recent_actors</i><span>@@discover@@</span> </a>
<a class="waves-effect" onclick="filterMenu()" id="filterMenu"> <i class="material-icons" aria-hidden="true">filter_list</i><span>@@filter@@</span> </a>
<a class="waves-effect" onclick="help()" id="helpMenu"> <i class="material-icons" aria-hidden="true">help_outline</i><span>@@helpAndLogs@@</span> </a>
<a class="waves-effect" onclick="location.href='index.html'"> <i class="material-icons" aria-hidden="true">refresh</i><span>@@f5@@</span> </a>
</div>
<div id="right-menu">
<!--カラム追加-->
<div id="add-box" class="hide menu-content">
<div class="input-field">
<span data-trans="your_acct">@@selectAcct@@</span>
<br />
<select id="add-acct-sel" class="acct-sel" style="color: black" onchange="addselCk()"></select>
<label></label>
</div>
<div class="input-field">
<div id="auth">
<input type="hidden" value="local" id="type-sel" /> @@showThisTL@@
<div id="tltype">
<a class="type waves-effect active" data-type="local" title="@@local@@">
<div><i class="material-icons" aria-hidden="true">people_outline</i></div>
<span>@@local@@</span>
</a>
<a class="type waves-effect" data-type="local-media" title="@@localMedia@@">
<div><i class="material-icons" aria-hidden="true">perm_media</i></div>
<span>@@localMedia@@</span>
</a>
<a class="type waves-effect" data-type="home" title="@@home@@">
<div><i class="material-icons" aria-hidden="true">home</i></div>
<span>@@home@@</span>
</a>
<a class="type waves-effect" data-type="pub" title="@@fed@@">
<div><i class="material-icons" aria-hidden="true">language</i></div>
<span>@@fed@@</span>
</a>
<a class="type waves-effect" data-type="pub-media" title="@@fedMedia@@">
<div><i class="material-icons" aria-hidden="true">perm_media</i></div>
<span>@@fedMedia@@</span>
</a>
<a class="type waves-effect" data-type="dm" title="@@dm@@">
<div><i class="material-icons" aria-hidden="true">mail_outline</i></div>
<span>@@dm@@</span>
</a>
<a class="type waves-effect" data-type="mix" title="@@integratedTLDes@@">
<div><i class="material-icons" aria-hidden="true">merge_type</i></div>
<span>@@integratedTLDes@@</span>
</a>
<a class="type waves-effect" data-type="plus" title="@@localPlusDes@@">
<div><i class="material-icons" aria-hidden="true">reply</i></div>
<span>@@localPlusDes@@</span>
</a>
<a class="type waves-effect" data-type="notf" title="@@notf@@">
<div><i class="material-icons" aria-hidden="true">notifications</i></div>
<span>@@notf@@</span>
</a>
<a class="type waves-effect" data-type="bookmark" title="@@bookmark@@">
<div><i class="material-icons" aria-hidden="true">bookmark</i></div>
<span>@@bookmark@@</span>
</a>
</div>
</div>
<div id="noauth" class="hide">
@@showThisTL@@
<input id="noauth-url" type="text" class="validate" style="width: calc(70% - 3rem)" placeholder="e.g:mstdn.jp" />
</div>
<div id="webview-add" class="hide">@@webviewWarn@@</div>
</div>
<button class="btn waves-effect blue" style="width: calc(100% - 0.7rem)" onclick="addColumn()" data-trans-i="add"><i class="material-icons left">add</i>@@add@@</button>
<br />
<br />
</div>
<!--検索-->
<div id="src-box" class="hide menu-content">
<div class="input-field">
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
</div>
<div class="input-field">
<input id="src" type="text" class="validate" style="width: calc(100% - 150px)" />
<label for="src" data-trans="src">@@search@@</label>
<button class="btn waves-effect indigo" style="width: 36%; padding: 0; padding-left: 1.15rem" onclick="src()" data-trans-i="src">
<i class="material-icons left" style="margin: 0">search</i>@@search@@
</button>
<br />
<br />
</div>
<div id="search">
<div id="src-contents"></div>
</div>
</div>
<!--ディレクトリ-->
<div id="dir-box" class="hide menu-content">
<label>
<input class="with-gap" onchange="dirChange('directory')" name="dirsug" type="radio" value="directory" checked />
<span>@@directory@@</span>
</label>
<label>
<input class="with-gap" onchange="dirChange('suggest')" name="dirsug" type="radio" value="suggest" />
<span>@@frc@@</span>
</label>
<div class="input-field">
<select id="dir-acct-sel" class="acct-sel" onchange="dirselCk()"></select>
</div>
<div id="dirNoAuth" class="hide">
<input id="dirNoAuth-url" type="text" class="validate" style="width: calc(70% - 3rem)" placeholder="e.g:mastodon.social" />
<button class="btn waves-effect indigo" style="width: 9.23rem; padding: 0; padding-left: 1.15rem" onclick="directory('directory')">
<i class="material-icons left" style="margin: 0">search</i>@@show@@
</button>
</div>
<div id="directoryConfig">
<label>
<input class="with-gap" onchange="directory('directory')" name="sort" type="radio" value="active" checked />
<span>@@active@@</span>
</label>
<label>
<input class="with-gap" onchange="directory('directory')" name="sort" type="radio" value="new" />
<span>@@newcomer@@</span> </label
><br />
<label>
<input type="checkbox" class="filled-in" id="local_only" value="true" onchange="directory('directory')" />
<span>@@local_only@@</span>
</label>
</div>
<div id="dir-contents"></div>
<button class="btn waves-effect teal disabled" style="width: 100%" id="moreDir" onclick="directory('check', 'more')">@@more@@</button>
</div>
<!--並べ替え-->
<div id="sort-box" class="hide menu-content">
<ul id="sort"></ul>
<div>
<button onclick="sort()" class="btn waves-effect nex" style="width: 97.5%" data-trans-i="sort"><i class="material-icons left">sort</i>@@sortSet@@</button>
</div>
</div>
<!--リスト-->
<div id="list-box" class="hide menu-content">
<div class="input-field" style="width: calc(100% - 100px); float: left">
<select id="list-acct-sel" class="acct-sel"></select>
<label>@@selectAcct@@</label>
</div>
<div style="float: left; padding-top: 8px; padding-bottom: 28px">
<button class="btn waves-effect indigo" style="width: 80px" onclick="list()" data-trans-i="lists">@@listLocale@@</button>
</div>
<br /><br />
<div id="lists"></div>
<div id="lists-user"></div>
<input type="text" style="width: calc(100% - 143px)" id="list-add" placeholder="@@name@@" />
<button class="btn waves-effect" style="width: 120px" onclick="makeNewList()">@@makeNew@@</button>
</div>
<!--フィルター-->
<div id="filter-box" class="hide menu-content">
<div class="input-field" style="width: calc(100% - 100px); float: left">
<select id="filter-acct-sel" class="acct-sel"></select>
<label>@@selectAcct@@</label>
</div>
<div style="float: left; padding-top: 8px; padding-bottom: 28px">
<button class="btn waves-effect indigo" style="width: 80px" onclick="filter()" data-trans-i="filters">@@listLocale@@</button>
</div>
<div id="filtered-words"></div>
<input type="hidden" id="filter-edit-id" />
<input type="text" style="width: 150px" id="filter-add-word" placeholder="@@filterWord@@" /><br /> @@degree@@
<br />
<label>
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
<span>@@home@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
<span>@@local@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
<span>@@notf@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
<span>@@conver@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="prof_filter" value="profiles" />
<span>@@prof@@</span> </label
><br />
@@option@@
<br />
<label>
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
<span>@@matchWord@@</span>
</label>
<br />
<span class="sml">@@warnMatchWord@@</span><br />
<label>
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
<span>@@except@@</span>
</label>
<br />
<span class="sml">@@exceptWorn@@</span><br /> @@avalableBefore@@ <span class="sml">@@warnAvBefore@@<b>@@warnAvBefore2@@</b></span
><br /><br />
<input type="number" style="width: 50px" id="days_filter" placeholder="d" value="0" />@@days@@
<input type="number" style="width: 50px" id="hours_filter" placeholder="h" value="0" />@@hours@@
<input type="number" style="width: 50px" id="mins_filter" placeholder="m" value="0" />@@mins@@<br />
Quick: <a onclick="filterTime(0,0,30)" class="pointer">30@@mins@@</a>/ <a onclick="filterTime(0,1,0)" class="pointer">1@@hours@@</a>/
<a onclick="filterTime(0,6,0)" class="pointer">6@@hours@@</a>/ <a onclick="filterTime(0,12,0)" class="pointer">12@@hours@@</a>/
<a onclick="filterTime(1,0,0)" class="pointer">1@@days@@</a>/ <a onclick="filterTime(7,0,0)" class="pointer">7@@days@@</a>/
<a onclick="filterTime(0,0,0)" class="pointer">@@unlimited@@</a><br />
<button class="btn waves-effect" style="width: 120px" onclick="makeNewFilter()" id="add-filter-btn">@@add@@</button><br />
<span class="sml">@@warnOnIntegratedTL@@</span>
</div>
<!--ヘルプとログ-->
<div id="help-box" class="hide menu-content">
<a href="https://docs.thedesk.top" class="btn waves-effect" style="width: 97.5%">@@help@@</a><br /> @@contactwithlog@@
<br />
<textarea id="logs" style="height: 250px"></textarea><br />
</div>
</div>
</div>
<a onclick="about()" class="nex waves-effect pwa"> <i class="material-icons menu-icon">info</i>@@about@@ </a>&nbsp;|&nbsp;
<a onclick="bottomReverse()" class="nex waves-effect"> <i class="material-icons menu-icon">swap_horiz</i>@@reverse@@ </a>&nbsp;|&nbsp;
<a href="https://github.com/cutls/TheDesk/releases" class="nex waves-effect"> <i class="material-icons menu-icon">new_releases</i>Release Note </a>
</div>

View File

@ -0,0 +1,244 @@
<div id="post-box" class="z-depth-5">
<div id="post-bar" class="drag-bar"><span id="unreact">@@post-new@@</span><span id="addreact" class="hide">Reaction</span></div>
<!--トゥートボックス-->
<div id="left-side">
<div class="row" style="margin-bottom: 0">
<div class="" style="float: left">
<a onclick="profShow()" style="vertical-align: -1.7rem" class="pointer mize">
<img src="../../img/missing.svg" id="acct-sel-prof" title="@@showSelectProf@@(Ctrl+Shift+P)" data-trans-title="post_box_prof" style="width: 1.8rem" />
</a>
</div>
<div class="input-field mize" style="float: left; width: calc(100% - 1.8rem); margin-top: 0">
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select>
</div>
<span class="cancel">
<i class="material-icons waves-effect" onclick="hide()" title="@@closeThisBox@@(X)" data-trans-title="post_box_close">cancel</i>
</span>
<!--Markdown-->
<div class="row" style="margin-bottom: 0">
<div class="markdown mize hide">
<div class="col s12">
<i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('u')" title="下線(Ctrl+U)テキストボックス内を選択してから押すと囲みます。">format_underlined</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('s')" title="取り消し(Ctrl+S)テキストボックス内を選択してから押すと囲みます。">strikethrough_s</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('>','no','yes')" title="引用">format_quote</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('#','no','yes')" title="見出し">short_text</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('`','yes','no')" title="コード挿入 テキストボックス内を選択してから押すと囲みます。">code</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('- ','yes','yes')" title="箇条書きリスト">format_list_bulleted</i>
<i class="material-icons pointer setting waves-effect" onclick="markdown('1. ','yes','yes')" title="番号付きリスト">format_list_numbered</i>
<i
class="pointer setting fa fa-subscript waves-effect"
onclick="markdown('__','yes','no','before')"
title="下付き文字 テキストボックス内を選択してから押すと囲みます。"
style="font-size: 1.5rem"
></i>
<i
class="pointer setting fa fa-superscript waves-effect"
onclick="markdown('_','yes','no','before')"
title="上付き文字 テキストボックス内を選択してから押すと囲みます。"
style="font-size: 1.5rem"
></i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('spin')" title="回転 テキストボックス内を選択してから押すと囲みます。">autorenew</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('pulse')" title="点滅 テキストボックス内を選択してから押すと囲みます。">flare</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=vertical')" title="上下反転 テキストボックス内を選択してから押すと囲みます。">swap_vert</i>
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=horizontal')" title="左右反転 テキストボックス内を選択してから押すと囲みます。">swap_horiz</i>
<span class="sml gray pointer waves-effect">
<a onclick="mdToggle()">Markdownエディタを隠す</a>
</span>
<br />
<i class="material-icons pointer setting waves-effect" onclick="tagsel('size')" title="文字サイズ変更 テキストボックス内を選択してから押すと囲みます。">format_size</i>
<input id="size" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" value="12" />px
<i class="material-icons pointer setting waves-effect" onclick="tagsel('colorhex')" title="文字色変更 テキストボックス内を選択してから押すと囲みます。">color_lens</i>
<input id="colorhex" style="width: calc(50% - 3.8rem); margin: 0; height: 1.8rem" type="color" />
<br />
<i class="material-icons pointer setting waves-effect" onclick="markdownLink()" title="リンク挿入">link</i>
<input id="linkt" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="リンクテキスト" />&nbsp;
<input id="link2" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="リンクアドレス" />
<br />
<i class="material-icons pointer setting waves-effect" onclick="markdownImage()" title="インライン画像挿入">image</i>
<input id="image" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="代替テキスト" />&nbsp;
<input id="image2" style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem" placeholder="画像アドレス" />
</div>
</div>
<div class="input-field col s12" id="preview-field" style="margin-top: 0">
<div id="md-preview"></div>
<span class="sml gray pointer">
<a onclick="previewEdit()">Edit</a>
</span>
</div>
<div class="input-field col s12" id="toot-field" style="margin-top: 0; margin-bottom: 0">
<textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom: 0" data-length="500"></textarea>
<div id="suggest"></div>
<label for="textarea" data-trans="toot">@@toot@@</label>
<br />
<span class="sml gray pointer markdown mize" id="preview-btn">
<a onclick="preview()">Preview</a>
</span>
<span class="sml gray pointer anti-markdown mize">
<a onclick="mdToggle()">Markdownエディタを表示</a>
</span>
</div>
<div class="col s12 mize" style="margin-top: 0; display: flex; justify-content: space-between">
<i class="waves-effect gray material-icons" id="nsfw" title="@@nsfwDes@@" onclick="nsfw()">visibility_off</i>
<i class="waves-effect gray material-icons purple-text dropdown-trigger" data-target="dropdown1" id="vis-icon">public</i>
<a class="waves-effect gray" id="cw" onclick="cw()" title="@@cwDes@@">CW</a>
<span
><span id="imgup"></span><span id="imgsel" class="pwa"><i class="waves-effect material-icons gray" onclick="fileselect()" title="@@selfile@@">photo_library</i></span></span
>
<i class="waves-effect gray material-icons" onclick="emojiToggle()" id="emojibtn" title="@@insertEmoji@@">tag_faces</i>
<i class="waves-effect gray material-icons dropdown-trigger" data-target="dropdown2">more_vert</i>
<i class="material-icons nex gray waves-effect" title="@@clearToot@@(Ctrl+Shit+C)" data-trans-title="post_box_clear" id="clear">clear</i>
</div>
<div class="col s12 mize" style="margin-bottom: 0.4rem; padding: 0">
<div id="taglist"></div>
<div id="preview" class="mize"></div>
<span class="sml mize"
><span>@@replyMode@@</span>: <span id="rec">@@no@@</span>/<span>@@temp@@</span>:
<span id="mec">@@nothing@@</span>
<a onclick="stamp()" class="pointer pwa" title="@@stampWarn@@">@@stamp@@: <span id="stamp">Off</span></a> /@@poll@@:
<span id="pollsta">@@no@@</span>
<span id="vis" class="hide">public</span>
</span>
<br />
<input type="text" id="cw-text" placeholder="@@cwtext@@" class="mize" style="margin: 0" />
<div id="sch-box">
@@postat@@<br /><span class="sml">@@scheduleWarn@@</span><a onclick="expPostMode()">Expire mode(beta)</a><br />
<input type="datetime-local" id="sch-date" placeholder="@@schedule@@" class="datepicker" style="margin: 0" />
</div>
</div>
</div>
<!-- 公開範囲 Dropdown Structure -->
<ul id="dropdown1" class="dropdown-content">
<li>
<a onclick="vis('public')">@@publicJP@@(Public)</a>
</li>
<li>
<a onclick="vis('unlisted')">@@unlistedJP@@(Unlisted)</a>
</li>
<li>
<a onclick="vis('private')" id="private-button">@@privateJP@@(Private)</a>
</li>
<li id="limited-button" class="hide">
<a onclick="vis('limited')">限定公開(Limited)</a>
</li>
<li id="local-button" class="hide">
<a onclick="vis('local')">@@localJP@@(Local)</a>
</li>
<li>
<a onclick="vis('direct')" class="disabled direct">@@directJP@@(Direct)</a>
</li>
</ul>
<!-- その他 Dropdown Structure -->
<ul id="dropdown2" class="dropdown-content">
<li>
<a onclick="nowplaying('spotify');">NowPlaying (Spotify)</a>
</li>
<li class="mac">
<a onclick="nowplaying('itunes');">NowPlaying (iTunes macOS)</a>
</li>
<li>
<a onclick="nowplaying('lastFm');">NowPlaying (Last.fm)</a>
</li>
<li>
<a onclick="schedule();">@@schedule@@</a>
</li>
<li>
<a onclick="pollToggle();">@@poll@@</a>
</li>
<li>
<a onclick="draftToggle();">@@draft@@</a>
</li>
</ul>
<!--hidden area-->
<input type="hidden" id="reply" />
<input type="hidden" id="ideKey" />
<input type="hidden" id="quote" />
<input type="hidden" id="media" />
<!--END hidden area-->
</div>
<div id="toot-btn-field">
<button class="btn waves-effect unmize toot-btn-group" onclick="post()" id="toot-post-btn">@@toot@@</button>
<button class="btn waves-effect darken-3 unmize hide toot-btn-group" onclick="sec()" id="toot-sec-btn">
<i class="material-icons" id="toot-sec-icon" title="@@sectoot@@">lock_open</i>
</button>
</div>
</div>
<div id="right-side">
<div id="draft" class="hide right-side-content"></div>
<!--絵文字ピッカー-->
<div id="emoji" class="hide right-side-content">
<span class="gray sml"
>@@emojiWarn@@
<a onclick="emojiGet('true')" class="pointer">@@refreshEmoji@@</a>
<br />
</span>
<div id="emoji-list" class="" style=""></div>
<div class="emoji-control center">
<button class="btn waves-effect blue" style="width: 30%; padding: 0" onclick="emojiList('before')" id="emoji-before">
<i class="material-icons">navigate_before</i>
</button>
<span id="emoji-count"></span>/
<span id="emoji-sum"></span>
<button class="btn waves-effect blue" style="width: 30%; padding: 0" onclick="emojiList('next')" id="emoji-next">
<i class="material-icons">navigate_next</i>
</button>
</div>
<div id="default-emoji">
<span id="now-emoji"></span>@@showThisEmoji@@<br /><span class="gray sml">@@emojiInsertWarn@@</span>
<br />
<a onclick="customEmoji()" class="pointer waves-effect" title="@@customEmoji@@">
<i class="material-icons">add</i>
</a>
<a onclick="defaultEmoji('people')" class="pointer waves-effect" title="@@peopleEmoji@@">
<i class="material-icons">people</i>
</a>
<a onclick="defaultEmoji('nature')" class="pointer waves-effect" title="@@natureEmoji@@">
<i class="material-icons">local_florist</i>
</a>
<a onclick="defaultEmoji('food')" class="pointer waves-effect" title="@@foodEmoji@@">
<i class="material-icons">restaurant</i>
</a>
<a onclick="defaultEmoji('activity')" class="pointer waves-effect" title="@@activityEmoji@@">
<i class="material-icons">directions_run</i>
</a>
<a onclick="defaultEmoji('place')" class="pointer waves-effect" title="@@placeEmoji@@">
<i class="material-icons">directions_car</i>
</a>
<a onclick="defaultEmoji('object')" class="pointer waves-effect" title="@@thingsEmoji@@">
<i class="material-icons">attach_file</i>
</a>
<a onclick="defaultEmoji('symbol')" class="pointer waves-effect" title="@@symbolEmoji@@">
<i class="material-icons">gesture</i>
</a>
<a onclick="defaultEmoji('flag')" class="pointer waves-effect" title="@@flagsEmoji@@">
<i class="material-icons">flag</i>
</a>
<a onclick="faicon()" class="pointer waves-effect" title="faicon" id="faicon-btn">
<i class="fab fa-fort-awesome"></i>
</a>
</div>
</div>
<!--Poll UI-->
<div id="poll" class="hide right-side-content">
<div id="mastodon-poll" class="poll-provider">
<input type="text" class="mastodon-choice" placeholder="@@choice@@1" />
<input type="text" class="mastodon-choice" placeholder="@@choice@@2" />
<input type="text" class="mastodon-choice" placeholder="@@choice@@3" />
<input type="text" class="mastodon-choice" placeholder="@@choice@@4" />
<label>
<input type="checkbox" class="filled-in" id="poll-multiple" value="1" />
<span>@@pollmulti@@</span>
</label>
<label>
<input type="checkbox" class="filled-in" id="poll-until" value="1" />
<span>@@polluntil@@</span>
</label>
<input type="number" style="width: 50px" id="days_poll" placeholder="d" value="0" />@@days@@
<input type="number" style="width: 50px" id="hours_poll" placeholder="h" value="0" />@@hours@@
<input type="number" style="width: 50px" id="mins_poll" placeholder="m" value="6" />@@mins@@
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,17 @@
<textarea id="copy" style="top: -100px; position: fixed"></textarea>
<canvas id="canvas" style="top: -100px; position: fixed; width: 32px; height: 32px" width="32" height="32"></canvas>
<div id="pageSrc" class="hide z-depth-2">
<div class="srcQ"></div>
<div class="pageSrcBtn pointer" onclick="doSrc('web')">@@webSrc@@</div>
<div class="pageSrcBtn pointer" onclick="doSrc('ts')">@@tsSrc@@</div>
<div class="pageSrcBtn pointer" onclick="doSrc('copy')">@@copy@@</div>
<div class="pageSrcBtn pointer lastPSB" onclick="doSrc('toot')">@@toot@@</div>
</div>
<div class="hide z-depth-2" id="tagContextMenu">
<a onclick="doTShowBox('tl')" class="pointer firstTCM" id="tagCMTL"></a>
<a onclick="doTShowBox('toot')" class="pointer" id="tagCMToot"></a>
<a onclick="doTShowBox('pin')" class="pointer" id="tagCMPin"></a>
<a onclick="doTShowBox('f')" class="pointer lastTCM" title="add it to Featured tags" id="tagCMFeature">Feature</a>
</div>
<div id="offline" class="hide">@@nowOffline@@</div>
<div id="re-online" class="hide">@@reOnline@@</div>

View File

@ -0,0 +1,34 @@
<!-- Modal Structure Release Note-->
<div id="releasenote" class="modal modal-fixed-footer scr">
<div class="modal-content">
<h3>TheDesk</h3>
<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-22-3-1_Koume" class="release-do" style="display: none">
Pixiv FanboxやPatreonでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br /> 困ったときは、 <a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
<h5>Release Note 22.3.1 (Koume)</h5>
<!--上のdivのidや1行上のところも変えてね-->
・時限ミュートに対応した
<a onclick="udgEx('Cutls@2m.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@2m.cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png" />cutls</a><br />
</div>
<div id="release-en" style="display: none">
<h5>Let's make it native!</h5>
<a href="https://translate.thedesk.top">Crowdin translation project</a>
</div>
<br /><br />
<h3>@@supportme@@</h3>
@@TheDeskDes@@<br />
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank"> @@PixivSupport@@ </a>
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls" target="_blank"> @@PatreonSupport@@ </a>
<a class="btn-share btn waves-effect waves-light black-text" href="https://liberapay.com/cutls" target="_blank" style="background-color: #f6c915"> Liberapay </a>
<a class="btn-share btn waves-effect waves-light blue" href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank"> @@AWLSupport@@ </a>
<br /> @@SendAmazonGift1@@ <a href="mailto:web-pro@cutls.com" target="_blank">web-pro@cutls.com</a>@@SendAmazonGift2@@<br /> Kyash
<br />
<img src="../../img/kyash.png" width="100" /><br />
</div>
<div class="modal-footer">
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
</div>
</div>

View File

@ -0,0 +1,50 @@
<div id="tl">
<!--TL-->
<!--スターター-->
<div id="start" class="scr">
<div id="start-content">
<h3 class="center">@@demoBottomBtns@@</h3>
@@lookAtBottom@@
<div id="demobottom">
<button class="btn waves-effect" style="width: 23rem; height: 2.5rem; line-height: 0; margin: 0; background-color: var(--active)">
<i class="material-icons" style="position: relative; top: 0.4rem; font-size: 1.5rem; text-align: center; margin-right: 0.7rem">edit</i>@@toot@@
</button>
<div class="leftside reverse" id="demogroup">
<div class="btnsgroup" style="margin-left: 0.4rem">
<a href="#" class="nex waves-effect">
<i class="material-icons nex big-icon" title="@@acctMan@@(Ctrl+Shift+M)">account_circle</i>
</a>
<a href="#" class="nex waves-effect">
<i class="material-icons nex" title="@@setting@@(Ctrl+Shift+S)">settings</i>
</a>
<a class="nex waves-effect">
<i class="material-icons" title="@@nanoDes@@TheDesk Nano">remove_from_queue</i>
</a>
<a class="nex waves-effect" id="list-tgl">
<i class="material-icons" title="@@menu@@">apps</i>
</a>
</div>
</div>
</div>
<br />
<i class="material-icons nex big-icon">account_circle</i>: @@acctMan@@<br /> @@acctManDesc@@
<hr />
<i class="material-icons nex">settings</i>: @@setting@@<br /> @@settingDesc@@
<hr />
<i class="material-icons nex">remove_from_queue</i>: TheDesk Nano @@nanoDes@@<br /> @@nanoDescPlus@@
<hr />
<i class="material-icons nex">apps</i>: @@menu@@<br /> @@menuDesc@@
<br />
<br />
<button class="btn waves-effect" onclick="closeStart()" style="width: 300px">@@close@@</button>
</div>
</div>
<!--ドラッグハンドラ-->
<div id="drag">
<div id="drag-content">
@@draghere@@
<br />
<button class="btn waves-effect" onclick="closedrop()">@@close@@</button>
</div>
</div>
</div>

View File

@ -0,0 +1,32 @@
<!--Support me-->
<div id="support-btm" class="z-depth-4 hide scr">
<div id="support-btm-ja">
<h5>ご支援いただけませんか?</h5>
(これは支援の有無に関わらず定期的に出ます。過去のバージョン等で何度も表示される等のバグを確認しております。)<br /> あなたのMastodon, Misskeyライフを邪魔してしまって申し訳ありません。<br /> 乞食のようなマネをしてご支援をお願いするのもどうかと思いますが、少々お時間をください。
<br />
<br /> TheDeskになぜ金銭が発生するかについて: 詳細は省きますが、開発者から緊急の連絡をしたりするのに使われます。
<br />
<b>全てのユーザーが安心してTheDeskを使っていただける環境のため</b>にも、ぜひご支援をご検討ください。ご支援いただけなくても使用不可能になることは全くありません。<br />
<b>@@TheDeskDes@@</b>
</div>
<div id="support-btm-en" class="hide">
<h5>Support me</h5>
It may disturb your Mastodon life, but your support is required to keep TheDesk awesome!<br />
<b>@@TheDeskDes@@</b>
</div>
<div id="support-btm-middle">
<h5>@@monthly@@</h5>
<a class="btn-share btn waves-effect waves-light red lighten-2" href="https://www.pixiv.net/fanbox/creator/28105985" target="_blank"> @@PixivSupport@@ </a>
<a class="btn-share btn waves-effect waves-light red darken-2" href="https://www.patreon.com/cutls" target="_blank"> @@PatreonSupport@@ </a>
<a class="btn-share btn waves-effect waves-light black-text" href="https://liberapay.com/cutls" target="_blank" style="background-color: #f6c915"> Liberapay </a>
</div>
<div id="support-btm-right">
<h5>@@once@@</h5>
<br /> @@SendAmazonGift1@@ <a href="mailto:web-pro@cutls.com" target="_blank">web-pro@cutls.com</a>@@SendAmazonGift2@@<br /> Kyash
<br />
<img src="../../img/kyash.png" width="100" /><br />
</div>
<div id="support-btm-close">
<button class="btn waves-effect" style="width: 100%" onclick="closeSupport()" id="add-filter-btn">@@close@@</button>
</div>
</div>

View File

@ -0,0 +1,100 @@
<!-- Modal Structure Tootdata-->
<div id="tootmodal" class="modal modal-fixed-footer">
<div class="modal-content">
<ul class="collapsible" id="det-col">
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">people_outline</i>@@afterLTL@@</div>
<div class="collapsible-body toot-reset" id="ltl-after"></div>
</li>
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">person_outline</i>@@afterUTL@@</div>
<div class="collapsible-body toot-reset" id="user-after"></div>
</li>
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">language</i>@@afterFTL@@</div>
<div class="collapsible-body toot-reset" id="ftl-after"></div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">arrow_upward</i>@@contextBefore@@
<i class="material-icons red-text hide" id="toot-reply-new">new_releases</i>
</div>
<div class="collapsible-body toot-reset" id="toot-reply"></div>
</li>
<li>
<div class="collapsible-header" id="activator"><i class="material-icons">more_horiz</i>@@thisToot@@</div>
<div class="collapsible-body">
<div class="toot-reset" id="toot-this"></div>
</div>
</li>
<li>
<div class="collapsible-header">
<i class="material-icons">arrow_downward</i>@@contextAfter@@
<i class="material-icons red-text hide" id="toot-after-new">new_releases</i>
</div>
<div class="collapsible-body toot-reset" id="toot-after"></div>
</li>
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">people_outline</i>@@beforeLTL@@</div>
<div class="collapsible-body toot-reset" id="toot-before"></div>
</li>
<li class="dm-hide contextTool">
<div class="collapsible-header"><i class="material-icons">person_outline</i>@@beforeUTL@@</div>
<div class="collapsible-body toot-reset" id="user-before"></div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons">star</i>@@favedPeople@@</div>
<div class="collapsible-body toot-reset" id="toot-fav"></div>
</li>
<li class="dm-hide">
<div class="collapsible-header"><i class="text-darken-3 false fas fa-retweet"></i>@@btedPeople@@</div>
<div class="collapsible-body toot-reset" id="toot-rt"></div>
</li>
<li class="edited-hide">
<div class="collapsible-header"><i class="material-icons">create</i>@@editHistory@@</div>
<div class="collapsible-body toot-reset" id="toot-edit"></div>
</li>
</ul>
<div class="dm-hide" style="max-width: 450px">
@@useOtherAcct1@@(<i class="fas fa-retweet"></i>/<i class="fas fa-star"></i>@@useOtherAcct2@@)<br />
<div class="row">
<div class="col s6">
<select id="status-acct-sel" class="acct-sel"></select>
</div>
<div class="col s2">
<button class="dropdown-button btn waves-effect" style="width: 100%" onclick="staEx('reply')">
<i class="fas fa-share"></i>
</button>
</div>
<div class="col s2">
<button class="dropdown-button btn waves-effect indigo" style="width: 100%" onclick="staEx('rt')">
<i class="fas fa-retweet"></i>
</button>
</div>
<div class="col s2">
<button class="dropdown-button btn waves-effect orange" style="width: 100%" onclick="staEx('fav')">
<i class="fas fa-star"></i>
</button>
</div>
</div>
@@btWithVis@@<br />
<button class="btn waves-effect darken-3 toot-btn-group purple" onclick="boostWith('public')">
<i class="material-icons">public</i>
</button>
<button class="btn waves-effect darken-3 toot-btn-group blue" onclick="boostWith('unlisted')">
<i class="material-icons">lock_open</i>
</button>
<button class="btn waves-effect darken-3 toot-btn-group orange" onclick="boostWith('private')">
<i class="material-icons">lock</i>
</button>
<div id="toot-tools"></div>
<div id="toot-after"></div>
</div>
</div>
<div class="modal-footer">
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="brws()">@@openBrowser@@</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy()">@@copyURL@@</a>
<a href="#!" class="waves-effect waves-green btn-flat dm-hide" onclick="cbCopy('emb')">@@embed@@</a>
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">@@close@@</a>
</div>
</div>

View File

@ -0,0 +1,210 @@
<!-- Modal Structure Userdata -->
<div id="his-data" class="modal bottom-sheet modal-fixed-footer" style="max-height: 750px; height: 90%">
<div id="his-data-content" class="modal-content" style="padding-bottom: 0; overflow-y: hidden">
<div id="his-data-show">
<div id="his-data-wrap">
<div class="his-float" id="his-float-data">
<div id="his-leftside">
<div id="his-basic-prof">
<div>
<img src="../../img/loading.svg" id="his-prof" draggable="false" />
</div>
<div>
<span id="his-name">Loading...</span>
<span class="gray">@</span><span id="his-acct" class="gray"></span><br />
<span class="gray" id="his-relation"></span>
<br />
<span class="cbadge"> <span id="his-sta"></span>@@toots@@ </span>
<span class="cbadge"
>@@follow@@:
<span id="his-follow"></span>
</span>
<span class="cbadge">@@follower@@: <span id="his-follower"></span> </span><br />
<span class="cbadge" style="max-width: 11.5rem; width: 11.5rem"
>Since:
<span id="his-since"></span>
</span>
<span class="cbadge" id="his-bot">[bot]</span>
</div>
</div>
<div id="his-proof-prof"></div>
<div id="his-des" data-acct=""></div>
<br />
<div id="his-table"></div>
<br />
<div id="his-sign-action">
<a href="#!" class="waves-effect waves-green btn" onclick="follow()" style="flex-basis: 100%" id="his-follow-btn"
><i class="material-icons">people</i><span id="his-follow-btn-text">@@follow@@</span></a
>
<a href="#!" class="waves-effect waves-green btn blue shrinker" onclick="muteMenu()" id="his-mute-btn"
><i class="material-icons">voice_over_off</i><span id="his-mute-btn-text">@@mute@@</span>
</a>
<a href="#!" class="waves-effect waves-green btn red shrinker" onclick="block()" id="his-block-btn"
><i class="material-icons">block</i><span id="his-block-btn-text">@@block@@</span></a
>
<a class="dropdown-trigger btn waves-effect grey" href="#" data-target="actiondropdown"> <i class="material-icons">more_vert</i>@@more@@</a>
</div>
<div id="muteDuration" class="hide">
<label>
<input type="checkbox" class="filled-in" id="notf_mute" value="1" />
<span>@@notfMute@@</span>
</label>
<br />
@@zeroSetToInfinity@@<br />
Quick: <a onclick="muteTime(0,0,5)" class="pointer">5@@mins@@</a>/ <a onclick="muteTime(0,0,30)" class="pointer">30@@mins@@</a>/ <a onclick="muteTime(0,1,0)" class="pointer">1@@hours@@</a>/
<a onclick="muteTime(0,6,0)" class="pointer">6@@hours@@</a>/ <a onclick="muteTime(1,0,0)" class="pointer">1@@days@@</a>/
<a onclick="muteTime(3,0,0)" class="pointer">3@@days@@</a>/ <a onclick="muteTime(7,0,0)" class="pointer">7@@days@@</a>
<a onclick="muteTime(0,0,0)" class="pointer">@@unlimited@@</a><br />
<input type="number" style="width: 62px" id="days_mute" placeholder="d" value="0" />@@days@@
<input type="number" style="width: 62px" id="hours_mute" placeholder="h" value="0" />@@hours@@
<input type="number" style="width: 62px" id="mins_mute" placeholder="m" value="0" />@@mins@@
<a href="#!" class="waves-effect waves-green btn blue" onclick="muteDo()" id="his-mute-btn"
><i class="material-icons">voice_over_off</i><span id="his-mute-btn-text">@@mute@@</span>
</a>
</div>
<!-- Dropdown Structure -->
<ul id="actiondropdown" class="dropdown-content">
<li onclick="empUser()">
<a title="@@empUser@@"><i class="material-icons">highlight</i>@@empUser@@</a>
</li>
<li onclick="pinUser()" class="only-his-data">
<a title="@@endorse@@"><i class="material-icons">thumb_up</i>@@endorse@@</a>
</li>
<li onclick="profbrws()" id="his-openin">
<a title="@@openinbrowser@@"><i class="material-icons">open_in_browser</i>@@openinbrowser@@</a>
</li>
<li onclick="setMain()" class="only-my-data" id="his-main-acct">
<a title="@@mainacct@@"><i class="material-icons">grade</i>@@mainacct@@</a>
</li>
</ul>
</div>
</div>
<div class="his-float" id="his-float-timeline">
<div id="my-data-nav">
<a go="#his-tl" title="@@timeline@@" class="btn active-back column-first anc-link waves-effect"><i class="material-icons">timeline</i>@@timeline@@</a>
<a go="#his-follow-list" title="@@follow@@" class="btn anc-link waves-effect"><i class="material-icons">people</i>→@@follow@@</a>
<a go="#his-follower-list" title="@@follower@@" class="btn anc-link waves-effect"><i class="material-icons">people</i>←@@follower@@</a>
<a go="#his-fav-list" title="@@favRegist@@" class="btn only-my-data anc-link waves-effect"> <i class="material-icons">star</i>@@favRegist@@</a>
<a class="dropdown-trigger btn waves-effect" href="#" data-target="hisdropdown"><i class="material-icons">more_vert</i>@@more@@</a>
<div id="his-data-title-wrap">
<span id="his-data-title"><i class="material-icons">timeline</i>@@timeline@@</span>
<button class="btn waves-effect grey darken-2" style="width: 180px" id="util-add" onclick="utlAdd()">
<i class="material-icons">add</i>
@@utlColumn@@
</button>
</div>
<!-- Dropdown Structure -->
<ul id="hisdropdown" class="dropdown-content">
<li class="anc-link only-his-data" go="#his-list">
<a href="#" title="@@list@@"> <i class="material-icons">list</i>@@list@@ </a>
</li>
<li class="anc-link only-my-data" go="#his-blocking-list">
<a href="#" title="@@blocks@@"><i class="material-icons">block</i>@@blocks@@</a>
</li>
<li class="anc-link only-my-data" go="#his-muting-list">
<a href="#" title="@@mute@@"><i class="material-icons">voice_over_off</i>@@mute@@</a>
</li>
<li class="anc-link only-my-data" go="#his-domain-list">
<a href="#" title="@@domainBlock@@"><i class="material-icons">cancel_schedule_send</i>@@domainBlock@@</a>
</li>
<li class="anc-link only-my-data" go="#his-prof-list">
<a href="#" title="@@editProf@@"><i class="material-icons">create</i>@@editProf@@</a>
</li>
<li class="anc-link only-my-data" go="#his-request-list">
<a href="#" title="@@followReq@@"><i class="material-icons">how_to_reg</i>@@followReq@@</a>
</li>
<li class="anc-link only-my-data" go="#his-follow-recom-list">
<a href="#" title="@@frc@@"><i class="material-icons">recent_actors</i>@@frc@@</a>
</li>
<li class="anc-link only-his-data" go="#his-action">
<a href="#" title="@@operateOtherAcct@@"><i class="material-icons">account_box</i>@@operateOtherAcct@@</a>
</li>
</ul>
</div>
<div id="his-tl" class="his-var-content">
<div id="his-tl-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="utlShow('--now','more')">@@more@@</button>
</div>
<div id="his-follow-list" class="his-var-content">
<div id="his-follow-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="flw('--now','more')">@@more@@</button>
</div>
<div id="his-follower-list" class="his-var-content">
<div id="his-follower-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="fer('--now','more')">@@more@@</button>
</div>
<div id="his-action" class="his-var-content">
@@useOtherAcct1@@@@revoverJP@@@@follow@@(@@warnUseOtherAcct@@)<br />
<div style="max-width: 500px">
<select id="user-acct-sel" class="acct-sel"></select>
</div>
@@revoverJPde@@
<a href="#!" class="waves-effect btn" onclick="follow('selector','selector')">@@follow@@</a><br />
@@or@@
<br />
<a href="#!" class="waves-effect btn" onclick="udgEx('selector', 'selector')">@@openProf@@</a><br />
</div>
<div id="his-list" class="his-var-content">
<div id="his-lists-a">@@warnListRegist@@</div>
<div id="his-lists-b"></div>
</div>
<div id="his-fav-list" class="his-var-content">
<div id="his-fav-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showFav('more')">@@more@@</button>
</div>
<div id="his-blocking-list" class="his-var-content">
<div id="his-blocking-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showBlo('more')">@@more@@</button>
</div>
<div id="his-muting-list" class="his-var-content">
<div id="his-muting-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showMut('more')">@@more@@</button>
</div>
<div id="his-domain-list" class="his-var-content">
<div id="his-domain-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showDom('more')">@@more@@</button>@@blockDomain@@
<br />
<input type="text" placeholder="example.com" id="domainblock" />
<button class="btn waves-effect" onclick="addDomainblock()">@@add@@</button>
<br />
</div>
<div id="his-prof-list" class="his-var-content">
@@name@@
<br />
<input type="text" placeholder="@@name@@" id="his-name-val" style="max-width: 250px" />
<br />@@note@@
<br />
<div class="input-field col s12">
<textarea placeholder="@@note@@" id="his-des-val" class="materialize-textarea"></textarea>
<label for="his-des-val">@@note@@</label>
</div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="profedit()">@@change@@</button>
<br />@@editProfImg@@:
<span id="prof-change">
<input type="file" onchange="imgChange(this,'avatar')" />
</span>
<br />@@editHeader@@:
<span id="header-change">
<input type="file" onchange="imgChange(this,'header')" />
</span>
</div>
<div id="his-request-list" class="his-var-content">
<div id="his-request-list-contents" class="cont-series"></div>
<button class="btn waves-effect" style="width: 100%; padding: 0" onclick="showReq('more')">@@more@@</button>
</div>
<div id="his-follow-recom-list" class="his-var-content">
<div id="his-follow-recom-contents" class="cont-series"></div>
</div>
<div id="his-float-blocked">
<div>@@blocked@@</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="modal-action waves-effect waves-green btn-flat" id="his-history-btn" onclick="historyShow()">@@historyBack@@</button>
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">@@close@@</a>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it",
"btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility",
@ -73,7 +74,9 @@
"favRegist": "Favourite",
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
@ -85,6 +88,8 @@
"makeNew": "Save",
"blocks": "Blocks",
"mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block",
"mute": "Mute",
"domainBlock": "Domain block",
@ -178,6 +183,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import",
"backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Import",
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Themes",
"popup": "Popup notification",
"popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test",
"width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
"widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "",
"margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size",
"savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.",
"savefolderwarn": "TheDesk uses this value when it tries to save pictures or take screenshots.",
"useragent": "User agent",
"useragentWarn": "Restart when changed",
"frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window",
"bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu",
"active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",
@ -161,7 +163,7 @@
"localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys",
@ -228,7 +230,7 @@
"reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?",
"resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk",
"hp": "Website",
"support": "Support",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it",
"btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility",
@ -73,7 +74,9 @@
"favRegist": "Favourite",
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
@ -85,6 +88,8 @@
"makeNew": "Save",
"blocks": "Blocks",
"mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block",
"mute": "Mute",
"domainBlock": "Domain block",
@ -178,6 +183,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import",
"backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Import",
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Themes",
"popup": "Popup notification",
"popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test",
"width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
"widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "",
"margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size",
"savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.",
"savefolderwarn": "TheDesk uses this value when it tries to save pictures or take screenshots.",
"useragent": "User agent",
"useragentWarn": "Restart when changed",
"frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window",
"bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu",
"active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",
@ -161,7 +163,7 @@
"localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys",
@ -228,7 +230,7 @@
"reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?",
"resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk",
"hp": "Website",
"support": "Support",

View File

@ -65,6 +65,7 @@
"afterFTL": "Федерализиран TL след този тоот",
"favedPeople": "Хора, които го харесват",
"btedPeople": "Хората, които го подсилиха",
"editHistory": "Edit history",
"useOtherAcct1": "Използване на друг профил",
"useOtherAcct2": ":unfav и unBT са деактивирани.",
"btWithVis": "Подсилването е видимо",
@ -73,7 +74,9 @@
"favRegist": "Любими",
"openBrowser": "Отваряне в браузъра",
"screenshot": "Направете снимка на екрана",
"copyBinary": "Copy raw image",
"copyURL": "Копирай URL адреса на този тоот",
"copy": "Copy",
"embed": "Закрепи",
"toots": "Тоот",
"follow": "Следвам",
@ -85,6 +88,8 @@
"makeNew": "Запази",
"blocks": "Блокове",
"mutes": "Заглушаване",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Блокове",
"mute": "Заглуши",
"domainBlock": "Блок домейн",
@ -178,6 +183,7 @@
"foundBug": "Намерена е грешка",
"show": "Покажи",
"directory": "Директория",
"discover": "Discover",
"active": "Наскоро активен",
"newcomer": "Новодошли",
"local_only": "Само местно",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "Вграденият HTML е изрязан.",
"lang_details_url": "URL адресът на този toot е изрязан.",
"lang_details_txt": "Съдържанието на този toot е изрязано.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "Няма данни",
"lang_filter_errordegree": "Моля, проверете контекстта",
"lang_list_nodata": "Няма данни",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "В процес...",
"lang_tl_postmarkers": "Данни за POST маркери. Моля изчакайте",
"lang_img_DLDone": "Изтеглени:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Копирано: URL адреса на това изображение",
"lang_layout_gotop": "Върнете се в горната част на тази колона. Когато иконата е червена, означава че тази колона не може да свърже API за споделане. Моля, презаредете.",
"lang_layout_thisacct": "{{notf}} от този акаунт",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Следвайте, за да добавите този потребител към списъците.",

View File

@ -13,13 +13,13 @@
"env": "Системни предпочитания",
"setlang": "Езици",
"backup": "Внос и износ на предпочитания",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import",
"backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Внос",
"export": "Износ",
"hardwareAcceleration": "Деактивиране на хардуерното ускорение",
"hardwareAccelerationWarn": "Автоматичното рестартиране",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Теми",
"popup": "Известие с изскачащ прозорец (за Windows)",
"popupwarn": "Скрито ако е зададено на „0“",
@ -28,7 +28,7 @@
"nnwarn": "Това не работи в Windows Portable вер.",
"nntest": "Тест за уведомяване",
"width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
"widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Минимална ширина на браузъра TweetDeck",
"fixwidthwarn": "",
"margin": "Margin between timelines",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window",
"bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu",
"active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "Относно тази тема",
"customImport": "Импортиране на персонализирани теми",
"delete": "Изтрий",
"preview": "Preview",
"timeline": "Предпочитания за времевата линия",
"timemode": "Времеви формат",
"relativetime": "Относителен формат: „преди 1 минута“, „преди 3 дни“",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Звук (Отговор)",
"favSound": "Звук(Фаворит)",
"btSound": "Звук(Подсилване)",
@ -161,7 +163,7 @@
"localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter",
"okswarn": "Можете да вмъкнете всякакви букви и емотикони само с 3 клавиша",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it",
"btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility",
@ -73,7 +74,9 @@
"favRegist": "Favourite",
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
@ -85,6 +88,8 @@
"makeNew": "Save",
"blocks": "Blocks",
"mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block",
"mute": "Mute",
"domainBlock": "Domain block",
@ -178,6 +183,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import",
"backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Import",
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Themes",
"popup": "Popup notification",
"popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test",
"width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
"widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "",
"margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size",
"savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.",
"savefolderwarn": "TheDesk uses this value when it tries to save pictures or take screenshots.",
"useragent": "User agent",
"useragentWarn": "Restart when changed",
"frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window",
"bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu",
"active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",
@ -161,7 +163,7 @@
"localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys",
@ -228,7 +230,7 @@
"reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?",
"resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk",
"hp": "Website",
"support": "Support",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it",
"btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Použít jiný účet",
"useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility",
@ -73,7 +74,9 @@
"favRegist": "Oblíbit",
"openBrowser": "Otevřít v prohlížeči",
"screenshot": "Vytvořit snímek obrazovky",
"copyBinary": "Copy raw image",
"copyURL": "Kopírovat URL tohoto tootu",
"copy": "Copy",
"embed": "Vložit",
"toots": "Tooty",
"follow": "Sledovat",
@ -85,6 +88,8 @@
"makeNew": "Uložit",
"blocks": "Blocks",
"mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block",
"mute": "Mute",
"domainBlock": "Domain block",
@ -178,6 +183,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "HTML pro vložení je zkopírován.",
"lang_details_url": "URL adresa tohoto tootu je zkopírována.",
"lang_details_txt": "Obsah tohoto tootu je zkopírován.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "Žádná data",
"lang_filter_errordegree": "Prosím zkontrolujte kontext",
"lang_list_nodata": "Žádná data",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} tohoto účtu",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "Tento účet byl přesunut",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[robot]",
"lang_showontl_followed": "Sledují vás",
"lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Oznámení ",
"lang_showontl_domain": "Doména ",
"lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "Systémové předvolby",
"setlang": "Jazyky",
"backup": "Import a export předvoleb",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import",
"backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Import",
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Motivy",
"popup": "Popupová oznámení (na Windows)",
"popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Odskoušet oznámení",
"width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
"widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Minimální šířka TweetDeck prohlížeče",
"fixwidthwarn": "",
"margin": "Margin between timelines",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window",
"bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu",
"active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Časový formát",
"relativetime": "Relativní formát: „před 1 minutou“, „před 3 dny“",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",
@ -161,7 +163,7 @@
"localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it",
"btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility",
@ -73,7 +74,9 @@
"favRegist": "Favourite",
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
@ -85,6 +88,8 @@
"makeNew": "Save",
"blocks": "Blocks",
"mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block",
"mute": "Mute",
"domainBlock": "Domain block",
@ -178,6 +183,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import",
"backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Import",
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Themes",
"popup": "Popup notification",
"popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test",
"width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
"widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "",
"margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size",
"savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.",
"savefolderwarn": "TheDesk uses this value when it tries to save pictures or take screenshots.",
"useragent": "User agent",
"useragentWarn": "Restart when changed",
"frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window",
"bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu",
"active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",
@ -161,7 +163,7 @@
"localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys",
@ -228,7 +230,7 @@
"reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?",
"resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk",
"hp": "Website",
"support": "Support",

View File

@ -1,7 +1,7 @@
{
"draghere": "Zum Hochladen hier her ziehen",
"nowOffline": "OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet",
"reOnline": "Now we are in the Internet, you should reload...",
"nowOffline": "OFFLINE: Ihr gesamter Beiträge befinden sich in Entwürfen und du solltest nach einer erneuten Internetverbindung neu laden",
"reOnline": "Jetzt haben wir wieder Internet. Du solltest neuladen...",
"close": "Schließen",
"webSrc": "Suche im Internet",
"tsSrc": "Bei Tootsearch suchen",
@ -65,6 +65,7 @@
"afterFTL": "Globaler-Verlauf nach diesem Tröt",
"favedPeople": "Leute, die es bevorzugt haben",
"btedPeople": "Leute, die es verstärkt haben",
"editHistory": "Verlauf bearbeiten",
"useOtherAcct1": "Anderes Konto verwenden",
"useOtherAcct2": ":unfav und unBT sind deaktiviert.",
"btWithVis": "Boost mit Sichtbarkeit",
@ -73,7 +74,9 @@
"favRegist": "Favoriten",
"openBrowser": "Im Browser öffnen",
"screenshot": "Bildschirmfoto aufnehmen",
"copyBinary": "Kopiere Rohdaten",
"copyURL": "URL dieses Tröts kopieren",
"copy": "Kopieren",
"embed": "Einbinden",
"toots": "Tröts",
"follow": "Folgen",
@ -85,6 +88,8 @@
"makeNew": "Speichern",
"blocks": "Blockiert",
"mutes": "Stumm geschaltet",
"notfMute": "Auch deren Benachrichtigungen stumm schalten",
"zeroSetToInfinity": "Dauer der Stummschaltung: 0 Min für dauerhaft einstellen",
"block": "Blockieren",
"mute": "Stummschalten",
"domainBlock": "Domänenblockade",
@ -178,6 +183,7 @@
"foundBug": "Ich habe einen Fehler gefunden",
"show": "Zeige",
"directory": "Verzeichnis",
"discover": "Entdecken",
"active": "Kürzlich aktiv",
"newcomer": "Neu eingetroffen",
"local_only": "Nur lokal",

View File

@ -60,8 +60,8 @@
"lang_postimg_failupload": "Gescheitert",
"lang_postimg_delete": "Klicken, um Beschreibung hinzuzufügen, Rechtsklick zum Löschen",
"lang_postimg_desc": "Beschreibung",
"lang_postimg_leadContext": "right-click the thumbnail to delete this",
"lang_post_syncDetail": "Upload media synchronously",
"lang_postimg_leadContext": "Rechtsklick auf das Vorschaubild, um dies zu löschen",
"lang_post_syncDetail": "Medien synchron hochladen",
"lang_post_syncDetailText": "Click each picture icon to get the thumbnail. If you can get, the media you uploaded are completely processed.",
"lang_post_tagTL": "Dieses Tröt enthält keinen Standard-Tag. Er wird in dem lokalen Verlauf nicht angezeigt. Fortfahren?",
"lang_post_tagVis": "Dieser Tröt (nicht 'öffentlicher' Tröt) wird nicht in diesem Tag-Verlauf angezeigt.",
@ -103,6 +103,7 @@
"lang_details_embed": "Eingefügtes HTML wurde entfernt.",
"lang_details_url": "URL dieses Tröts wurde entfernt.",
"lang_details_txt": "Inhalt dieses Tröts wurde entfernt.",
"lang_details_fetch": "Daten des Tröts abrufen…",
"lang_filter_nodata": "Keine Daten",
"lang_filter_errordegree": "Bitte überprüfen Sie den Kontext",
"lang_list_nodata": "Keine Daten",
@ -123,9 +124,10 @@
"lang_tags_tagwarn": "Automatisch {{tag}} anfügen, wenn Tröt ohne {{tag}} ist",
"lang_tl_media": "Medien",
"lang_tl_reconnect": "Mit Streaming API erneut verbinden",
"lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers_title": "Verarbeite...",
"lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Heruntergeladen:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Kopiert: URL dieses Bildes",
"lang_layout_gotop": "Gehen Sie zum Anfang dieser Spalte. Wenn das Symbol rot ist, kann diese Spalte keine Verbindung zur Streaming-API herstellen. Bitte neu laden.",
"lang_layout_thisacct": "{{notf}} dieses Kontos",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "Es dauert 30s bis mehrere Minuten",
"lang_hisdata_notonmisskey": "Misskey kann nicht angefordert werden.",
"lang_hisdata_key": "Dieser Benutzer ist von {{set}} überprüft",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "Dieses Konto wurde verschoben",
"lang_showontl_movebtn": "Auf dem neuen Konto fortfahren",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Folgt dir",
"lang_parse_request": "Anfrage folgen",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Benachrichtigung ",
"lang_showontl_domain": "Domäne ",
"lang_showontl_listwarn": "Folgen, um diesen Benutzer zu Listen hinzuzufügen.",
@ -213,7 +218,7 @@
"lang_parse_detail": "Details",
"lang_parse_redraft": "Löschen & Neuentwerfen",
"lang_parse_followed": "Folgt dir",
"lang_parse_moved": "Moved to...",
"lang_parse_moved": "Verschoben nach...",
"lang_parse_clientop": "Aktion dieses Clients",
"lang_parse_clienttxt": " wird",
"lang_parse_clientno": "Nichts unternehmen",
@ -221,7 +226,7 @@
"lang_parse_clientmute": "Stumm",
"lang_parse_mute": " wird stumm gemacht. Kann in den Einstellungen wieder entfernt werden.",
"lang_parse_voted": "Abgestimmt",
"lang_parse_myvote": "(My own poll)",
"lang_parse_myvote": "(Meine eigene Umfrage)",
"lang_parse_vote": "Abstimmen",
"lang_parse_unvoted": "Ergebnis ohne Abstimmung anzeigen",
"lang_parse_endedvote": "Abgelaufen",
@ -287,5 +292,5 @@
"lang_setting_exportwarn": "Nur wichtige Daten werden exportiert. Sie müssen diese Daten sichern.",
"lang_setting_importwarn": "Alle Daten werden gelöscht.",
"lang_setting_noupd": "Keine Updates verfügbar",
"lang_setting_thisisbeta": "This is beta version. You have to update manually."
"lang_setting_thisisbeta": "Dies ist die Beta-Version. Du musst manuell aktualisieren."
}

View File

@ -5,21 +5,21 @@
"no": "Nein",
"none": "Ohne",
"show": "Zeige",
"hide": "Hide",
"hide": "Verbergen",
"default": "Standard",
"change": "Ändern",
"select": "Auswahl",
"exec": "Exec",
"exec": "Ausführen",
"env": "Systemeinstellungen",
"setlang": "Sprachen",
"backup": "Import und Export von Einstellungen",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import",
"backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Importieren",
"export": "Exportieren",
"hardwareAcceleration": "Hardwarebeschleunigung deaktivieren",
"hardwareAccelerationWarn": "Automatischer Neustart",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Designs",
"popup": "Popup-Benachrichtigung(unter Windows)",
"popupwarn": "Bei \"0\" Ausgeschaltet.",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window",
"bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu",
"active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "Über dieses Design",
"customImport": "Import von eigenen Designs",
"delete": "Löschen",
"preview": "Vorschau",
"timeline": "Verlaufseinstellungen",
"timemode": "Zeitformat",
"relativetime": "Relatives Format:\"vor 1 Minuten\",\"vor 3 Tagen\"",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Ton bei Antwort",
"favSound": "Ton bei Favorit",
"btSound": "Ton bei Verstärkung",
@ -161,7 +163,7 @@
"localonly": "Nur lokal",
"zeroWidthEmoji": "Emojis ohne Abstand Einfügen",
"uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Tastaturkürzel Einstellungen",
"iks": "Schnell Einfügen",
"okswarn": "Sie können Buchstaben und Emojis mit 3-Tasten-Kombination einfügen",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it",
"btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility",
@ -73,7 +74,9 @@
"favRegist": "Favourite",
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
@ -85,6 +88,8 @@
"makeNew": "Save",
"blocks": "Blocks",
"mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block",
"mute": "Mute",
"domainBlock": "Domain block",
@ -178,6 +183,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
"backupWarn": "If you got a error when you choose the file, please paste the strings printed when you open the file and click import",
"backupWarn": "If you get an error when you choose the file, please paste the strings printed when you open the file and click import",
"import": "Import",
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"webviewWarn": "To use TweetDeck Integration, please turn it on. Please be aware that it may lessen the security level.",
"theme": "Themes",
"popup": "Popup notification",
"popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test",
"width": "Width of columns",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
"widthwarn": "Scroll bar will be shown when your window size is more than amounts of columns.",
"fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "",
"margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size",
"savefolder": "Folder to save",
"savefolderwarn": "TheDesk uses this value when it try to save pictures or take screenshots.",
"savefolderwarn": "TheDesk uses this value when it tries to save pictures or take screenshots.",
"useragent": "User agent",
"useragentWarn": "Restart when changed",
"frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme to Background)",
"bottom": "Background of menu-bar at bottom of window",
"bottom": "Background of menu-bar at the bottom of the window",
"emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu",
"active": "Background of 'active' elements",
@ -72,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@ -119,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",
@ -161,7 +163,7 @@
"localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Notice: if you post an animated picture like GIF, it will be converted static one.",
"uploadCropWarn": "Max long-side px. Uploaded images are converted to JPEG(from JPEG) or PNG(from others). Set 0 and the images will not be resized. Note: if you post an animated picture like a GIF, it will be converted to a static picture.",
"keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys",
@ -228,7 +230,7 @@
"reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?",
"resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk",
"hp": "Website",
"support": "Support",

View File

@ -65,6 +65,7 @@
"afterFTL": "crwdns3174:0crwdne3174:0",
"favedPeople": "crwdns3176:0crwdne3176:0",
"btedPeople": "crwdns3178:0crwdne3178:0",
"editHistory": "crwdns4602:0crwdne4602:0",
"useOtherAcct1": "crwdns3180:0crwdne3180:0",
"useOtherAcct2": "crwdns3182:0crwdne3182:0",
"btWithVis": "crwdns4324:0crwdne4324:0",
@ -73,7 +74,9 @@
"favRegist": "crwdns3188:0crwdne3188:0",
"openBrowser": "crwdns3190:0crwdne3190:0",
"screenshot": "crwdns3192:0crwdne3192:0",
"copyBinary": "crwdns4594:0crwdne4594:0",
"copyURL": "crwdns3194:0crwdne3194:0",
"copy": "crwdns4586:0crwdne4586:0",
"embed": "crwdns3196:0crwdne3196:0",
"toots": "crwdns3198:0crwdne3198:0",
"follow": "crwdns3200:0crwdne3200:0",
@ -85,6 +88,8 @@
"makeNew": "crwdns3210:0crwdne3210:0",
"blocks": "crwdns3212:0crwdne3212:0",
"mutes": "crwdns3214:0crwdne3214:0",
"notfMute": "crwdns4591:0crwdne4591:0",
"zeroSetToInfinity": "crwdns4593:0crwdne4593:0",
"block": "crwdns3216:0crwdne3216:0",
"mute": "crwdns3218:0crwdne3218:0",
"domainBlock": "crwdns3220:0crwdne3220:0",
@ -178,6 +183,7 @@
"foundBug": "crwdns4431:0crwdne4431:0",
"show": "crwdns3388:0crwdne3388:0",
"directory": "crwdns3390:0crwdne3390:0",
"discover": "crwdns4590:0crwdne4590:0",
"active": "crwdns3392:0crwdne3392:0",
"newcomer": "crwdns3394:0crwdne3394:0",
"local_only": "crwdns3396:0crwdne3396:0",

View File

@ -103,6 +103,7 @@
"lang_details_embed": "crwdns3584:0crwdne3584:0",
"lang_details_url": "crwdns3586:0crwdne3586:0",
"lang_details_txt": "crwdns3588:0crwdne3588:0",
"lang_details_fetch": "crwdns4588:0crwdne4588:0",
"lang_filter_nodata": "crwdns3590:0crwdne3590:0",
"lang_filter_errordegree": "crwdns3592:0crwdne3592:0",
"lang_list_nodata": "crwdns3594:0crwdne3594:0",
@ -126,6 +127,7 @@
"lang_tl_postmarkers_title": "crwdns3630:0crwdne3630:0",
"lang_tl_postmarkers": "crwdns3632:0crwdne3632:0",
"lang_img_DLDone": "crwdns3634:0crwdne3634:0",
"lang_imgBin_copyDone": "crwdns4596:0crwdne4596:0",
"lang_img_copyDone": "crwdns4380:0crwdne4380:0",
"lang_layout_gotop": "crwdns3636:0crwdne3636:0",
"lang_layout_thisacct": "crwdns3638:0{{notf}}crwdne3638:0",
@ -167,11 +169,14 @@
"lang_hisdata_taketime": "crwdns3694:0crwdne3694:0",
"lang_hisdata_notonmisskey": "crwdns3696:0crwdne3696:0",
"lang_hisdata_key": "crwdns3698:0{{set}}crwdne3698:0",
"lang_showontl_limited_title": "crwdns4598:0crwdne4598:0",
"lang_showontl_limited": "crwdns4600:0crwdne4600:0",
"lang_showontl_movetxt": "crwdns3700:0crwdne3700:0",
"lang_showontl_movebtn": "crwdns3702:0crwdne3702:0",
"lang_showontl_botacct": "crwdns3704:0[bot]crwdne3704:0",
"lang_showontl_followed": "crwdns3706:0crwdne3706:0",
"lang_parse_request": "crwdns4445:0crwdne4445:0",
"lang_parse_signup": "crwdns4603:0crwdne4603:0",
"lang_showontl_notf": "crwdns3708:0crwdne3708:0",
"lang_showontl_domain": "crwdns3710:0crwdne3710:0",
"lang_showontl_listwarn": "crwdns3712:0crwdne3712:0",

View File

@ -72,6 +72,7 @@
"desc": "crwdns3992:0crwdne3992:0",
"customImport": "crwdns3996:0crwdne3996:0",
"delete": "crwdns3998:0crwdne3998:0",
"preview": "crwdns4584:0crwdne4584:0",
"timeline": "crwdns4002:0crwdne4002:0",
"timemode": "crwdns4004:0crwdne4004:0",
"relativetime": "crwdns4006:0crwdne4006:0",
@ -119,6 +120,7 @@
"remote_imgWarn": "crwdns4384:0crwdne4384:0",
"moreContextMode": "crwdns4572:0crwdne4572:0",
"moreContextModeWarn": "crwdns4574:0crwdne4574:0",
"smallHeader": "crwdns4582:0crwdne4582:0",
"replySound": "crwdns4088:0crwdne4088:0",
"favSound": "crwdns4090:0crwdne4090:0",
"btSound": "crwdns4092:0crwdne4092:0",

View File

@ -21,5 +21,6 @@
"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)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
"haveExported": "Having the exported file of TheDesk, click here to jump setting page",
"redo": "Retry(re-input address)"
}

View File

@ -1,184 +1,189 @@
{
"draghere":"Drag here to upload",
"nowOffline":"OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet",
"reOnline":"Now we are in the Internet, you should reload...",
"close":"Close",
"draghere": "Drag here to upload",
"nowOffline": "OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet",
"reOnline": "Now we are in the Internet, you should reload...",
"close": "Close",
"webSrc": "Search on Web",
"tsSrc": "Search on tootsearch",
"showSelectProf":"Show profile of the selecting account",
"closethisbox":"Close this box",
"toot":"Toot",
"post-new":"Post new",
"nsfwDes":"Mark media as sensitive",
"cwDes":"Hide text behind warning",
"selfile":"Attach..",
"insertEmoji":"Emojis",
"schedule":"Scheduled toot",
"postat":"Post at",
"scheduleWarn":"2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
"clearToot":"Clear toot box",
"replyMode":"Reply",
"no":"No",
"yes":"Yes",
"temp":"Attaching files",
"nothing":"None",
"showSelectProf": "Show profile of the selecting account",
"closethisbox": "Close this box",
"toot": "Toot",
"post-new": "Post new",
"nsfwDes": "Mark media as sensitive",
"cwDes": "Hide text behind warning",
"selfile": "Attach..",
"insertEmoji": "Emojis",
"schedule": "Scheduled toot",
"postat": "Post at",
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
"clearToot": "Clear toot box",
"replyMode": "Reply",
"no": "No",
"yes": "Yes",
"temp": "Attaching files",
"nothing": "None",
"stamp": "Stamp",
"stampWarn": "Your acct(aa@bb.cc) is printed on the right-bottom of the uploaded image",
"vis":"Adjust status privacy",
"cwtext":"Warning text",
"selectVis":"Adjust status privacy",
"publicJP":"",
"unlistedJP":"",
"privateJP":"",
"localJP":"Local only",
"sectoot":"Secondary Toot",
"directJP":"",
"emojiWarn":"",
"emojiInsertWarn":"Some emojis are not able to be inserted.",
"refreshEmoji":"Refresh emojis list",
"closeThisBox":"Close this box",
"showThisEmoji":" are shown.",
"customEmoji":"Custom emojis",
"peopleEmoji":"Emojis of people",
"natureEmoji":"Emojis of nature",
"foodEmoji":"Emojis of foods",
"activityEmoji":"Emojis of activities",
"placeEmoji":"Emojis of places",
"thingsEmoji":"Emojis of tools",
"symbolEmoji":"Emojis of symbols",
"flagsEmoji":"Emojis of flags",
"vis": "Adjust status privacy",
"cwtext": "Warning text",
"selectVis": "Adjust status privacy",
"publicJP": "",
"unlistedJP": "",
"privateJP": "",
"localJP": "Local only",
"sectoot": "Secondary Toot",
"directJP": "",
"emojiWarn": "",
"emojiInsertWarn": "Some emojis are not able to be inserted.",
"refreshEmoji": "Refresh emojis list",
"closeThisBox": "Close this box",
"showThisEmoji": " are shown.",
"customEmoji": "Custom emojis",
"peopleEmoji": "Emojis of people",
"natureEmoji": "Emojis of nature",
"foodEmoji": "Emojis of foods",
"activityEmoji": "Emojis of activities",
"placeEmoji": "Emojis of places",
"thingsEmoji": "Emojis of tools",
"symbolEmoji": "Emojis of symbols",
"flagsEmoji": "Emojis of flags",
"draft": "Draft",
"poll":"Poll",
"pollDdisabled":"Polls: Disabled",
"pollProvider":"Provider of Poll",
"polluntil":"Hide 'votes' count until people vote it.",
"choice":"Choice",
"pollmulti":"Multiple select",
"expires_in":"Expires in...(sec)",
"contextBefore":"Context before this toot",
"thisToot":"This toot",
"contextAfter":"Context after this toot",
"beforeLTL":"Local TL before this toot",
"beforeUTL":"User TL before this toot",
"afterLTL":"Local TL after this toot)",
"afterUTL":"User TL before this toot",
"afterFTL":"Federated TL after this toot",
"favedPeople":"People who favourited it",
"btedPeople":"People who boosted it",
"useOtherAcct1":"Use other account",
"useOtherAcct2":":unfav and unBT are disabled.",
"poll": "Poll",
"pollDdisabled": "Polls: Disabled",
"pollProvider": "Provider of Poll",
"polluntil": "Hide 'votes' count until people vote it.",
"choice": "Choice",
"pollmulti": "Multiple select",
"expires_in": "Expires in...(sec)",
"contextBefore": "Context before this toot",
"thisToot": "This toot",
"contextAfter": "Context after this toot",
"beforeLTL": "Local TL before this toot",
"beforeUTL": "User TL before this toot",
"afterLTL": "Local TL after this toot)",
"afterUTL": "User TL before this toot",
"afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it",
"btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility",
"reply":"Reply",
"bt":"Boost",
"favRegist":"Favourite",
"openBrowser":"Open in browser",
"screenshot":"Take a screenshot",
"copyURL":"Copy the URL",
"copy":"Copy",
"embed":"Embed",
"toots":"Toots",
"follow":"Follow",
"follower":"Follower",
"utlColumn":"Show as a column",
"timeline":"Timeline",
"operateOtherAcct":"Cross-account",
"list":"List",
"makeNew":"Save",
"blocks":"Blocks",
"mutes":"Mutes",
"block":"Block",
"mute":"Mute",
"domainBlock":"Domain block",
"editProf":"Edit profile",
"change":"Save",
"followReq":"Follow requests",
"likeHimOrHer":"Resembling",
"endorse":"Feature on profile",
"openinbrowser":"Open in browser",
"mainacct":"Set it an main account",
"frc":"Suggest",
"more":"More",
"revoverJP":" to ",
"warnUseOtherAcct":"(Unable to unfollow)",
"revoverJPde":"",
"or":"or",
"openProf":"Show profile",
"warnListRegist":"Follow to add this user to lists.",
"blockDomain":"Add blocking domain",
"name":"Display name",
"note":"Note",
"editProfImg":"Change avataor",
"editHeader":"Change header image",
"blocked":"You are blocked. Why?",
"likeUserDes":"Get people resembling this user.",
"get":"Get",
"historyBack":"Back",
"empUser":"Emphasize this user",
"supportme":"Support TheDesk!",
"TheDeskDes":"TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!",
"PatreonSupport":"Support on Patreon",
"PixivSupport":"Support on Pixiv FANBOX",
"AWLSupport":"Amazon Wish List",
"SendAmazonGift1":"Give me Amazon Gift Card:",
"SendAmazonGift2":"",
"monthly":"Monthly",
"once":"Once",
"local":"Local",
"localMedia":"Local(Media)",
"home":"Home",
"fed":"Federated",
"fedMedia":"Federated(Media)",
"dm":"Direct Message",
"integratedTLDes":"Integrated(Local/Home)",
"localPlusDes":"LTL+Reply+BT",
"notf":"Notifications",
"reply": "Reply",
"bt": "Boost",
"favRegist": "Favourite",
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
"follower": "Follower",
"utlColumn": "Show as a column",
"timeline": "Timeline",
"operateOtherAcct": "Cross-account",
"list": "List",
"makeNew": "Save",
"blocks": "Blocks",
"mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block",
"mute": "Mute",
"domainBlock": "Domain block",
"editProf": "Edit profile",
"change": "Save",
"followReq": "Follow requests",
"likeHimOrHer": "Resembling",
"endorse": "Feature on profile",
"openinbrowser": "Open in browser",
"mainacct": "Set it an main account",
"frc": "Suggest",
"more": "More",
"revoverJP": " to ",
"warnUseOtherAcct": "(Unable to unfollow)",
"revoverJPde": "",
"or": "or",
"openProf": "Show profile",
"warnListRegist": "Follow to add this user to lists.",
"blockDomain": "Add blocking domain",
"name": "Display name",
"note": "Note",
"editProfImg": "Change avataor",
"editHeader": "Change header image",
"blocked": "You are blocked. Why?",
"likeUserDes": "Get people resembling this user.",
"get": "Get",
"historyBack": "Back",
"empUser": "Emphasize this user",
"supportme": "Support TheDesk!",
"TheDeskDes": "TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!",
"PatreonSupport": "Support on Patreon",
"PixivSupport": "Support on Pixiv FANBOX",
"AWLSupport": "Amazon Wish List",
"SendAmazonGift1": "Give me Amazon Gift Card:",
"SendAmazonGift2": "",
"monthly": "Monthly",
"once": "Once",
"local": "Local",
"localMedia": "Local(Media)",
"home": "Home",
"fed": "Federated",
"fedMedia": "Federated(Media)",
"dm": "Direct Message",
"integratedTLDes": "Integrated(Local/Home)",
"localPlusDes": "LTL+Reply+BT",
"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>).",
"add":"Add",
"search":"Search",
"sortSet":"Sort",
"selectAcct":"Account(Scroll to show all)",
"listLocale":"List",
"filterWord":"Filtering words",
"degree":"Filter contexts",
"conver":"Conversations",
"prof":"Profiles",
"option":"Options",
"matchWord":"Whole word",
"warnMatchWord":"Nice for Latin language",
"except":"Drop instead of hide",
"exceptWorn":"Filtered toots will disappear irreversibly, even if filter is later removed",
"avalableBefore":"Expire after",
"warnAvBefore":"Unset or \"0\" means \"Never\"",
"warnAvBefore2":"This value may contain some error",
"unlimited":"Never",
"days":"day(s)",
"hours":"hour(s)",
"mins":"minute(s)",
"secs":"second(s)",
"warnOnIntegratedTL":"Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.",
"helloTheDesk":"Internal error: please clear all data(at setting page) <b>All data will be deleted.</b>",
"addColumn":"Add a column",
"sortColumns":"Sort",
"acctMan":"Account Manager",
"filter":"Filter",
"setting":"Preferences",
"reverse":"Toot button layout reverse",
"f5":"Reload TL",
"nanoDes":"The smallest Mastodon,",
"verTips":"Version",
"clockTips":"Clock",
"ramTips":"RAM status",
"changeTips":"Change Tips",
"helpAndLogs":"Help & Log",
"help":"Help",
"contactwithlog":"If you tell me bugs(not working or something) with this log, I can detect what is wrong more easily.",
"about":"About TheDesk",
"hereAddColumns":"<- Add TL",
"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>).",
"add": "Add",
"search": "Search",
"sortSet": "Sort",
"selectAcct": "Account(Scroll to show all)",
"listLocale": "List",
"filterWord": "Filtering words",
"degree": "Filter contexts",
"conver": "Conversations",
"prof": "Profiles",
"option": "Options",
"matchWord": "Whole word",
"warnMatchWord": "Nice for Latin language",
"except": "Drop instead of hide",
"exceptWorn": "Filtered toots will disappear irreversibly, even if filter is later removed",
"avalableBefore": "Expire after",
"warnAvBefore": "Unset or \"0\" means \"Never\"",
"warnAvBefore2": "This value may contain some error",
"unlimited": "Never",
"days": "day(s)",
"hours": "hour(s)",
"mins": "minute(s)",
"secs": "second(s)",
"warnOnIntegratedTL": "Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.",
"helloTheDesk": "Internal error: please clear all data(at setting page) <b>All data will be deleted.</b>",
"addColumn": "Add a column",
"sortColumns": "Sort",
"acctMan": "Account Manager",
"filter": "Filter",
"setting": "Preferences",
"reverse": "Toot button layout reverse",
"f5": "Reload TL",
"nanoDes": "The smallest Mastodon,",
"verTips": "Version",
"clockTips": "Clock",
"ramTips": "RAM status",
"changeTips": "Change Tips",
"helpAndLogs": "Help & Log",
"help": "Help",
"contactwithlog": "If you tell me bugs(not working or something) with this log, I can detect what is wrong more easily.",
"about": "About TheDesk",
"hereAddColumns": "<- Add TL",
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@ -50,6 +50,8 @@
"lang_manager_logout": "Logout",
"lang_manager_maxChars": "Max chars of toots",
"lang_manager_refreshAt": "Login with this domain",
"lang_manager_codesetup_title": "Skip code-setup",
"lang_manager_codesetup": "If you failed log-in, please click Cancel.",
"lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
"lang_emoji_get": "Get emojis",
"lang_emoji_custom": "Custom emojis",
@ -103,6 +105,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",
@ -126,6 +129,7 @@
"lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL of this image",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account",
@ -162,16 +166,20 @@
"lang_spotify_acct": "Connect TheDesk to Spotify",
"lang_spotify_np": "Done:templete of NowPlaying",
"lang_setting_npprovide": "NowPlaying provider:{{set}}",
"lang_setting_webview_warn": "Please turn WebView on at System Preferences of TheDesk to add TweetDeck as a column",
"lang_hisdata_frcreq": "Required Mastodon 2.4.3 and above",
"lang_hisdata_frcwarn": "Unfollow accounts will be shown.",
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",

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