Compare commits

...

149 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
osapon
7b2254948b Use DOM for shortcode replacement. 2020-01-01 19:21:35 +09:00
194 changed files with 10245 additions and 11876 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 *.code-workspace
releasenote.md releasenote.md
app/yarn-error.log app/yarn-error.log
app/js/platform/aiscript.js app/js/platform/native.js
app/view/es-ES app/view/es-ES
app/view/fr-FR app/view/fr-FR
app/view/no-NO app/view/no-NO
@ -34,7 +34,9 @@ app/view/zh-CN
app/view/ru-RU app/view/ru-RU
app/view/zh-TW app/view/zh-TW
app/view/pt-BR app/view/pt-BR
app/view/si-LK
app/build.js app/build.js
app/view/make/make.js app/view/make/make.js
app/view/make/makeCli.ts app/view/make/makeCli.ts
app/.env app/.env
app/view/make/index.generated.html

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

@ -35,9 +35,10 @@ Crowdinから翻訳に参加してみませんか: https://translate.thedesk.
Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。 Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。
Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。 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) [![](https://opencollective.com/TheDesk/contributors.svg?width=400&button=false)](https://github.com/cutls/TheDesk/graphs/contributors)
* <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)
## 支援 ## 支援

View File

@ -4,7 +4,7 @@
<head> <head>
<title>TheDesk</title> <title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport" /> <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/font-awesome.css" rel="stylesheet" type="text/css" />
<link href="./css/themes.css" type="text/css" rel="stylesheet" /> <link href="./css/themes.css" type="text/css" rel="stylesheet" />
<link href="./css/master.css" type="text/css" rel="stylesheet" /> <link href="./css/master.css" type="text/css" rel="stylesheet" />
@ -87,7 +87,7 @@
<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="./node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first-not-view.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> <script type="text/javascript" src="./node_modules/@cutls/materialize-css/dist/js/materialize.js"></script>
<img src="./img/desk.svg" style="max-width: 58%;" /> <img src="./img/desk.svg" style="max-width: 58%;" />
<h5>TheDesk</h5> <h5>TheDesk</h5>
<div class="container"> <div class="container">
@ -105,7 +105,7 @@
<div class="area-data6" id="node"></div> <div class="area-data6" id="node"></div>
</div> </div>
<div class="cp"> <div class="cp">
Copyright &copy; TheDesk 2018<br /> Main developer(author): <a href="https://1m.cutls.com/@Cutls" target="_blank">Cutls P</a><br /> 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> <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> <br /><a href="https://thedesk.top" target="_blank">Web site</a>
</div> </div>
@ -124,8 +124,9 @@
} }
$('#hash').html('<a href="https://github.com/cutls/TheDesk/commits/' + about[3] + '" target="_blank">' + about[3].slice(0, 7) + '</a>') $('#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) => { $(document).on('click', 'a', (e) => {
e.preventDefault()
var url = $(e.target).attr('href') var url = $(e.target).attr('href')
postMessage(['openUrl', url], '*') postMessage(['openUrlMainProcess', url], '*')
return false return false
}) })
</script> </script>

1
app/build.d.ts vendored
View File

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

View File

@ -11,6 +11,7 @@ const construct = require('./view/make/make.js')
const { platform, arch } = process const { platform, arch } = process
const Platform = builder.Platform const Platform = builder.Platform
const Arch = builder.Arch const Arch = builder.Arch
require('dotenv').config()
const artifactName = 'TheDesk-setup-${arch}.${ext}' const artifactName = 'TheDesk-setup-${arch}.${ext}'
const config = { const config = {
productName: 'TheDesk', productName: 'TheDesk',
@ -41,6 +42,9 @@ const config = {
target: ['zip', 'appImage', 'snap', 'deb'], target: ['zip', 'appImage', 'snap', 'deb'],
category: 'Network', category: 'Network',
}, },
deb: {
depends: ['gconf2', 'gconf-service', 'libnotify4', 'libappindicator1', 'libxtst6', 'libnss3']
},
mac: { mac: {
hardenedRuntime: true, hardenedRuntime: true,
gatekeeperAssess: false, gatekeeperAssess: false,
@ -70,8 +74,8 @@ async function cmd(options) {
if (isTrue(options, 'onlyStore') || isTrue(options, 'withStore')) { if (isTrue(options, 'onlyStore') || isTrue(options, 'withStore')) {
console.log('start building for application stores') console.log('start building for application stores')
construct(ver, basefile, false, true) construct(ver, basefile, false, true)
if ((platform == 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) { if ((platform === 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) {
if ((isTrue(options, 'withIa32') && arch == 'x64') || arch == 'ia32') { if ((isTrue(options, 'withIa32') && arch === 'x64') || arch === 'ia32') {
config.nsis.artifactName = artifactName.replace('${arch}', 'ia32') config.nsis.artifactName = artifactName.replace('${arch}', 'ia32')
await build(Platform.WINDOWS, Arch.ia32, config) await build(Platform.WINDOWS, Arch.ia32, config)
fs.renameSync( fs.renameSync(
@ -83,7 +87,7 @@ async function cmd(options) {
'../build/TheDesk-setup-ia32-store.exe' '../build/TheDesk-setup-ia32-store.exe'
) )
} }
if (arch == 'x64') { if (arch === 'x64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'x64') config.nsis.artifactName = artifactName.replace('${arch}', 'x64')
await build(Platform.WINDOWS, Arch.x64, config) await build(Platform.WINDOWS, Arch.x64, config)
fs.renameSync( fs.renameSync(
@ -96,14 +100,14 @@ async function cmd(options) {
) )
} }
} }
if ((platform == 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) { if ((platform === 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) {
if (arch == 'ia32') { if (arch === 'ia32') {
await build(Platform.LINUX, Arch.ia32, config) 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') console.log('snapcraft does not curretly support builing i386 on amd64')
} }
if (arch == 'x64') { if (arch === 'x64') {
await build(Platform.LINUX, Arch.x64, config) await build(Platform.LINUX, Arch.x64, config)
if (!isTrue(options, 'onlyStore')) { if (!isTrue(options, 'onlyStore')) {
fs.renameSync( fs.renameSync(
@ -117,8 +121,8 @@ async function cmd(options) {
if (!isTrue(options, 'onlyStore')) { if (!isTrue(options, 'onlyStore')) {
console.log('start building for normal usage') console.log('start building for normal usage')
construct(ver, basefile, false, false) construct(ver, basefile, false, false)
if ((platform == 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) { if ((platform === 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) {
if ((isTrue(options, 'withIa32') && arch == 'x64') || arch == 'ia32') { if ((isTrue(options, 'withIa32') && arch === 'x64') || arch === 'ia32') {
config.nsis.artifactName = artifactName.replace('${arch}', 'ia32') config.nsis.artifactName = artifactName.replace('${arch}', 'ia32')
await build(Platform.WINDOWS, Arch.ia32, config) await build(Platform.WINDOWS, Arch.ia32, config)
fs.renameSync( fs.renameSync(
@ -126,7 +130,7 @@ async function cmd(options) {
'../build/TheDesk-ia32.exe' '../build/TheDesk-ia32.exe'
) )
} }
if (arch == 'x64') { if (arch === 'x64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'x64') config.nsis.artifactName = artifactName.replace('${arch}', 'x64')
await build(Platform.WINDOWS, Arch.x64, config) await build(Platform.WINDOWS, Arch.x64, config)
fs.renameSync( fs.renameSync(
@ -138,7 +142,7 @@ async function cmd(options) {
'../build/TheDesk-setup.exe' '../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') config.nsis.artifactName = artifactName.replace('${arch}', 'arm64')
await build(Platform.WINDOWS, Arch.arm64, config) await build(Platform.WINDOWS, Arch.arm64, config)
fs.renameSync( fs.renameSync(
@ -147,14 +151,14 @@ async function cmd(options) {
) )
} }
} }
if ((platform == 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) { if ((platform === 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) {
if (arch == 'ia32') { if (arch === 'ia32') {
await build(Platform.LINUX, Arch.ia32, config) 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') console.log('snapcraft does not curretly support builing i386 on amd64')
} }
if (arch == 'x64') { if (arch === 'x64') {
await build(Platform.LINUX, Arch.x64, config) await build(Platform.LINUX, Arch.x64, config)
fs.renameSync( fs.renameSync(
`../build/thedesk_${version}_amd64.snap`, `../build/thedesk_${version}_amd64.snap`,
@ -168,9 +172,27 @@ async function cmd(options) {
} }
} }
} }
if (platform == 'darwin' && !isTrue(options, 'skipMacOS')) { if (platform === 'darwin' && !isTrue(options, 'skipMacOS')) {
if(isTrue(options, 'unnotarize')) delete config.afterSign 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) 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] [only macOS]
--unnotarize: Without notarize --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) * @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} * @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"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key> <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/> <true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
</dict> </dict>
</plist> </plist>

View File

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

@ -86,6 +86,7 @@ option {
#imagemodal .modal-footer { #imagemodal .modal-footer {
overflow-x: hidden; overflow-x: hidden;
overflow-y: hidden; overflow-y: hidden;
height: 56px;
} }
#imagewrap { #imagewrap {

View File

@ -721,9 +721,11 @@
text-rendering: auto; text-rendering: auto;
line-height: 1; line-height: 1;
font-weight: 900; font-weight: 900;
color: #000; color: var(--text);
position: relative; position: relative;
font-size: 1.5em font-size: 1.5em;
top: 1.7rem;
left: 1rem;
} }
.swal2-icon { .swal2-icon {

View File

@ -297,7 +297,7 @@ iframe,
.area-display_name { .area-display_name {
user-select: text; user-select: text;
height: 1.5em; height: 1.5rem;
margin: 0.15rem; margin: 0.15rem;
margin-left: 0.4rem; margin-left: 0.4rem;
overflow: hidden; overflow: hidden;
@ -780,6 +780,11 @@ p:not(:last-child) {
.dropdown-content li { .dropdown-content li {
padding-top: 0.4rem; padding-top: 0.4rem;
} }
.dropdown-content li > a, .dropdown-content li > span {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.fa-2x > .emoji-img { .fa-2x > .emoji-img {
width: 2.3rem !important; width: 2.3rem !important;
height: 2.3rem !important; height: 2.3rem !important;

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

@ -1,18 +1,18 @@
//バージョンチェッカー //バージョンチェッカー
function verck(ver, jp) { async function verck(ver, jp) {
if (store) return false if (store) return false
console.log('%c Welcome😊 ' + ver, 'color: red;font-size:200%;') console.log('%c Welcome😊 ' + ver, 'color: red;font-size:200%;')
$('body').addClass(localStorage.getItem('platform')) $('body').addClass(localStorage.getItem('platform'))
var date = new Date() const date = new Date()
var showVer = false let showVer = false
if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) { if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) {
showVer = true showVer = true
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;') console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
$(document).ready(function() { $(document).ready(function () {
if (localStorage.getItem('winstore') && !pwa) { if (localStorage.getItem('winstore') && !pwa) {
$('#releasenote').modal('open') $('#releasenote').modal('open')
} }
verp = ver.replace('(', '') let verp = ver.replace('(', '')
verp = verp.replace('.', '-') verp = verp.replace('.', '-')
verp = verp.replace('.', '-') verp = verp.replace('.', '-')
verp = verp.replace('[', '-') verp = verp.replace('[', '-')
@ -30,13 +30,14 @@ function verck(ver, jp) {
localStorage.setItem('ver', ver) localStorage.setItem('ver', ver)
if (!showVer) { if (!showVer) {
console.log(showVer) console.log(showVer)
let nextmonth
if (!localStorage.getItem('showSupportMe')) { if (!localStorage.getItem('showSupportMe')) {
if (date.getMonth() == 11) { if (date.getMonth() == 11) {
var yrs = date.getFullYear() + 1 const yrs = date.getFullYear() + 1
var nextmonth = yrs * 100 + 1 nextmonth = yrs * 100 + 1
} else { } else {
var yrs = date.getFullYear() const yrs = date.getFullYear()
var nextmonth = yrs * 100 + date.getMonth() + 2 nextmonth = yrs * 100 + date.getMonth() + 2
} }
localStorage.setItem('showSupportMe', nextmonth) localStorage.setItem('showSupportMe', nextmonth)
} else { } else {
@ -44,11 +45,11 @@ function verck(ver, jp) {
date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe') date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe')
) { ) {
if (date.getMonth() == 11) { if (date.getMonth() == 11) {
var yrs = date.getFullYear() + 1 const yrs = date.getFullYear() + 1
var nextmonth = yrs * 100 + 1 nextmonth = yrs * 100 + 1
} else { } else {
var yrs = date.getFullYear() const yrs = date.getFullYear()
var nextmonth = yrs * 100 + date.getMonth() + 2 nextmonth = yrs * 100 + date.getMonth() + 2
} }
localStorage.setItem('showSupportMe', nextmonth) localStorage.setItem('showSupportMe', nextmonth)
if (lang.language != 'ja') { if (lang.language != 'ja') {
@ -68,55 +69,35 @@ function verck(ver, jp) {
} }
} }
var platform = localStorage.getItem('platform') const platform = localStorage.getItem('platform')
console.log('Your platform:' + platform) console.log('Your platform:' + platform)
//if (!localStorage.getItem('winstore') && !pwa) { //if (!localStorage.getItem('winstore') && !pwa) {
// $('#start').css('display', 'flex') // $('#start').css('display', 'flex')
//} //}
if ( const winstore = localStorage.getItem('winstore') == 'brewcask' ||
localStorage.getItem('winstore') == 'brewcask' ||
localStorage.getItem('winstore') == 'snapcraft' || localStorage.getItem('winstore') == 'snapcraft' ||
localStorage.getItem('winstore') == 'winstore' localStorage.getItem('winstore') == 'winstore'
) { const l = 5
var winstore = true
} else {
var winstore = false
}
var l = 5
// 生成する文字列に含める文字セット // 生成する文字列に含める文字セット
var c = 'abcdefghijklmnopqrstuvwxyz0123456789' const c = 'abcdefghijklmnopqrstuvwxyz0123456789'
var cl = c.length const cl = c.length
var r = '' let r = ''
for (var i = 0; i < l; i++) { for (var i = 0; i < l; i++) {
r += c[Math.floor(Math.random() * cl)] r += c[Math.floor(Math.random() * cl)]
} }
var start = 'https://thedesk.top/ver.json' const start1 = 'https://thedesk.top/ver.json'
fetch(start, { const response = await fetch(start1, { method: 'GET' })
method: 'GET'
})
.then(function(response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() const mess = await response.json()
})
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(mess) {
console.table(mess) console.table(mess)
if (mess) { if (mess) {
var platform = localStorage.getItem('platform') const platform = localStorage.getItem('platform')
if (platform == 'darwin') { const newest = platform == 'darwin' ? mess.desk_mac : mess.desk
var newest = mess.desk_mac
} else {
var newest = mess.desk
}
if (newest == ver) { if (newest == ver) {
todo(lang.lang_version_usever.replace('{{ver}}', mess.desk)) todo(lang.lang_version_usever.replace('{{ver}}', mess.desk))
//betaかWinstoreならアプデチェックしない //betaかWinstoreならアプデチェックしない
@ -135,7 +116,6 @@ function verck(ver, jp) {
} }
} }
} }
})
if (!localStorage.getItem('last-notice-id')) { if (!localStorage.getItem('last-notice-id')) {
localStorage.setItem('last-notice-id', 0) localStorage.setItem('last-notice-id', 0)
} }
@ -144,20 +124,20 @@ function verck(ver, jp) {
method: 'GET', method: 'GET',
cors: true cors: true
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(mess) { .then(function (mess) {
if (mess.length < 1) { if (mess.length < 1) {
return false return false
} else { } else {
@ -191,7 +171,7 @@ function verck(ver, jp) {
if (multi) { if (multi) {
showVer = false showVer = false
var accts = JSON.parse(multi) var accts = JSON.parse(multi)
Object.keys(accts).forEach(function(key) { Object.keys(accts).forEach(function (key) {
var acct = accts[key] var acct = accts[key]
if (acct.domain == obj.domain) { if (acct.domain == obj.domain) {
showVer = true showVer = true
@ -218,11 +198,11 @@ function verck(ver, jp) {
var infostreaming = false var infostreaming = false
function infowebsocket() { function infowebsocket() {
infows = new WebSocket('wss://thedesk.top/ws/') infows = new WebSocket('wss://thedesk.top/ws/')
infows.onopen = function(mess) { infows.onopen = function (mess) {
console.log([tlid, ':Connect Streaming Info:', mess]) console.log([tlid, ':Connect Streaming Info:', mess])
infostreaming = true infostreaming = true
} }
infows.onmessage = function(mess) { infows.onmessage = function (mess) {
console.log([tlid, ':Receive Streaming:', JSON.parse(mess.data)]) console.log([tlid, ':Receive Streaming:', JSON.parse(mess.data)])
var obj = JSON.parse(mess.data) var obj = JSON.parse(mess.data)
if (obj.type != 'counter') { if (obj.type != 'counter') {
@ -250,7 +230,7 @@ function infowebsocket() {
if (multi) { if (multi) {
showVer = false showVer = false
var accts = JSON.parse(multi) var accts = JSON.parse(multi)
Object.keys(accts).forEach(function(key) { Object.keys(accts).forEach(function (key) {
var acct = accts[key] var acct = accts[key]
if (acct.domain == obj.domain) { if (acct.domain == obj.domain) {
showVer = true showVer = true
@ -275,18 +255,18 @@ function infowebsocket() {
$('#persons').text(obj.text) $('#persons').text(obj.text)
} }
} }
infows.onerror = function(error) { infows.onerror = function (error) {
infostreaming = false infostreaming = false
console.error('Error closing:info') console.error('Error closing:info')
console.error(error) console.error(error)
return false return false
} }
infows.onclose = function() { infows.onclose = function () {
infostreaming = false infostreaming = false
console.error('Closing:info') console.error('Closing:info')
} }
} }
setInterval(function() { setInterval(function () {
if (!infostreaming) { if (!infostreaming) {
console.log('try to connect to base-streaming') console.log('try to connect to base-streaming')
infowebsocket() infowebsocket()
@ -314,7 +294,7 @@ function closeSupport() {
}, },
{ {
duration: 300, duration: 300,
complete: function() { complete: function () {
$('#support-btm').addClass('hide') $('#support-btm').addClass('hide')
} }
} }

View File

@ -611,8 +611,9 @@ function multiSelector(parseC) {
$('#add-acct-sel').append( $('#add-acct-sel').append(
'<option value="noauth">' + '<option value="noauth">' +
lang.lang_login_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>') $('#dir-acct-sel').append('<option value="noauth">' + lang.lang_login_noauth + '</option>')
} }
$('select').formSelect() $('select').formSelect()

View File

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

View File

@ -145,7 +145,7 @@ onmessage = function (e) {
} else if (e.data[0] == 'udg') { } else if (e.data[0] == 'udg') {
udg(e.data[1][0], e.data[1][1]) udg(e.data[1][0], e.data[1][1])
} else if (e.data[0] == 'media') { } 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') { } else if (e.data[0] == 'post') {
post('pass') post('pass')
} else if (e.data[0] == 'toastSaved') { } else if (e.data[0] == 'toastSaved') {

View File

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

View File

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

View File

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

View File

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

View File

@ -15,7 +15,7 @@ function fav(id, acct_id, remote) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send() httpreq.send()
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
@ -75,7 +75,7 @@ function rt(id, acct_id, remote, vis) {
} else { } else {
httpreq.send() httpreq.send()
} }
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
@ -132,7 +132,7 @@ function bkm(id, acct_id, tlid) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send() httpreq.send()
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
@ -201,7 +201,7 @@ async function follow(acct_id, resolve) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send(JSON.stringify(ent)) httpreq.send(JSON.stringify(ent))
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
@ -296,7 +296,7 @@ function block(acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send() httpreq.send()
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
if (this.status !== 200) { if (this.status !== 200) {
setLog(start, this.status, this.response) setLog(start, this.status, this.response)
@ -340,13 +340,23 @@ function muteDo(acct_id) {
var id = $('#his-data').attr('user-id') var id = $('#his-data').attr('user-id')
var domain = localStorage.getItem('domain_' + acct_id) var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at') var at = localStorage.getItem('acct_' + acct_id + '_at')
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') { if (localStorage.getItem('mode_' + domain) == 'misskey') {
var start = 'https://' + domain + '/api/mute/' + flagm var start = 'https://' + domain + '/api/mute/' + flagm
var ent = { i: at, userId: id } var ent = { i: at, userId: id }
var rq = JSON.stringify(ent) var rq = JSON.stringify(ent)
} else { } else {
var start = 'https://' + domain + '/api/v1/accounts/' + id + '/' + flag 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() var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true) httpreq.open('POST', start, true)
@ -354,7 +364,7 @@ function muteDo(acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send(rq) httpreq.send(rq)
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
if (this.status !== 200) { if (this.status !== 200) {
setLog(start, this.status, this.response) setLog(start, this.status, this.response)
@ -371,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) { function del(id, acct_id) {
@ -394,7 +413,7 @@ function del(id, acct_id) {
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send() httpreq.send()
} }
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
if (this.status !== 200) { if (this.status !== 200) {
setLog(start, this.status, this.response) setLog(start, this.status, this.response)
@ -434,7 +453,31 @@ function redraft(id, acct_id) {
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send() httpreq.send()
} }
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if (this.status !== 200) {
setLog(start, this.status, this.response)
}
var json = httpreq.response
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 (httpreq.readyState === 4) {
if (this.status !== 200) { if (this.status !== 200) {
setLog(start, this.status, this.response) setLog(start, this.status, this.response)
@ -443,14 +486,13 @@ function redraft(id, acct_id) {
draftToPost(json, acct_id, id) draftToPost(json, acct_id, id)
} }
} }
}
})
} }
function draftToPost(json, acct_id, id) { function draftToPost(json, acct_id, id) {
$('#post-acct-sel').prop('disabled', true) $('#post-acct-sel').prop('disabled', true)
$('#post-acct-sel').val(acct_id) $('#post-acct-sel').val(acct_id)
$('select').formSelect() $('select').formSelect()
if (id) $('#tootmodal').attr('data-edit', id)
mdCheck() mdCheck()
mediack = null mediack = null
if (json.media_attachments) mediack = json.media_attachments[0] if (json.media_attachments) mediack = json.media_attachments[0]
@ -513,7 +555,7 @@ function pin(id, acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send() httpreq.send()
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
@ -544,7 +586,7 @@ function request(id, flag, acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send() httpreq.send()
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
@ -570,7 +612,7 @@ function domainblock(add, flag, acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send() httpreq.send()
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
@ -597,7 +639,7 @@ function empUser() {
M.toast({ html: id + lang.lang_status_emphas, displayLength: 4000 }) M.toast({ html: id + lang.lang_status_emphas, displayLength: 4000 })
} else { } else {
var can var can
Object.keys(obj).forEach(function(key) { Object.keys(obj).forEach(function (key) {
var usT = obj[key] var usT = obj[key]
if (usT != id && !can) { if (usT != id && !can) {
can = false can = false
@ -629,7 +671,7 @@ function pinUser() {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send() httpreq.send()
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
@ -665,20 +707,20 @@ function staEx(mode) {
Authorization: 'Bearer ' + at, Authorization: 'Bearer ' + at,
}, },
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
if (json.statuses) { if (json.statuses) {
if (json.statuses[0]) { if (json.statuses[0]) {
var id = json.statuses[0].id var id = json.statuses[0].id

View File

@ -6,7 +6,7 @@ function additional(acct_id, tlid) {
$('#timeline-container .mention').addClass('parsed') $('#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) var tags = $(this)
.attr('href') .attr('href')
.match(/https?:\/\/([-a-zA-Z0-9@.]+)\/tags?\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/) .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 (json.html || json.provider_name == 'Twitter') {
if(isHad) { if(isHad) {
var prved = `<img class="emoji" draggable="false" alt="✅" 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 var title = lang.lang_cards_trusted
}else{ }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 var title = lang.lang_cards_untrusted
} }
analyze =`<a onclick="cardHtmlShow('${acct_id}','${id}')" class="add-show pointer" title="${title}"> 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}` const dropdownTrigger = `dropdown_${rand}`
let elm = document.querySelector(`#timeline_${tlid} #${dropdownTrigger}`) let elm = document.querySelector(`#timeline_${tlid} #${dropdownTrigger}`)
if(tlid == 'notf') { 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-actions").toggleClass("hide")
//$(tlide + " [toot-id=" + id + "] .area-side").toggleClass("hide") //$(tlide + " [toot-id=" + id + "] .area-side").toggleClass("hide")
} }
} }*/
function resetmv(type) { function resetmv(type) {
var mouseover = localStorage.getItem('mouseover') 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') { if (mode == 'dm') {
$('.dm-hide').hide() $('.dm-hide').hide()
} else { } else {
$('.dm-hide').show() $('.dm-hide').show()
} }
const context = localStorage.getItem('moreContext') const context = localStorage.getItem('moreContext')
if(context != 'yes') { if (context != 'yes') {
$('.contextTool').hide() $('.contextTool').hide()
} else { } else {
$('.contextTool').show() $('.contextTool').show()
@ -39,25 +39,18 @@ function details(id, acct_id, tlid, mode) {
} }
} }
} }
try {
fetch(start, i) const response = await fetch(start, i)
.then(function(response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() const json = await response.json()
})
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
console.log(['Toot data:', json]) console.log(['Toot data:', json])
if (!$('#timeline_' + tlid + ' #pub_' + id).length) { 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) $('#toot-this').html(html)
jQuery('time.timeago').timeago() jQuery('time.timeago').timeago()
} }
@ -112,6 +105,18 @@ function details(id, acct_id, tlid, mode) {
afterFTLToot(id, acct_id, dom) afterFTLToot(id, acct_id, dom)
faved(id, acct_id) faved(id, acct_id)
rted(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')) { if ($('#toot-this div').hasClass('cvo')) {
$('#toot-this').removeClass('cvo') $('#toot-this').removeClass('cvo')
} else { } else {
@ -122,7 +127,11 @@ function details(id, acct_id, tlid, mode) {
if (!$('#activator').hasClass('active')) { if (!$('#activator').hasClass('active')) {
$('#det-col').collapsible('open', 4) $('#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 return false
} }
fetch(start, i) fetch(start, i)
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var mute = getFilterTypeByAcct(acct_id, 'thread') var mute = getFilterTypeByAcct(acct_id, 'thread')
if (localStorage.getItem('mode_' + domain) == 'misskey') { if (localStorage.getItem('mode_' + domain) == 'misskey') {
var templete = misskeyParse([json], '', acct_id, '', '', mute) var templete = misskeyParse([json], '', acct_id, '', '', mute)
@ -201,20 +210,20 @@ function getContext(id, acct_id) {
} }
} }
fetch(start, i) fetch(start, i)
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
if (localStorage.getItem('mode_' + domain) == 'misskey') { if (localStorage.getItem('mode_' + domain) == 'misskey') {
json.reverse() json.reverse()
var templete = misskeyParse(json, '', acct_id, '', '', []) var templete = misskeyParse(json, '', acct_id, '', '', [])
@ -269,20 +278,20 @@ function beforeToot(id, acct_id, domain) {
untilID: id untilID: id
}) })
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = misskeyParse(json, 'noauth', acct_id) var templete = misskeyParse(json, 'noauth', acct_id)
$('#toot-before').html(templete) $('#toot-before').html(templete)
jQuery('time.timeago').timeago() jQuery('time.timeago').timeago()
@ -295,20 +304,20 @@ function beforeToot(id, acct_id, domain) {
'content-type': 'application/json' 'content-type': 'application/json'
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = parse(json, 'noauth', acct_id) var templete = parse(json, 'noauth', acct_id)
if (templete != '') { if (templete != '') {
$('#toot-before .no-data').hide() $('#toot-before .no-data').hide()
@ -335,20 +344,20 @@ function userToot(id, acct_id, user) {
userId: user userId: user
}) })
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = misskeyParse(json, 'noauth', acct_id) var templete = misskeyParse(json, 'noauth', acct_id)
$('#user-before').html(templete) $('#user-before').html(templete)
jQuery('time.timeago').timeago() jQuery('time.timeago').timeago()
@ -362,20 +371,20 @@ function userToot(id, acct_id, user) {
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = parse(json, '', acct_id) var templete = parse(json, '', acct_id)
if (templete != '') { if (templete != '') {
$('#user-before .no-data').hide() $('#user-before .no-data').hide()
@ -396,20 +405,20 @@ function afterToot(id, acct_id, domain) {
'content-type': 'application/json' 'content-type': 'application/json'
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = parse(json, 'noauth', acct_id) var templete = parse(json, 'noauth', acct_id)
if (templete != '') { if (templete != '') {
$('#ltl-after .no-data').hide() $('#ltl-after .no-data').hide()
@ -430,20 +439,20 @@ function afterUserToot(id, acct_id, user) {
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = parse(json, '', acct_id) var templete = parse(json, '', acct_id)
if (templete != '') { if (templete != '') {
$('#user-after .no-data').hide() $('#user-after .no-data').hide()
@ -463,20 +472,20 @@ function afterFTLToot(id, acct_id, domain) {
'content-type': 'application/json' 'content-type': 'application/json'
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = parse(json, 'noauth', acct_id) var templete = parse(json, 'noauth', acct_id)
if (templete != '') { if (templete != '') {
$('#ftl-after .no-data').hide() $('#ftl-after .no-data').hide()
@ -501,20 +510,20 @@ function faved(id, acct_id) {
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = userparse(json, '', acct_id) var templete = userparse(json, '', acct_id)
if (templete != '') { if (templete != '') {
$('#toot-fav .no-data').hide() $('#toot-fav .no-data').hide()
@ -539,20 +548,20 @@ function rted(id, acct_id) {
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at
} }
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var templete = userparse(json, '', acct_id) var templete = userparse(json, '', acct_id)
$('#toot-rt').html(templete) $('#toot-rt').html(templete)
jQuery('time.timeago').timeago() jQuery('time.timeago').timeago()
@ -591,44 +600,38 @@ function staCopy(id) {
} }
//翻訳 //翻訳
function trans(tar, to, elem) { function trans(tar, to, elem) {
var html = elem.parents('.cvo').find('.toot').html() var id = elem.parents('.cvo').attr('toot-id')
if (html.match(/^<p>(.+)<\/p>$/)) { //alert(id)
html = html.match(/^<p>(.+)<\/p>$/)[1] $('#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') var at = localStorage.getItem('acct_' + acct_id + '_at')
html = html.replace(/<p>/g, '\n') var exec = `https://${domain}/api/v1/statuses/${id}/translate`
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)
fetch(exec, { fetch(exec, {
method: 'GET' method: 'POST',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(text) { .then(function (text) {
elem.parents('.cvo').find('.toot').append('<span class="gray translate">' + text.text + '</span>') console.log(text)
elem.parents('.cvo').find('.toot').append('<span class="gray translate">' + text.content + '</span>')
}) })
} }
//ブラウザで開く //ブラウザで開く

View File

@ -8,7 +8,7 @@ function escapeHTMLtemp(str) {
.replace(/"/g, '&quot;') .replace(/"/g, '&quot;')
.replace(/'/g, '&#039;') .replace(/'/g, '&#039;')
} }
$.strip_tagstemp = function (str, allowed) { $.strip_tagstemp = function(str, allowed) {
if (!str) { if (!str) {
return "" return ""
} }
@ -16,11 +16,11 @@ $.strip_tagstemp = function (str, allowed) {
.join('') .join('')
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi, var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/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 : '' return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''
}) })
} }
//オブジェクトパーサー(トゥート) //オブジェクトパーサー(トゥート)
function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) { function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var templete = '' var templete = ''
localStorage.setItem("lastunix_" + tlid, date(obj[0].createdAt, 'unix')) 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 local = []
var times = [] var times = []
Object.keys(obj).forEach(function (key) { Object.keys(obj).forEach(function(key) {
var toot = obj[key] var toot = obj[key]
var dis_name = toot.user.name var dis_name = toot.user.name
if (dis_name) { if (dis_name) {
@ -168,7 +168,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
//絵文字があれば //絵文字があれば
if (toot.user.emojis) { 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 emoji = toot.user.emojis[key5]
var shortcode = emoji.name var shortcode = emoji.name
var emoji_url = '<img draggable="false" src="' + emoji.url + 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 if_notf = 'data-notfIndv="' + acct_id + "_" + toot.id + '"'
var toot = toot.note var toot = toot.note
var dis_name = escapeHTML(toot.user.name) var dis_name = escapeHTML(toot.user.name || toot.user.username)
} else { } else {
var if_notf = "" var if_notf = ""
if (toot.renote) { if (toot.renote) {
@ -291,7 +291,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
if (!toot.text) { if (!toot.text) {
var toot = toot.renote 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 uniqueid = toot.id
var actemojick = false var actemojick = false
} else { } else {
@ -306,7 +306,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var fullname = toot.user.username + "@" + domain var fullname = toot.user.username + "@" + domain
} }
if (useremp) { if (useremp) {
Object.keys(useremp).forEach(function (key10) { Object.keys(useremp).forEach(function(key10) {
var user = useremp[key10] var user = useremp[key10]
if (user == fullname) { if (user == fullname) {
boostback = "emphasized" boostback = "emphasized"
@ -343,14 +343,14 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
viashow = "via-hide" viashow = "via-hide"
} }
//強調チェック //強調チェック
Object.keys(empCli).forEach(function (key6) { Object.keys(empCli).forEach(function(key6) {
var empCliList = empCli[key6] var empCliList = empCli[key6]
if (empCliList == via) { if (empCliList == via) {
boostback = "emphasized" boostback = "emphasized"
} }
}) })
//ミュートチェック //ミュートチェック
Object.keys(muteCli).forEach(function (key7) { Object.keys(muteCli).forEach(function(key7) {
var muteCliList = muteCli[key7] var muteCliList = muteCli[key7]
if (muteCliList == via) { if (muteCliList == via) {
boostback = "hide" boostback = "hide"
@ -430,7 +430,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
//絵文字があれば //絵文字があれば
if (emojick) { if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) { Object.keys(toot.emojis).forEach(function(key5) {
var emoji = toot.emojis[key5] var emoji = toot.emojis[key5]
var shortcode = emoji.name var shortcode = emoji.name
var emoji_url = '<img draggable="false" src="' + emoji.url + var emoji_url = '<img draggable="false" src="' + emoji.url +
@ -471,7 +471,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
if (mediack) { if (mediack) {
hasmedia = "hasmedia" hasmedia = "hasmedia"
var cwdt = 100 / toot[useparam].length 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 media = toot[useparam][key2]
var purl = media.url var purl = media.url
media_ids = media_ids + media.id + "," media_ids = media_ids + media.id + ","
@ -516,9 +516,9 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var tags = "" var tags = ""
//タグであれば //タグであれば
if (tagck) { if (tagck) {
Object.keys(toot.tags).forEach(function (key4) { Object.keys(toot.tags).forEach(function(key4) {
var tag = toot.tags[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> ' + ',\'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> ' '<a onclick="tagPin(\'' + tag + '\')" class="pointer parsed" title="' + lang.lang_parse_tagpin.replace("{{tag}}", '#' + tag) + '">Pin</a></span> '
content = content.replace("#" + tag, tags) content = content.replace("#" + tag, tags)
@ -578,7 +578,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var avatar = toot.user.avatarUrl var avatar = toot.user.avatarUrl
//ワードミュート //ワードミュート
if (wordmuteList) { if (wordmuteList) {
Object.keys(wordmuteList).forEach(function (key8) { Object.keys(wordmuteList).forEach(function(key8) {
var worde = wordmuteList[key8] var worde = wordmuteList[key8]
if (worde) { if (worde) {
if (worde.tag) { if (worde.tag) {
@ -595,7 +595,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
//ワード強調 //ワード強調
if (wordempList) { if (wordempList) {
Object.keys(wordempList).forEach(function (key9) { Object.keys(wordempList).forEach(function(key9) {
var wordList = wordempList[key9] var wordList = wordempList[key9]
if (wordList) { if (wordList) {
var wordList = wordList.tag var wordList = wordList.tag
@ -606,9 +606,8 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
//Ticker //Ticker
var tickerdom = "" var tickerdom = ""
if (ticker) {
var tickerdata = JSON.parse(localStorage.getItem("ticker")) var tickerdata = JSON.parse(localStorage.getItem("ticker"))
if (ticker && tickerdata) {
var thisdomain = toot.user.username.split("@") var thisdomain = toot.user.username.split("@")
if (thisdomain.length > 1) { if (thisdomain.length > 1) {
thisdomain = thisdomain[1] thisdomain = thisdomain[1]
@ -625,7 +624,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var poll = "" var poll = ""
if (toot.poll) { if (toot.poll) {
var choices = toot.poll.choices var choices = toot.poll.choices
Object.keys(choices).forEach(function (keyc) { Object.keys(choices).forEach(function(keyc) {
var choice = choices[keyc] var choice = choices[keyc]
if (choice.isVoted) { if (choice.isVoted) {
var myvote = twemoji.parse("✅") var myvote = twemoji.parse("✅")
@ -649,18 +648,9 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
//Reactions //Reactions
var addReact = "" var addReact = ""
if (toot.reactions) { if (toot.reactions) {
Object.keys(toot.reactions).forEach(function (keye) { Object.keys(toot.reactions).forEach(function(keye) {
var thisReact = toot.reactions[keye] var thisReact = toot.reactions[keye]
if (keye == "like") { var defaultEmoji = true } 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 {
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)) var obj = JSON.parse(localStorage.getItem("emoji_" + acct_id))
if (obj) { if (obj) {
var num = obj.length var num = obj.length
@ -743,8 +733,24 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
var fullhide = "" var fullhide = ""
} else { } 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 like = 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 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" var fullhide = "hide"
} }
if (!addReact && likehide == "hide" && lovehide == "hide" && laughhide == "hide" && hmmhide == "hide" && suphide == "hide" && conghide == "hide" && anghide == "hide" && confhide == "hide" && riphide == "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 { } else {
var actemojick = false var actemojick = false
} }
var rand = randomStr(8) var rand = makeCID()
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' + 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[ 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 + '<div class="area-notice"><span class="gray sharesta">' + notice + home +
'</span></div>' + '</span></div>' +
'<div class="area-icon"><a onclick="udg(\'' + toot.user.id + '<div class="area-icon"><a onclick="udg(\'' + toot.user.id +
@ -791,7 +797,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
'</span>' + '</span>' +
'' + viewer + '' + '' + viewer + '' +
'</div><div class="area-additional"><span class="additional">' + analyze + '</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 + ',\'' + 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 + '</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 + ',\'' + 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 + '</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 + ',\'' + 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 + '</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>' '<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>' + poll + mentions + tags + '</div>' +
'<div class="area-vis"></div>' + '<div class="area-vis"></div>' +
'<div class="area-actions ' + mouseover + '">' + '<div class="area-actions ' + mouseover + '">' +
'<div class="action">' + vis + '</div>' + '<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>' + ')" 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 + '\',' + '<div class="' + if_mine + ' action pin ' + disp["pin"] + ' ' + noauth + '"><a onclick="pin(\'' + toot.id + '\',' +
acct_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>' ')" 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 + '\',' + '<div class="' + if_mine + ' action ' + disp["red"] + ' ' + noauth + '"><a onclick="redraft(\'' + toot.id + '\',' +
acct_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 + ')" 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 ' + '<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 templete = ''
var datetype = localStorage.getItem("datetype") var datetype = localStorage.getItem("datetype")
Object.keys(obj).forEach(function (key) { Object.keys(obj).forEach(function(key) {
var toot = obj[key] var toot = obj[key]
if (toot.followee) { if (toot.followee) {
toot = toot.followee toot = toot.followee
@ -947,6 +953,7 @@ function misskeyUserparse(obj, auth, acct_id, tlid, popup) {
}) })
return templete return templete
} }
function goGoogle(id) { function goGoogle(id) {
var val = $("#srcbox_" + id).val() var val = $("#srcbox_" + id).val()
var url = "https://google.com/search?q=" + val var url = "https://google.com/search?q=" + val
@ -954,6 +961,7 @@ function goGoogle(id) {
} }
var misskeyws = [] var misskeyws = []
var misskeywsstate = [] var misskeywsstate = []
function connectMisskey(acct_id, re) { function connectMisskey(acct_id, re) {
var domain = localStorage.getItem("domain_" + acct_id) var domain = localStorage.getItem("domain_" + acct_id)
var at = localStorage.getItem("acct_" + acct_id + "_at") var at = localStorage.getItem("acct_" + acct_id + "_at")
@ -962,14 +970,14 @@ function connectMisskey(acct_id, re) {
var wsid = misskeyws.length var wsid = misskeyws.length
localStorage.setItem("misskey_wss_" + acct_id, wsid) localStorage.setItem("misskey_wss_" + acct_id, wsid)
misskeyws[wsid] = new WebSocket(start) 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] }) console.table({ "tlid": tlid, "type": "Connect Streaming API", "domain": domain, "message": [mess] })
misskeywsstate[wsid] = true misskeywsstate[wsid] = true
//$("#notice_icon_" + tlid).removeClass("red-text"); //$("#notice_icon_" + tlid).removeClass("red-text");
var send = '{"type":"connect","body":{"channel":"main","id":"notf:' + acct_id + '"}}' var send = '{"type":"connect","body":{"channel":"main","id":"notf:' + acct_id + '"}}'
misskeyws[wsid].send(send) misskeyws[wsid].send(send)
} }
misskeyws[wsid].onmessage = function (mess) { misskeyws[wsid].onmessage = function(mess) {
console.log([domain + ":Receive Streaming API:", data]) console.log([domain + ":Receive Streaming API:", data])
var data = JSON.parse(mess.data) var data = JSON.parse(mess.data)
var obj = data.body.body 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 closing " + tlid)
console.error(error) console.error(error)
misskeywsstate[wsid] = false misskeywsstate[wsid] = false
if(!re){ if (!re) {
connectMisskey(acct_id, true) connectMisskey(acct_id, true)
} }
return false return false
} }
misskeyws[wsid].onclose = function () { misskeyws[wsid].onclose = function() {
console.warn("Closing " + tlid) console.warn("Closing " + tlid)
misskeywsstate[wsid] = false misskeywsstate[wsid] = false
if(!re){ if (!re) {
connectMisskey(acct_id, true) connectMisskey(acct_id, true)
} }
return false return false

View File

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

View File

@ -32,6 +32,7 @@ function notfColumn(acct_id, tlid, sys) {
} else { } else {
var exc = '' var exc = ''
} }
if (exc === 'null') exc = ''
var start = 'https://' + domain + '/api/v1/notifications' + exc var start = 'https://' + domain + '/api/v1/notifications' + exc
httpreq.open('GET', start, true) httpreq.open('GET', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json') httpreq.setRequestHeader('Content-Type', 'application/json')
@ -41,7 +42,7 @@ function notfColumn(acct_id, tlid, sys) {
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send(body) httpreq.send(body)
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
@ -56,7 +57,7 @@ function notfColumn(acct_id, tlid, sys) {
var templete = '' var templete = ''
var lastnotf = localStorage.getItem('lastnotf_' + acct_id) var lastnotf = localStorage.getItem('lastnotf_' + acct_id)
localStorage.setItem('lastnotf_' + acct_id, json[0].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 obj = json[key]
if (lastnotf == obj.id && key > 0 && native == 'yes') { if (lastnotf == obj.id && key > 0 && native == 'yes') {
var ct = key var ct = key
@ -72,7 +73,7 @@ function notfColumn(acct_id, tlid, sys) {
} }
var mute = getFilterTypeByAcct(acct_id, 'notif') var mute = getFilterTypeByAcct(acct_id, 'notif')
//Pleromaにはmoveというtypeがあるらしい。何が互換APIじゃ //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) { if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, tlid, -1, mute) templete = templete + misskeyParse([obj], 'notf', acct_id, tlid, -1, mute)
} else { } else {
@ -155,10 +156,10 @@ function notfCommon(acct_id, tlid, sys, stream) {
return false return false
} }
fetch(start, i) fetch(start, i)
.then(function(response) { .then(function (response) {
console.log('header to get param:' + response.headers.get('link')) console.log('header to get param:' + response.headers.get('link'))
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
console.log('notf error', 'div[data-notf=' + acct_id + '] .landing') console.log('notf error', 'div[data-notf=' + acct_id + '] .landing')
$('div[data-notf=' + acct_id + '] .landing').append(`<div>${response.status}</div><div>${escapeHTML(text)}`) $('div[data-notf=' + acct_id + '] .landing').append(`<div>${response.status}</div><div>${escapeHTML(text)}`)
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
@ -166,17 +167,17 @@ function notfCommon(acct_id, tlid, sys, stream) {
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
if (json[0]) { if (json[0]) {
var templete = '' var templete = ''
var lastnotf = localStorage.getItem('lastnotf_' + acct_id) var lastnotf = localStorage.getItem('lastnotf_' + acct_id)
localStorage.setItem('lastnotf_' + acct_id, json[0].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 obj = json[key]
if (lastnotf == obj.id && key > 0 && native == 'yes') { if (lastnotf == obj.id && key > 0 && native == 'yes') {
var ct = key var ct = key
@ -192,7 +193,7 @@ function notfCommon(acct_id, tlid, sys, stream) {
} }
var mute = getFilterTypeByAcct(acct_id, 'notif') var mute = getFilterTypeByAcct(acct_id, 'notif')
//Pleromaにはmoveというtypeがあるらしい。何が互換APIじゃ //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) { if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute) templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute)
} else { } else {
@ -228,7 +229,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
var wsid = websocketNotf.length var wsid = websocketNotf.length
websocketNotf[acct_id] = new WebSocket(start) websocketNotf[acct_id] = new WebSocket(start)
websocketNotf[acct_id].onopen = function(mess) { websocketNotf[acct_id].onopen = function (mess) {
console.table({ console.table({
acct_id: acct_id, acct_id: acct_id,
type: 'Connect Streaming API(Notf)', type: 'Connect Streaming API(Notf)',
@ -237,7 +238,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
}) })
$('i[data-notf=' + acct_id + ']').removeClass('red-text') $('i[data-notf=' + acct_id + ']').removeClass('red-text')
} }
websocketNotf[acct_id].onmessage = function(mess) { websocketNotf[acct_id].onmessage = function (mess) {
$('#landing_' + tlid).hide() $('#landing_' + tlid).hide()
//console.log(["Receive Streaming API(Notf):" + acct_id + "(" + domain + ")", JSON.parse(JSON.parse(mess.data).payload)]); //console.log(["Receive Streaming API(Notf):" + acct_id + "(" + domain + ")", JSON.parse(JSON.parse(mess.data).payload)]);
var popup = localStorage.getItem('popup') var popup = localStorage.getItem('popup')
@ -251,7 +252,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
localStorage.setItem('lastnotf_' + acct_id, obj.id) localStorage.setItem('lastnotf_' + acct_id, obj.id)
if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) { if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) {
//markers show中はダメ //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) templete = parse([obj], 'notf', acct_id, 'notf', popup)
} else if (obj.type == 'follow_request') { } else if (obj.type == 'follow_request') {
templete = userparse([obj.account], 'request', acct_id, 'notf', -1) templete = userparse([obj.account], 'request', acct_id, 'notf', -1)
@ -269,7 +270,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
$('[toot-id=' + obj + ']').remove() $('[toot-id=' + obj + ']').remove()
} }
} }
websocketNotf[acct_id].onerror = function(error) { websocketNotf[acct_id].onerror = function (error) {
console.error('WebSocket Error ', error) console.error('WebSocket Error ', error)
errorct++ errorct++
console.log(errorct) console.log(errorct)
@ -277,7 +278,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
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) console.error('WebSocket Close ', error)
errorct++ errorct++
console.log(errorct) console.log(errorct)
@ -305,6 +306,7 @@ function notfmore(tlid) {
var domain = localStorage.getItem('domain_' + acct_id) var domain = localStorage.getItem('domain_' + acct_id)
if (sid && !moreloading) { if (sid && !moreloading) {
moreloading = true moreloading = true
console.log('moreloading notfmore '+tlid)
var httpreq = new XMLHttpRequest() var httpreq = new XMLHttpRequest()
if (localStorage.getItem('mode_' + domain) == 'misskey') { if (localStorage.getItem('mode_' + domain) == 'misskey') {
var misskey = true var misskey = true
@ -331,7 +333,7 @@ function notfmore(tlid) {
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send(body) httpreq.send(body)
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
@ -343,10 +345,10 @@ function notfmore(tlid) {
var templete = '' var templete = ''
var lastnotf = localStorage.getItem('lastnotf_' + acct_id) var lastnotf = localStorage.getItem('lastnotf_' + acct_id)
localStorage.setItem('lastnotf_' + acct_id, json[0].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 obj = json[key]
var mute = getFilterTypeByAcct(acct_id, 'notif') 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) { if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute) templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute)
} else { } else {
@ -381,7 +383,7 @@ function notfToggle(acct, tlid) {
height: '400px', height: '400px',
}, { }, {
duration: 300, duration: 300,
complete: function() { complete: function () {
$('#notf-box_' + tlid).css('overflow-y', 'scroll') $('#notf-box_' + tlid).css('overflow-y', 'scroll')
$('#notf-box_' + tlid).removeClass('column-hide') $('#notf-box_' + tlid).removeClass('column-hide')
}, },
@ -392,7 +394,7 @@ function notfToggle(acct, tlid) {
height: '0', height: '0',
}, { }, {
duration: 300, duration: 300,
complete: function() { complete: function () {
$('#notf-box_' + tlid).addClass('column-hide') $('#notf-box_' + tlid).addClass('column-hide')
$('#notf-box_' + tlid).css('display', 'none') $('#notf-box_' + tlid).css('display', 'none')
}, },
@ -429,7 +431,7 @@ function allNotfRead() {
var multi = localStorage.getItem('multi') var multi = localStorage.getItem('multi')
if (multi) { if (multi) {
var obj = JSON.parse(multi) var obj = JSON.parse(multi)
Object.keys(obj).forEach(function(key) { Object.keys(obj).forEach(function (key) {
notfCanceler(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 splitter = new GraphemeSplitter()
var templete = '' var templete = ''
if (obj[0]) { if (obj[0]) {
if (tlid === 1) { if (tlid === 1) { }
}
localStorage.setItem('lastunix_' + tlid, date(obj[0].created_at, 'unix')) 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') { if (native == 'yes') {
var os = localStorage.getItem('platform') var os = localStorage.getItem('platform')
var options = { var options = {
body: body: toot.account.display_name +
toot.account.display_name +
'(' + '(' +
toot.account.acct + toot.account.acct +
')' + ')' +
@ -485,6 +483,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
} else { } else {
var locked = '' 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) { if (!toot.application) {
var via = '' var via = ''
viashow = 'hide' viashow = 'hide'
@ -593,7 +594,6 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
if (toot.poll) { if (toot.poll) {
var poll = pollParse(toot.poll, acct_id, false) var poll = pollParse(toot.poll, acct_id, false)
} }
var mediack = toot.media_attachments[0] var mediack = toot.media_attachments[0]
//メディアがあれば //メディアがあれば
var media_ids = '' 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) { if (media.pleroma && media.pleroma.mime_type.indexOf('video') !== -1) {
viewer = viewer =
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"> 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"> <video src="${purl}" class="${sense} toot-img pointer" style="max-width:100%;" loop="true" alt="attached media">
</a></span>` </a></span>`
@ -644,7 +644,6 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
} else { } else {
var desc = '' var desc = ''
} }
console.log('https://' + domain + '/storage/no-preview.png')
if (media.preview_url == 'https://' + domain + '/storage/no-preview.png') { if (media.preview_url == 'https://' + domain + '/storage/no-preview.png') {
purl = url purl = url
nsfwmes = '<div class="nsfw-media">Unavailable preview</div>' nsfwmes = '<div class="nsfw-media">Unavailable preview</div>'
@ -666,10 +665,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
viewer = '' viewer = ''
hasmedia = 'nomedia' hasmedia = 'nomedia'
} }
var menck = toot.mentions[0]
var mentions = '' var mentions = ''
//メンションであれば //メンションであれば
if (menck) { if (toot.mentions && toot.mentions[0]) {
mentions = '' mentions = ''
var to_mention = [] var to_mention = []
Object.keys(toot.mentions).forEach(function (key3) { Object.keys(toot.mentions).forEach(function (key3) {
@ -822,23 +820,9 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
} }
//絵文字があれば //絵文字があれば
if (emojick) { if (emojick) {
Object.keys(toot.emojis).forEach(function (key5) { content = this.customEmojiReplace(content, toot, gif);
var emoji = toot.emojis[key5] spoil = this.customEmojiReplace(spoil, toot, gif);
var shortcode = emoji.shortcode poll = this.customEmojiReplace(poll, toot, gif);
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)
})
} }
//ニコフレ絵文字 //ニコフレ絵文字
if (toot.profile_emojis) { 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) { if (dis_name) {
dis_name = twemoji.parse(dis_name) dis_name = twemoji.parse(dis_name)
} }
@ -996,7 +984,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
menuct++ menuct++
} }
//このトゥート内のアクションを完了させるために、適当にIDを振る //このトゥート内のアクションを完了させるために、適当にIDを振る
var rand = randomStr(8) var rand = makeCID()
//プラグイン機構 //プラグイン機構
var pluginBOT = plugins.buttonOnToot var pluginBOT = plugins.buttonOnToot
var pluginHtml = '' var pluginHtml = ''
@ -1068,7 +1056,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
</a> </a>
</div> </div>
<div class="action ${disp['re']} ${noauth}"> <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" 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}"> data-men="${to_mention}" data-visen="${visen}" style="padding:0" title="${lang.lang_parse_replyto}">
<i class="fas fa-share"></i> <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;"> style="padding:0; padding-top: 5px;">
<i class="material-icons" aria-hidden="true">redo</i>${lang.lang_parse_redraft} <i class="material-icons" aria-hidden="true">redo</i>${lang.lang_parse_redraft}
</li> </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} ${trans}
<li onclick="postMessage(['openUrl', '${toot.url}'], '*')" <li onclick="postMessage(['openUrl', '${toot.url}'], '*')"
style="padding:0; padding-top: 5px;"> style="padding:0; padding-top: 5px;">
@ -1214,6 +1206,8 @@ function userparse(obj, auth, acct_id, tlid, popup) {
var ftxt = lang.lang_parse_moved var ftxt = lang.lang_parse_moved
} else if (auth == 'request') { } else if (auth == 'request') {
var ftxt = lang.lang_parse_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) { if (popup > 0 || popup == -1 || notf) {
var notftext = ftxt + '<br>' var notftext = ftxt + '<br>'
@ -1400,7 +1394,7 @@ function client(name) {
} }
//Poll Parser //Poll Parser
function pollParse(poll, acct_id, emojis) { function pollParse(poll, acct_id, emojis) {
var rand = randomStr(8) var rand = makeCID()
var datetype = localStorage.getItem('datetype') var datetype = localStorage.getItem('datetype')
var anime = localStorage.getItem('animation') var anime = localStorage.getItem('animation')
if (anime == 'yes' || !anime) { if (anime == 'yes' || !anime) {
@ -1458,7 +1452,7 @@ function pollParse(poll, acct_id, emojis) {
var me = minechoice[i] var me = minechoice[i]
if (me == keyc) { if (me == keyc) {
var voteit = 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 break
} }
} }
@ -1526,7 +1520,51 @@ function pollParse(poll, acct_id, emojis) {
</div>` </div>`
return pollHtml 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 //MastodonBaseStreaming
var mastodonBaseWs = {} var mastodonBaseWs = {}
var mastodonBaseWsStatus = {} var mastodonBaseWsStatus = {}
@ -1567,6 +1605,13 @@ function mastodonBaseStreaming(acct_id) {
filterUpdate(acct_id) filterUpdate(acct_id)
} else if (~typeA.indexOf('announcement')) { } else if (~typeA.indexOf('announcement')) {
announ(acct_id, tlid) 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') { } else if (typeA == 'notification') {
const obj = JSON.parse(JSON.parse(mess.data).payload) const obj = JSON.parse(JSON.parse(mess.data).payload)
let template = '' let template = ''
@ -1575,7 +1620,7 @@ function mastodonBaseStreaming(acct_id) {
if (!popup) { if (!popup) {
popup = 0 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) template = parse([obj], 'notf', acct_id, 'notf', popup)
} else if (obj.type == 'follow_request') { } else if (obj.type == 'follow_request') {
template = userparse([obj.account], 'request', acct_id, 'notf', -1) template = userparse([obj.account], 'request', acct_id, 'notf', -1)
@ -1637,7 +1682,7 @@ function mastodonBaseStreaming(acct_id) {
return false return false
} }
} }
function insertTl(obj, tls) { function insertTl(obj, tls, dry) {
for (const timeline of tls) { for (const timeline of tls) {
const { id, voice, type, acct_id } = timeline const { id, voice, type, acct_id } = timeline
const mute = getFilterTypeByAcct(acct_id, type) const mute = getFilterTypeByAcct(acct_id, type)
@ -1647,6 +1692,7 @@ function insertTl(obj, tls) {
say(obj.content) say(obj.content)
} }
const template = parse([obj], type, acct_id, id, '', mute, type) 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`) console.log($(`#timeline_box_${id}_box .tl-box`).scrollTop(), `timeline_box_${id}_box .tl-box`)
if ( if (
$(`#timeline_box_${id}_box .tl-box`).scrollTop() === 0 $(`#timeline_box_${id}_box .tl-box`).scrollTop() === 0

View File

@ -30,13 +30,14 @@ function src(mode, offset) {
`) `)
var add = '' var add = ''
} else { } else {
var add = '&type=accounts&offset=' + $('#src-accts .cvo').length var add = '&type=accounts&offset=' + $('#src-accts .cusr').length
} }
var q = $('#src').val() var q = $('#src').val()
var acct_id = $('#src-acct-sel').val() var acct_id = $('#src-acct-sel').val()
if (acct_id == 'tootsearch') { if (acct_id == 'tootsearch') {
tsAdd(q) tsAdd(q)
$('#src-contents').html('')
return false return false
} }
localStorage.setItem('last-use', acct_id) localStorage.setItem('last-use', acct_id)
@ -91,6 +92,11 @@ function src(mode, offset) {
#${escapeHTML(tag)} #${escapeHTML(tag)}
</a> </a>
<br> ` <br> `
} else if (!tag.history) {
tags+=`<a onclick="tl('tag','${tag.name}','${acct_id}','add')" class="pointer">
#${escapeHTML(tag.name)}
</a>
<br> `
} else { } else {
tags = tags + graphDraw(tag, acct_id) tags = tags + graphDraw(tag, acct_id)
} }
@ -187,6 +193,7 @@ function moreTs(tlid, q) {
.last() .last()
.attr('data-maxid') .attr('data-maxid')
moreloading = true moreloading = true
console.log('moreloading src '+tlid)
var start = var start =
'https://tootsearch.chotto.moe/api/v1/search?from=' + sid + '&sort=created_at%3Adesc&q=' + q 'https://tootsearch.chotto.moe/api/v1/search?from=' + sid + '&sort=created_at%3Adesc&q=' + q
$('#notice_' + tlid).text('tootsearch(' + q + ')') $('#notice_' + tlid).text('tootsearch(' + q + ')')
@ -284,51 +291,89 @@ function graphDrawCore(his, tag, acct_id) {
</div> </div>
</div>` </div>`
} }
/* async function trend() {
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
<path d="M0,0 L10,0 20,10 20,50" fill="#3F51B5"></path>
</svg>
*/
function trend() {
console.log('get trend') console.log('get trend')
$('#src-contents').html('') $('#src-contents').html('')
var acct_id = $('#src-acct-sel').val() var acct_id = $('#src-acct-sel').val()
if (acct_id == 'tootsearch') { if (acct_id == 'tootsearch') {
return false return false
} }
var domain = localStorage.getItem('domain_' + acct_id) const domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at') const at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/trends' try {
console.log(start) const tagTrendUrl = 'https://' + domain + '/api/v1/trends'
fetch(start, { const tagTrendResponse = await fetch(tagTrendUrl, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
Authorization: 'Bearer ' + at Authorization: 'Bearer ' + at
} }
}) })
.then(function (response) { if (!tagTrendResponse.ok) {
if (!response.ok) { tagTrendResponse.text().then(function (text) {
response.text().then(function (text) { setLog(tagTrendResponse.url, tagTrendResponse.status, text)
setLog(response.url, response.status, text)
}) })
} }
return response.json() const tagTrends = await tagTrendResponse.json()
}) let tags = ''
.catch(function (error) { for (const tag of tagTrends) {
setLog(start, 'JSON', error) const his = tag.history
console.error(error) tags = tags + graphDrawCore(his, tag, acct_id)
}) }
.then(function (json) { $('#src-contents').append(`<div id="src-content-tag">Trend Tags<br />${tags || 'none'}</div>`)
var tags = '' } catch {
Object.keys(json).forEach(function (keye) {
var tag = json[keye]
var his = tag.history
tags = graphDrawCore(his, tag, acct_id)
$('#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) { function srcBox(mode) {
if (mode == 'open') { if (mode == 'open') {

View File

@ -285,6 +285,7 @@ function stremaingSubscribe(type, acct_id, data, unsubscribe) {
let name = data let name = data
if (data.name) name = data.name if (data.name) name = data.name
arr.push(name) arr.push(name)
console.log(data.any, data.all, acct_id, type)
if (data.any) arr = arr.concat(data.any.split(',')) if (data.any) arr = arr.concat(data.any.split(','))
if (data.all) arr = arr.concat(data.all.split(',')) if (data.all) arr = arr.concat(data.all.split(','))
for (const tag of arr) { for (const tag of arr) {
@ -539,6 +540,7 @@ function moreload(type, tlid) {
return return
} }
moreloading = true moreloading = true
console.log('moreloading moreload '+tlid)
localStorage.setItem('now', type) localStorage.setItem('now', type)
todo(cap(type) + ' TL MoreLoading') todo(cap(type) + ' TL MoreLoading')
if (type != 'noauth') { if (type != 'noauth') {
@ -672,6 +674,7 @@ function tlDiff(type, data, acct_id, tlid, delc, voice, mode) {
return return
} }
moreloading = true moreloading = true
console.log('moreloading tldiff '+tlid)
localStorage.setItem('now', type) localStorage.setItem('now', type)
todo(cap(type) + ' TL MoreLoading') todo(cap(type) + ' TL MoreLoading')
if (type != 'noauth') { if (type != 'noauth') {
@ -1352,6 +1355,7 @@ function asReadEnd() {
//ブックマーク //ブックマーク
function getBookmark(acct_id, tlid, more) { function getBookmark(acct_id, tlid, more) {
moreloading = true moreloading = true
console.log('moreloading getbookmark '+tlid)
console.log(acct_id, tlid, more) console.log(acct_id, tlid, more)
if (more) { if (more) {
var sid = $('#timeline_' + tlid + ' .notif-marker') var sid = $('#timeline_' + tlid + ' .notif-marker')
@ -1406,6 +1410,7 @@ function getBookmark(acct_id, tlid, more) {
function getUtl(acct_id, tlid, data, more) { function getUtl(acct_id, tlid, data, more) {
moreloading = true moreloading = true
console.log('moreloading getutl '+tlid)
if (more) { if (more) {
var sid = $('#timeline_' + tlid + ' .cvo') var sid = $('#timeline_' + tlid + ' .cvo')
.last() .last()

View File

@ -22,20 +22,40 @@ function imgv(id, key, acct_id) {
murl = ourl murl = ourl
} }
$(document).ready(function () { $(document).ready(function () {
if (type == 'image') { 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') $('#imagemodal').modal('open')
imageXhr(id, key, murl) imageXhr(id, key, murl)
$('#imagewrap').dragScroll() // ドラッグスクロール設定 $('#imagewrap').dragScroll() // ドラッグスクロール設定
$('#imgmodal').show() $('#imgmodal').show()
$('#imagemodal').attr('data-key', key) $('#imagemodal').attr('data-key', key)
$('#imagemodal').attr('data-id', id) $('#imagemodal').attr('data-id', id)
} else if (type == 'video' || type == 'gifv') { }
function display_video(murl,id=null,key=null)
{
$('#video').attr('src', murl) $('#video').attr('src', murl)
$('#videomodal').modal('open') $('#videomodal').modal('open')
$('#imgmodal').show() $('#imgmodal').show()
}
})
} }
//イメージビューワーの送り //イメージビューワーの送り
function imgCont(type) { function imgCont(type) {
var key = $('#imagemodal').attr('data-key') var key = $('#imagemodal').attr('data-key')
@ -47,6 +67,9 @@ function imgCont(type) {
} }
var murl = $('#' + id + '-image-' + key).attr('data-url') var murl = $('#' + id + '-image-' + key).attr('data-url')
var ourl = $('#' + id + '-image-' + key).attr('data-original') var ourl = $('#' + id + '-image-' + key).attr('data-original')
if (!ourl || ourl == 'null') {
ourl = murl
}
var type = $('#' + id + '-image-' + key).attr('data-type') var type = $('#' + id + '-image-' + key).attr('data-type')
$('#imagemodal').attr('data-id', id) $('#imagemodal').attr('data-id', id)
$('#imagemodal').attr('data-acct', acct_id) $('#imagemodal').attr('data-acct', acct_id)
@ -54,7 +77,7 @@ function imgCont(type) {
$('#imagemodal').attr('data-image', murl) $('#imagemodal').attr('data-image', murl)
//表示はリモートを使うか(どちらにしろコピーはオリジナル) //表示はリモートを使うか(どちらにしろコピーはオリジナル)
var remote_img = localStorage.getItem('remote_img') var remote_img = localStorage.getItem('remote_img')
if (remote_img == 'yes' && ourl != 'null') { if (remote_img == 'yes') {
murl = ourl murl = ourl
} }
if (murl) { if (murl) {
@ -76,7 +99,12 @@ function imgCont(type) {
} }
} }
function imageXhr(id, key, murl) { function imageXhr(id, key, murl) {
let time = 0
var startTime = new Date() 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').removeClass('determinate')
$('#imgmodal-progress div').addClass('indeterminate') $('#imgmodal-progress div').addClass('indeterminate')
$('#imgmodal-progress').removeClass('hide') $('#imgmodal-progress').removeClass('hide')
@ -89,6 +117,7 @@ function imageXhr(id, key, murl) {
if (event.lengthComputable) { if (event.lengthComputable) {
var total = event.total var total = event.total
var now = event.loaded var now = event.loaded
$('#imgbyte').text(`${Math.floor(now / 1024)}KB/${Math.floor(total / 1024)}`)
var per = (now / total) * 100 var per = (now / total) * 100
$('#imgmodal-progress div').removeClass('indeterminate') $('#imgmodal-progress div').removeClass('indeterminate')
$('#imgmodal-progress div').addClass('determinate') $('#imgmodal-progress div').addClass('determinate')
@ -147,6 +176,7 @@ function imageXhr(id, key, murl) {
} }
element.src = b64 element.src = b64
var endTime = new Date() var endTime = new Date()
clearInterval(timer)
var proctime = endTime.getTime() - startTime.getTime() var proctime = endTime.getTime() - startTime.getTime()
$('#imgsec').text(proctime) $('#imgsec').text(proctime)
$('#imgmodal').attr('src', b64) $('#imgmodal').attr('src', b64)
@ -329,10 +359,23 @@ function openFinder(dir) {
postMessage(['openFinder', dir], '*') postMessage(['openFinder', dir], '*')
} }
function stopVideo() { function stopVideo() {
document.getElementById('video').pause() video=document.getElementById('video')
video.pause()
video.src=''
//document.getElementById('video').pause()
} }
function copyImgUrl() { function copyImgUrl() {
var murl = $('#imagemodal').attr('data-original') var murl = $('#imagemodal').attr('data-original')
execCopy(murl) execCopy(murl)
M.toast({ html: lang.lang_img_copyDone, displayLength: 1500 }) 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' target = 'zero'
} }
console.log('%c Parse column', 'color:red;font-size:125%') 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')) { if (localStorage.getItem('menu-done')) {
$('#fukidashi').addClass('hide') $('#fukidashi').addClass('hide')
} }
@ -648,8 +642,6 @@ function addselCk() {
} }
//カラム削除 //カラム削除
function removeColumn(tlid) { function removeColumn(tlid) {
$('#sort-box').addClass('hide')
$('#sort-box').removeClass('show')
Swal.fire({ Swal.fire({
title: lang.lang_layout_deleteColumn, title: lang.lang_layout_deleteColumn,
text: lang.lang_layout_deleteColumnDesc, text: lang.lang_layout_deleteColumnDesc,

View File

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

View File

@ -1,10 +1,13 @@
//設定(setting.html)で読む //設定(setting.html)で読む
var envView = new Vue({ const envView = Vue.createApp({
el: '#envView', data() {
data: { config: envConstruction }, return {
config: envConstruction
}
},
methods: { methods: {
complete: function(i, val) { complete: function (i, val) {
var ls = envView.config[i] var ls = this.config[i]
let header = ls.text.head let header = ls.text.head
if (!ls.data) { if (!ls.data) {
ls = [ls] ls = [ls]
@ -29,17 +32,19 @@ var envView = new Vue({
if (ls[0].id == 'frame') { if (ls[0].id == 'frame') {
frameSet(val) frameSet(val)
} }
if (ls[0].id == 'size') {
$('html,body').css('font-size', `${val}px`)
}
M.toast({ html: `Updated: ${header}`, displayLength: 3000 }) M.toast({ html: `Updated: ${header}`, displayLength: 3000 })
return true return true
}, },
}, },
}) }).mount('#envView')
var tlView = new Vue({ const tlView = Vue.createApp({
el: '#tlView', data() { return { config: tlConstruction } },
data: { config: tlConstruction },
methods: { methods: {
complete: function(i, val) { complete: function (i, val) {
var ls = tlView.config[i] var ls = this.config[i]
let header = ls.text.head let header = ls.text.head
if (val) { if (val) {
localStorage.setItem(ls.storage, val) localStorage.setItem(ls.storage, val)
@ -59,17 +64,18 @@ var tlView = new Vue({
return true return true
}, },
}, },
}) }).mount('#tlView')
var postView = new Vue({ const postView = Vue.createApp({
el: '#postView', data() {
data: { return {
config: postConstruction, config: postConstruction,
kirishima: localStorage.getItem('kirishima'), kirishima: localStorage.getItem('kirishima'),
quoters: localStorage.getItem('quoters'), quoters: localStorage.getItem('quoters'),
}
}, },
methods: { methods: {
complete: function(i, val) { complete: function (i, val) {
var ls = postView.config[i] var ls = this.config[i]
let header = ls.text.head let header = ls.text.head
if (val) { if (val) {
localStorage.setItem(ls.storage, val) localStorage.setItem(ls.storage, val)
@ -90,8 +96,8 @@ var postView = new Vue({
return true return true
}, },
}, },
}) }).mount('#postView')
//設定ボタン押した。 //設定ボタン押した。
function settings() { function settings() {
var fontd = $('#font').val() var fontd = $('#font').val()
if (fontd) { if (fontd) {
@ -225,7 +231,7 @@ function climute() {
return return
} }
var templete var templete
Object.keys(obj).forEach(function(key) { Object.keys(obj).forEach(function (key) {
var cli = obj[key] var cli = obj[key]
var list = key * 1 + 1 var list = key * 1 + 1
templete = templete =
@ -651,7 +657,7 @@ function ctLoad() {
function ctLoadCore(args) { function ctLoadCore(args) {
var template = '' var template = ''
var editTemplate = '' var editTemplate = ''
Object.keys(args).forEach(function(key) { Object.keys(args).forEach(function (key) {
var theme = args[key] var theme = args[key]
var themeid = theme.id var themeid = theme.id
template = template + `<option value="${themeid}">${theme.name}${theme.compatible ? `(${lang.lang_setting_compat})` : ''}</option>` template = template + `<option value="${themeid}">${theme.name}${theme.compatible ? `(${lang.lang_setting_compat})` : ''}</option>`
@ -837,12 +843,12 @@ function testExecTrg() {
testExec(inputPlugin) testExec(inputPlugin)
} }
async function deletePlugin() { async function deletePlugin() {
const alert = await Swal.fire({ const delIsIt = await Swal.fire({
title: 'delete', title: 'delete',
icon: 'warning', icon: 'warning',
showCancelButton: true, showCancelButton: true,
}) })
if (!alert) return false if (!delIsIt.isConfirmed) return false
editor.setValue('', -1) editor.setValue('', -1)
var pgns = localStorage.getItem('plugins') var pgns = localStorage.getItem('plugins')
var args = JSON.parse(pgns ? pgns : '[]') var args = JSON.parse(pgns ? pgns : '[]')

View File

@ -1,6 +1,6 @@
//ユーザーデータ表示 //ユーザーデータ表示
localStorage.removeItem('history') localStorage.removeItem('history')
//コード受信 //コード受信
if (location.search) { if (location.search) {
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/) var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/)
var mode = m[1] var mode = m[1]
@ -45,8 +45,8 @@ async function udgEx(user, acct_id) {
onBeforeOpen: () => { onBeforeOpen: () => {
Swal.showLoading() Swal.showLoading()
}, },
onClose: () => {}, onClose: () => { },
}).then((result) => {}) }).then((result) => { })
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
@ -54,21 +54,21 @@ async function udgEx(user, acct_id) {
Authorization: 'Bearer ' + at, Authorization: 'Bearer ' + at,
}, },
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
Swal.close() Swal.close()
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
if (json.accounts[0]) { if (json.accounts[0]) {
var id = json.accounts[0].id var id = json.accounts[0].id
udg(id, acct_id, true) udg(id, acct_id, true)
@ -80,7 +80,7 @@ async function udgEx(user, acct_id) {
return true return true
} }
function udg(user, acct_id, isSwal) { async function udg(user, acct_id, isSwal) {
reset() reset()
if (!user) { if (!user) {
user = localStorage.getItem('user-id_' + acct_id) user = localStorage.getItem('user-id_' + acct_id)
@ -91,30 +91,22 @@ function udg(user, acct_id, isSwal) {
misskeyUdg(user, acct_id) misskeyUdg(user, acct_id)
return return
} }
var at = localStorage.getItem('acct_' + acct_id + '_at') const at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/accounts/' + user const start = 'https://' + domain + '/api/v1/accounts/' + user
fetch(start, { const response = await fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
Authorization: 'Bearer ' + at, Authorization: 'Bearer ' + at,
}, },
}) })
.then(function(response) {
if (isSwal) Swal.close() if (isSwal) Swal.close()
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() const json = await response.json()
})
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
//一つ前のユーザーデータ //一つ前のユーザーデータ
if (!localStorage.getItem('history')) { if (!localStorage.getItem('history')) {
$('#his-history-btn').prop('disabled', true) $('#his-history-btn').prop('disabled', true)
@ -129,6 +121,15 @@ function udg(user, acct_id, isSwal) {
displayLength: 4000, displayLength: 4000,
}) })
} }
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').modal('open')
$('#his-data').attr('user-id', user) $('#his-data').attr('user-id', user)
$('#his-data').attr('use-acct', acct_id) $('#his-data').attr('use-acct', acct_id)
@ -154,7 +155,7 @@ function udg(user, acct_id, isSwal) {
} }
//絵文字があれば //絵文字があれば
if (actemojick) { if (actemojick) {
Object.keys(json.emojis).forEach(function(key5) { Object.keys(json.emojis).forEach(function (key5) {
var emoji = json.emojis[key5] var emoji = json.emojis[key5]
var shortcode = emoji.shortcode var shortcode = emoji.shortcode
var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" draggable="false">' var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" draggable="false">'
@ -190,7 +191,7 @@ function udg(user, acct_id, isSwal) {
if (json.fields) { if (json.fields) {
var table = '' var table = ''
if (json.fields.length > 0) { if (json.fields.length > 0) {
$('#his-des').css('max-height', '250px') $('#his-des').css('max-height', '196px')
table = '<table id="his-field">' table = '<table id="his-field">'
for (var i = 0; i < json.fields.length; i++) { for (var i = 0; i < json.fields.length; i++) {
var fname = json.fields[i].name var fname = json.fields[i].name
@ -287,7 +288,6 @@ function udg(user, acct_id, isSwal) {
} }
//外部データ取得(死かもしれないので) //外部データ取得(死かもしれないので)
udAdd(acct_id, user, json.url) udAdd(acct_id, user, json.url)
})
} }
function misskeyUdg(user, acct_id) { function misskeyUdg(user, acct_id) {
@ -313,20 +313,20 @@ function misskeyUdg(user, acct_id) {
userId: user, userId: user,
}), }),
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
//一つ前のユーザーデータ //一つ前のユーザーデータ
if (!localStorage.getItem('history')) { if (!localStorage.getItem('history')) {
$('#his-history-btn').prop('disabled', true) $('#his-history-btn').prop('disabled', true)
@ -444,20 +444,20 @@ function relations(user, acct_id) {
Authorization: 'Bearer ' + at, Authorization: 'Bearer ' + at,
}, },
}) })
.then(function(response) { .then(function (response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function(text) { response.text().then(function (text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function(error) { .catch(function (error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(json) { .then(function (json) {
var json = json[0] var json = json[0]
if (json.requested) { if (json.requested) {
//フォロリク中 //フォロリク中
@ -597,7 +597,7 @@ function reset() {
$('#his-data').removeClass('locked') $('#his-data').removeClass('locked')
$('#his-data').removeClass('requesting') $('#his-data').removeClass('requesting')
} }
$('#my-data-nav .anc-link').on('click', function() { $('#my-data-nav .anc-link').on('click', function () {
var target = $(this).attr('go') var target = $(this).attr('go')
if (target) { if (target) {
let title = $(this).html() let title = $(this).html()

View File

@ -29,14 +29,10 @@ if (!gotTheLock) {
} else { } else {
app.on('second-instance', (event, commandLine, workingDirector) => { app.on('second-instance', (event, commandLine, workingDirector) => {
opening = false 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) { if (m) {
mainWindow.send('customUrl', [m[1], m[2]]) 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(() => { }) electron.session.defaultSession.clearCache(() => { })
app.quit() 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) { function isFile(file) {
try { try {
fs.statSync(file) fs.statSync(file)
@ -55,6 +58,7 @@ function isFile(file) {
} }
function createWindow() { function createWindow() {
var lang_path = join(app.getPath('userData'), 'language') var lang_path = join(app.getPath('userData'), 'language')
console.log(lang_path)
if (isFile(lang_path)) { if (isFile(lang_path)) {
var lang = fs.readFileSync(lang_path, 'utf8') var lang = fs.readFileSync(lang_path, 'utf8')
} else { } else {
@ -167,6 +171,7 @@ function createWindow() {
nodeIntegration: false, nodeIntegration: false,
contextIsolation: true, contextIsolation: true,
spellcheck: false, spellcheck: false,
sandbox: false,
preload: join(__dirname, 'js', 'platform', 'preload.js'), preload: join(__dirname, 'js', 'platform', 'preload.js'),
}, },
width: window_size.width, width: window_size.width,

View File

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

View File

@ -1,3 +1,5 @@
const { shell } = require('electron')
function system(mainWindow, dir, lang, dirname) { function system(mainWindow, dir, lang, dirname) {
const electron = require('electron') const electron = require('electron')
const app = electron.app const app = electron.app
@ -7,6 +9,7 @@ function system(mainWindow, dir, lang, dirname) {
var JSON5 = require('json5') var JSON5 = require('json5')
var ipc = electron.ipcMain var ipc = electron.ipcMain
const clipboard = electron.clipboard const clipboard = electron.clipboard
const nativeImage = electron.nativeImage
var tmp_img = join(app.getPath('userData'), 'tmp.png') var tmp_img = join(app.getPath('userData'), 'tmp.png')
var ha_path = join(app.getPath('userData'), 'hardwareAcceleration') var ha_path = join(app.getPath('userData'), 'hardwareAcceleration')
var wv_path = join(app.getPath('userData'), 'webview') var wv_path = join(app.getPath('userData'), 'webview')
@ -143,6 +146,9 @@ function system(mainWindow, dir, lang, dirname) {
ipc.on('about', (e, args) => { ipc.on('about', (e, args) => {
about() about()
}) })
ipc.on('openUrl', function (event, arg) {
shell.openExternal(arg)
})
function about() { function about() {
var ver = app.getVersion() var ver = app.getVersion()
var window = new BrowserWindow({ var window = new BrowserWindow({
@ -150,7 +156,9 @@ function system(mainWindow, dir, lang, dirname) {
webviewTag: false, webviewTag: false,
nodeIntegration: false, nodeIntegration: false,
contextIsolation: true, contextIsolation: true,
preload: join(dirname, 'js', 'platform', 'preload.js'), spellcheck: false,
sandbox: false,
preload: join(__dirname, 'js', 'platform', 'preload.js'),
}, },
width: 300, width: 300,
height: 500, height: 500,
@ -174,6 +182,7 @@ function system(mainWindow, dir, lang, dirname) {
webviewTag: false, webviewTag: false,
nodeIntegration: false, nodeIntegration: false,
contextIsolation: true, contextIsolation: true,
sandbox: false,
preload: join(dirname, 'js', 'platform', 'preload.js'), preload: join(dirname, 'js', 'platform', 'preload.js'),
}, },
width: 350, width: 350,
@ -255,6 +264,10 @@ function system(mainWindow, dir, lang, dirname) {
ipc.on('copy', (e, arg) => { ipc.on('copy', (e, arg) => {
clipboard.writeText(arg) clipboard.writeText(arg)
}) })
ipc.on('copyBinary', (e, arg) => {
const ni = nativeImage.createFromDataURL(arg)
clipboard.writeImage(ni)
})
//ログ //ログ
ipc.on('log', (e, arg) => { ipc.on('log', (e, arg) => {
var today = new Date() var today = new Date()
@ -316,6 +329,7 @@ function system(mainWindow, dir, lang, dirname) {
webviewTag: false, webviewTag: false,
nodeIntegration: false, nodeIntegration: false,
contextIsolation: true, contextIsolation: true,
sandbox: false,
preload: join(dirname, 'js', 'platform', 'preload.js'), preload: join(dirname, 'js', 'platform', 'preload.js'),
}, },
width: 414, 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 exports.system = system

View File

@ -86,6 +86,9 @@
.voice { .voice {
display: none; display: none;
} }
.contextMenu {
display: none;
}
</style> </style>
</head> </head>
@ -145,14 +148,18 @@
var lang = "ja"; var lang = "ja";
} }
</script> </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/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/status.js"></script>
<script type="text/javascript" src="./js/post/post.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/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/tl/parse.js"></script>
<script type="text/javascript" src="./js/ui/theme.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/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/common/time.js"></script>
<script type="text/javascript" src="./js/platform/nano.js"></script> <script type="text/javascript" src="./js/platform/nano.js"></script>
<script type="text/javascript" src="./js/platform/end.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 { AiScript, parse, values, utils } = require('@syuilo/aiscript')
const gcc = require('textarea-caret') const gcc = require('textarea-caret')
const { v4: uuidv4 } = require('uuid')
global.uuid = uuidv4
global.getCaretCoordinates = gcc global.getCaretCoordinates = gcc
global.sanitizeHtml = require('sanitize-html') global.sanitizeHtml = require('sanitize-html')
global.asValue = values 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", "name": "thedesk",
"version": "22.3.0", "version": "23.0.3",
"codename": "Koume", "codename": "Chieri",
"description": "TheDesk is a Mastodon client for PC.", "description": "TheDesk is a Mastodon client for PC.",
"repository": "https://github.com/cutls/TheDesk", "repository": "https://github.com/cutls/TheDesk",
"main": "main.js", "main": "main.js",
@ -9,7 +9,7 @@
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"postinstall": "run-s util:*", "postinstall": "run-s util:*",
"util:hash": "node gitHash.js", "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": "node view/make/makeCli.js",
"construct:store": "node view/make/makeCli.js --store", "construct:store": "node view/make/makeCli.js --store",
"dev": "run-p dev:*", "dev": "run-p dev:*",
@ -18,7 +18,7 @@
"build": "node buildCli.js", "build": "node buildCli.js",
"build:pwa": "node view/make/makeCli.js --pwa", "build:pwa": "node view/make/makeCli.js --pwa",
"build:all:x64": "node buildCli.js --withStore", "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:fix": "eslint js --fix",
"lint": "eslint js" "lint": "eslint js"
}, },
@ -38,7 +38,8 @@
"url": "https://cutls.dev", "url": "https://cutls.dev",
"email": "p@cutls.com" "email": "p@cutls.com"
}, },
"contributor": [{ "contributor": [
{
"name": "とねぢ", "name": "とねぢ",
"url": "https://minohdon.jp/@toneji", "url": "https://minohdon.jp/@toneji",
"email": "solfa.tono@gmail.com" "email": "solfa.tono@gmail.com"
@ -56,37 +57,40 @@
], ],
"license": "GPL-3.0", "license": "GPL-3.0",
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-free": "^5.15.3", "@cutls/materialize-css": "1.0.0",
"@fortawesome/fontawesome-free": "^6.2.1",
"@syuilo/aiscript": "^0.11.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", "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", "jimp": "^0.16.2",
"jquery": "^3.6.0", "jquery": "^3.6.1",
"jquery-ui-dist": "^1.12.1", "jquery-ui-dist": "^1.13.2",
"json5": "^2.2.0", "json5": "^2.2.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"materialize-css": "git://github.com/cutls/materialize#v1-dev", "sanitize-html": "^2.7.2",
"sanitize-html": "^2.4.0",
"sumchecker": "^3.0.1", "sumchecker": "^3.0.1",
"sweetalert2": "^11.0.17", "sweetalert2": "^11.6.15",
"system-font-families": "^0.4.1", "system-font-families": "^0.6.0",
"textarea-caret": "^3.1.0", "textarea-caret": "^3.1.0",
"vue": "^2.6.14" "uuid": "^9.0.0",
"vue": "^3.2.45"
}, },
"devDependencies": { "devDependencies": {
"@electron/notarize": "^1.2.3",
"browserify": "^17.0.0", "browserify": "^17.0.0",
"chokidar": "^3.5.2", "chokidar": "^3.5.3",
"dotenv": "^10.0.0", "dotenv": "^16.0.3",
"electron": "^13.1.2", "electron": "^22.0.0",
"electron-builder": "^22.11.7", "electron-builder": "^23.2.0",
"electron-notarize": "^1.0.0", "electron-rebuild": "^3.2.9",
"electron-rebuild": "^2.3.5", "eslint": "^8.25.0",
"eslint": "^7.28.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"readline-sync": "1.4.10" "readline-sync": "1.4.10"
}, },
"resolutions": { "resolutions": {
"@types/fs-extra": "9.0.11", "@types/fs-extra": "^9.0.11",
"plist": "3.0.2" "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.2.0": [],
"3.1.5": [], "3.1.5": [],
"3.1.4": [ "3.1.4": [

View File

@ -5,7 +5,7 @@
<title>Account Manager - TheDesk</title> <title>Account Manager - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport" /> <meta content="width=device-width,initial-scale=1.0" name="viewport" />
<link href="../../css/themes.css" type="text/css" rel="stylesheet"> <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/master.css" type="text/css" rel="stylesheet" />
<link href="../../css/tl.css" rel="stylesheet" type="text/css" /> <link href="../../css/tl.css" rel="stylesheet" type="text/css" />
<link href="../../css/userdata.css" rel="stylesheet" type="text/css" /> <link href="../../css/userdata.css" rel="stylesheet" type="text/css" />
@ -25,7 +25,7 @@
<body id="mainView" class="@@pwaClass@@"> <body id="mainView" class="@@pwaClass@@">
<script type="text/javascript" src="../../@@node_base@@/jquery/dist/jquery.js"></script> <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/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="main.js"></script>
<script type="text/javascript" src="../../@@node_base@@/sweetalert2/dist/sweetalert2.min.js"></script> <script type="text/javascript" src="../../@@node_base@@/sweetalert2/dist/sweetalert2.min.js"></script>
<script> <script>
@ -55,8 +55,9 @@
<label for="autocomplete-input">URL</label> <label for="autocomplete-input">URL</label>
</div> </div>
<div class="col s4 loginBtnWrap"> <div class="col s4 loginBtnWrap">
<button class="btn waves-effect" onclick="instance()"><i <button class="btn waves-effect" id="loginBtn" onclick="instance()">
class="material-icons left">login</i>Login</button> <i class="material-icons left">login</i>Login
</button>
</div> </div>
</div> </div>
@ -80,6 +81,7 @@
</div> </div>
<div id="auth" style="display:none"> <div id="auth" style="display:none">
@@codepastewarn@@<br /> @@codepastewarn@@<br />
<a onclick="backToInit()" class="pointer">@@redo@@</a>
<input type="text" id="code" placeholder="@@codepaste@@" required /> <input type="text" id="code" placeholder="@@codepaste@@" required />
<button class="btn waves-effect" onclick="code()">Auth</button><br /> <button class="btn waves-effect" onclick="code()">Auth</button><br />
<br /> <br />

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", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,6 +74,7 @@
"favRegist": "Favourite", "favRegist": "Favourite",
"openBrowser": "Open in browser", "openBrowser": "Open in browser",
"screenshot": "Take a screenshot", "screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL", "copyURL": "Copy the URL",
"copy": "Copy", "copy": "Copy",
"embed": "Embed", "embed": "Embed",
@ -86,6 +88,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",

View File

@ -127,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL 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_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -168,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "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_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences", "env": "System Preferences",
"setlang": "Languages", "setlang": "Languages",
"backup": "Import and export of preferences", "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", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "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", "theme": "Themes",
"popup": "Popup notification", "popup": "Popup notification",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test", "nntest": "Notification test",
"width": "Width of columns", "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", "fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size", "fontsize": "Font size",
"savefolder": "Folder to save", "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", "useragent": "User agent",
"useragentWarn": "Restart when changed", "useragentWarn": "Restart when changed",
"frame": "Window frame", "frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme 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", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -163,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "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", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",
@ -230,7 +230,7 @@
"reply": "Reply to this toot", "reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk", "about": "About TheDesk",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,6 +74,7 @@
"favRegist": "Favourite", "favRegist": "Favourite",
"openBrowser": "Open in browser", "openBrowser": "Open in browser",
"screenshot": "Take a screenshot", "screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL", "copyURL": "Copy the URL",
"copy": "Copy", "copy": "Copy",
"embed": "Embed", "embed": "Embed",
@ -86,6 +88,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",

View File

@ -127,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL 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_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -168,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "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_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences", "env": "System Preferences",
"setlang": "Languages", "setlang": "Languages",
"backup": "Import and export of preferences", "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", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "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", "theme": "Themes",
"popup": "Popup notification", "popup": "Popup notification",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test", "nntest": "Notification test",
"width": "Width of columns", "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", "fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size", "fontsize": "Font size",
"savefolder": "Folder to save", "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", "useragent": "User agent",
"useragentWarn": "Restart when changed", "useragentWarn": "Restart when changed",
"frame": "Window frame", "frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme 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", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -163,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "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", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",
@ -230,7 +230,7 @@
"reply": "Reply to this toot", "reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk", "about": "About TheDesk",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",

View File

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

View File

@ -127,6 +127,7 @@
"lang_tl_postmarkers_title": "В процес...", "lang_tl_postmarkers_title": "В процес...",
"lang_tl_postmarkers": "Данни за POST маркери. Моля изчакайте", "lang_tl_postmarkers": "Данни за POST маркери. Моля изчакайте",
"lang_img_DLDone": "Изтеглени:", "lang_img_DLDone": "Изтеглени:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Копирано: URL адреса на това изображение", "lang_img_copyDone": "Копирано: URL адреса на това изображение",
"lang_layout_gotop": "Върнете се в горната част на тази колона. Когато иконата е червена, означава че тази колона не може да свърже API за споделане. Моля, презаредете.", "lang_layout_gotop": "Върнете се в горната част на тази колона. Когато иконата е червена, означава че тази колона не може да свърже API за споделане. Моля, презаредете.",
"lang_layout_thisacct": "{{notf}} от този акаунт", "lang_layout_thisacct": "{{notf}} от този акаунт",
@ -168,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "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_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Следвайте, за да добавите този потребител към списъците.", "lang_showontl_listwarn": "Следвайте, за да добавите този потребител към списъците.",

View File

@ -13,13 +13,13 @@
"env": "Системни предпочитания", "env": "Системни предпочитания",
"setlang": "Езици", "setlang": "Езици",
"backup": "Внос и износ на предпочитания", "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": "Внос", "import": "Внос",
"export": "Износ", "export": "Износ",
"hardwareAcceleration": "Деактивиране на хардуерното ускорение", "hardwareAcceleration": "Деактивиране на хардуерното ускорение",
"hardwareAccelerationWarn": "Автоматичното рестартиране", "hardwareAccelerationWarn": "Автоматичното рестартиране",
"webview": "Webview Integration", "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": "Теми", "theme": "Теми",
"popup": "Известие с изскачащ прозорец (за Windows)", "popup": "Известие с изскачащ прозорец (за Windows)",
"popupwarn": "Скрито ако е зададено на „0“", "popupwarn": "Скрито ако е зададено на „0“",
@ -28,7 +28,7 @@
"nnwarn": "Това не работи в Windows Portable вер.", "nnwarn": "Това не работи в Windows Portable вер.",
"nntest": "Тест за уведомяване", "nntest": "Тест за уведомяване",
"width": "Width of columns", "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", "fixwidth": "Минимална ширина на браузъра TweetDeck",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme 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", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -163,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "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", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "Можете да вмъкнете всякакви букви и емотикони само с 3 клавиша", "okswarn": "Можете да вмъкнете всякакви букви и емотикони само с 3 клавиша",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,6 +74,7 @@
"favRegist": "Favourite", "favRegist": "Favourite",
"openBrowser": "Open in browser", "openBrowser": "Open in browser",
"screenshot": "Take a screenshot", "screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL", "copyURL": "Copy the URL",
"copy": "Copy", "copy": "Copy",
"embed": "Embed", "embed": "Embed",
@ -86,6 +88,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",

View File

@ -127,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL 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_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -168,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "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_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences", "env": "System Preferences",
"setlang": "Languages", "setlang": "Languages",
"backup": "Import and export of preferences", "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", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "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", "theme": "Themes",
"popup": "Popup notification", "popup": "Popup notification",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test", "nntest": "Notification test",
"width": "Width of columns", "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", "fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size", "fontsize": "Font size",
"savefolder": "Folder to save", "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", "useragent": "User agent",
"useragentWarn": "Restart when changed", "useragentWarn": "Restart when changed",
"frame": "Window frame", "frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme 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", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -163,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "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", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",
@ -230,7 +230,7 @@
"reply": "Reply to this toot", "reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk", "about": "About TheDesk",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Použít jiný účet", "useOtherAcct1": "Použít jiný účet",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,6 +74,7 @@
"favRegist": "Oblíbit", "favRegist": "Oblíbit",
"openBrowser": "Otevřít v prohlížeči", "openBrowser": "Otevřít v prohlížeči",
"screenshot": "Vytvořit snímek obrazovky", "screenshot": "Vytvořit snímek obrazovky",
"copyBinary": "Copy raw image",
"copyURL": "Kopírovat URL tohoto tootu", "copyURL": "Kopírovat URL tohoto tootu",
"copy": "Copy", "copy": "Copy",
"embed": "Vložit", "embed": "Vložit",
@ -86,6 +88,8 @@
"makeNew": "Uložit", "makeNew": "Uložit",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",

View File

@ -127,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL 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_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} tohoto účtu", "lang_layout_thisacct": "{{notf}} tohoto účtu",
@ -168,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "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_movetxt": "Tento účet byl přesunut",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[robot]", "lang_showontl_botacct": "[robot]",
"lang_showontl_followed": "Sledují vás", "lang_showontl_followed": "Sledují vás",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Oznámení ", "lang_showontl_notf": "Oznámení ",
"lang_showontl_domain": "Doména ", "lang_showontl_domain": "Doména ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "Systémové předvolby", "env": "Systémové předvolby",
"setlang": "Jazyky", "setlang": "Jazyky",
"backup": "Import a export předvoleb", "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", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "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", "theme": "Motivy",
"popup": "Popupová oznámení (na Windows)", "popup": "Popupová oznámení (na Windows)",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Odskoušet oznámení", "nntest": "Odskoušet oznámení",
"width": "Width of columns", "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", "fixwidth": "Minimální šířka TweetDeck prohlížeče",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme 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", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -163,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "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", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,6 +74,7 @@
"favRegist": "Favourite", "favRegist": "Favourite",
"openBrowser": "Open in browser", "openBrowser": "Open in browser",
"screenshot": "Take a screenshot", "screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL", "copyURL": "Copy the URL",
"copy": "Copy", "copy": "Copy",
"embed": "Embed", "embed": "Embed",
@ -86,6 +88,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",

View File

@ -127,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL 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_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -168,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "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_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences", "env": "System Preferences",
"setlang": "Languages", "setlang": "Languages",
"backup": "Import and export of preferences", "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", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "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", "theme": "Themes",
"popup": "Popup notification", "popup": "Popup notification",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test", "nntest": "Notification test",
"width": "Width of columns", "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", "fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size", "fontsize": "Font size",
"savefolder": "Folder to save", "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", "useragent": "User agent",
"useragentWarn": "Restart when changed", "useragentWarn": "Restart when changed",
"frame": "Window frame", "frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme 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", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -163,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "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", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",
@ -230,7 +230,7 @@
"reply": "Reply to this toot", "reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk", "about": "About TheDesk",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",

View File

@ -1,6 +1,6 @@
{ {
"draghere": "Zum Hochladen hier her ziehen", "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", "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...", "reOnline": "Jetzt haben wir wieder Internet. Du solltest neuladen...",
"close": "Schließen", "close": "Schließen",
"webSrc": "Suche im Internet", "webSrc": "Suche im Internet",
@ -65,6 +65,7 @@
"afterFTL": "Globaler-Verlauf nach diesem Tröt", "afterFTL": "Globaler-Verlauf nach diesem Tröt",
"favedPeople": "Leute, die es bevorzugt haben", "favedPeople": "Leute, die es bevorzugt haben",
"btedPeople": "Leute, die es verstärkt haben", "btedPeople": "Leute, die es verstärkt haben",
"editHistory": "Verlauf bearbeiten",
"useOtherAcct1": "Anderes Konto verwenden", "useOtherAcct1": "Anderes Konto verwenden",
"useOtherAcct2": ":unfav und unBT sind deaktiviert.", "useOtherAcct2": ":unfav und unBT sind deaktiviert.",
"btWithVis": "Boost mit Sichtbarkeit", "btWithVis": "Boost mit Sichtbarkeit",
@ -73,8 +74,9 @@
"favRegist": "Favoriten", "favRegist": "Favoriten",
"openBrowser": "Im Browser öffnen", "openBrowser": "Im Browser öffnen",
"screenshot": "Bildschirmfoto aufnehmen", "screenshot": "Bildschirmfoto aufnehmen",
"copyBinary": "Kopiere Rohdaten",
"copyURL": "URL dieses Tröts kopieren", "copyURL": "URL dieses Tröts kopieren",
"copy": "Copy", "copy": "Kopieren",
"embed": "Einbinden", "embed": "Einbinden",
"toots": "Tröts", "toots": "Tröts",
"follow": "Folgen", "follow": "Folgen",
@ -86,6 +88,8 @@
"makeNew": "Speichern", "makeNew": "Speichern",
"blocks": "Blockiert", "blocks": "Blockiert",
"mutes": "Stumm geschaltet", "mutes": "Stumm geschaltet",
"notfMute": "Auch deren Benachrichtigungen stumm schalten",
"zeroSetToInfinity": "Dauer der Stummschaltung: 0 Min für dauerhaft einstellen",
"block": "Blockieren", "block": "Blockieren",
"mute": "Stummschalten", "mute": "Stummschalten",
"domainBlock": "Domänenblockade", "domainBlock": "Domänenblockade",
@ -179,7 +183,7 @@
"foundBug": "Ich habe einen Fehler gefunden", "foundBug": "Ich habe einen Fehler gefunden",
"show": "Zeige", "show": "Zeige",
"directory": "Verzeichnis", "directory": "Verzeichnis",
"discover": "Discover", "discover": "Entdecken",
"active": "Kürzlich aktiv", "active": "Kürzlich aktiv",
"newcomer": "Neu eingetroffen", "newcomer": "Neu eingetroffen",
"local_only": "Nur lokal", "local_only": "Nur lokal",

View File

@ -60,8 +60,8 @@
"lang_postimg_failupload": "Gescheitert", "lang_postimg_failupload": "Gescheitert",
"lang_postimg_delete": "Klicken, um Beschreibung hinzuzufügen, Rechtsklick zum Löschen", "lang_postimg_delete": "Klicken, um Beschreibung hinzuzufügen, Rechtsklick zum Löschen",
"lang_postimg_desc": "Beschreibung", "lang_postimg_desc": "Beschreibung",
"lang_postimg_leadContext": "right-click the thumbnail to delete this", "lang_postimg_leadContext": "Rechtsklick auf das Vorschaubild, um dies zu löschen",
"lang_post_syncDetail": "Upload media synchronously", "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_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_tagTL": "Dieses Tröt enthält keinen Standard-Tag. Er wird in dem lokalen Verlauf nicht angezeigt. Fortfahren?",
"lang_post_tagVis": "Dieser Tröt (nicht 'öffentlicher' Tröt) wird nicht in diesem Tag-Verlauf angezeigt.", "lang_post_tagVis": "Dieser Tröt (nicht 'öffentlicher' Tröt) wird nicht in diesem Tag-Verlauf angezeigt.",
@ -103,7 +103,7 @@
"lang_details_embed": "Eingefügtes HTML wurde entfernt.", "lang_details_embed": "Eingefügtes HTML wurde entfernt.",
"lang_details_url": "URL dieses Tröts wurde entfernt.", "lang_details_url": "URL dieses Tröts wurde entfernt.",
"lang_details_txt": "Inhalt dieses Tröts wurde entfernt.", "lang_details_txt": "Inhalt dieses Tröts wurde entfernt.",
"lang_details_fetch": "Fetcging toot data...", "lang_details_fetch": "Daten des Tröts abrufen…",
"lang_filter_nodata": "Keine Daten", "lang_filter_nodata": "Keine Daten",
"lang_filter_errordegree": "Bitte überprüfen Sie den Kontext", "lang_filter_errordegree": "Bitte überprüfen Sie den Kontext",
"lang_list_nodata": "Keine Daten", "lang_list_nodata": "Keine Daten",
@ -124,9 +124,10 @@
"lang_tags_tagwarn": "Automatisch {{tag}} anfügen, wenn Tröt ohne {{tag}} ist", "lang_tags_tagwarn": "Automatisch {{tag}} anfügen, wenn Tröt ohne {{tag}} ist",
"lang_tl_media": "Medien", "lang_tl_media": "Medien",
"lang_tl_reconnect": "Mit Streaming API erneut verbinden", "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_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Heruntergeladen:", "lang_img_DLDone": "Heruntergeladen:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Kopiert: URL dieses Bildes", "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_gotop": "Gehen Sie zum Anfang dieser Spalte. Wenn das Symbol rot ist, kann diese Spalte keine Verbindung zur Streaming-API herstellen. Bitte neu laden.",
"lang_layout_thisacct": "{{notf}} dieses Kontos", "lang_layout_thisacct": "{{notf}} dieses Kontos",
@ -168,11 +169,14 @@
"lang_hisdata_taketime": "Es dauert 30s bis mehrere Minuten", "lang_hisdata_taketime": "Es dauert 30s bis mehrere Minuten",
"lang_hisdata_notonmisskey": "Misskey kann nicht angefordert werden.", "lang_hisdata_notonmisskey": "Misskey kann nicht angefordert werden.",
"lang_hisdata_key": "Dieser Benutzer ist von {{set}} überprüft", "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_movetxt": "Dieses Konto wurde verschoben",
"lang_showontl_movebtn": "Auf dem neuen Konto fortfahren", "lang_showontl_movebtn": "Auf dem neuen Konto fortfahren",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Folgt dir", "lang_showontl_followed": "Folgt dir",
"lang_parse_request": "Anfrage folgen", "lang_parse_request": "Anfrage folgen",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Benachrichtigung ", "lang_showontl_notf": "Benachrichtigung ",
"lang_showontl_domain": "Domäne ", "lang_showontl_domain": "Domäne ",
"lang_showontl_listwarn": "Folgen, um diesen Benutzer zu Listen hinzuzufügen.", "lang_showontl_listwarn": "Folgen, um diesen Benutzer zu Listen hinzuzufügen.",
@ -214,7 +218,7 @@
"lang_parse_detail": "Details", "lang_parse_detail": "Details",
"lang_parse_redraft": "Löschen & Neuentwerfen", "lang_parse_redraft": "Löschen & Neuentwerfen",
"lang_parse_followed": "Folgt dir", "lang_parse_followed": "Folgt dir",
"lang_parse_moved": "Moved to...", "lang_parse_moved": "Verschoben nach...",
"lang_parse_clientop": "Aktion dieses Clients", "lang_parse_clientop": "Aktion dieses Clients",
"lang_parse_clienttxt": " wird", "lang_parse_clienttxt": " wird",
"lang_parse_clientno": "Nichts unternehmen", "lang_parse_clientno": "Nichts unternehmen",
@ -222,7 +226,7 @@
"lang_parse_clientmute": "Stumm", "lang_parse_clientmute": "Stumm",
"lang_parse_mute": " wird stumm gemacht. Kann in den Einstellungen wieder entfernt werden.", "lang_parse_mute": " wird stumm gemacht. Kann in den Einstellungen wieder entfernt werden.",
"lang_parse_voted": "Abgestimmt", "lang_parse_voted": "Abgestimmt",
"lang_parse_myvote": "(My own poll)", "lang_parse_myvote": "(Meine eigene Umfrage)",
"lang_parse_vote": "Abstimmen", "lang_parse_vote": "Abstimmen",
"lang_parse_unvoted": "Ergebnis ohne Abstimmung anzeigen", "lang_parse_unvoted": "Ergebnis ohne Abstimmung anzeigen",
"lang_parse_endedvote": "Abgelaufen", "lang_parse_endedvote": "Abgelaufen",
@ -288,5 +292,5 @@
"lang_setting_exportwarn": "Nur wichtige Daten werden exportiert. Sie müssen diese Daten sichern.", "lang_setting_exportwarn": "Nur wichtige Daten werden exportiert. Sie müssen diese Daten sichern.",
"lang_setting_importwarn": "Alle Daten werden gelöscht.", "lang_setting_importwarn": "Alle Daten werden gelöscht.",
"lang_setting_noupd": "Keine Updates verfügbar", "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", "no": "Nein",
"none": "Ohne", "none": "Ohne",
"show": "Zeige", "show": "Zeige",
"hide": "Hide", "hide": "Verbergen",
"default": "Standard", "default": "Standard",
"change": "Ändern", "change": "Ändern",
"select": "Auswahl", "select": "Auswahl",
"exec": "Exec", "exec": "Ausführen",
"env": "Systemeinstellungen", "env": "Systemeinstellungen",
"setlang": "Sprachen", "setlang": "Sprachen",
"backup": "Import und Export von Einstellungen", "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", "import": "Importieren",
"export": "Exportieren", "export": "Exportieren",
"hardwareAcceleration": "Hardwarebeschleunigung deaktivieren", "hardwareAcceleration": "Hardwarebeschleunigung deaktivieren",
"hardwareAccelerationWarn": "Automatischer Neustart", "hardwareAccelerationWarn": "Automatischer Neustart",
"webview": "Webview Integration", "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", "theme": "Designs",
"popup": "Popup-Benachrichtigung(unter Windows)", "popup": "Popup-Benachrichtigung(unter Windows)",
"popupwarn": "Bei \"0\" Ausgeschaltet.", "popupwarn": "Bei \"0\" Ausgeschaltet.",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme 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", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -72,7 +72,7 @@
"desc": "Über dieses Design", "desc": "Über dieses Design",
"customImport": "Import von eigenen Designs", "customImport": "Import von eigenen Designs",
"delete": "Löschen", "delete": "Löschen",
"preview": "Preview", "preview": "Vorschau",
"timeline": "Verlaufseinstellungen", "timeline": "Verlaufseinstellungen",
"timemode": "Zeitformat", "timemode": "Zeitformat",
"relativetime": "Relatives Format:\"vor 1 Minuten\",\"vor 3 Tagen\"", "relativetime": "Relatives Format:\"vor 1 Minuten\",\"vor 3 Tagen\"",
@ -163,7 +163,7 @@
"localonly": "Nur lokal", "localonly": "Nur lokal",
"zeroWidthEmoji": "Emojis ohne Abstand Einfügen", "zeroWidthEmoji": "Emojis ohne Abstand Einfügen",
"uploadCrop": "Auto scale to fit", "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", "keysc": "Tastaturkürzel Einstellungen",
"iks": "Schnell Einfügen", "iks": "Schnell Einfügen",
"okswarn": "Sie können Buchstaben und Emojis mit 3-Tasten-Kombination 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", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,6 +74,7 @@
"favRegist": "Favourite", "favRegist": "Favourite",
"openBrowser": "Open in browser", "openBrowser": "Open in browser",
"screenshot": "Take a screenshot", "screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL", "copyURL": "Copy the URL",
"copy": "Copy", "copy": "Copy",
"embed": "Embed", "embed": "Embed",
@ -86,6 +88,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",

View File

@ -127,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL 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_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -168,11 +169,14 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "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_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences", "env": "System Preferences",
"setlang": "Languages", "setlang": "Languages",
"backup": "Import and export of preferences", "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", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "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", "theme": "Themes",
"popup": "Popup notification", "popup": "Popup notification",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test", "nntest": "Notification test",
"width": "Width of columns", "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", "fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
"fontsize": "Font size", "fontsize": "Font size",
"savefolder": "Folder to save", "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", "useragent": "User agent",
"useragentWarn": "Restart when changed", "useragentWarn": "Restart when changed",
"frame": "Window frame", "frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme 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", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -163,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "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", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",
@ -230,7 +230,7 @@
"reply": "Reply to this toot", "reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk", "about": "About TheDesk",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",

View File

@ -65,6 +65,7 @@
"afterFTL": "crwdns3174:0crwdne3174:0", "afterFTL": "crwdns3174:0crwdne3174:0",
"favedPeople": "crwdns3176:0crwdne3176:0", "favedPeople": "crwdns3176:0crwdne3176:0",
"btedPeople": "crwdns3178:0crwdne3178:0", "btedPeople": "crwdns3178:0crwdne3178:0",
"editHistory": "crwdns4602:0crwdne4602:0",
"useOtherAcct1": "crwdns3180:0crwdne3180:0", "useOtherAcct1": "crwdns3180:0crwdne3180:0",
"useOtherAcct2": "crwdns3182:0crwdne3182:0", "useOtherAcct2": "crwdns3182:0crwdne3182:0",
"btWithVis": "crwdns4324:0crwdne4324:0", "btWithVis": "crwdns4324:0crwdne4324:0",
@ -73,6 +74,7 @@
"favRegist": "crwdns3188:0crwdne3188:0", "favRegist": "crwdns3188:0crwdne3188:0",
"openBrowser": "crwdns3190:0crwdne3190:0", "openBrowser": "crwdns3190:0crwdne3190:0",
"screenshot": "crwdns3192:0crwdne3192:0", "screenshot": "crwdns3192:0crwdne3192:0",
"copyBinary": "crwdns4594:0crwdne4594:0",
"copyURL": "crwdns3194:0crwdne3194:0", "copyURL": "crwdns3194:0crwdne3194:0",
"copy": "crwdns4586:0crwdne4586:0", "copy": "crwdns4586:0crwdne4586:0",
"embed": "crwdns3196:0crwdne3196:0", "embed": "crwdns3196:0crwdne3196:0",
@ -86,6 +88,8 @@
"makeNew": "crwdns3210:0crwdne3210:0", "makeNew": "crwdns3210:0crwdne3210:0",
"blocks": "crwdns3212:0crwdne3212:0", "blocks": "crwdns3212:0crwdne3212:0",
"mutes": "crwdns3214:0crwdne3214:0", "mutes": "crwdns3214:0crwdne3214:0",
"notfMute": "crwdns4591:0crwdne4591:0",
"zeroSetToInfinity": "crwdns4593:0crwdne4593:0",
"block": "crwdns3216:0crwdne3216:0", "block": "crwdns3216:0crwdne3216:0",
"mute": "crwdns3218:0crwdne3218:0", "mute": "crwdns3218:0crwdne3218:0",
"domainBlock": "crwdns3220:0crwdne3220:0", "domainBlock": "crwdns3220:0crwdne3220:0",

View File

@ -127,6 +127,7 @@
"lang_tl_postmarkers_title": "crwdns3630:0crwdne3630:0", "lang_tl_postmarkers_title": "crwdns3630:0crwdne3630:0",
"lang_tl_postmarkers": "crwdns3632:0crwdne3632:0", "lang_tl_postmarkers": "crwdns3632:0crwdne3632:0",
"lang_img_DLDone": "crwdns3634:0crwdne3634:0", "lang_img_DLDone": "crwdns3634:0crwdne3634:0",
"lang_imgBin_copyDone": "crwdns4596:0crwdne4596:0",
"lang_img_copyDone": "crwdns4380:0crwdne4380:0", "lang_img_copyDone": "crwdns4380:0crwdne4380:0",
"lang_layout_gotop": "crwdns3636:0crwdne3636:0", "lang_layout_gotop": "crwdns3636:0crwdne3636:0",
"lang_layout_thisacct": "crwdns3638:0{{notf}}crwdne3638:0", "lang_layout_thisacct": "crwdns3638:0{{notf}}crwdne3638:0",
@ -168,11 +169,14 @@
"lang_hisdata_taketime": "crwdns3694:0crwdne3694:0", "lang_hisdata_taketime": "crwdns3694:0crwdne3694:0",
"lang_hisdata_notonmisskey": "crwdns3696:0crwdne3696:0", "lang_hisdata_notonmisskey": "crwdns3696:0crwdne3696:0",
"lang_hisdata_key": "crwdns3698:0{{set}}crwdne3698: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_movetxt": "crwdns3700:0crwdne3700:0",
"lang_showontl_movebtn": "crwdns3702:0crwdne3702:0", "lang_showontl_movebtn": "crwdns3702:0crwdne3702:0",
"lang_showontl_botacct": "crwdns3704:0[bot]crwdne3704:0", "lang_showontl_botacct": "crwdns3704:0[bot]crwdne3704:0",
"lang_showontl_followed": "crwdns3706:0crwdne3706:0", "lang_showontl_followed": "crwdns3706:0crwdne3706:0",
"lang_parse_request": "crwdns4445:0crwdne4445:0", "lang_parse_request": "crwdns4445:0crwdne4445:0",
"lang_parse_signup": "crwdns4603:0crwdne4603:0",
"lang_showontl_notf": "crwdns3708:0crwdne3708:0", "lang_showontl_notf": "crwdns3708:0crwdne3708:0",
"lang_showontl_domain": "crwdns3710:0crwdne3710:0", "lang_showontl_domain": "crwdns3710:0crwdne3710:0",
"lang_showontl_listwarn": "crwdns3712:0crwdne3712:0", "lang_showontl_listwarn": "crwdns3712:0crwdne3712: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.", "misskeylogin":"Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
"nodata":"No data", "nodata":"No data",
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)", "accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page" "haveExported": "Having the exported file of TheDesk, click here to jump setting page",
"redo": "Retry(re-input address)"
} }

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,6 +74,7 @@
"favRegist": "Favourite", "favRegist": "Favourite",
"openBrowser": "Open in browser", "openBrowser": "Open in browser",
"screenshot": "Take a screenshot", "screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL", "copyURL": "Copy the URL",
"copy": "Copy", "copy": "Copy",
"embed": "Embed", "embed": "Embed",
@ -86,6 +88,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",

View File

@ -50,6 +50,8 @@
"lang_manager_logout": "Logout", "lang_manager_logout": "Logout",
"lang_manager_maxChars": "Max chars of toots", "lang_manager_maxChars": "Max chars of toots",
"lang_manager_refreshAt": "Login with this domain", "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_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
"lang_emoji_get": "Get emojis", "lang_emoji_get": "Get emojis",
"lang_emoji_custom": "Custom emojis", "lang_emoji_custom": "Custom emojis",
@ -127,6 +129,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL 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_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -163,16 +166,20 @@
"lang_spotify_acct": "Connect TheDesk to Spotify", "lang_spotify_acct": "Connect TheDesk to Spotify",
"lang_spotify_np": "Done:templete of NowPlaying", "lang_spotify_np": "Done:templete of NowPlaying",
"lang_setting_npprovide": "NowPlaying provider:{{set}}", "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_frcreq": "Required Mastodon 2.4.3 and above",
"lang_hisdata_frcwarn": "Unfollow accounts will be shown.", "lang_hisdata_frcwarn": "Unfollow accounts will be shown.",
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "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_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Follow to add this user to lists.",

View File

@ -13,13 +13,13 @@
"env": "System Preferences", "env": "System Preferences",
"setlang": "Languages", "setlang": "Languages",
"backup": "Import and export of preferences", "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", "import": "Import",
"export": "Export", "export": "Export",
"hardwareAcceleration": "Disable hardware acceleration", "hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted", "hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration", "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", "theme": "Themes",
"popup": "Popup notification", "popup": "Popup notification",
"popupwarn": "Hide to set \"0\"", "popupwarn": "Hide to set \"0\"",
@ -28,7 +28,7 @@
"nnwarn": "This does not work on Windows Portable ver.", "nnwarn": "This does not work on Windows Portable ver.",
"nntest": "Notification test", "nntest": "Notification test",
"width": "Width of columns", "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", "fixwidth": "Minimum width of TweetDeck browser",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margin between timelines",
@ -37,7 +37,7 @@
"fontwarn": "Select your favorite font to 'Select'(On Linux, it may not work.)", "fontwarn": "Select your favorite font to 'Select'(On Linux, it may not work.)",
"fontsize": "Font size", "fontsize": "Font size",
"savefolder": "Folder to save", "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", "useragent":"User agent",
"useragentWarn":"Restart when changed", "useragentWarn":"Restart when changed",
"frame": "Window frame", "frame": "Window frame",
@ -61,7 +61,7 @@
"modalFooter": "Background of modal window's footer", "modalFooter": "Background of modal window's footer",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Backgroud of tag buttons, etc(near to Background)",
"forthColor": "Title bar(same scheme 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", "emphasized": "Emphasized toot's background",
"postbox":"Background of post-box and menu", "postbox":"Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Background of 'active' elements",
@ -131,6 +131,7 @@
"autocwwarn": "Show dialog whether you make too-long text hidden.", "autocwwarn": "Show dialog whether you make too-long text hidden.",
"defaultcw": "Default warining text", "defaultcw": "Default warining text",
"cws": "Always CW set", "cws": "Always CW set",
"cwContinue": "Keep CW enabled",
"defaultvis": "Default visibility", "defaultvis": "Default visibility",
"public": "Public", "public": "Public",
"unlisted": "Unlisted", "unlisted": "Unlisted",
@ -163,7 +164,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "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", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",
@ -230,7 +231,7 @@
"reply": "Reply to this toot", "reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk", "about": "About TheDesk",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",

View File

@ -65,6 +65,7 @@
"afterFTL": "Línea temporal federada luego de este toot", "afterFTL": "Línea temporal federada luego de este toot",
"favedPeople": "Gente que lo marcaron como favorito", "favedPeople": "Gente que lo marcaron como favorito",
"btedPeople": "Gente que lo retooteó", "btedPeople": "Gente que lo retooteó",
"editHistory": "Edit history",
"useOtherAcct1": "Usar otra cuenta", "useOtherAcct1": "Usar otra cuenta",
"useOtherAcct2": ":Dejar de marcar como favorito y deshacer retoot están deshabilitados.", "useOtherAcct2": ":Dejar de marcar como favorito y deshacer retoot están deshabilitados.",
"btWithVis": "Retoots visibles", "btWithVis": "Retoots visibles",
@ -73,6 +74,7 @@
"favRegist": "Marcar como favorito", "favRegist": "Marcar como favorito",
"openBrowser": "Abrir en navegador web", "openBrowser": "Abrir en navegador web",
"screenshot": "Tomar captura de pantalla", "screenshot": "Tomar captura de pantalla",
"copyBinary": "Copy raw image",
"copyURL": "Copiar dirección web de este toot", "copyURL": "Copiar dirección web de este toot",
"copy": "Copiar", "copy": "Copiar",
"embed": "Insertar", "embed": "Insertar",
@ -86,6 +88,8 @@
"makeNew": "Guardar", "makeNew": "Guardar",
"blocks": "Bloqueos", "blocks": "Bloqueos",
"mutes": "Silenciados", "mutes": "Silenciados",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Bloquear", "block": "Bloquear",
"mute": "Silenciar", "mute": "Silenciar",
"domainBlock": "Bloqueo de dominio", "domainBlock": "Bloqueo de dominio",
@ -179,7 +183,7 @@
"foundBug": "Encontré un error", "foundBug": "Encontré un error",
"show": "Mostrar", "show": "Mostrar",
"directory": "Directorio", "directory": "Directorio",
"discover": "Discover", "discover": "Descubrí",
"active": "Recientemente activo", "active": "Recientemente activo",
"newcomer": "Recién llegados", "newcomer": "Recién llegados",
"local_only": "Sólo local", "local_only": "Sólo local",

View File

@ -103,7 +103,7 @@
"lang_details_embed": "El código HTML de inserción se copió al portapapeles.", "lang_details_embed": "El código HTML de inserción se copió al portapapeles.",
"lang_details_url": "La dirección web de este toot se copió al portapapeles.", "lang_details_url": "La dirección web de este toot se copió al portapapeles.",
"lang_details_txt": "El contenido de este toot se copió al portapapeles.", "lang_details_txt": "El contenido de este toot se copió al portapapeles.",
"lang_details_fetch": "Fetcging toot data...", "lang_details_fetch": "Obteniendo datos del mensaje…",
"lang_filter_nodata": "Sin datos", "lang_filter_nodata": "Sin datos",
"lang_filter_errordegree": "Por favor, comprobá un contexto", "lang_filter_errordegree": "Por favor, comprobá un contexto",
"lang_list_nodata": "Sin datos", "lang_list_nodata": "Sin datos",
@ -127,6 +127,7 @@
"lang_tl_postmarkers_title": "Procesando…", "lang_tl_postmarkers_title": "Procesando…",
"lang_tl_postmarkers": "Datos de marcadores POST. Por favor, esperá.", "lang_tl_postmarkers": "Datos de marcadores POST. Por favor, esperá.",
"lang_img_DLDone": "Descargado:", "lang_img_DLDone": "Descargado:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copiado: dirección web de esta imagen", "lang_img_copyDone": "Copiado: dirección web de esta imagen",
"lang_layout_gotop": "Ir al comienzo de esta columna. Cuando el ícono está rojo, esta columna no se puede conectar a la API del streaming. En ese caso, por favor, refrescá.", "lang_layout_gotop": "Ir al comienzo de esta columna. Cuando el ícono está rojo, esta columna no se puede conectar a la API del streaming. En ese caso, por favor, refrescá.",
"lang_layout_thisacct": "{{notf}} de esta cuenta", "lang_layout_thisacct": "{{notf}} de esta cuenta",
@ -168,11 +169,14 @@
"lang_hisdata_taketime": "Tomará entre 30 segundos a varios minutos", "lang_hisdata_taketime": "Tomará entre 30 segundos a varios minutos",
"lang_hisdata_notonmisskey": "Misskey no pudo responder.", "lang_hisdata_notonmisskey": "Misskey no pudo responder.",
"lang_hisdata_key": "Este usuario está verificado por {{set}}", "lang_hisdata_key": "Este usuario está verificado por {{set}}",
"lang_showontl_limited_title": "Limited account",
"lang_showontl_limited": "This is limited account by moderator, show anyway?",
"lang_showontl_movetxt": "Se mudó esta cuenta", "lang_showontl_movetxt": "Se mudó esta cuenta",
"lang_showontl_movebtn": "Continuar en la nueva cuenta", "lang_showontl_movebtn": "Continuar en la nueva cuenta",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Te sigue", "lang_showontl_followed": "Te sigue",
"lang_parse_request": "Solicitud de seguimiento", "lang_parse_request": "Solicitud de seguimiento",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notificación ", "lang_showontl_notf": "Notificación ",
"lang_showontl_domain": "Dominio ", "lang_showontl_domain": "Dominio ",
"lang_showontl_listwarn": "Seguí a este usuario para agregarlo a las listas.", "lang_showontl_listwarn": "Seguí a este usuario para agregarlo a las listas.",

View File

@ -2,14 +2,14 @@
"list": "Lista de cuentas", "list": "Lista de cuentas",
"back": "Atrás", "back": "Atrás",
"add": "Agregar una cuenta", "add": "Agregar una cuenta",
"addAcct": "Fill the instance domain (like mastodon.social)", "addAcct": "Rellena el dominio de la instancia (como mastodon.social)",
"codesetupwarn": "Desmarcarlo para omitir código de pegado. (iniciar sesión en Mastodon en Windows o macOS) (Recomendado: pcheck)", "codesetupwarn": "Desmarcarlo para omitir código de pegado. (iniciar sesión en Mastodon en Windows o macOS) (Recomendado: pcheck)",
"codesetup": "Configuración de código", "codesetup": "Configuración de código",
"mainacct": "Cuenta principal", "mainacct": "Cuenta principal",
"selacct": "Seleccionar una cuenta", "selacct": "Seleccionar una cuenta",
"codepastewarn": "Pegar el código y cerrar el navegador web.", "codepastewarn": "Pegar el código y cerrar el navegador web.",
"codepaste": "Código", "codepaste": "Código",
"domain": "Dominio", "domain": "Instancia",
"connect": "Servidores federados", "connect": "Servidores federados",
"toots": "Toots", "toots": "Toots",
"users": "Usuarios", "users": "Usuarios",
@ -21,5 +21,5 @@
"misskeylogin": "Leer <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> para iniciar sesión en Misskey.", "misskeylogin": "Leer <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> para iniciar sesión en Misskey.",
"nodata": "Sin datos", "nodata": "Sin datos",
"accessTokenSetup": "Usar el token de acceso para iniciar sesión (haga clic después de completar no el código si no el token de acceso en el casilla: avanzado)", "accessTokenSetup": "Usar el token de acceso para iniciar sesión (haga clic después de completar no el código si no el token de acceso en el casilla: avanzado)",
"haveExported": "Having the exported file of TheDesk, click here to jump setting page" "haveExported": "Una vez exportado el archivo de TheDesk haz clic aquí para saltar la página de configuración"
} }

View File

@ -1,132 +1,136 @@
{ {
"draghere": "Drag here to upload", "draghere": "Arrastra aquí para subir",
"nowOffline": "OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet", "nowOffline": "DESCONECTADO: todo su mensaje está como borrador y debería volver a cargar después de volver a conectarse a Internet",
"reOnline": "Now we are in the Internet, you should reload...", "reOnline": "Ahora estamos en Internet, deberías recargar...",
"close": "Close", "close": "Cerrar",
"webSrc": "Search on Web", "webSrc": "Buscar en la Web",
"tsSrc": "Search on tootsearch", "tsSrc": "Buscar en tootsearch",
"showSelectProf": "Show profile of the selecting account", "showSelectProf": "Mostrar perfil de la cuenta seleccionada",
"closethisbox": "Close this box", "closethisbox": "Cerrar esta caja",
"toot": "Toot", "toot": "Toot",
"post-new": "Post new", "post-new": "Publicar nuevo",
"nsfwDes": "Mark media as sensitive", "nsfwDes": "Marcar contenido como sensible",
"cwDes": "Hide text behind warning", "cwDes": "Ocultar texto con advertencia de contenido",
"selfile": "Attach..", "selfile": "Adjuntar..",
"insertEmoji": "Emojis", "insertEmoji": "Emojis",
"schedule": "Scheduled toot", "schedule": "Toot programado",
"postat": "Post at", "postat": "Publicar el",
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)", "scheduleWarn": "2.7.0~ Intervalo mínimo: 5 minutos (el reloj del servidor podría no ser preciso)",
"clearToot": "Clear toot box", "clearToot": "Borrar caja de toot",
"replyMode": "Reply", "replyMode": "Responder",
"no": "No", "no": "Nu",
"yes": "Yes", "yes": "",
"temp": "Attaching files", "temp": "Adjuntar archivos",
"nothing": "None", "nothing": "Ninguno",
"stamp": "Stamp", "stamp": "Sello",
"stampWarn": "Your acct(aa@bb.cc) is printed on the right-bottom of the uploaded image", "stampWarn": "Tu cuenta(aa@bb.cc) está en la parte inferior derecha de la imagen cargada",
"vis": "Adjust status privacy", "vis": "Ajustar privacidad de estado",
"cwtext": "Warning text", "cwtext": "Texto de advertencia",
"selectVis": "Adjust status privacy", "selectVis": "Ajustar privacidad de estado",
"publicJP": "", "publicJP": "",
"unlistedJP": "", "unlistedJP": "",
"privateJP": "", "privateJP": "",
"localJP": "Local only", "localJP": "Solo local",
"sectoot": "Secondary Toot", "sectoot": "Toot secundario",
"directJP": "", "directJP": "",
"emojiWarn": "", "emojiWarn": "",
"emojiInsertWarn": "Some emojis are not able to be inserted.", "emojiInsertWarn": "Algunos emojis no se pueden insertar.",
"refreshEmoji": "Refresh emojis list", "refreshEmoji": "Actualizar lista de emojis",
"closeThisBox": "Close this box", "closeThisBox": "Cerrar esta caja",
"showThisEmoji": " are shown.", "showThisEmoji": " se muestran.",
"customEmoji": "Custom emojis", "customEmoji": "Emojis personalizados",
"peopleEmoji": "Emojis of people", "peopleEmoji": "Emojis de personas",
"natureEmoji": "Emojis of nature", "natureEmoji": "Emojis de la naturaleza",
"foodEmoji": "Emojis of foods", "foodEmoji": "Emojis de comida",
"activityEmoji": "Emojis of activities", "activityEmoji": "Emojis de las actividades",
"placeEmoji": "Emojis of places", "placeEmoji": "Emojis de lugares",
"thingsEmoji": "Emojis of tools", "thingsEmoji": "Emojis de herramientas",
"symbolEmoji": "Emojis of symbols", "symbolEmoji": "Emojis de símbolos",
"flagsEmoji": "Emojis of flags", "flagsEmoji": "Emojis de banderas",
"draft": "Draft", "draft": "Borrador",
"poll": "Poll", "poll": "Encuesta",
"pollDdisabled": "Polls: Disabled", "pollDdisabled": "Encuestas: Deshabilitadas",
"pollProvider": "Provider of Poll", "pollProvider": "Proveedor de encuesta",
"polluntil": "Hide 'votes' count until people vote it.", "polluntil": "Ocultar el recuento de votos hasta que se vote.",
"choice": "Choice", "choice": "Opción",
"pollmulti": "Multiple select", "pollmulti": "Selección múltiple",
"expires_in": "Expires in...(sec)", "expires_in": "Caduca en...(seg)",
"contextBefore": "Context before this toot", "contextBefore": "Contexto antes de este toot",
"thisToot": "This toot", "thisToot": "Este toot",
"contextAfter": "Context after this toot", "contextAfter": "Contexto después de este toot",
"beforeLTL": "Local TL before this toot", "beforeLTL": "TL local antes de este toot",
"beforeUTL": "User TL before this toot", "beforeUTL": "TL de Usuario antes de este toot",
"afterLTL": "Local TL after this toot)", "afterLTL": "Línea temporal local anterior a este toot)",
"afterUTL": "User TL before this toot", "afterUTL": "TL de Usuario antes de este toot",
"afterFTL": "Federated TL after this toot", "afterFTL": "TL Federado después de este toot",
"favedPeople": "People who favourited it", "favedPeople": "Personas que lo marcaron como favorito",
"btedPeople": "People who boosted it", "btedPeople": "Personas que lo retootearon",
"useOtherAcct1": "Use other account", "editHistory": "Editar Historial",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct1": "Usar otra cuenta",
"btWithVis": "Boost with visibility", "useOtherAcct2": ":unfav y unBT están deshabilitados.",
"reply": "Reply", "btWithVis": "Retootear con visibilidad",
"bt": "Boost", "reply": "Responder",
"favRegist": "Favourite", "bt": "Retootear",
"openBrowser": "Open in browser", "favRegist": "Marcar como favorito",
"screenshot": "Take a screenshot", "openBrowser": "Abrir en el navegador",
"copyURL": "Copy the URL", "screenshot": "Captura de pantalla",
"copy": "Copy", "copyBinary": "Copiar imagen raw",
"embed": "Embed", "copyURL": "Copiar la URL",
"copy": "Copiar",
"embed": "Insertar",
"toots": "Toots", "toots": "Toots",
"follow": "Follow", "follow": "Seguir",
"follower": "Follower", "follower": "Seguidor",
"utlColumn": "Show as a column", "utlColumn": "Mostrar como columna",
"timeline": "Timeline", "timeline": "Línea temporal",
"operateOtherAcct": "Cross-account", "operateOtherAcct": "Cuenta cruzada",
"list": "List", "list": "Lista",
"makeNew": "Save", "makeNew": "Guardar",
"blocks": "Blocks", "blocks": "Bloqueos",
"mutes": "Mutes", "mutes": "Silenciados",
"block": "Block", "notfMute": "Silenciar también sus notificaciones",
"mute": "Mute", "zeroSetToInfinity": "Duración de silenciado: 0 min para indefinido",
"domainBlock": "Domain block", "block": "Bloquear",
"editProf": "Edit profile", "mute": "Silenciar",
"change": "Save", "domainBlock": "Bloque de dominio",
"followReq": "Follow requests", "editProf": "Editar perfil",
"likeHimOrHer": "Resembling", "change": "Guardar",
"endorse": "Feature on profile", "followReq": "Solicitudes de seguimiento",
"openinbrowser": "Open in browser", "likeHimOrHer": "Similares",
"mainacct": "Set it an main account", "endorse": "Destacado en el perfil",
"frc": "Suggest", "openinbrowser": "Abrir en el navegador",
"more": "More", "mainacct": "Establecer una cuenta principal",
"revoverJP": " to ", "frc": "Sugerencia",
"warnUseOtherAcct": "(Unable to unfollow)", "more": "Más",
"revoverJP": " para ",
"warnUseOtherAcct": "(No se pudo dejar de seguir)",
"revoverJPde": "", "revoverJPde": "",
"or": "or", "or": "o",
"openProf": "Show profile", "openProf": "Mostrar perfil",
"warnListRegist": "Follow to add this user to lists.", "warnListRegist": "Seguir para añadir este usuario a una lista.",
"blockDomain": "Add blocking domain", "blockDomain": "Añadir instancia bloqueada",
"name": "Display name", "name": "Nombre mostrado",
"note": "Note", "note": "Nota",
"editProfImg": "Change avataor", "editProfImg": "Cambiar avatar",
"editHeader": "Change header image", "editHeader": "Cambiar imagen de cabecera",
"blocked": "You are blocked. Why?", "blocked": "Estás bloqueado. ¿Por qué?",
"likeUserDes": "Get people resembling this user.", "likeUserDes": "Get people resembling this user.",
"get": "Get", "get": "Obtener",
"historyBack": "Atrás", "historyBack": "Atrás",
"empUser": "Emphasize this user", "empUser": "Destacar a este usuario",
"supportme": "Support TheDesk!", "supportme": "¡Apoyar TheDesk!",
"TheDeskDes": "TheDesk has no ad, you need no charge to unlock premium features. We need your friendly support!", "TheDeskDes": "TheDesk no tiene anuncios, no tienes que pagar para desbloquear características premium. ¡Necesitamos tu apoyo!",
"PatreonSupport": "Support on Patreon", "PatreonSupport": "Donar en Patreon",
"PixivSupport": "Support on Pixiv FANBOX", "PixivSupport": "Donar en Pixiv FANBOX",
"AWLSupport": "Amazon Wish List", "AWLSupport": "Lista de deseos de Amazon",
"SendAmazonGift1": "Give me Amazon Gift Card:", "SendAmazonGift1": "Dame Tarjeta de Regalo Amazon:",
"SendAmazonGift2": "", "SendAmazonGift2": "",
"monthly": "Monthly", "monthly": "Mensual",
"once": "Once", "once": "Una vez",
"local": "Local", "local": "Local",
"localMedia": "Local(Media)", "localMedia": "Local(Media)",
"home": "Home", "home": "Inicio",
"fed": "Federated", "fed": "Federado",
"fedMedia": "Federated(Media)", "fedMedia": "Federated(Media)",
"dm": "Direct Message", "dm": "Direct Message",
"integratedTLDes": "Integrated(Local/Home)", "integratedTLDes": "Integrated(Local/Home)",
@ -135,59 +139,59 @@
"bookmark": "Bookmarks", "bookmark": "Bookmarks",
"showThisTL": "Show this 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>).", "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", "add": "Añadir",
"search": "Search", "search": "Buscar",
"sortSet": "Sort", "sortSet": "Ordenar",
"selectAcct": "Account(Scroll to show all)", "selectAcct": "Account(Scroll to show all)",
"listLocale": "List", "listLocale": "Lista",
"filterWord": "Filtering words", "filterWord": "Palabras filtradas",
"degree": "Filter contexts", "degree": "Filtrar contextos",
"conver": "Conversations", "conver": "Conversaciones",
"prof": "Profiles", "prof": "Perfiles",
"option": "Options", "option": "Ajustes",
"matchWord": "Whole word", "matchWord": "Palabra completa",
"warnMatchWord": "Nice for Latin language", "warnMatchWord": "Nice for Latin language",
"except": "Drop instead of hide", "except": "Soltar en lugar de ocultar",
"exceptWorn": "Filtered toots will disappear irreversibly, even if filter is later removed", "exceptWorn": "Los toots filtrados desaparecerán para siempre, incluso si el filtro es eliminado más tarde",
"avalableBefore": "Expire after", "avalableBefore": "Vence después de",
"warnAvBefore": "Unset or \"0\" means \"Never\"", "warnAvBefore": "Desmarcado o \"0\" significa \"Nunca\"",
"warnAvBefore2": "This value may contain some error", "warnAvBefore2": "Este valor puede contener algún error",
"unlimited": "Never", "unlimited": "Nunca",
"days": "day(s)", "days": "día(s)",
"hours": "hour(s)", "hours": "hora(s)",
"mins": "minute(s)", "mins": "minuto(s)",
"secs": "second(s)", "secs": "segundo(s)",
"warnOnIntegratedTL": "Integrated TL/Plus TL will hide both Home-filtering words and Local-filtering words.", "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>", "helloTheDesk": "Internal error: please clear all data(at setting page) <b>All data will be deleted.</b>",
"addColumn": "Add a column", "addColumn": "Añadir una columna",
"sortColumns": "Sort", "sortColumns": "Ordenar",
"acctMan": "Account Manager", "acctMan": "Gestor de cuentas",
"filter": "Filter", "filter": "Filtro",
"setting": "Preferences", "setting": "Preferencias",
"reverse": "Toot button layout reverse", "reverse": "Invertir el diseño del botón de toot",
"f5": "Reload TL", "f5": "Recargar TL",
"nanoDes": "The smallest Mastodon,", "nanoDes": "El Mastodon más pequeño,",
"verTips": "Version", "verTips": "Versión",
"clockTips": "Clock", "clockTips": "Reloj",
"ramTips": "RAM status", "ramTips": "Estado de RAM",
"changeTips": "Change Tips", "changeTips": "Cambiar Consejos",
"helpAndLogs": "Help & Log", "helpAndLogs": "Ayuda y registro",
"help": "Help", "help": "Ayuda",
"contactwithlog": "If you tell me bugs(not working or something) with this log, I can detect what is wrong more easily.", "contactwithlog": "Si me notificas errores con este registro, puedo detectar lo que está mal más fácilmente.",
"about": "About TheDesk", "about": "Acerca de TheDesk",
"hereAddColumns": "<- Add TL", "hereAddColumns": "<- Añadir TL",
"foundBug": "I found a bug", "foundBug": "He encontrado un error",
"show": "Show", "show": "Mostrar",
"directory": "Directory", "directory": "Directorio",
"discover": "Discover", "discover": "Descubrir",
"active": "Recently active", "active": "Recientemente activo",
"newcomer": "New arrivals", "newcomer": "Recién llegados",
"local_only": "Local only", "local_only": "Solo local",
"menu": "Menu", "menu": "Menú",
"demoBottomBtns": "Welcome guide", "demoBottomBtns": "Guía de bienvenida",
"lookAtBottom": "Look at the bottom of this window. Here is some tips about it.", "lookAtBottom": "Mira en la parte inferior de esta ventana. Aquí tienes algunos consejos sobre ella.",
"acctManDesc": "Add more accounts and logout them.", "acctManDesc": "Añadir más cuentas y cerrar sesión.",
"settingDesc": "Many and many preferences here. You will couldn't check it all!", "settingDesc": "Muchísimos ajustes. ¡No podrás comprobarlo todo!",
"nanoDescPlus": "Mini window client(experimental)", "nanoDescPlus": "Cliente en ventana reducida (experimental)",
"menuDesc": "All daily TheDesk and Mastodon tuning like <b>add and sort columns</b>, <b>list and filter check</b>." "menuDesc": "Todos los ajustes diarios de TheDesk y Mastodon como <b>añadir y ordenar columnas</b>, <b>comprobar la lista y los filtros</b>."
} }

View File

@ -1,14 +1,14 @@
{ {
"language": "en", "language": "en",
"lang_toot": "Toot", "lang_toot": "Toot",
"lang_there": "Yes", "lang_there": "",
"lang_nothing": "None", "lang_nothing": "Ninguno",
"lang_yesno": "Yes", "lang_yesno": "",
"lang_no": "No", "lang_no": "Nu",
"lang_progress": "Wait...", "lang_progress": "Wait...",
"lang_edit": "Edit", "lang_edit": "Edit",
"lang_del": "Delete", "lang_del": "Delete",
"lang_add": "Add", "lang_add": "Añadir",
"lang_fatalerroroccured": "Error", "lang_fatalerroroccured": "Error",
"lang_speech": "Google US English", "lang_speech": "Google US English",
"lang_lang": "Language", "lang_lang": "Language",
@ -45,14 +45,14 @@
"lang_manager_confirm": "is about to logout. Continue?", "lang_manager_confirm": "is about to logout. Continue?",
"lang_manager_mainAcct": "Done:choose main account", "lang_manager_mainAcct": "Done:choose main account",
"lang_manager_def": "Default", "lang_manager_def": "Default",
"lang_manager_none": "None", "lang_manager_none": "Ninguno",
"lang_manager_godev": "Open DevCenter of Misskey. We show also an official documents to refer.", "lang_manager_godev": "Open DevCenter of Misskey. We show also an official documents to refer.",
"lang_manager_logout": "Logout", "lang_manager_logout": "Logout",
"lang_manager_maxChars": "Max chars of toots", "lang_manager_maxChars": "Max chars of toots",
"lang_manager_refreshAt": "Login with this domain", "lang_manager_refreshAt": "Login with this domain",
"lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.", "lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
"lang_emoji_get": "Get emojis", "lang_emoji_get": "Get emojis",
"lang_emoji_custom": "Custom emojis", "lang_emoji_custom": "Emojis personalizados",
"lang_defaultemojis_text": "Emojis about {{cat}}", "lang_defaultemojis_text": "Emojis about {{cat}}",
"lang_emoji_uncat": "Uncategorized", "lang_emoji_uncat": "Uncategorized",
"lang_postimg_previewdis": "cannot preview", "lang_postimg_previewdis": "cannot preview",
@ -75,22 +75,22 @@
"lang_post_offline": "Add to the drafts because of offline", "lang_post_offline": "Add to the drafts because of offline",
"lang_status_favWarn": "It will take a miunte to favourite a remote toot.", "lang_status_favWarn": "It will take a miunte to favourite a remote toot.",
"lang_status_btWarn": "It will take a miunte to boost a remote toot.", "lang_status_btWarn": "It will take a miunte to boost a remote toot.",
"lang_status_follow": "Follow", "lang_status_follow": "Seguir",
"lang_status_unfollow": "Unfollow", "lang_status_unfollow": "Unfollow",
"lang_status_block": "Block", "lang_status_block": "Bloquear",
"lang_status_unblock": "Unblock", "lang_status_unblock": "Unblock",
"lang_status_mute": "Mute", "lang_status_mute": "Silenciar",
"lang_status_unmute": "Unmute", "lang_status_unmute": "Unmute",
"lang_status_redraftTitle": "Delete & redraft", "lang_status_redraftTitle": "Delete & redraft",
"lang_status_redraft": "Continue to delete & redraft? You lose statuses of this toot. This fanction may contain some bugs. Images of this toot will be deleted on older than Mastodon 2.4.1.", "lang_status_redraft": "Continue to delete & redraft? You lose statuses of this toot. This fanction may contain some bugs. Images of this toot will be deleted on older than Mastodon 2.4.1.",
"lang_status_emphas": "'s toots are emphasized. Please reload after this action.", "lang_status_emphas": "'s toots are emphasized. Please reload after this action.",
"lang_status_unemphas": "'s toots are not emphasized. Please reload after this action.", "lang_status_unemphas": "'s toots are not emphasized. Please reload after this action.",
"lang_status_unendorse": "Not feature on profile", "lang_status_unendorse": "Not feature on profile",
"lang_status_endorse": "Feature on profile", "lang_status_endorse": "Destacado en el perfil",
"lang_status_followers": "Followers", "lang_status_followers": "Followers",
"lang_status_active": "Last status", "lang_status_active": "Last status",
"lang_secure_draft": "Add to draft", "lang_secure_draft": "Add to draft",
"lang_secure_useThis": "Use this", "lang_secure_useThis": "Usar esto",
"lang_secure_deleteThis": "Delete this", "lang_secure_deleteThis": "Delete this",
"lang_suggest_nodata": "Please get emojis list in order to show suggestion.", "lang_suggest_nodata": "Please get emojis list in order to show suggestion.",
"lang_usetxtbox_reply": "Reply Mode. Ctrl+Shift+C to clear.", "lang_usetxtbox_reply": "Reply Mode. Ctrl+Shift+C to clear.",
@ -107,7 +107,7 @@
"lang_filter_nodata": "Sin datos", "lang_filter_nodata": "Sin datos",
"lang_filter_errordegree": "Please check a context", "lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "Sin datos", "lang_list_nodata": "Sin datos",
"lang_list_show": "Show", "lang_list_show": "Mostrar",
"lang_list_users": "Users list", "lang_list_users": "Users list",
"lang_list_nouser": "No users in this list.", "lang_list_nouser": "No users in this list.",
"lang_list_add": "Add to the list", "lang_list_add": "Add to the list",
@ -127,6 +127,7 @@
"lang_tl_postmarkers_title": "Process...", "lang_tl_postmarkers_title": "Process...",
"lang_tl_postmarkers": "POST markers data. Please wait", "lang_tl_postmarkers": "POST markers data. Please wait",
"lang_img_DLDone": "Downloaded:", "lang_img_DLDone": "Downloaded:",
"lang_imgBin_copyDone": "Copied: raw data of this image",
"lang_img_copyDone": "Copied: URL 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_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct": "{{notf}} of this account",
@ -168,14 +169,17 @@
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "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_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed": "Following you",
"lang_parse_request": "Follow request", "lang_parse_request": "Follow request",
"lang_parse_signup": "Newface",
"lang_showontl_notf": "Notification ", "lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn": "Seguir para añadir este usuario a una lista.",
"lang_showontl_verified": "This website is verified by owner at ", "lang_showontl_verified": "This website is verified by owner at ",
"lang_status_requesting": "Requesting", "lang_status_requesting": "Requesting",
"lang_parse_mentioned": " replied to you", "lang_parse_mentioned": " replied to you",
@ -184,11 +188,11 @@
"lang_parse_btedsimple": " boosted", "lang_parse_btedsimple": " boosted",
"lang_parse_polled": "'s poll", "lang_parse_polled": "'s poll",
"lang_parse_notftime": "Actioned at", "lang_parse_notftime": "Actioned at",
"lang_parse_cwshow": "Show", "lang_parse_cwshow": "Mostrar",
"lang_parse_cwshow_acc": "This is a post with content warning. click to show the whole content", "lang_parse_cwshow_acc": "This is a post with content warning. click to show the whole content",
"lang_parse_fulltext": "Full size text:", "lang_parse_fulltext": "Full size text:",
"lang_parse_autofold": "Auto folded", "lang_parse_autofold": "Auto folded",
"lang_parse_more": "More", "lang_parse_more": "Más",
"lang_parse_url": "URL Analyzer", "lang_parse_url": "URL Analyzer",
"lang_parse_tagTL": "Timeline of {{tag}}", "lang_parse_tagTL": "Timeline of {{tag}}",
"lang_parse_tagtoot": "Toot with {{tag}}", "lang_parse_tagtoot": "Toot with {{tag}}",
@ -239,8 +243,8 @@
"lang_misskeyparse_reaction": "Reaction", "lang_misskeyparse_reaction": "Reaction",
"lang_misskeyparse_tagnostr": "No streaming API on Tag TLs", "lang_misskeyparse_tagnostr": "No streaming API on Tag TLs",
"lang_misskeyparse_listnostr": "No streaming API on List TLs", "lang_misskeyparse_listnostr": "No streaming API on List TLs",
"lang_misskeyparse_home": "Home", "lang_misskeyparse_home": "Inicio",
"lang_misskeyparse_followers": "Follower", "lang_misskeyparse_followers": "Seguidor",
"lang_misskeyparse_specified": "Specified User", "lang_misskeyparse_specified": "Specified User",
"lang_misskeyparse_qt": "Misskey renote(quote) mode:Ctrl+Shift+Enter to clear", "lang_misskeyparse_qt": "Misskey renote(quote) mode:Ctrl+Shift+Enter to clear",
"lang_misskeyparse_renoted": " renoted your following post.", "lang_misskeyparse_renoted": " renoted your following post.",

View File

@ -1,25 +1,25 @@
{ {
"setting": "Preferences", "setting": "Preferencias",
"set": "Save", "set": "Guardar",
"yes": "Yes", "yes": "",
"no": "No", "no": "Nu",
"none": "None", "none": "Ninguno",
"show": "Show", "show": "Mostrar",
"hide": "Hide", "hide": "Ocultar",
"default": "Default", "default": "Default",
"change": "Cambiar", "change": "Cambiar",
"select": "Seleccionar", "select": "Seleccionar",
"exec": "Exec", "exec": "Ejecutar",
"env": "Preferencias del sistema", "env": "Preferencias del sistema",
"setlang": "Idiomas", "setlang": "Idiomas",
"backup": "Importación y exportación de la configuración", "backup": "Importación y exportación de la configuración",
"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": "Si recibe un error al seleccionar el archivo, por favor pegue el texto recibido y haga clic en importar",
"import": "Importar", "import": "Importar",
"export": "Exportar", "export": "Exportar",
"hardwareAcceleration": "Deshabilitar la aceleración por hardware", "hardwareAcceleration": "Deshabilitar la aceleración por hardware",
"hardwareAccelerationWarn": "Reinicio automático", "hardwareAccelerationWarn": "Reinicio automático",
"webview": "Webview Integration", "webview": "Integración de Webview",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.", "webviewWarn": "Para usar la Integración de TweetDeck, por favor actívala. Tenga en cuenta que puede reducir el nivel de seguridad.",
"theme": "Temas", "theme": "Temas",
"popup": "Notificación emergente (en Windows)", "popup": "Notificación emergente (en Windows)",
"popupwarn": "Ocultar para establecer \"0\"", "popupwarn": "Ocultar para establecer \"0\"",
@ -27,11 +27,11 @@
"nativenotf": "Notificación nativa", "nativenotf": "Notificación nativa",
"nnwarn": "Esto no funciona en la versión portable para Windows.", "nnwarn": "Esto no funciona en la versión portable para Windows.",
"nntest": "Prueba de notificación", "nntest": "Prueba de notificación",
"width": "Width of columns", "width": "Ancho de columnas",
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.", "widthwarn": "La barra de desplazamiento se mostrará cuando el tamaño de la ventana sea superior a la cantidad de columnas.",
"fixwidth": "Ancho mínimo del navegador TweetDeck", "fixwidth": "Ancho mínimo del navegador TweetDeck",
"fixwidthwarn": "", "fixwidthwarn": "",
"margin": "Margin between timelines", "margin": "Margen entre líneas de tiempo",
"above": "arriba", "above": "arriba",
"font": "Fuente", "font": "Fuente",
"fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)", "fontwarn": "Select your favorite font to 'Select'(Windows/ macOS only)",
@ -44,31 +44,31 @@
"frameWarn": "If 'off', the window looks cool.", "frameWarn": "If 'off', the window looks cool.",
"downloadWin": "Versioning(o Windows downloader)", "downloadWin": "Versioning(o Windows downloader)",
"absolute": "valor absoluto", "absolute": "valor absoluto",
"srcUrl": "Search engine", "srcUrl": "Motor de búsqueda",
"srcUrlWarn": "{q} will be replaced to query.", "srcUrlWarn": "{q} será sustituido en la consulta.",
"themeSel": "Seleccionar tema", "themeSel": "Seleccionar tema",
"customtheme": "Editar y añadir temas personalizados", "customtheme": "Editar y añadir temas personalizados",
"customthemeDirection": "Esquema de colores", "customthemeDirection": "Esquema de colores",
"advanced": "Opciones avanzadas (6 colores adicionales)", "advanced": "Opciones avanzadas (6 colores adicionales)",
"advancedWarn": "", "advancedWarn": "",
"use": "Use this", "use": "Usar esto",
"copyFrom": "Copy from", "copyFrom": "Copiar desde",
"bg": "Background color", "bg": "Color de fondo",
"subcolor": "Distinguishable from background", "subcolor": "Distinguible del fondo",
"text": "Text color", "text": "Color del texto",
"accent": "Background of boosts", "accent": "Fondo de los retoots",
"modal": "Background of modal window", "modal": "Background of modal window",
"modalFooter": "Background of modal window's footer", "modalFooter": "Fondo del pie de página de la ventana modal",
"thirdColor": "Backgroud of tag buttons, etc(near to Background)", "thirdColor": "Fondo de botones de etiquetas, etc. (cerca de fondo)",
"forthColor": "Title bar(same scheme to Background)", "forthColor": "Barra de título (mismo esquema que el fondo)",
"bottom": "Background of menu-bar at bottom of window", "bottom": "Fondo de la barra de menús en la parte inferior de la ventana",
"emphasized": "Emphasized toot's background", "emphasized": "Emphasized toot's background",
"postbox": "Background of post-box and menu", "postbox": "Background of post-box and menu",
"active": "Background of 'active' elements", "active": "Fondo de elementos 'activos'",
"selected": "Background of selected with arrow keys", "selected": "Background of selected with arrow keys",
"selectedWithShare": "Background of selected with arrow keys(boosted toots)", "selectedWithShare": "Background of selected with arrow keys(boosted toots)",
"add_new": "Add new", "add_new": "Añadir nuevo",
"name": "Name", "name": "Nombre",
"desc": "About this theme", "desc": "About this theme",
"customImport": "Import of custom themes", "customImport": "Import of custom themes",
"delete": "Delete", "delete": "Delete",
@ -108,7 +108,7 @@
"autofoldwarn": "TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.", "autofoldwarn": "TheDesk does not collapse totes of 5 characters or less. Also, when collapsing, newlines are not shown. TheDesk count only newlines as the number of lines.",
"lines": "lines", "lines": "lines",
"letters": "letters", "letters": "letters",
"or": "or", "or": "o",
"imgheight": "Height of images", "imgheight": "Height of images",
"imgheightwarn": "Option:Set \"full\" to uncrop.", "imgheightwarn": "Option:Set \"full\" to uncrop.",
"ticker": "Enable OpenSticker", "ticker": "Enable OpenSticker",
@ -163,7 +163,7 @@
"localonly": "Local Only", "localonly": "Local Only",
"zeroWidthEmoji": "Zero-width space when inserting emojis", "zeroWidthEmoji": "Zero-width space when inserting emojis",
"uploadCrop": "Auto scale to fit", "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", "keysc": "Keyboard shortcut Preferences",
"iks": "Easy inserter", "iks": "Easy inserter",
"okswarn": "You can insert any letters and emojis with only 3 keys", "okswarn": "You can insert any letters and emojis with only 3 keys",
@ -219,8 +219,8 @@
"keyunread": "Make all notifications read", "keyunread": "Make all notifications read",
"keyesc": "Hide toot box", "keyesc": "Hide toot box",
"keyf5": "Super Reload", "keyf5": "Super Reload",
"keyclear": "Clear toot box", "keyclear": "Borrar caja de toot",
"keyacctman": "Account Manager", "keyacctman": "Gestor de cuentas",
"keyshowprof": "Show profile of selecting", "keyshowprof": "Show profile of selecting",
"keyrow": "Show next or previous image", "keyrow": "Show next or previous image",
"keyzoom": "Mousewheel:Zoom a image", "keyzoom": "Mousewheel:Zoom a image",
@ -230,11 +230,11 @@
"reply": "Reply to this toot", "reply": "Reply to this toot",
"keyselecttop": "Select the top & left(No.1 column) toot", "keyselecttop": "Select the top & left(No.1 column) toot",
"reset": "Reset(Danger)", "reset": "Reset(Danger)",
"resetconfirm": "Delete all data. You cannot undo. Continue?", "resetconfirm": "Delete all data. You cannot undo this operation. Continue?",
"about": "About TheDesk", "about": "Acerca de TheDesk",
"hp": "Website", "hp": "Website",
"support": "Support", "support": "Support",
"help": "Help", "help": "Ayuda",
"sushi": "Give me a sushi!", "sushi": "Give me a sushi!",
"checkup": "Check update", "checkup": "Check update",
"ossJP": "" "ossJP": ""

View File

@ -1,19 +1,19 @@
{ {
"updatehere": "Get latest TheDesk", "updatehere": "Obtener el último TheDesk",
"download": "Start", "download": "Inicio",
"portable": "Portable ver.", "portable": "Version portable",
"installer": "Installer(Recommended)", "installer": "Instalador (Recomendado)",
"linux": "zip", "linux": "zip",
"linuxdeb": "deb(Recommended on buntu, Debian)", "linuxdeb": "deb(Recomendado en ubuntu, Debian)",
"linuxsnap": "snap", "linuxsnap": "instantánea",
"snap": "Get it on Snapcraft", "snap": "Consíguelo en Snapcraft",
"sureupd": "You may lose a cool experience!", "sureupd": "¡Podrías perder una experiencia genial!",
"skipupd": "Skip this update", "skipupd": "Saltar esta actualización",
"nexttl": "Hidden until next TL loading", "nexttl": "Oculto hasta la próxima carga de TL",
"nextver": "Hidden until next version", "nextver": "Oculto hasta la próxima versión",
"problem1": "Some problems?", "problem1": "¿Algún problema?",
"problem2": "Please download on <a href='https://thedesk.top'>Oficial HP</a>.", "problem2": "Por favor, descarga desde <a href='https://thedesk.top'>enlace oficial</a>.",
"continue": "Continue updating", "continue": "Continuar con la actualización",
"dlnow": "Downloading...", "dlnow": "Descargando...",
"checkWhatIsNew": "What is new?" "checkWhatIsNew": "Novedades"
} }

View File

@ -65,6 +65,7 @@
"afterFTL": "Federated TL after this toot", "afterFTL": "Federated TL after this toot",
"favedPeople": "People who favourited it", "favedPeople": "People who favourited it",
"btedPeople": "People who boosted it", "btedPeople": "People who boosted it",
"editHistory": "Edit history",
"useOtherAcct1": "Use other account", "useOtherAcct1": "Use other account",
"useOtherAcct2": ":unfav and unBT are disabled.", "useOtherAcct2": ":unfav and unBT are disabled.",
"btWithVis": "Boost with visibility", "btWithVis": "Boost with visibility",
@ -73,6 +74,7 @@
"favRegist": "Favourite", "favRegist": "Favourite",
"openBrowser": "Open in browser", "openBrowser": "Open in browser",
"screenshot": "Take a screenshot", "screenshot": "Take a screenshot",
"copyBinary": "Copy raw image",
"copyURL": "Copy the URL", "copyURL": "Copy the URL",
"copy": "Copy", "copy": "Copy",
"embed": "Embed", "embed": "Embed",
@ -86,6 +88,8 @@
"makeNew": "Save", "makeNew": "Save",
"blocks": "Blocks", "blocks": "Blocks",
"mutes": "Mutes", "mutes": "Mutes",
"notfMute": "Mute their notifications too",
"zeroSetToInfinity": "Mute duration: 0 min to set Infinity",
"block": "Block", "block": "Block",
"mute": "Mute", "mute": "Mute",
"domainBlock": "Domain block", "domainBlock": "Domain block",

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