Compare commits

...

137 Commits

Author SHA1 Message Date
cutls
679151e8ea TheDesk 22.3.0 2021-06-18 17:06:45 +09:00
cutls
da76c6732d Merge branch 'master' of https://github.com/cutls/TheDesk 2021-06-18 16:29:07 +09:00
Cutls
b108f0e09d Update README.md 2021-06-18 16:29:01 +09:00
cutls
8d30d5d6dc dependabot 2021-06-18 16:22:32 +09:00
cutls
8b5a9520b2 git 2021-06-18 16:21:51 +09:00
Cutls
0f99a1098e Merge pull request #509 from cutls/dependabot/npm_and_yarn/app/dotenv-10.0.0
Bump dotenv from 9.0.2 to 10.0.0 in /app
2021-06-18 16:21:25 +09:00
Cutls
a773315bf6 Merge branch 'master' into dependabot/npm_and_yarn/app/dotenv-10.0.0 2021-06-18 16:21:19 +09:00
Cutls
6e247502da Merge pull request #519 from cutls/dependabot/npm_and_yarn/app/eslint-7.28.0
Bump eslint from 7.27.0 to 7.28.0 in /app
2021-06-18 16:20:49 +09:00
Cutls
3151ed383e Merge branch 'master' into dependabot/npm_and_yarn/app/eslint-7.28.0 2021-06-18 16:20:42 +09:00
Cutls
607a6a204b Merge pull request #520 from cutls/dependabot/npm_and_yarn/app/vue-2.6.14
Bump vue from 2.6.12 to 2.6.14 in /app
2021-06-18 16:20:18 +09:00
Cutls
0dae100c84 Merge pull request #521 from cutls/dependabot/npm_and_yarn/app/electron-13.1.2
Bump electron from 13.0.1 to 13.1.2 in /app
2021-06-18 16:20:09 +09:00
Cutls
d011c94ea2 Merge branch 'master' into dependabot/npm_and_yarn/app/electron-13.1.2 2021-06-18 16:20:04 +09:00
Cutls
cd59a644a5 Merge pull request #522 from cutls/dependabot/npm_and_yarn/app/normalize-url-4.5.1
Bump normalize-url from 4.5.0 to 4.5.1 in /app
2021-06-18 16:19:39 +09:00
Cutls
31ebb2df3f Merge pull request #524 from cutls/dependabot/npm_and_yarn/app/electron-builder-22.11.7
Bump electron-builder from 22.11.5 to 22.11.7 in /app
2021-06-18 16:19:30 +09:00
Cutls
9c49a78318 New Crowdin updates (#527)
* New translations index.json (Romanian)

* New translations index.json (Polish)

* New translations index.json (Cornish)

* New translations index.json (Sinhala)

* New translations index.json (Spanish, Argentina)

* New translations index.json (Portuguese, Brazilian)

* New translations index.json (Vietnamese)

* New translations index.json (Chinese Traditional)

* New translations index.json (Chinese Simplified)

* New translations index.json (Ukrainian)

* New translations index.json (Turkish)

* New translations index.json (Swedish)

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

* New translations index.json (Russian)

* New translations index.json (Portuguese)

* New translations index.json (Norwegian)

* New translations index.json (French)

* New translations index.json (Dutch)

* New translations index.json (Italian)

* New translations index.json (Hungarian)

* New translations index.json (Hebrew)

* New translations index.json (Finnish)

* New translations index.json (Greek)

* New translations index.json (German)

* New translations index.json (Danish)

* New translations index.json (Czech)

* New translations index.json (Catalan)

* New translations index.json (Bulgarian)

* New translations index.json (Arabic)

* New translations index.json (Afrikaans)

* New translations index.json (Spanish)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-15 20:04:49 +00:00
dependabot[bot]
49c4c3f23f Bump sweetalert2 from 11.0.12 to 11.0.17 in /app
Bumps [sweetalert2](https://github.com/sweetalert2/sweetalert2) from 11.0.12 to 11.0.17.
- [Release notes](https://github.com/sweetalert2/sweetalert2/releases)
- [Changelog](https://github.com/sweetalert2/sweetalert2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sweetalert2/sweetalert2/compare/v11.0.12...v11.0.17)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-14 20:03:35 +00:00
dependabot[bot]
aa377b78e0 Bump electron-builder from 22.11.5 to 22.11.7 in /app
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.11.5 to 22.11.7.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/compare/v22.11.5...v22.11.7)

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

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

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

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

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

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

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

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

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

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

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

* New translations main.json (Portuguese)

* New translations main.json (Polish)

* New translations main.json (Norwegian)

* New translations main.json (Dutch)

* New translations main.json (Italian)

* New translations main.json (Hungarian)

* New translations main.json (Chinese Traditional)

* New translations main.json (Chinese Simplified)

* New translations main.json (Ukrainian)

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

* New translations main.json (Turkish)

* New translations main.json (Swedish)

* New translations main.json (Hebrew)

* New translations main.json (Bulgarian)

* New translations main.json (Arabic)

* New translations main.json (Afrikaans)

* New translations main.json (Spanish)

* New translations main.json (French)

* New translations main.json (Romanian)

* New translations main.json (Catalan)

* New translations main.json (Finnish)

* New translations main.json (Greek)

* New translations main.json (German)

* New translations main.json (Czech)

* New translations main.json (Danish)

* New translations main.json (Cornish)

* New translations main.json (Sinhala)

* New translations main.json (Spanish, Argentina)

* New translations main.json (Portuguese, Brazilian)

* New translations main.json (Vietnamese)

* New translations main.json (English)

* New translations index.json (Italian)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-27 20:04:32 +00:00
dependabot[bot]
7769113b3c Bump electron from 12.0.8 to 13.0.1 in /app
Bumps [electron](https://github.com/electron/electron) from 12.0.8 to 13.0.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v12.0.8...v13.0.1)

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

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

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-19 20:04:17 +00:00
dependabot[bot]
5230c6d672 Bump electron from 12.0.7 to 12.0.8 in /app
Bumps [electron](https://github.com/electron/electron) from 12.0.7 to 12.0.8.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v12.0.7...v12.0.8)

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

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

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

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

* New translations setting.json (Russian)

* New translations setting.json (Turkish)

* New translations setting.json (Swedish)

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

* New translations setting.json (Portuguese)

* New translations setting.json (Polish)

* New translations setting.json (Norwegian)

* New translations setting.json (Dutch)

* New translations setting.json (Cornish)

* New translations setting.json (Sinhala)

* New translations setting.json (Spanish, Argentina)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Ukrainian)

* New translations setting.json (Vietnamese)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations setting.json (Spanish)

* New translations setting.json (Romanian)

* New translations setting.json (French)

* New translations setting.json (Catalan)

* New translations setting.json (Italian)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (Danish)

* New translations setting.json (Czech)

* New translations setting.json (English)

* New translations setting.json (Russian)

* New translations setting.json (Turkish)

* New translations setting.json (Swedish)

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

* New translations setting.json (Portuguese)

* New translations setting.json (Polish)

* New translations setting.json (Norwegian)

* New translations setting.json (Dutch)

* New translations setting.json (Cornish)

* New translations setting.json (Sinhala)

* New translations setting.json (Spanish, Argentina)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Ukrainian)

* New translations setting.json (Vietnamese)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations setting.json (Spanish)

* New translations setting.json (Romanian)

* New translations setting.json (French)

* New translations setting.json (Catalan)

* New translations setting.json (Italian)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (Danish)

* New translations setting.json (Czech)

* New translations setting.json (English)

* New translations index.json (Catalan)

* New translations index.json (Bulgarian)

* New translations index.json (Arabic)

* New translations index.json (Afrikaans)

* New translations index.json (Romanian)

* New translations index.json (French)

* New translations index.json (Spanish)

* New translations index.json (Chinese Simplified)

* New translations index.json (Ukrainian)

* New translations index.json (Turkish)

* New translations index.json (Swedish)

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

* New translations index.json (Chinese Traditional)

* New translations index.json (Cornish)

* New translations index.json (Sinhala)

* New translations index.json (Spanish, Argentina)

* New translations index.json (Portuguese, Brazilian)

* New translations index.json (Vietnamese)

* New translations index.json (Russian)

* New translations index.json (Finnish)

* New translations index.json (Greek)

* New translations index.json (German)

* New translations index.json (Danish)

* New translations index.json (Czech)

* New translations index.json (Hebrew)

* New translations index.json (Portuguese)

* New translations index.json (Norwegian)

* New translations index.json (Dutch)

* New translations index.json (Polish)

* New translations index.json (Italian)

* New translations index.json (Hungarian)

* New translations index.json (English)

* New translations main.json (Russian)

* New translations setting.json (Russian)

* New translations main.json (Russian)

* New translations main.json (Russian)

* New translations setting.json (Russian)

* New translations index.json (Spanish, Argentina)

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

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

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

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

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-05-10 15:35:46 +00:00
dependabot-preview[bot]
f53e0f4550 Bump electron from 12.0.2 to 12.0.7 in /app
Bumps [electron](https://github.com/electron/electron) from 12.0.2 to 12.0.7.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v12.0.2...v12.0.7)

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

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

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-27 23:37:00 +00:00
cutls
8acf86d9cb fetch the data with dialog 2021-04-18 19:11:39 +09:00
cutls
5de0ede4e1 font select 2021-04-18 18:47:30 +09:00
cutls
7db8989cd8 add dialog dropdown for hashtag and suggestion, add custom emojis suggestion 2021-04-18 16:14:41 +09:00
cutls
b047c80768 some design improve 2021-04-18 04:28:10 +09:00
cutls
d224e597fd fediversearch 2021-04-18 04:25:10 +09:00
cutls
f5956fed06 right click 2021-04-18 04:24:52 +09:00
cutls
28f6ccbfee second instance to customurl 2021-04-18 04:23:45 +09:00
cutls
e9aa22f5cf test 2021-04-16 21:14:00 +09:00
cutls
2c3fc66b0f animation 2021-04-15 16:33:34 +09:00
cutls
d2ac0f8421 readme 2021-04-15 15:47:41 +09:00
cutls
d20d7c622f readme 2021-04-15 15:43:52 +09:00
cutls
297306491e readme 2021-04-15 15:41:42 +09:00
cutls
70f5fefeab DL from TheDesk 2021-04-15 15:29:56 +09:00
cutls
da054f0a2e arm64 2021-04-15 15:08:24 +09:00
cutls
ef1a16516f build 2021-04-15 14:50:54 +09:00
cutls
f570ed36e8 readme 2021-04-15 14:32:49 +09:00
cutls
8bcd23c0ea build name changed 2021-04-15 14:30:29 +09:00
cutls
b3d6d582d9 tgz 2021-04-15 14:26:21 +09:00
cutls
bfcda76819 created 2021-04-15 13:58:07 +09:00
cutls
6a48143b20 deb upload 2021-04-15 13:51:38 +09:00
cutls
05ca174df8 macOS build on Actions 2021-04-15 13:49:27 +09:00
cutls
a7349d574d TheDesk 22.2.0(Koume) 2021-04-15 13:00:29 +09:00
cutls
3e0a048e28 Add Theme Preview 2021-04-15 05:45:14 +09:00
cutls
54031da417 Add header height and notification tile style 2021-04-15 05:02:33 +09:00
cutls
fcedefe815 change sweetalert theme 2021-04-15 05:02:14 +09:00
cutls
c35a27eda6 new readme 2021-04-14 16:13:22 +09:00
cutls
b6b8fa27d5 minimum readme 2021-04-14 15:45:19 +09:00
cutls
59a0aae887 listed 2021-04-14 15:29:42 +09:00
cutls
0698ce07fd license of other assets 2021-04-14 15:28:28 +09:00
cutls
77e4dd6c41 move 2021-04-14 15:24:12 +09:00
cutls
db90eddf31 intro Wiki 2021-04-14 15:21:00 +09:00
cutls
a8f060578a add programatic and command line build tool with TypeScript declaration 2021-04-14 13:58:21 +09:00
cutls
8621b66203 add arm64 platform 2021-04-14 13:11:33 +09:00
cutls
cff6be6af0 change 2021-04-13 16:28:35 +09:00
cutls
57b4518b61 only mac 2021-04-13 16:19:24 +09:00
cutls
de13191674 typo 2021-04-13 16:19:02 +09:00
cutls
6b609a1877 new build 2021-04-13 16:16:22 +09:00
cutls
901c536974 publish never 2021-04-13 15:54:31 +09:00
cutls
f719caab4b prevent GH upload? 2021-04-13 15:09:41 +09:00
cutls
6a1e5e9e40 Merge branch 'master' of github.com:cutls/TheDesk 2021-04-13 14:57:12 +09:00
cutls
4b30c22cfb build.js update 2021-04-13 14:56:58 +09:00
Cutls
6384d0ea8c Update build.yml 2021-04-13 14:52:58 +09:00
Cutls
77f832447e Create build.yml 2021-04-13 14:41:39 +09:00
cutls
d7eadd03f2 tmp delete actions 2021-04-13 14:41:11 +09:00
cutls
c7b55f6edb gh-a error 2021-04-13 14:37:23 +09:00
cutls
48b98eb55a Merge branch 'master' of github.com:cutls/TheDesk 2021-04-13 14:33:27 +09:00
cutls
7d318a688c travis 2021-04-13 14:33:15 +09:00
Cutls
93b5b98f23 Update build.yml 2021-04-13 14:31:52 +09:00
Cutls
f27737158c fix 2021-04-13 14:30:37 +09:00
Cutls
63bcb03abd Use GitHub Actions to create Windows assets 2021-04-13 14:26:29 +09:00
cutls
660c91e230 travis 2021-04-13 14:03:38 +09:00
cutls
594a8c9494 travis 2021-04-13 14:01:36 +09:00
cutls
83dee56266 2 2021-04-13 13:48:59 +09:00
cutls
4e2f3ad68a 22.1.2 beta test 2021-04-13 13:11:55 +09:00
cutls
36d1293759 test 2021-04-13 13:10:55 +09:00
cutls
6ba75c93e4 update 2021-04-13 12:50:52 +09:00
cutls
ef8074b9cb fix 2021-04-13 12:35:31 +09:00
cutls
ad5d15b0c3 typo 2021-04-13 12:31:54 +09:00
cutls
aa7d5e4586 new build method with Apple notarize, electron-build programatic API 2021-04-13 12:31:17 +09:00
Cutls
e2c0fda4c9 New Crowdin updates (#477)
* New translations setting.json (Russian)

* New translations setting.json (Turkish)

* New translations setting.json (Swedish)

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

* New translations setting.json (Portuguese)

* New translations setting.json (Polish)

* New translations setting.json (Norwegian)

* New translations setting.json (Dutch)

* New translations setting.json (Cornish)

* New translations setting.json (Sinhala)

* New translations setting.json (Spanish, Argentina)

* New translations setting.json (Portuguese, Brazilian)

* New translations setting.json (Ukrainian)

* New translations setting.json (Vietnamese)

* New translations setting.json (Chinese Traditional)

* New translations setting.json (Chinese Simplified)

* New translations main.json (Catalan)

* New translations setting.json (Bulgarian)

* New translations setting.json (Arabic)

* New translations setting.json (Afrikaans)

* New translations setting.json (Spanish)

* New translations setting.json (Romanian)

* New translations setting.json (French)

* New translations setting.json (Catalan)

* New translations setting.json (Italian)

* New translations setting.json (Hungarian)

* New translations setting.json (Hebrew)

* New translations setting.json (Finnish)

* New translations setting.json (Greek)

* New translations setting.json (German)

* New translations setting.json (Danish)

* New translations setting.json (Czech)

* New translations setting.json (English)
2021-04-09 17:19:46 +09:00
cutls
b42105fabe Revival TweetDeck Integration 2021-04-09 16:35:40 +09:00
dependabot-preview[bot]
7feea86cf7 Bump @fortawesome/fontawesome-free from 5.15.2 to 5.15.3 in /app
Bumps [@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome) from 5.15.2 to 5.15.3.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/5.15.2...5.15.3)

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

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2021-04-01 20:14:23 +00:00
182 changed files with 12605 additions and 10459 deletions

49
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,49 @@
version: 2
updates:
- package-ecosystem: npm
directory: "/app"
schedule:
interval: daily
time: "20:00"
open-pull-requests-limit: 10
ignore:
- dependency-name: font-manager
versions:
- "> 0.3.0, < 0.4"
- dependency-name: sweetalert2
versions:
- 10.14.1
- 10.15.0
- 10.15.1
- 10.15.2
- 10.15.3
- 10.15.5
- 10.15.6
- 10.16.0
- 10.16.2
- 10.16.5
- dependency-name: electron
versions:
- 11.2.1
- 12.0.2
- 12.0.3
- 12.0.4
- dependency-name: eslint
versions:
- 7.18.0
- 7.19.0
- 7.20.0
- 7.21.0
- 7.22.0
- 7.24.0
- dependency-name: itunes-nowplaying-mac
versions:
- 0.4.0
- dependency-name: electron-dl
versions:
- 3.0.3
- 3.1.0
- 3.2.0
- dependency-name: electron-rebuild
versions:
- 2.3.4

43
.github/workflows/build-linux.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
# 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: Linux build
on:
release:
types:
- created
jobs:
build:
runs-on: ubuntu-latest
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:all
- uses: shogo82148/actions-upload-release-asset@v1
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: "build/*.zip"
- uses: shogo82148/actions-upload-release-asset@v1
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: "build/*.snap"
- uses: shogo82148/actions-upload-release-asset@v1
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: "build/*.deb"
- uses: shogo82148/actions-upload-release-asset@v1
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: "build/*.AppImage"

42
.github/workflows/build-macos.yml vendored Normal file
View File

@@ -0,0 +1,42 @@
# 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 build
on:
release:
types:
- created
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:all
- uses: shogo82148/actions-upload-release-asset@v1
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: "build/*.zip"
- uses: shogo82148/actions-upload-release-asset@v1
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: "build/*.dmg"

35
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
# 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: Windows build
on:
release:
types:
- created
jobs:
build:
runs-on: windows-latest
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:all
- uses: shogo82148/actions-upload-release-asset@v1
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: "build/*.exe"
- uses: shogo82148/actions-upload-release-asset@v1
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: "build/*.appx"

5
.gitignore vendored
View File

@@ -21,6 +21,7 @@ app/view/cs
app/view/ps
app/view/es-AR
app/view/it-IT
app/view/pl-PL
app/git
*.code-workspace
releasenote.md
@@ -33,3 +34,7 @@ app/view/zh-CN
app/view/ru-RU
app/view/zh-TW
app/view/pt-BR
app/build.js
app/view/make/make.js
app/view/make/makeCli.ts
app/.env

8
.prettierrc Normal file
View File

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

View File

@@ -1,54 +1,19 @@
os:
- windows
- linux
- osx
matrix:
include:
- os: osx
osx_image: xcode11.3
language: node_js
env:
- YARN_GPG=no
node_js:
- '12.17.0'
- '14.16.1'
cache:
yarn: true
script: node -v
before_deploy:
- yarn global add electron-builder
- yarn global add browserify
- cd app
- VERSION=$(cat package.json | grep version | head -1 | awk -F= "{ print $2 }" | sed 's/[version:,\",]//g' | tr -d '[[:space:]]')
- yarn install --no-lockfile --prod
- yarn construct:store
- if [ "$TRAVIS_OS_NAME" = "osx" ];then electron-builder --mac -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "osx" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "osx" ];then mv *.dmg TheDesk-$VERSION-store.dmg;else :;fi
- if [ "$TRAVIS_OS_NAME" = "osx" ];then cd ../app;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then electron-builder --linux snap:x64 -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then mv *.snap TheDesk-$VERSION-store.snap;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../app;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then yarn add electron-builder;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win appx:x64 -p never ;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv *.appx TheDesk-$VERSION-store.appx;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../app;else :;fi
- yarn construct
- if [ "$TRAVIS_OS_NAME" = "osx" ];then electron-builder --mac -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then electron-builder --linux --x64 -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then ls;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then mv thedesk-*.zip thedesk.zip;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../app;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win --ia32 -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then ls;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv TheDesk-setup.exe TheDesk-setup-ia32.exe;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv *$VERSION.exe TheDesk-ia32.exe;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../app;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win --x64 -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then ls;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv ../build/TheDesk-setup.exe ../build/TheDesk-setup.exe;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv ../build/*$VERSION.exe ../build/TheDesk.exe;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../app;else :;fi
- yarn
- yarn build:all
- cd ../
- ls build
deploy:

173
README.md
View File

@@ -1,9 +1,14 @@
<img src="https://thedesk.top/img/top.png" width="300" align="left">
<img src="https://thedesk.top/img/desk.png" width="150" align="right">
**English** | [日本語](README_ja.md)
# TheDesk
<div align="center">
[![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk)
<img src="https://thedesk.top/img/desk.png" width="150" align="center">
<h1 align="center">TheDesk</h1>
[![Windows build](https://github.com/cutls/TheDesk/actions/workflows/build.yml/badge.svg)](https://github.com/cutls/TheDesk/actions/workflows/build.yml)
[![Linux build](https://github.com/cutls/TheDesk/actions/workflows/build-linux.yml/badge.svg)](https://github.com/cutls/TheDesk/actions/workflows/build-linux.yml)
[![Linux build](https://github.com/cutls/TheDesk/actions/workflows/build-macos.yml/badge.svg)](https://github.com/cutls/TheDesk/actions/workflows/build-macos.yml)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk)
[![FOSSA Status](https://bit.ly/2N4cLd1)](https://bit.ly/31zqMmZ)
[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
@@ -11,158 +16,40 @@
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント[日本語はこちら](README_ja.md)
Download:[TheDesk](https://thedesk.top)
[![Download from TheDesk Official Website](https://thedesk.top/img/dlfrom-thedesk.svg?7)](https://thedesk.top)
On GitHub Releases, `-store.*` assets are made for some application store or manager(Snapcraft, Homebrew, Microsoft Store).
They do not check the latest version(Which you can get the latest ver or not depends on the store)
</div>
<a href="https://www.patreon.com/cutls"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160"></a>
<a href="https://liberapay.com/cutls/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
![Screenshots1](https://thedesk.top/img/scr1.png)
## License
## Build and Development
[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
See [Wiki](https://github.com/cutls/TheDesk/wiki)
The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/)
[Press Kit](https://d2upiril6ywqp9.cloudfront.net/press/TheDesk+PressKit.zip)
* [PNG 512x512](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.png)
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg)
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico)
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns)
* [Illustrator .ai](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ai)
The default sounds of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/)
## Privacy Policy
* [プライバシーポリシー(Privacy Policy(ja))](https://thedesk.top/priv.html)
## Language
* 日本語(Japanese)
* 日本語, 関西(Japanese, Kansai)
* English
* български(Bulgarian) with [translate project](https://translate.thedesk.top/project/thedesk/bg)
* Česky(Czech) with [translate project](https://translate.thedesk.top/project/thedesk/cs)
* Deutsch(German) with [translate project](https://translate.thedesk.top/project/thedesk/de)
* Español, argentina(Spanish, Argentina) with [translate project](https://translate.thedesk.top/project/thedesk/es-AR)
* italiano(Italian) with [translate project](https://translate.thedesk.top/project/thedesk/it-IT)
### Translation
## Translation
Crowdin project is available! Visit: https://translate.thedesk.top
### Run on developer mode
`npm run dev` on `app` folder.(before you should run `yarn construct` to make HTML views)
If you change HTML or language files, you should rub to `yarn construct`. Or `yarn watchview` can always watch and construct such files with 1 process.
## Contributors
Build for macOS(Now: Travis CI)
* [toneji](https://minohdon.jp/@toneji)
Build for Linux(Now: Travis CI)
* [popn_ja](https://popon.pptdn.jp/@popn_ja)
Fellow coder
* [kPherox](https://pl.kpherox.dev/kPherox)
## Build
You should use `yarn` but you can use also `npm`, but if you build on Windows, you should strongly use `yarn`
`yarn ***` and `npm run ***` has the same meaning,
### npm
```sh
git clone https://github.com/cutls/TheDesk
cd TheDesk/app
npm install
npm install --only=dev
npm run construct
```
### yarn
```sh
git clone https://github.com/cutls/TheDesk
cd TheDesk/app
# Linux or macOS
yarn install --no-lockfile
# Windows
yarn install
yarn construct
```
run `yarn dev` to launch developer version with console(click `view`)
### electron-builder(Recommended)
Use scripts(they can work well with npm, **yarn**).
```sh
# Build for current platform
yarn build
# Select build target
## Windows
yarn build:win
## Windows and Linux (The macOS target should run on macOS. So, this option hasn't include the build for macOS)
yarn build:all
```
Config is all on package.json
### electron-packager
`yarn --D electron-rebuild`
Linux/macOS
`./node_modules/.bin/electron-rebuild`
Windows
`.\node_modules\.bin\electron-rebuild.cmd`
To install Python 2.x and Visual C++ for Windows, before running `npm install --save-dev electron-rebuild`
`npm install --global windows-build-tools`
Windows
```
electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite
```
Linux
```
electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=linux --arch=x64,ia32 --electron-version=4.0.5 --overwrite
```
macOS
```
electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite
```
### PWA support
TheDesk is a web-based app, so you can run it on a browser. Of course, the main stream is as Electron. Some features won't work as well as Electron.
You can run `npm run build:pwa` to build as PWA, including `manifest.json` and the ServiceWorker.
**You have to rename `node_modules` to `dependencies` to run as a web application. (restricted by Netlify, but always you should do to run as PWA)**
Check the app on Chrome or Firefox: [Here](https://app.thedesk.top) (it follows the `master` branch, so not stable.)
[![Netlify Status](https://api.netlify.com/api/v1/badges/6916503b-2882-43f7-9681-ab814e6d28f9/deploy-status)](https://app.netlify.com/sites/thedesk/deploys)
## Pleroma support
Did you find a bug with Pleroma accounts?
Pleroma **does not** follow Mastodon API rules completely although Pleroma developers say so.
Please write issues to improve TheDesk affinity with Pleroma.
## Vulnerabilities when `yarn install`???
## License
No, if your npm says materialize-css has vulnerabilities(CVE-2019-11002/3/4), look at [here](https://github.com/Dogfalo/materialize/issues/6286) under discussion, but I do not think this report is really fatal.
* [GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
* [License of other assets](https://github.com/cutls/TheDesk/wiki/License-of-other-assets)
* [プライバシーポリシー(Privacy Policy(ja))](https://thedesk.top/priv.html)
## Contributors
[![](https://opencollective.com/TheDesk/contributors.svg?width=400&button=false)](https://github.com/cutls/TheDesk/graphs/contributors)
## Support
<a href="https://www.patreon.com/cutls"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" height="30"></a>
<a href="https://liberapay.com/cutls/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg" height="30"></a>
<a href="https://cutls.fanbox.cc"><img alt="PixivFANBOX" src="https://thedesk.top/img/fanbox.png" height="30"></a>
Or [others](https://cutls.dev) to support me.

View File

@@ -1,160 +1,34 @@
<img src="https://thedesk.top/img/top.png" width="300" align="left">
<img src="https://thedesk.top/img/desk.png" width="150" align="right">
[English](README.md) | **日本語**
# TheDesk
<div align="center">
[![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk)
<img src="https://thedesk.top/img/desk.png" width="150" align="center">
<h1 align="center">TheDesk</h1>
[![Windows build](https://github.com/cutls/TheDesk/actions/workflows/build.yml/badge.svg)](https://github.com/cutls/TheDesk/actions/workflows/build.yml)
[![Linux build](https://github.com/cutls/TheDesk/actions/workflows/build-linux.yml/badge.svg)](https://github.com/cutls/TheDesk/actions/workflows/build-linux.yml)
[![Linux build](https://github.com/cutls/TheDesk/actions/workflows/build-macos.yml/badge.svg)](https://github.com/cutls/TheDesk/actions/workflows/build-macos.yml)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk)
[![FOSSA Status](https://bit.ly/2N4cLd1)](https://bit.ly/31zqMmZ)
[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント
Download:[TheDesk](https://thedesk.top)
[Pixiv FANBOX](https://www.pixiv.net/fanbox/creator/28105985)
[![Download from TheDesk Official Website](https://thedesk.top/img/dlfrom-thedesk.svg?7)](https://thedesk.top)
`-store.*`とあるアセットはストアやパッケージマネージャ向けのもので、アップデートの確認をソフト本体で行いません。
</div>
![Screenshots1](https://thedesk.top/img/scr1.png)
## ライセンス
[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
アイコンは[クリエイティブ・コモンズ 表示-非営利-継承](https://creativecommons.org/licenses/by-nc-sa/4.0/)で提供されています。
[プレスキット](https://d2upiril6ywqp9.cloudfront.net/press/TheDesk+PressKit.zip)
* [PNG 512x512](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.png)
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg)
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico)
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns)
* [Illustrator .ai](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ai)
標準の通知音は [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/) で提供されています。
## プライバシーポリシー
* [プライバシーポリシー](https://thedesk.top/priv.html)
## 言語
* 日本語
* 日本語(関西)
* English(英語)
* ドイツ語, チェコ語, ブルガリア語, イタリア語, スペイン語アルゼンチン方言 (from [Crowdin](https://translate.thedesk.top))
### 翻訳
## 翻訳
Crowdinから翻訳に参加してみませんか: https://translate.thedesk.top
以下、`yarn ***`は全て`npm run ***`で実行できます。(yarnが推奨)
## ビルドと開発
### デベロッパーモード
`yarn dev``app`フォルダ内で実行。
ただし、最初に`yarn construct`必須。
watchモード(ホットリロードはしません): `yarn construct`の代わりに`yarn watchview`
HTMLや言語定義の変更について、このコマンドで継続監視します。その他のアセットの変更には不要です。
プロセス1つを占拠するので、`yarn dev`は他のプロセスで行ってください。
## 主なコントリビューター
macOSビルダー(現在はTravis CI)
* [とねぢ](https://minohdon.jp/@toneji)
Linuxビルダー(現在はTravis CI)
* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
コーダー
* [kPherox](https://pl.kpherox.dev/kPherox)
## ビルド
npmでもyarnでも好きな方を選んでください。Windows環境ではyarnを強く推奨します。
### npm
```sh
git clone https://github.com/cutls/TheDesk
cd TheDesk/app
npm install
npm install --only=dev
npm run construct
```
### yarn
```sh
git clone https://github.com/cutls/TheDesk
cd TheDesk/app
# Linux or macOS
yarn install --no-lockfile
# Windows
yarn install
yarn construct
```
### electron-builder(推奨)
scriptsを利用します
```sh
# 実行している環境向けにビルド
yarn build
# ターゲットを指定してビルド
## Windows
yarn build:win
## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません
yarn build:all
```
ビルド設定はすべてpackage.jsonに記載しています。
### electron-packager(非推奨)
`yarn -D electron-rebuild`
Linux/macOS
`./node_modules/.bin/electron-rebuild`
Windows
`.\node_modules\.bin\electron-rebuild.cmd`
WindowsでPython 2.xやVisualC++を一発でインストールできるツールもあります(`npm install --save-dev electron-rebuild`の前に)
`npm install --global windows-build-tools`
日本語話者向けですが、macOSビルドにはXCodeが要るとの情報があります。([とねぢ](https://minohdon.jp/@toneji)氏談)
Windows
```
electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite
```
Linux
```
electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=linux --arch=x64,ia32 --electron-version=4.0.5 --overwrite
```
macOS
```
electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite
```
### PWAとして実行
TheDeskはウェブ技術を使用して作られているので、ブラウザで動かすこともできます。もちろん、Electron向けに設計されているので一部機能は動きません。
`yarn build:pwa`でビルドできます。PWAに必要な`manifest.json`やサービスワーカーなども用意されています。
**`node_modules`を`dependencies`にリネームしないと動きません。(Netlifyの制限ですが、Netlify以外で動かす場合にも必須です)**
ChromeまたはFirefoxでチェック: [こちら](https://app.thedesk.top) (`master`ブランチに追従しています。不安定です。)
[![Netlify Status](https://api.netlify.com/api/v1/badges/6916503b-2882-43f7-9681-ab814e6d28f9/deploy-status)](https://app.netlify.com/sites/thedesk/deploys)
[Wiki](https://github.com/cutls/TheDesk/wiki)を参照。
## Pleromaのサポート
@@ -165,7 +39,22 @@ Issuesに書いてある問題についてはなるべく対処しますので
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)
## `yarn install`したら脆弱性あるって言われた
## ライセンス
materialize-cssの脆弱性(CVE-2019-11002/3/4)については[こちら](https://github.com/Dogfalo/materialize/issues/6286)で本当に脆弱性かどうか議論しています。
実際には害が無いものと思われます。
* [GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
* [License of other assets](https://github.com/cutls/TheDesk/wiki/License-of-other-assets)
* [プライバシーポリシー](https://thedesk.top/priv.html)
## 主なコントリビューター
* <img src="https://user-images.githubusercontent.com/17561618/66582029-162df380-ebbc-11e9-8a6f-1832b3a35d89.png" width="20">[とねぢ](https://minohdon.jp/@toneji) macOSビルダー(現在はTravis CI)
* <img src="https://avatars3.githubusercontent.com/u/24523508?s=88&v=4" width="20">[ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja) Linuxビルダー(現在はTravis CI)
* <img src="https://user-images.githubusercontent.com/17561618/66582379-a3714800-ebbc-11e9-8402-d81a35a3be9f.png" width="20">[kPherox](https://pl.kpherox.dev/kPherox)
## 支援
<a href="https://www.patreon.com/cutls"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" height="30"></a>
<a href="https://liberapay.com/cutls/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg" height="30"></a>
<a href="https://cutls.fanbox.cc"><img alt="PixivFANBOX" src="https://thedesk.top/img/fanbox.png" height="30"></a>
[その他の支援法](https://cutls.dev)

View File

@@ -1,5 +1,6 @@
<!DOCTYPE html>
<html lang="ja">
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
@@ -87,7 +88,7 @@
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
<script type="text/javascript" src="./node_modules/materialize-css/dist/js/materialize.js"></script>
<img src="./img/desk.svg" style="max-width: 62%;" />
<img src="./img/desk.svg" style="max-width: 58%;" />
<h5>TheDesk</h5>
<div class="container">
<div class="area-name1">Display version</div>
@@ -104,15 +105,8 @@
<div class="area-data6" id="node"></div>
</div>
<div class="cp">
Copyright &copy; TheDesk 2018<br />
Main developer(author): <a href="https://cutls.com/@Cutls" target="_blank">Cutls P</a><br />
Thanks:<a href="https://minohdon.jp/@toneji" target="_blank">toneji</a>/<a href="https://popon.pptdn.jp/@popn_ja" target="_blank">popn_ja</a>/<a
href="https://pl.kpherox.dev/kPherox"
target="_blank"
>kPherox</a
>
and all users
<img draggable="false" style="width: 0.8rem; top: 1px; margin-left: 1px; position: relative;" alt="❤️" title=":heart:" src="https://twemoji.maxcdn.com/2/72x72/2764.png" />
Copyright &copy; TheDesk 2018<br /> Main developer(author): <a href="https://1m.cutls.com/@Cutls" target="_blank">Cutls P</a><br />
<a href="https://github.com/cutls/TheDesk/graphs/contributors" style="text-align: center; user-select: none;"><img src="https://opencollective.com/TheDesk/contributors.svg?width=700&button=false" style="width: 100%"></a>
<br /><a href="https://thedesk.top" target="_blank">Web site</a>
</div>
<button onclick="window.close()" class="btn waves-effect indigo" style="width: calc(100% - 10px);"><i class="material-icons left">close</i>Close</button>
@@ -136,4 +130,5 @@
})
</script>
</body>
</html>

View File

@@ -1,4 +1,6 @@
const { AiScript, parse, values, utils } = require('@syuilo/aiscript')
const gcc = require('textarea-caret')
global.getCaretCoordinates = gcc
global.sanitizeHtml = require('sanitize-html')
global.asValue = values
global.AiScript = AiScript

14
app/build.d.ts vendored Normal file
View File

@@ -0,0 +1,14 @@
declare function _exports(options?: {
onlyStore?: boolean;
withStore?: boolean;
withIa32?: boolean;
withArm64?: boolean;
windows?: boolean;
linux?: boolean;
macOS?: boolean;
skipWindows?: boolean;
skipLinux?: boolean;
skipMacOS?: boolean;
unnotarize?: boolean;
}): void;
export = _exports;

View File

@@ -1,112 +1,226 @@
const builder = require("electron-builder");
const fs = require('fs');
const os = process.platform;
const builder = require('electron-builder')
const path = require('path')
const fs = require('fs')
const basefile = __dirname + '/'
const package = fs.readFileSync(basefile + 'package.json')
const data = JSON.parse(package)
const version = data.version
const codename = data.codename
const ver = `${version} (${codename})`
const construct = require('./view/make/make.js')
const { platform, arch } = process
const Platform = builder.Platform
const Arch = builder.Arch
const targets = new Map();
const archToType = new Map();
const pref = {
productName: "TheDesk",
appId: "top.thedesk",
asarUnpack: [
"node_modules/itunes-nowplaying-mac"
],
const artifactName = 'TheDesk-setup-${arch}.${ext}'
const config = {
productName: 'TheDesk',
appId: 'top.thedesk',
asarUnpack: ['node_modules/itunes-nowplaying-mac', 'main/script'],
afterSign: 'build/notarize.js',
directories: {
output: "../build/"
output: '../build',
},
win: {
icon: "build/thedesk.ico",
target: [
"nsis",
"portable",
"appx"
]
icon: 'build/thedesk.ico',
target: ['nsis', 'appx', 'portable'],
publish: []
},
appx: {
identityName: "53491Cutls.TheDesk",
applicationId: "Cutls.TheDesk",
publisherDisplayName: "Cutls",
publisher: "CN=629757F5-A5EE-474F-9562-B304A89A9FD1",
languages: [
"JA-JP",
"EN-US"
]
identityName: '53491Cutls.TheDesk',
applicationId: 'Cutls.TheDesk',
publisherDisplayName: 'Cutls',
publisher: 'CN=629757F5-A5EE-474F-9562-B304A89A9FD1',
languages: ['JA-JP', 'EN-US'],
},
nsis: {
oneClick: false,
allowToChangeInstallationDirectory: true
allowToChangeInstallationDirectory: true,
artifactName: 'TheDesk-setup-${arch}.${ext}',
},
linux: {
icon: "build/icons",
target: [
"zip",
"snap"
],
category: "Network"
target: ['zip', 'appImage', 'snap', 'deb'],
category: 'Network',
},
mac: {
target: [
"dmg",
"zip"
]
hardenedRuntime: true,
gatekeeperAssess: false,
entitlements: 'build/entitlements.mac.plist',
entitlementsInherit: 'build/entitlements.mac.plist',
},
electronDownload: {
version: "5.0.1"
dmg: {
sign: false,
},
electronVersion: "5.0.1"
}
const json = JSON.parse(fs.readFileSync("package.json", 'utf8'));
const version = json.version;
if (os == "win32") {
archToType.set(Arch.ia32, []);
targets.set(Platform.WINDOWS, archToType);
} else if (os == "linux") {
archToType.set(Arch.x64, []);
archToType.set(Arch.ia32, []);
targets.set(Platform.LINUX, archToType);
} else if (os == "darwin") {
archToType.set(Arch.x64, []);
targets.set(Platform.MAC, archToType);
} else {
async function build(os, arch, config) {
let targets = new Map()
let archToType = new Map()
archToType.set(arch, [])
targets.set(os, archToType)
await builder.build({
targets: targets,
config: config,
publish: 'never'
})
}
async function cmd(options) {
if (isTrue(options, 'help', 'h')) {
return console.log(help())
}
if (isTrue(options, 'onlyStore') || isTrue(options, 'withStore')) {
console.log('start building for application stores')
construct(ver, basefile, false, true)
if ((platform == 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) {
if ((isTrue(options, 'withIa32') && arch == 'x64') || arch == 'ia32') {
config.nsis.artifactName = artifactName.replace('${arch}', 'ia32')
await build(Platform.WINDOWS, Arch.ia32, config)
fs.renameSync(
`../build/TheDesk ${version}.exe`,
'../build/TheDesk-ia32-store.exe'
)
fs.renameSync(
`../build/TheDesk-setup-ia32.exe`,
'../build/TheDesk-setup-ia32-store.exe'
)
}
if (arch == 'x64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'x64')
await build(Platform.WINDOWS, Arch.x64, config)
fs.renameSync(
`../build/TheDesk ${version}.exe`,
'../build/TheDesk-store.exe'
)
fs.renameSync(
`../build/TheDesk-setup-x64.exe`,
'../build/TheDesk-setup-store.exe'
)
}
}
if ((platform == 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) {
if (arch == 'ia32') {
await build(Platform.LINUX, Arch.ia32, config)
}
if ((isTrue(options, 'withIa32') && arch == 'x64')) {
console.log('snapcraft does not curretly support builing i386 on amd64')
}
if (arch == 'x64') {
await build(Platform.LINUX, Arch.x64, config)
if (!isTrue(options, 'onlyStore')) {
fs.renameSync(
`../build/thedesk_${version}_amd64.snap`,
`../build/thedesk_${version}_amd64-store.snap`
)
}
}
}
}
if (!isTrue(options, 'onlyStore')) {
console.log('start building for normal usage')
construct(ver, basefile, false, false)
if ((platform == 'win32' && !isTrue(options, 'skiWindows')) || isTrue(options, 'windows', 'w')) {
if ((isTrue(options, 'withIa32') && arch == 'x64') || arch == 'ia32') {
config.nsis.artifactName = artifactName.replace('${arch}', 'ia32')
await build(Platform.WINDOWS, Arch.ia32, config)
fs.renameSync(
`../build/TheDesk ${version}.exe`,
'../build/TheDesk-ia32.exe'
)
}
if (arch == 'x64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'x64')
await build(Platform.WINDOWS, Arch.x64, config)
fs.renameSync(
`../build/TheDesk ${version}.exe`,
'../build/TheDesk.exe'
)
fs.renameSync(
`../build/TheDesk-setup-x64.exe`,
'../build/TheDesk-setup.exe'
)
}
if ((isTrue(options, 'withArm64') && arch == 'x64') || arch == 'arm64') {
config.nsis.artifactName = artifactName.replace('${arch}', 'arm64')
await build(Platform.WINDOWS, Arch.arm64, config)
fs.renameSync(
`../build/TheDesk ${version}.exe`,
'../build/TheDesk-arm64.exe'
)
}
}
if ((platform == 'linux' && !isTrue(options, 'skipLinux')) || isTrue(options, 'linux', 'l')) {
if (arch == 'ia32') {
await build(Platform.LINUX, Arch.ia32, config)
}
if (isTrue(options, 'withIa32') && arch == 'x64') {
console.log('snapcraft does not curretly support builing i386 on amd64')
}
if (arch == 'x64') {
await build(Platform.LINUX, Arch.x64, config)
fs.renameSync(
`../build/thedesk_${version}_amd64.snap`,
`../build/thedesk_${version}_amd64-normal.snap`
)
if (isTrue(options, 'onlyStore') || isTrue(options, 'withStore')) {
fs.renameSync(
`../build/thedesk_${version}_amd64-store.snap`,
`../build/thedesk_${version}_amd64.snap`
)
}
}
}
if (platform == 'darwin' && !isTrue(options, 'skipMacOS')) {
if(isTrue(options, 'unnotarize')) delete config.afterSign
await build(Platform.MAC, Arch.x64, config)
}
}
}
function isTrue(options, long, short) {
const { argv } = process
if (options ? options[long] : 0) return true
if (argv.includes(`--${long}`)) return true
if (short && argv.includes(`-${short}`)) return true
return false
}
builder.build({
targets: targets,
config: pref
})
.then(() => {
console.log("Done on "+os)
if (os == "win32") {
console.log("Windows")
fs.renameSync('../build/TheDesk ' + version + '.exe', '../build/TheDesk-ia32.exe');
fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup-ia32.exe');
retry()
}else if (os == "linux") {
console.log("Linux")
fs.renameSync('../build/thedesk-' + version + '.zip', '../build/TheDesk.zip');
fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup-ia32.exe');
}
})
.catch((error) => {
// handle error
})
function retry(){
console.log("Windows x64")
const targetsAlt = new Map();
const archToTypeAlt = new Map();
targetsAlt.set(Platform.WINDOWS, archToTypeAlt);
archToTypeAlt.set(Arch.x64, []);
builder.build({
targets: targetsAlt,
config: pref
})
.then(() => {
fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup.exe');
fs.renameSync('../build/TheDesk ' + version + '.exe', '../build/TheDesk.exe');
})
.catch((error) => {
// handle error
})
function help() {
return `
TheDesk Builder command tool
yarn build [options] (or node build.js [options])
yarn build:[preset] (check package.json)
--help or -h: show help
[Build for other platforms]
--windows (-w)
--linux (-l)
--skipWindows
--skipLinux
--skipMacOS
To skip building for itself platform.
[only Windows, Linux]
--onlyStore: application store of platforms assets(without update check)
--withStore: application store assets and normal version
[only Windows]
--withIa32: ia32 build on x64 system(if your machine is ia32, it will be built if this arg is not passed)
--withArm64(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)
[only macOS]
--unnotarize: Without notarize
`
}
/**
* Builder
* @module builder
* @param {Object} [options] - Options
* @param {boolean} [options.onlyStore] - App Store of platforms assets(without update check)
* @param {boolean} [options.withStore] - App Store of platforms assets(without update check) assets and normal version
* @param {boolean} [options.withIa32] - [Windows only] ia32 build on x64 system(if your machine is ia32, it will be built if this arg is not passed)
* @param {boolean} [options.withArm64] - [Windows only(beta)] arm64 build on x64 system(if your machine is arm64, it will be built if this arg is not passed, and not build store build for arm64)
* @return {void}
*/
module.exports = cmd

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
</dict>
</plist>

23
app/build/notarize.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)
}
}

2
app/buildCli.js Normal file
View File

@@ -0,0 +1,2 @@
const cmd = require('./build')
cmd()

View File

@@ -92,3 +92,18 @@ i.left {
.text-line-icon {
font-size: 1rem;
}
.loginBtnWrap {
padding-top: 10px !important;
}
#add {
max-width: 1000px;
}
.autocomplete-content {
min-width: 450px;
}
.autocomplete-content li {
white-space: nowrap;
text-overflow: ellipsis;
word-break: break-word;
overflow: hidden;
}

View File

@@ -28,7 +28,9 @@ html {
text-transform: none;
height: 2.76rem;
line-height: 2.76rem;
border-radius: 0.5rem;
}
.markdown {
display: none;
}
@@ -88,22 +90,21 @@ option {
#imagewrap {
width: 100%;
height: 100%;
height: calc(100% - 4px);
}
#imagewrap img.rotate-90 {
transform: rotate(-90deg)
transform: rotate(-90deg);
}
#imagewrap img.rotate-180 {
transform: rotate(-180deg)
transform: rotate(-180deg);
}
#imagewrap img.rotate-270 {
transform: rotate(-270deg)
transform: rotate(-270deg);
}
.pointer {
cursor: pointer;
}
.badge {
min-width: 0 !important;
margin-left: 0.4rem !important;
}
.unvisible {
@@ -235,6 +236,12 @@ blockquote:before,
right: 0;
top: 0;
}
.menu-icon {
font-size: 1.4rem !important;
top: 0.3rem;
line-height: 1rem !important;
position: relative;
}
#start {
display: none;
position: fixed;
@@ -330,8 +337,26 @@ blockquote:before,
.collapsible-header:focus {
background-color: var(--thirdColor) !important;
}
.modal-footer {
.modal .modal-footer {
background-color: var(--modalfooter) !important;
border-radius: 0;
padding: 0;
}
.modal {
border-radius: 1.5rem;
}
.progress .determinate,
.progress .indeterminate {
background-color: var(--active);
}
.nomargin {
margin: 0;
}
#imginfo {
float: left;
padding-top: 0.23rem;
line-height: normal;
padding-left: 1rem;
}
.font {
font-size: 1.5rem;
@@ -343,7 +368,8 @@ blockquote:before,
.release-do {
border: solid 2px;
border-color: var(--text);
padding: 5px;
padding: 1.5rem;
border-radius: 0.5rem;
}
#pickers {
display: flex;
@@ -393,7 +419,8 @@ input[type='color']::-webkit-color-swatch {
color: var(--text);
}
#left-menu a:hover {
background-color: var(--beforehover);
background-color: var(--emphasized);
filter: brightness(80%);
}
#left-menu span {
margin-left: 0.4rem;
@@ -402,7 +429,9 @@ input[type='color']::-webkit-color-swatch {
background-color: var(--emphasized);
}
#left-menu a.active span {
text-decoration: underline;
text-decoration: none;
border-bottom: 1px solid;
padding-bottom: 0.5px;
}
#right-menu {
width: 100%;
@@ -418,16 +447,27 @@ input[type='color']::-webkit-color-swatch {
display: flex;
flex-wrap: wrap;
align-items: center;
width: 13rem;
height: 3.1rem;
min-width: 150px;
width: 50%;
height: 2.5rem;
cursor: pointer;
color: var(--text);
}
#tltype .type div {
margin-left: 5px;
margin-right: 5px;
margin-top: 3px;
}
#tltype .type span {
width: calc(100% - 2.3rem);
width: calc(100% - 4rem);
white-space: nowrap;
text-overflow: ellipsis;
word-break: break-word;
overflow: hidden;
}
#tltype .type:hover {
background-color: var(--beforehover);
background-color: var(--emphasized);
filter: brightness(80%);
}
#tltype .active {
background-color: var(--emphasized);
@@ -499,13 +539,25 @@ textarea {
font-size: 1rem !important;
font-family: inherit;
}
.swal2-popup {
.swal2-popup,
.swal2-header {
background-color: var(--subcolor) !important;
}
.swal2-title,
.swal2-content {
color: var(--text) !important;
}
h2.swal2-title {
margin: 0;
line-height: 100%;
}
.swal2-close:focus {
background-color: inherit !important;
box-shadow: none !important;
}
.swal2-actions {
background-color: var(--modalfooter);
}
#src-contents svg {
margin-right: 0.4rem;
}
@@ -548,6 +600,7 @@ textarea {
background-color: var(--emphasized);
}
#pageSrc {
border-radius: 10px;
position: absolute;
top: 0;
left: calc(50vw - 11.53rem);
@@ -555,10 +608,22 @@ textarea {
max-width: 100%;
background-color: var(--subcolor);
z-index: 501;
padding: 0.4rem;
}
#pageSrcInput {
width: 12.3rem;
.pageSrcBtn:hover {
background-color: var(--selected);
}
.srcQ {
margin-top: 0.4rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
border-bottom: 1px solid;
}
.lastPSB {
margin-bottom: 0.4rem;
}
.pageSrcBtn {
padding-left: 0.5rem;
padding-right: 0.5rem;
}
.voice {
clip: rect(1px, 1px, 1px, 1px);
@@ -686,3 +751,12 @@ button {
position: relative;
top: -4px;
}
#fonts {
overflow-y: scroll;
width: 22rem;
height: 40rem;
position: absolute;
background-color: var(--bg);
z-index: 2;
padding: 5px;
}

View File

@@ -69,6 +69,20 @@ textarea {
overflow-y: scroll;
overflow-x: hidden;
}
#suggest {
position: absolute;
top: 0;
left: 0;
background-color: var(--bg);
z-index: 2;
border-radius: 0.5rem;
display: none;
max-height: 10rem;
}
#suggest a {
margin-left: 0.5rem;
margin-right: 0.5rem;
}
#emoji-list {
width: 100%;
height: 15.4rem;

File diff suppressed because it is too large Load Diff

View File

@@ -260,7 +260,7 @@ iframe,
width: 100%;
display: grid;
grid-template-columns: 3.3rem 2fr 1fr;
grid-template-rows: auto 1.6rem 1fr auto 2.5rem;
grid-template-rows: auto 1.6rem 1fr auto 1.9rem;
grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'space toot toot' 'space additional additional' 'vis actions side';
}
.hide-actions {
@@ -353,15 +353,26 @@ iframe,
.area-actions {
padding: 0;
margin: 0;
top: -0.4rem;
position: relative;
display: flex;
justify-content: space-around;
max-width: 100%;
grid-area: actions;
}
.area-actions .btn-flat {
height: 1.3rem;
line-height: 1.3rem;
}
.area-actions .btn-flat,
.area-vis i,
.area-side .btn-flat {
margin: 0;
}
.area-side i {
line-height: initial;
}
.area-vis {
margin: 0.4rem;
margin: 0.2rem;
grid-area: vis;
text-align: center;
}
@@ -373,7 +384,16 @@ iframe,
margin: 0.15rem;
grid-area: side;
}
.notf-udg-text {
white-space: nowrap;
text-overflow: ellipsis;
word-break: break-word;
overflow: hidden;
max-width: calc(100% - 150px);
display: inline-block;
position: relative;
top: 0.2rem;
}
.cusr {
user-select: text;
padding-left: 0.4rem;
@@ -398,6 +418,12 @@ iframe,
margin-top: 0.46rem;
margin-left: 0.46rem;
}
.landing {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
}
.quote-inline {
display: none;
@@ -431,6 +457,12 @@ iframe,
.btn-flat {
color: var(--text);
}
.sublink {
font-size: 1.4rem !important;
position: relative;
top: 0.4rem;
cursor: pointer;
}
.area-side i {
margin-left: 0.75rem;
}
@@ -441,6 +473,9 @@ iframe,
font-size: 1.2rem;
margin-right: 0.15rem;
}
.action li i {
margin-right: 0.5rem;
}
.action .fa-quote-right {
margin-top: 0.15rem;
}
@@ -534,15 +569,67 @@ p:not(:last-child) {
grid-template-rows: 2.3rem 2.3rem;
grid-template-areas: 'notice notice_name notice_name a2' 'notice a1 sta a3' 'notf-box notf-box notf-box notf-box';
}
.small-header.notice-box {
min-height: 2rem;
grid-template-columns: 2.3rem 1fr 5rem 2rem 2rem;
grid-template-rows: 1.8rem;
grid-template-areas: 'notice notice_name a1 a3 a2';
}
.small-header.has-notf.notice-box {
min-height: 2rem;
grid-template-columns: 2.3rem 1fr 8rem 5rem 2rem 2rem;
grid-template-rows: 1.8rem;
grid-template-areas: 'notice notice_name sta a1 a3 a2';
}
.emp {
font-weight: bold;
text-decoration: underline;
}
.rotate-90 {
transform: rotate(90deg);
}
.area-notice {
grid-area: notice;
}
.small-header .area-notice {
margin: 0;
}
.small-header .area-sta {
display: none;
}
.small-header.has-notf .area-sta {
overflow-x: scroll;
overflow-y: hidden;
height: 2rem;
width: 8rem;
display: flex;
}
.small-header .area-sta::-webkit-scrollbar {
height: 5px;
}
#tagContextMenu {
position: absolute;
top: 0;
left: 0;
background-color: var(--subcolor);
z-index: 2;
border-radius: 0.4rem;
}
#tagContextMenu a {
display: block;
color: var(--text);
padding-left: 0.5rem;
padding-right: 0.5rem;
}
#tagContextMenu a:hover {
background-color: var(--selected);
}
.firstTCM {
margin-top: 0.4rem;
}
.lastTCM {
margin-bottom: 0.4rem;
}
.area-notice_name {
grid-area: notice_name;
overflow: hidden;
@@ -558,6 +645,10 @@ p:not(:last-child) {
grid-area: a1;
}
.area-sta {
display: none;
}
.has-notf .area-sta {
display: block;
text-align: center;
grid-area: sta;
}
@@ -624,24 +715,37 @@ p:not(:last-child) {
border: thin solid gray;
border-bottom: 2px solid white;
grid-area: notf-box;
box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12),
0 5px 5px -3px rgba(0, 0, 0, 0.3), 0px -10px 10px 0px rgba(0, 0, 0, 0.3) inset;
box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.3), 0px -10px 10px 0px rgba(0, 0, 0, 0.3) inset;
}
.notf-indv-box label span {
padding-left: 23px !important;
margin-right: 5px;
}
.columnSettings {
display: flex;
flex-wrap: wrap;
}
.notf-indv-box .setting {
font-size: 1rem;
width: calc(25% - 3px);
text-align: left;
padding: 5px;
height: 70px;
width: calc(25% - 6px);
margin: 3px;
height: 100px;
text-align: center;
display: flex;
flex-direction: column;
padding-top: 17px;
border: 1px solid;
border-radius: 5px;
}
.notf-indv-box .setting:hover {
color: var(--text);
}
.notf-exclude-btn {
border: 1px solid;
}
.notf-exclude-btn:hover {
background-color: inherit !important;
border: 1px solid;
filter: brightness(70%);
}
.type-b {
display: none;
@@ -673,6 +777,9 @@ p:not(:last-child) {
overflow: hidden;
position: relative;
}
.dropdown-content li {
padding-top: 0.4rem;
}
.fa-2x > .emoji-img {
width: 2.3rem !important;
height: 2.3rem !important;
@@ -756,7 +863,9 @@ p:not(:last-child) {
width: 100%;
height: 100%;
}
.fav_ct, .rt_ct, .rep_ct {
.fav_ct,
.rt_ct,
.rep_ct {
font-size: 1.1rem;
}
.shared.selectedToot {
@@ -856,6 +965,14 @@ audio {
.box .ui-resizable-se {
display: none !important;
}
.small-header .top-icon {
font-size: 2rem !important;
padding-top: 0%;
}
.top-icon {
font-size: 40px !important;
padding-top: 25%;
}
.announcement {
padding: 0.38rem;
border-bottom: 1px solid;

View File

@@ -25,7 +25,6 @@
#his-float-data {
height: 100%;
overflow-y: hidden;
}
#his-leftside {
width: 28.4rem;
@@ -33,7 +32,7 @@
}
#his-float-timeline {
max-width: 47.5rem;
min-width: calc(100% - 29.4rem);
width: calc(100% - 28.4rem);
height: 100%;
overflow-y: hidden;
}
@@ -150,13 +149,24 @@
background-color: var(--bg);
}
#hisdropdown li a {
color: white;
color: var(--text);
}
#hisdropdown li:hover {
background-color: var(--active);
}
#his-data-title {
#his-data-title-wrap {
width: 100%;
text-align: center;
font-size: 1.5rem;
display: flex;
justify-content: center;
align-items: center;
}
#his-data-title .material-icons {
position: relative;
top: 5px;
margin-right: 3px;
}
#his-data-title a {
color: white;
}

6
app/gitHash.js Normal file
View File

@@ -0,0 +1,6 @@
const fs = require('fs')
const execSync = require('child_process').execSync
const gitHash = execSync('git rev-parse HEAD')
.toString()
.trim()
fs.writeFileSync('git', gitHash)

View File

@@ -5,20 +5,6 @@ function verck(ver, jp) {
$('body').addClass(localStorage.getItem('platform'))
var date = new Date()
var showVer = false
//Spotify
if (localStorage.getItem('spotify')) {
localStorage.removeItem('spotify')
localStorage.removeItem('spotify-refresh')
var spDc = 'Spotify NowPlaying sysytem was changed, please re-login to Spotify'
if(lang.language == 'ja') {
spDc = 'Spotify NowPlayingの機能が変更されたため、もう一度ログインしてください'
}
Swal.fire({
type: 'info',
title: spDc,
})
}
//Spotify(e)
if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) {
showVer = true
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
@@ -44,9 +30,18 @@ function verck(ver, jp) {
localStorage.setItem('ver', ver)
if (!showVer) {
console.log(showVer)
if (!localStorage.getItem('showSupportMe')) {
if (date.getMonth() == 11) {
var yrs = date.getFullYear() + 1
var nextmonth = yrs * 100 + 1
} else {
var yrs = date.getFullYear()
var nextmonth = yrs * 100 + date.getMonth() + 2
}
localStorage.setItem('showSupportMe', nextmonth)
} else {
if (
date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe') ||
!localStorage.getItem('showSupportMe')
date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe')
) {
if (date.getMonth() == 11) {
var yrs = date.getFullYear() + 1
@@ -55,11 +50,11 @@ function verck(ver, jp) {
var yrs = date.getFullYear()
var nextmonth = yrs * 100 + date.getMonth() + 2
}
localStorage.setItem('showSupportMe', nextmonth)
if (lang.language != 'ja') {
$('#support-btm-ja').addClass('hide')
$('#support-btm-en').removeClass('hide')
}
localStorage.setItem('showSupportMe', nextmonth)
$('#support-btm').removeClass('hide')
$('#support-btm').animate(
{
@@ -71,6 +66,8 @@ function verck(ver, jp) {
)
}
}
}
var platform = localStorage.getItem('platform')
console.log('Your platform:' + platform)
//if (!localStorage.getItem('winstore') && !pwa) {
@@ -114,11 +111,6 @@ function verck(ver, jp) {
.then(function(mess) {
console.table(mess)
if (mess) {
//askjp_jp_ua: 2019年10月24日、mstdn.jpによるユーザーエージェントアクセス制限
if (jp && mess.jp_ua && !localStorage.getItem('askjp_jp_ua')) {
localStorage.setItem('askjp_jp_ua', true)
$('#askjp_jp_ua').removeClass('hide')
}
var platform = localStorage.getItem('platform')
if (platform == 'darwin') {
var newest = mess.desk_mac

View File

@@ -537,9 +537,10 @@ function multiSelector(parseC) {
}
last = last + ''
var sel
const webview = localStorage.getItem('webview_setting') === 'true'
if (obj.length < 1) {
$('#src-acct-sel').html('<option value="tootsearch">Tootsearch</option>')
$('#add-acct-sel').html('<option value="noauth">' + lang.lang_login_noauth + '</option>')
$('#add-acct-sel').html('<option value="noauth">' + lang.lang_login_noauth + `</option>${webview ? `<option value="webview">TweetDeck</option>` : ''}`)
} else {
Object.keys(obj).forEach(function (key) {
var acct = obj[key]
@@ -610,7 +611,7 @@ function multiSelector(parseC) {
$('#add-acct-sel').append(
'<option value="noauth">' +
lang.lang_login_noauth +
'</option><!--option value="webview">Twitter</option-->'
`</option>${webview ? `<option value="webview">TweetDeck</option>` : ''}`
)
$('#dir-acct-sel').append('<option value="noauth">' + lang.lang_login_noauth + '</option>')
}

View File

@@ -205,8 +205,6 @@ function multiDel(target) {
text: obj[target]['user'] + '@' + obj[target]['domain'] + lang.lang_manager_confirm,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then(result => {
@@ -299,8 +297,6 @@ function multiDel2(target) {
text: obj[target]['user'] + '@' + obj[target]['domain'] + lang.lang_manager_confirm,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then(result => {
@@ -427,10 +423,6 @@ function login(url) {
versionChecker(url)
$('#add').hide()
postMessage(['openUrl', auth], '*')
if ($('#linux:checked').val() == 'on') {
} else {
postMessage(['sendSinmpleIpc', 'quit'], '*')
}
}
}
}
@@ -629,7 +621,7 @@ function misskeyAuth(url, mkc) {
//テキストボックスにURL入れた
function instance() {
var url = $('#url').val()
var url = $('#autocomplete-input').val()
if (url.indexOf('@') != -1 || url.indexOf('https') != -1) {
alert('入力形式が違います。(Cutls@mstdn.jpにログインする場合、入力するのは"mstdn.jp"です。)')
return false
@@ -638,6 +630,7 @@ function instance() {
}
//コード入れてAccessTokenゲット
function code(code) {
var red = localStorage.getItem('redirect')
localStorage.removeItem('redirect')
if (!code) {
var code = $('#code').val()
@@ -700,7 +693,7 @@ function code(code) {
}
return
} else {
var red = 'urn:ietf:wg:oauth:2.0:oob'
if (!red) red = 'urn:ietf:wg:oauth:2.0:oob'
if (~url.indexOf('pixelfed')) {
red = 'https://thedesk.top/hello.html'
}
@@ -724,6 +717,7 @@ function code(code) {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
M.toast({ html: lang.lang_fatalerroroccured + 'Error: cannot complete', displayLength: 5000 })
setLog(start, this.status, json)
}
if (json['access_token']) {
@@ -1093,15 +1087,14 @@ function coloradd(key, bg, txt) {
//入力時にハッシュタグと@をサジェスト
var timer = null
var input = document.getElementById('url')
var input = document.getElementById('autocomplete-input')
var prev_val = input.value
var oldSuggest
var suggest
input.addEventListener(
'focus',
function () {
$('#ins-suggest').html('')
const instance = M.Autocomplete.getInstance(input)
window.clearInterval(timer)
timer = window.setInterval(function () {
var new_val = input.value
@@ -1129,21 +1122,20 @@ input.addEventListener(
})
.then(function (json) {
if (!json.error) {
var urls = 'Suggest:'
let data = {}
Object.keys(json.data).forEach(function (key) {
var url = json.data[key]
urls =
urls +
`<a onclick="login('${url.uri}')" class="pointer" title="${url.uri}">${escapeHTML(url.title ? url.title : url.uri)}</a>, `
data[url.uri] = escapeHTML(url.title ? url.title : url.uri)
})
$('#ins-suggest').html(urls)
instance.updateData(data)
instance.open()
} else {
console.error(json.error)
}
})
}
oldSuggest = suggest
prev_value = new_val
prev_val = new_val
}
}, 1000)
},
@@ -1161,3 +1153,12 @@ input.addEventListener(
function asReadEnd() {
postMessage(['asReadComp', ''], '*')
}
// Or with jQuery
$(document).ready(function(){
$('input.autocomplete').autocomplete({
data: {},
});
});

View File

@@ -29,7 +29,7 @@ $(document).on('click', 'a', e => {
acct_id = 0
}
$a.parent().addClass('loadp')
$a.parent().text('Loading...')
detEx(url, acct_id)
}
} else if (tags) {
@@ -186,7 +186,7 @@ onmessage = function (e) {
} else if (e.data[0] == 'asReadEnd') {
asReadEnd()
} else if (e.data[0] == 'accessibility') {
console.log('atrue')
console.log('accessibility mode')
$('body').addClass('accessibility')
$('.window-title').before('<div class="accessMark">Screen Reader Optimized</div>')
} else if (e.data[0] == 'logData') {
@@ -198,6 +198,24 @@ onmessage = function (e) {
type: 'info',
title: e.data[1]
})
} else if (e.data[0] == 'twitterLoginComplete') {
location.reload()
} else if (e.data[0] == 'customUrl') {
const mode = e.data[1][0]
const codex = e.data[1][1]
if (mode === 'share') {
$('textarea').focus()
$('#textarea').val(decodeURI(codex))
show()
$('body').removeClass('mini-post')
$('.mini-btn').text('expand_less')
} else if (mode === 'manager' || mode === 'login') {
code(codex)
} else if (mode === 'spotify') {
var coder = codex.split(':')
localStorage.setItem('spotify', coder[0])
localStorage.setItem('spotify-refresh', coder[1])
}
}
}
/* PWA */
@@ -234,3 +252,34 @@ const connection = function (event) {
}
window.onoffline = connection
window.ononline = connection
let lastSelection = null
let isSame = true
$(document).on('keyup mouseup', function (e) {
lastSelection = (window.getSelection().toString() !== '') ? window.getSelection().getRangeAt(0) : null
if (!isSame) $('#pageSrc').addClass('hide')
})
// カスタム右クリックメニュー
$(document).on('contextmenu', function (e) {
// テキスト選択中であれば何もしない
if (lastSelection !== null) {
const currentSelection = window.getSelection().getRangeAt(0)
for (let key in currentSelection) {
if (currentSelection[key] != lastSelection[key]) {
isSame = false
break
}
}
if (isSame && currentSelection != '') {
$('#pageSrc').removeClass('hide')
$('#pageSrc').css('left', e.pageX)
$('#pageSrc').css('top', e.pageY)
$('.srcQ').text(currentSelection)
}
}
})
$('textarea, input').on('contextmenu', function (e) {
postMessage(['textareaContextMenu', { x: e.pageX, y: e.pageY }], '*')
})

View File

@@ -290,3 +290,23 @@ function statusModel(now) {
poll: null
}
}
function webviewFinder() {
const webview = document.querySelector('webview')
webview.addEventListener('did-navigate', (e) => {
const url = webview.getURL()
if (url.match('https://mobile.twitter.com/login')) {
postMessage(['twitterLogin', null], '*')
} else if (url.match('https://mobile.twitter.com/logout')) {
postMessage(['twitterLogin', true], '*')
}
})
}
function initWebviewEvent() {
if (document.querySelector('webview')) { webviewFinder() } else {
const timerWV = setInterval(function () {
document.querySelector('webview')
? (webviewFinder(), clearInterval(timerWV))
: console.log('まだロード中')
}, 500)
}
}

View File

@@ -54,6 +54,8 @@ onmessage = function(e) {
ipc.send('theme-json-request', e.data[1])
} else if (e.data[0] == 'ha') {
ipc.send('ha', e.data[1])
} else if (e.data[0] == 'webviewSetting') {
ipc.send('webview', e.data[1])
} else if (e.data[0] == 'frameSet') {
ipc.send('frameSet', e.data[1])
} else if (e.data[0] == 'ua') {
@@ -64,7 +66,9 @@ onmessage = function(e) {
console.log('NowPlaying')
ipc.send('itunes', e.data[1])
} else if (e.data[0] == 'themeCSSRequest') {
ipc.send('theme-css-request', e.data[1])
ipc.send('theme-css-request', e.data)
} else if (e.data[0] == 'themeCSSPreview') {
ipc.send('theme-css-request', e.data)
} else if (e.data[0] == 'customCSSRequest') {
ipc.send('custom-css-request', e.data[1])
} else if (e.data[0] == 'downloadButton') {
@@ -77,6 +81,10 @@ onmessage = function(e) {
ipc.send('copy', e.data[1])
} else if (e.data[0] == 'log') {
ipc.send('log', e.data[1])
} else if (e.data[0] == 'twitterLogin') {
ipc.send('twitterLogin', e.data[1])
} else if (e.data[0] == 'textareaContextMenu') {
ipc.send('textareaContextMenu', e.data[1])
}
}
//version.js
@@ -227,9 +235,12 @@ ipc.on('asReadEnd', function(event, arg) {
ipc.on('accessibility', function(event, arg) {
postMessage(['accessibility', 'true'], '*')
})
var webviewDom = document.getElementById('webview')
if (webviewDom) {
webviewDom.addEventListener('new-window', function(e) {
shell.openExternal(e.url)
ipc.on('twitterLoginComplete', function(event, arg) {
postMessage(['twitterLoginComplete', ''], '*')
})
ipc.on('alert', function(event, arg) {
postMessage(['alert', arg], '*')
})
ipc.on('customUrl', function(event, args) {
postMessage(['customUrl', args], '*')
})
}

View File

@@ -19,7 +19,7 @@ function emojiToggle(reaction) {
if (width) {
width = width.replace('px', '') * 1 + 300
} else {
width = 600
width = reaction ? 300 : 600
}
$('#post-box').css('width', width + 'px')
$('#suggest').html('')
@@ -126,8 +126,10 @@ function emojiGet(parse, started) {
md['if_categorized'] = if_categorized
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
localStorage.setItem(`emojis_raw_${acct_id}`, JSON.stringify(json))
} else {
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
localStorage.setItem(`emojis_raw_${acct_id}`, JSON.stringify(json))
}
localStorage.setItem('emojiseek', 0)
if (!started) {

View File

@@ -276,8 +276,6 @@ function deleteImage(key) {
title: lang.lang_postimg_delete,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then(result => {

View File

@@ -55,8 +55,6 @@ function post(mode, postvis, dry) {
text: lang.lang_post_cwtxt + plus,
type: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#3085d6',
confirmButtonText: lang.lang_post_btn2,
cancelButtonText: lang.lang_post_btn3,
showCloseButton: true,

View File

@@ -110,6 +110,7 @@ function rt(id, acct_id, remote, vis) {
}
}
}
function boostWith(vis) {
var id = $('#tootmodal').attr('data-id')
var acct_id = $('#tootmodal').attr('data-acct')
@@ -167,7 +168,6 @@ async function follow(acct_id, resolve) {
}
if (!acct_id && acct_id != 'selector') {
var acct_id = $('#his-data').attr('use-acct')
} else if (acct_id == 'selector') {
var acct_id = $('#user-acct-sel').val()
}
@@ -182,7 +182,8 @@ async function follow(acct_id, resolve) {
var id = $('#his-data').attr('user-id')
if (resolve == 'selector') {
var fullacct = $('#his-acct').attr('fullname')
var id = await acctResolve(acct_id, fullacct)
var data = await acctResolve(acct_id, fullacct)
var { id } = data
console.log(id)
}
var domain = localStorage.getItem('domain_' + acct_id)
@@ -223,28 +224,47 @@ async function follow(acct_id, resolve) {
}
async function acctResolve(acct_id, user) {
console.log('Get user data of ' + user)
var domain = localStorage.getItem('domain_' + acct_id)
const domain = localStorage.getItem('domain_' + acct_id)
if (localStorage.getItem('mode_' + domain) == 'misskey') {
return false
}
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + user
let promise = await fetch(start, {
const at = localStorage.getItem('acct_' + acct_id + '_at')
const options = {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
Authorization: 'Bearer ' + at,
},
}
})
var idJson = await promise.json()
try {
const start = `https://${domain}/api/v1/accounts/lookup?acct=${user}`
const promise = fetch(start, options)
const idJson = await promise.json()
if (idJson) {
return idJson
} else {
return await acctResolveLegacy(domain, user, options)
}
} catch {
return await acctResolveLegacy(domain, user, options)
}
}
async function acctResolveLegacy(domain, user, options) {
console.log(`Get user data of ${user} with legacy method`)
try {
const start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + user
const promise = fetch(start, options)
const idJson = await promise.json()
if (idJson.accounts[0]) {
var id = idJson.accounts[0].id
return idJson.accounts[0]
} else {
M.toast({ html: lang.lang_fatalerroroccured, displayLength: 2000 })
}
return id
} catch {
console.log('Error occured on searching and fetching with resolve')
}
}
//ブロック
function block(acct_id) {
if ($('#his-data').hasClass('blocking')) {
@@ -259,11 +279,9 @@ function block(acct_id) {
text: '',
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then(result => {
cancelButtonText: lang.lang_no,
}).then((result) => {
if (result.value) {
if (!acct_id) {
var acct_id = $('#his-data').attr('use-acct')
@@ -312,11 +330,9 @@ function muteDo(acct_id) {
text: '',
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then(result => {
cancelButtonText: lang.lang_no,
}).then((result) => {
if (result.value) {
if (!acct_id) {
var acct_id = $('#his-data').attr('use-acct')
@@ -393,11 +409,9 @@ function redraft(id, acct_id) {
text: lang.lang_status_redraft,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no
}).then(result => {
cancelButtonText: lang.lang_no,
}).then((result) => {
if (result.value) {
show()
var domain = localStorage.getItem('domain_' + acct_id)
@@ -432,6 +446,7 @@ function redraft(id, acct_id) {
}
})
}
function draftToPost(json, acct_id, id) {
$('#post-acct-sel').prop('disabled', true)
$('#post-acct-sel').val(acct_id)
@@ -445,11 +460,7 @@ function draftToPost(json, acct_id, id) {
for (var i = 0; i <= 4; i++) {
if (json.media_attachments[i]) {
media_ids.push(json.media_attachments[i].id)
$('#preview').append(
'<img src="' +
json.media_attachments[i].preview_url +
'" style="width:50px; max-height:100px;">'
)
$('#preview').append('<img src="' + json.media_attachments[i].preview_url + '" style="width:50px; max-height:100px;">')
} else {
break
}
@@ -651,8 +662,8 @@ function staEx(mode) {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
Authorization: 'Bearer ' + at,
},
})
.then(function(response) {
if (!response.ok) {
@@ -683,6 +694,7 @@ function staEx(mode) {
})
return
}
function toggleAction(elm) {
console.log(elm)
const instance = M.Dropdown.init(elm)

View File

@@ -13,51 +13,57 @@ input.addEventListener(
localStorage.removeItem('cursor')
var acct_id = $('#post-acct-sel').val()
$('#suggest').html('')
$('#suggest').hide()
window.clearInterval(timer)
timer = window.setInterval(function () {
var new_val = input.value
if (new_val == '') {
$('#suggest').html('')
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
$('#right-side').hide()
$('#right-side').css('width', '300px')
$('#left-side').css('width', '100%')
var width = localStorage.getItem('postbox-width')
if (width) {
width = width.replace('px', '') * 1
} else {
width = 300
}
$('#post-box').css('width', width + 'px')
}
$('#suggest').hide()
return
}
if (prev_val != new_val) {
var tag = new_val.match(/#(\S{3,})/)
var acct = new_val.match(/@(\S{3,})/)
if (tag && tag[1]) {
var q = tag[1]
} else if (acct && acct[1]) {
var q = acct[1]
const pos = input.selectionStart
let startI = pos - 1
let hasDomain = false
let hasDomainOnce = false
for (startI = pos - 1; startI >= 0; startI--) {
if (new_val[startI].match(/\./)) hasDomain = true
if (new_val[startI].match(/#|@|:/) && !hasDomain) break
if (new_val[startI].match(/@/) && hasDomainOnce) break
if (new_val[startI].match(/@/) && !hasDomainOnce) hasDomainOnce = true
}
const target = new_val.substr(startI, pos - startI)
var tag = target.match(/#(\S{3,})/g)
var acct = target.match(/@(\S{3,})(@(\S{3,}))?/g)
var emoji = target.match(/:(\S{1,})/g)
if (emoji && emoji[0]) {
const l = emoji[0]
const emojis = localStorage.getItem('emojis_raw_' + acct_id)
const json = emojis ? JSON.parse(emojis) : []
const reg = new RegExp(`${emoji[0]}`)
let listHtml = ''
for (const emoji of json) {
const { shortcode, url } = emoji
if (`:${shortcode}`.match(reg)) {
listHtml = listHtml + `${listHtml ? `<br>` : ``}<a onclick="tagInsert(':${shortcode}:','${l}')" class="pointer"><img src="${url}" width="15">:${shortcode}:</a>`
}
}
$('#suggest').html(listHtml)
$('#suggest').show()
} else if (tag && tag[0]) {
var q = tag[0]
} else if (acct && acct[0]) {
var q = acct[0]
} else {
$('#suggest').html('')
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
$('#right-side').hide()
$('#right-side').css('width', '300px')
$('#left-side').css('width', '100%')
var width = localStorage.getItem('postbox-width')
if (width) {
width = width.replace('px', '') * 1
} else {
width = 300
}
$('#post-box').css('width', width + 'px')
}
$('#suggest').hide()
return
}
if (q) {
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
suggest = 'https://' + domain + '/api/v2/search?q=' + q
suggest = 'https://' + domain + '/api/v2/search?q=' + encodeURIComponent(q)
if (suggest != oldSuggest) {
console.log('Try to get suggest at ' + suggest)
fetch(suggest, {
@@ -84,7 +90,7 @@ input.addEventListener(
console.log(['Search', json])
//ハッシュタグ
if (json.hashtags[0] && tag) {
if (tag[1]) {
if (tag[0]) {
var tags = []
Object.keys(json.hashtags).forEach(function (key4) {
var tag = json.hashtags[key4]
@@ -99,7 +105,7 @@ input.addEventListener(
his[6].uses * 1
tagHTML = `<br><a onclick="tagInsert('#${escapeHTML(
tag.name
)}','#${q}')" class="pointer">#${escapeHTML(tag.name)}</a>&nbsp;${uses}toot(s)`
)}','${q}')" class="pointer">#${escapeHTML(tag.name)}</a>&nbsp;${uses}toot(s)`
var item = {
uses: uses,
@@ -121,26 +127,14 @@ input.addEventListener(
Object.keys(tags).forEach(function (key7) {
ins = ins + tags[key7].html
if (key7 <= 0 && !nev) {
ins = ins + '<br>'
//ins = ins + '<br>'
nev = true
}
})
$('#suggest').html(ins)
$('#right-side').show()
$('#right-side').css('width', '200px')
$('#left-side').css('width', 'calc(100% - 200px)')
var width = localStorage.getItem('postbox-width')
if (width) {
width = width.replace('px', '') * 1 + 200
} else {
width = 500
$('#suggest').show()
}
$('#post-box').css('width', width + 'px')
$('#poll').addClass('hide')
$('#emoji').addClass('hide')
$('#draft').addClass('hide')
}
} else if (json.accounts[0] && acct[1]) {
} else if (json.accounts[0] && acct[0]) {
var accts = ''
Object.keys(json.accounts).forEach(function (key3) {
var acct = json.accounts[key3]
@@ -149,43 +143,28 @@ input.addEventListener(
if (acct.username.indexOf('.') < 0) {
accts =
accts +
`<a onclick="tagInsert('@${acct.acct}','@${q}')" class="pointer">@${acct.acct}</a><br>`
`<a onclick="tagInsert('@${acct.acct}','${q}')" class="pointer">@${acct.acct}</a><br>`
}
}
})
$('#right-side').show()
$('#right-side').css('width', '200px')
$('#left-side').css('width', 'calc(100% - 200px)')
var width = localStorage.getItem('postbox-width')
if (width) {
width = width.replace('px', '') * 1 + 200
} else {
width = 500
}
$('#post-box').css('width', width + 'px')
$('#suggest').html(accts)
$('#poll').addClass('hide')
$('#emoji').addClass('hide')
$('#draft').addClass('hide')
$('#suggest').show()
} else {
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
$('#right-side').hide()
$('#right-side').css('width', '300px')
$('#left-side').css('width', '100%')
var width = localStorage.getItem('postbox-width')
if (width) {
width = width.replace('px', '') * 1
} else {
width = 300
}
$('#post-box').css('width', width + 'px')
}
}
})
}
}
}
oldSuggest = suggest
prev_value = new_val
prev_val = new_val
const rectTextarea = document.querySelector('#textarea')
const rect = rectTextarea.getBoundingClientRect()
const caret = getCaretCoordinates(rectTextarea, rectTextarea.selectionEnd)
$('#suggest').css('top', `calc(${caret.top}px + 1rem)`)
const left = rect.width / 2 < caret.left ? rect.width / 2 : caret.left
$('#suggest').css('left', left)
}, 1000)
},
false
@@ -199,9 +178,14 @@ input.addEventListener(
},
false
)
function tagInsert(code, del) {
function tagInsert(code, del, emoji) {
if (localStorage.getItem('emoji-zero-width') == 'yes' && emoji) {
var blankBefore = ''
var blankAfter = ''
} else {
var blankBefore = ' '
var blankAfter = ' '
}
var textarea = document.querySelector('#textarea')
var sentence = textarea.value
var len = sentence.length
@@ -217,10 +201,10 @@ function tagInsert(code, del) {
var after = sentence.substr(pos, len)
var start = after.substr(0, 1)
if (start == ' ') blankAfter = ''
if (len == 0) {
var word = code
if (len === delLen) {
var word = code + blankAfter
} else if (len == pos) {
var word = blankBefore + code
var word = blankBefore + code + blankAfter
} else if (pos == 0) {
var word = code + blankAfter
} else {
@@ -228,17 +212,9 @@ function tagInsert(code, del) {
}
sentence = before + word + after
textarea.value = sentence
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
$('#right-side').hide()
$('#right-side').css('width', '300px')
$('#left-side').css('width', '50%')
var width = localStorage.getItem('postbox-width').replace('px', '') * 1
if (!width) {
width = 300
}
$('#post-box').css('width', width + 'px')
}
$('#suggest').html('')
$('#suggest').hide()
$('#textarea').focus()
}
function cgNPs(q) {
suggest = 'https://cg.toot.app/api/v1/search/light?q=' + q

View File

@@ -17,7 +17,8 @@ function additional(acct_id, tlid) {
}
if (tagThis) {
$(this).attr('href', "javascript:tagShow('" + tagThis + "')")
$(this).attr('href', "#")
$(this).attr('onclick', "tagShow('" + tagThis + "', this)")
}
})

View File

@@ -637,34 +637,22 @@ function brws() {
postMessage(['openUrl', url], '*')
}
//外部からトゥート開く
function detEx(url, acct_id) {
async function detEx(url, acct_id) {
if (acct_id == 'main') {
acct_id = localStorage.getItem('main')
}
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + encodeURIComponent(url)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
})
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
Swal.fire({
title: 'Loading...',
html: lang.lang_details_fetch,
showConfirmButton: false,
showCloseButton: true,
onBeforeOpen: () => {
Swal.showLoading()
},
onClose: () => { },
}).then((result) => { })
const json = await detExCore(url, acct_id)
Swal.close()
if (!json.statuses) {
postMessage(['openUrl', url], '*')
} else {
@@ -673,6 +661,24 @@ function detEx(url, acct_id) {
$('.loadp').removeClass('loadp')
details(id, acct_id, 0)
}
})
return
}
async function detExCore(url, acct_id) {
const domain = localStorage.getItem('domain_' + acct_id)
const start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + encodeURIComponent(url)
const at = localStorage.getItem('acct_' + acct_id + '_at')
let promise = await fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
})
const json = await promise.json()
if (json) {
return json
} else {
return false
}
}

View File

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

View File

@@ -42,6 +42,7 @@ function remoteOnly(tlid, type) {
}
columnReload(tlid, type)
}
function remoteOnlyCk(tlid) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
@@ -125,6 +126,7 @@ function catchToggle(tlid) {
parseColumn(tlid)
}
}
function catchCheck(tlid) {
var catchck = localStorage.getItem('catch_' + tlid)
if (catchck) {
@@ -135,6 +137,7 @@ function catchCheck(tlid) {
$('#sta-del-' + tlid).css('color', 'red')
}
}
function delreset(tlid) {
$('[tlid=' + tlid + '] .by_delcatch').hide()
$('[tlid=' + tlid + '] .by_delcatch').remove()
@@ -146,6 +149,7 @@ function filterMenu() {
$('.menu-content').addClass('hide')
$('#filter-box').removeClass('hide')
}
function filter() {
$('#filtered-words').html('')
$('#filter-edit-id').val('')
@@ -199,11 +203,13 @@ function filter() {
}
})
}
function filterTime(day, hour, min) {
$('#days_filter').val(day)
$('#hours_filter').val(hour)
$('#mins_filter').val(min)
}
function makeNewFilter() {
var acct_id = $('#filter-acct-sel').val()
var phr = $('#filter-add-word').val()
@@ -280,6 +286,7 @@ function makeNewFilter() {
}
}
}
function filterEdit(id, acct_id) {
$('#filter-add-word').val('')
$('#home_filter').prop('checked', false)
@@ -342,6 +349,7 @@ function filterEdit(id, acct_id) {
}
})
}
function filterDel(id, acct_id) {
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
@@ -363,6 +371,7 @@ function filterDel(id, acct_id) {
}
}
}
function getFilter(acct_id) {
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
@@ -395,6 +404,7 @@ function getFilter(acct_id) {
localStorage.setItem('filter_' + acct_id, JSON.stringify({}))
}
}
function getFilterType(json, type) {
if (!json) {
return []
@@ -421,6 +431,7 @@ function getFilterType(json, type) {
})
return mutedfilters
}
function getFilterTypeByAcct(acct_id, type) {
if (localStorage.getItem('filter_' + acct_id) != 'undefined') {
var mute = getFilterType(JSON.parse(localStorage.getItem('filter_' + acct_id)), type)
@@ -429,6 +440,7 @@ function getFilterTypeByAcct(acct_id, type) {
}
return mute
}
function filterUpdate(acct_id) {
var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at')
@@ -461,6 +473,7 @@ function filterUpdate(acct_id) {
filterUpdateInternal(json, 'pub')
})
}
function filterUpdateInternal(json, type) {
var home = getFilterType(json, type)
var wordmute = localStorage.getItem('word_mute')
@@ -523,11 +536,11 @@ function exclude(key) {
} else {
excludetxt = '?exclude_types[]=poll'
}
} else {
}
} else {}
localStorage.setItem('exclude-' + key, excludetxt)
parseColumn(key)
}
function excludeCk(key, target) {
var exc = localStorage.getItem('exclude-' + key)
if (!exc) {
@@ -539,6 +552,7 @@ function excludeCk(key, target) {
return ''
}
}
function checkNotfFilter(tlid) {
var excludetxt = localStorage.getItem('exclude-' + tlid)
if (!excludetxt || excludetxt != '') {
@@ -547,10 +561,12 @@ function checkNotfFilter(tlid) {
return false
}
}
function resetNotfFilter(tlid) {
localStorage.setItem('exclude-' + tlid, '')
parseColumn(tlid)
}
function notfFilter(id, tlid, acct_id) {
var excludetxt = localStorage.getItem('exclude-' + tlid)
if (excludetxt || excludetxt != '') {

View File

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

View File

@@ -518,7 +518,7 @@ function misskeyParse(obj, mix, acct_id, tlid, popup, mutefilter) {
if (tagck) {
Object.keys(toot.tags).forEach(function (key4) {
var tag = toot.tags[key4]
var tags = '<a onclick="tagShow(\'' + tag + '\')" class="pointer parsed">#' + tag + '</a><span class="hide" data-tag="' + tag + '" data-regTag="'+tag.toLowerCase()+'">#' + tag + ':<a onclick="tl(\'tag\',\'' + tag + '\',' + acct_id +
var tags = '<a onclick="tagShow(\'' + tag + '\', this)" class="pointer parsed">#' + tag + '</a><span class="hide" data-tag="' + tag + '" data-regTag="'+tag.toLowerCase()+'">#' + tag + ':<a onclick="tl(\'tag\',\'' + tag + '\',' + acct_id +
',\'add\')" class="pointer parsed" title="' + lang.lang_parse_tagTL.replace("{{tag}}", '#' + tag) + '">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer parsed" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", '#' + tag) + '">Toot</a> ' +
'<a onclick="tagPin(\'' + tag + '\')" class="pointer parsed" title="' + lang.lang_parse_tagpin.replace("{{tag}}", '#' + tag) + '">Pin</a></span> '
content = content.replace("#" + tag, tags)

View File

@@ -7,6 +7,7 @@ function notf(acct_id, tlid, sys) {
notfCommon(acct_id, tlid, sys)
}
}
function notfColumn(acct_id, tlid, sys) {
todo('Notifications Loading...')
var native = localStorage.getItem('nativenotf')
@@ -22,7 +23,7 @@ function notfColumn(acct_id, tlid, sys) {
httpreq.open('POST', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
var body = JSON.stringify({
i: at
i: at,
})
} else {
var misskey = false
@@ -44,6 +45,7 @@ function notfColumn(acct_id, tlid, sys) {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
$('#landing_' + tlid).append(`<div>${this.status}</div><div>${escapeHTML(this.response)}`)
setLog(start, this.status, this.response)
}
var max_id = httpreq.getResponseHeader('link')
@@ -64,7 +66,7 @@ function notfColumn(acct_id, tlid, sys) {
var os = localStorage.getItem('platform')
var options = {
body: ct + lang.lang_notf_new,
icon: localStorage.getItem('prof_' + acct_id)
icon: localStorage.getItem('prof_' + acct_id),
}
var n = new Notification('TheDesk:' + domain, options)
}
@@ -88,7 +90,7 @@ function notfColumn(acct_id, tlid, sys) {
})
templete = templete + '<div class="hide notif-marker" data-maxid="' + max_id + '"></div>'
$('#timeline_' + tlid).html(templete)
$('#landing_' + tlid).hide()
// $('#landing_' + tlid).hide()
jQuery('time.timeago').timeago()
}
$('#notf-box').addClass('fetched')
@@ -116,6 +118,7 @@ function notfColumn(acct_id, tlid, sys) {
var start = 'wss://' + domain + '/?i=' + at
}
}
function notfCommon(acct_id, tlid, sys, stream) {
todo('Notifications Loading...')
var native = localStorage.getItem('nativenotf')
@@ -130,11 +133,11 @@ function notfCommon(acct_id, tlid, sys, stream) {
var i = {
method: 'POST',
headers: {
'content-type': 'application/json'
'content-type': 'application/json',
},
body: JSON.stringify({
i: at
})
i: at,
}),
}
} else {
var misskey = false
@@ -143,8 +146,8 @@ function notfCommon(acct_id, tlid, sys, stream) {
method: 'GET',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
}
Authorization: 'Bearer ' + at,
},
}
}
if (stream == 'only') {
@@ -156,6 +159,8 @@ function notfCommon(acct_id, tlid, sys, stream) {
console.log('header to get param:' + response.headers.get('link'))
if (!response.ok) {
response.text().then(function(text) {
console.log('notf error', 'div[data-notf=' + acct_id + '] .landing')
$('div[data-notf=' + acct_id + '] .landing').append(`<div>${response.status}</div><div>${escapeHTML(text)}`)
setLog(response.url, response.status, text)
})
}
@@ -181,7 +186,7 @@ function notfCommon(acct_id, tlid, sys, stream) {
var os = localStorage.getItem('platform')
var options = {
body: ct + lang.lang_notf_new,
icon: localStorage.getItem('prof_' + acct_id)
icon: localStorage.getItem('prof_' + acct_id),
}
var n = new Notification('TheDesk:' + domain, options)
}
@@ -202,7 +207,7 @@ function notfCommon(acct_id, tlid, sys, stream) {
}
})
$('div[data-notf=' + acct_id + ']').html(templete)
$('#landing_' + tlid).hide()
// $('#landing_' + tlid).hide()
jQuery('time.timeago').timeago()
}
$('#notf-box').addClass('fetched')
@@ -210,6 +215,7 @@ function notfCommon(acct_id, tlid, sys, stream) {
if (stream != 'no') notfWS(misskey, acct_id, tlid, domain, at)
})
}
function notfWS(misskey, acct_id, tlid, domain, at) {
if (mastodonBaseWsStatus[domain] == 'available') return false
if (!misskey) {
@@ -227,11 +233,12 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
acct_id: acct_id,
type: 'Connect Streaming API(Notf)',
domain: domain,
message: [mess]
message: [mess],
})
$('i[data-notf=' + acct_id + ']').removeClass('red-text')
}
websocketNotf[acct_id].onmessage = function(mess) {
$('#landing_' + tlid).hide()
//console.log(["Receive Streaming API(Notf):" + acct_id + "(" + domain + ")", JSON.parse(JSON.parse(mess.data).payload)]);
var popup = localStorage.getItem('popup')
if (!popup) {
@@ -306,7 +313,7 @@ function notfmore(tlid) {
httpreq.setRequestHeader('Content-Type', 'application/json')
var body = JSON.stringify({
i: at,
untilID: sid
untilID: sid,
})
} else {
var misskey = false
@@ -356,7 +363,7 @@ function notfmore(tlid) {
moreloading = false
templete = templete + '<div class="hide notif-marker" data-maxid="' + max_id + '"></div>'
$('#timeline_' + tlid).append(templete)
$('#landing_' + tlid).hide()
// $('#landing_' + tlid).hide()
jQuery('time.timeago').timeago()
}
$('#notf-box').addClass('fetched')
@@ -370,35 +377,30 @@ function notfmore(tlid) {
function notfToggle(acct, tlid) {
if ($('#notf-box_' + tlid).hasClass('column-hide')) {
$('#notf-box_' + tlid).css('display', 'block')
$('#notf-box_' + tlid).animate(
{
height: '400px'
},
{
$('#notf-box_' + tlid).animate({
height: '400px',
}, {
duration: 300,
complete: function() {
$('#notf-box_' + tlid).css('overflow-y', 'scroll')
$('#notf-box_' + tlid).removeClass('column-hide')
}
}
)
},
})
} else {
$('#notf-box_' + tlid).css('overflow-y', 'hidden')
$('#notf-box_' + tlid).animate(
{
height: '0'
},
{
$('#notf-box_' + tlid).animate({
height: '0',
}, {
duration: 300,
complete: function() {
$('#notf-box_' + tlid).addClass('column-hide')
$('#notf-box_' + tlid).css('display', 'none')
}
}
)
},
})
}
notfCanceler(acct)
}
function notfCanceler(acct) {
$('.notf-reply_' + acct).text(0)
localStorage.removeItem('notf-reply_' + acct)
@@ -413,12 +415,16 @@ function notfCanceler(acct) {
localStorage.removeItem('notf-follow_' + acct)
$('.notf-follow_' + acct).addClass('hide')
$('.notf-icon_' + acct).removeClass('red-text')
var id = $('#announce_' + acct + ' .announcement').first().attr('data-id')
$('.notf-announ_' + acct + '_ct').text("")
var id = $('#announce_' + acct + ' .announcement')
.first()
.attr('data-id')
$('.notf-announ_' + acct + '_ct').text('')
$(`.boxIn[data-acct=${acct}] .notice-box`).removeClass('has-notf')
if (id) {
localStorage.setItem('announ_' + acct, id)
}
}
function allNotfRead() {
var multi = localStorage.getItem('multi')
if (multi) {

View File

@@ -278,7 +278,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
</span>
<span class="voice">${date(toot.created_at, 'absolute')}(${lang.lang_parse_notftime})</span>
<i class="big-text fas ${icon}"></i>
<a onclick="udg('${toot.account.id}','${acct_id}')" class="pointer grey-text">
<a onclick="udg('${toot.account.id}','${acct_id}')" class="pointer grey-text notf-udg-text">
${dis_name}(@${toot.account.acct})
</a>`
var notice = noticetext
@@ -290,6 +290,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
$('.notf-reply_' + acct_id).text(replyct * 1 - -1)
localStorage.setItem('notf-reply_' + acct_id, replyct * 1 - -1)
$('.notf-reply_' + acct_id).removeClass('hide')
$(`.boxIn[data-acct=${acct_id}] .notice-box`).addClass('has-notf')
var sound = localStorage.getItem('replySound')
if (sound == 'default') {
var file = '../../source/notif3.wav'
@@ -299,6 +300,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
$('.notf-bt_' + acct_id).text(btct * 1 - -1)
localStorage.setItem('notf-bt_' + acct_id, btct * 1 - -1)
$('.notf-bt_' + acct_id).removeClass('hide')
$(`.boxIn[data-acct=${acct_id}] .notice-box`).addClass('has-notf')
var sound = localStorage.getItem('btSound')
if (sound == 'default') {
var file = '../../source/notif2.wav'
@@ -308,6 +310,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
$('.notf-fav_' + acct_id).text(favct * 1 - -1)
localStorage.setItem('notf-fav_' + acct_id, favct * 1 - -1)
$('.notf-fav_' + acct_id).removeClass('hide')
$(`.boxIn[data-acct=${acct_id}] .notice-box`).addClass('has-notf')
var sound = localStorage.getItem('favSound')
if (sound == 'default') {
var file = '../../source/notif.wav'
@@ -628,7 +631,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
var mty = media.remote_url.match(/.+(\..+)$/)[1]
viewer =
viewer +
`<a href="${media.url ? media.url : media.remote_url}" title="${media.remote_url} from ${media.url}">[${lang.lang_parse_unknown}(${mty})]</a> `
`<a href="${media.url ? media.url : media.remote_url}" title="${media.url ? media.url : media.remote_url}">[${lang.lang_parse_unknown}(${mty})]</a>${media.url ? `<a href="${media.remote_url}"><i class="material-icons sublink" title="${media.remote_url}">open_in_new</i></a>` : ''} `
} else if (media.type == 'audio') {
viewer =
viewer +
@@ -700,31 +703,6 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
${lang.lang_parse_thread}
</a></div>`
}
var tagck = toot.tags[0]
var tags = ''
//タグであれば
if (tagck) {
Object.keys(toot.tags).forEach(function (key4) {
var tag = toot.tags[key4]
var featured = ` <a onclick="tagFeature('${tag.name}','${acct_id}')" class="pointer" title="add it to Featured tags">Feature</a> `
tags =
tags +
`<span class="hide" data-tag="${tag.name}" data-regTag="${tag.name.toLowerCase()}">#${tag.name
}:
<a onclick="tl('tag','${tag.name}','${acct_id}','add')" class="pointer"
title="${lang.lang_parse_tagTL.replace(
'{{tag}}',
'#' + tag.name
)}">TL</a> <a onclick="brInsert('#${tag.name}')"
class="pointer" title="${lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag.name)}">Toot</a> 
<a onclick="tagPin('${tag.name}')" class="pointer" title="${lang.lang_parse_tagpin.replace(
'{{tag}}',
'#' + tag.name
)}
">Pin</a>${featured}</span> `
})
tags = '<div style="float:right" aria-hidden="true">' + tags + '</div>'
}
//リプ数
if (toot.replies_count || toot.replies_count === 0) {
var replyct = toot.replies_count
@@ -901,7 +879,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
//日本語じゃない
if (toot.language != lang.language && toot.language) {
var trans = `<li onclick="trans('${toot.language}','${lang.language}', $(this))"
style="padding:0">
style="padding:0; padding-top: 5px;">
<i class="material-icons" aria-hidden="true">g_translate</i>${lang.lang_parse_trans}
</li>`
} else {
@@ -1074,7 +1052,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
</div>
<div class="area-additional grid">
<span class="additional">${analyze}</span>
${mentions}${tags}
${mentions}
</div>
<div class="area-vis grid">${vis}</div>
<div class="area-actions grid">
@@ -1154,23 +1132,23 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type, onlyContent) {
</li>
<div>
<li onclick="bkm('${uniqueid}','${acct_id}','${tlid}')"
class="bkm-btn bkmStr_${uniqueid}" style="padding:0">
class="bkm-btn bkmStr_${uniqueid}" style="padding:0; padding-top: 5px;">
<i class="fas text-darken-3 fa-bookmark bkm_${toot.id} ${if_bkm}"></i>${bkmStr}
</li>
<li class="${if_mine}" onclick="del('${uniqueid}','${acct_id}')"
style="padding:0">
style="padding:0; padding-top: 5px;">
<i class="fas fa-trash"></i>${lang.lang_parse_del}
</li>
<li class="${if_mine}" onclick="pin('${uniqueid}','${acct_id}')" style="padding:0" class="pinStr_${uniqueid}">
<li class="${if_mine}" onclick="pin('${uniqueid}','${acct_id}')" style="padding:0; padding-top: 5px;" class="pinStr_${uniqueid}">
<i class="fas fa-map-pin pin_${uniqueid} ${if_pin}"></i>${pinStr}
</li>
<li class="${if_mine}" onclick="redraft('${uniqueid}','${acct_id}')"
style="padding:0">
style="padding:0; padding-top: 5px;">
<i class="material-icons" aria-hidden="true">redo</i>${lang.lang_parse_redraft}
</li>
${trans}
<li onclick="postMessage(['openUrl', '${toot.url}'], '*')"
style="padding:0">
style="padding:0; padding-top: 5px;">
<i class="fas text-darken-3 fa-globe"></i>${lang.lang_parse_link}
</li>
${pluginHtml}
@@ -1370,8 +1348,6 @@ function client(name) {
text: name + lang.lang_parse_clienttxt,
type: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#3085d6',
confirmButtonText: lang.lang_parse_clientmute,
cancelButtonText: lang.lang_parse_clientemp,
showCloseButton: true,
@@ -1576,6 +1552,7 @@ function mastodonBaseStreaming(acct_id) {
$('.notice_icon_acct_' + acct_id).removeClass('red-text')
}
mastodonBaseWs[domain].onmessage = function (mess) {
$(`div[data-acct=${acct_id}] .landing`).hide()
const typeA = JSON.parse(mess.data).event
if (typeA == 'delete') {
$(`[unique-id=${JSON.parse(mess.data).payload}]`).hide()

View File

@@ -13,7 +13,21 @@ function searchMenu() {
//検索取得
function src(mode, offset) {
if (!offset) {
$('#src-contents').html('')
$('#src-contents').html(`
<div class="preloader-wrapper small active" style="margin-left: calc(50% - 36px);">
<div class="spinner-layer spinner-blue-only">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="gap-patch">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
`)
var add = ''
} else {
var add = '&type=accounts&offset=' + $('#src-accts .cvo').length
@@ -49,6 +63,9 @@ function src(mode, offset) {
}
})
.then(function (response) {
if (!offset) {
$('#src-contents').html(``)
}
if (!response.ok) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
@@ -314,39 +331,19 @@ function trend() {
})
}
function srcBox(mode) {
var selectedText = window.getSelection().toString()
if (mode == 'open') {
$('#pageSrc').removeClass('hide')
} else if (mode == 'close') {
if(!selectedText) {
$('#pageSrc').addClass('hide')
$('#pageSrc').removeClass('keep')
}
} else {
$('#pageSrc').toggleClass('hide')
}
if(!$('#pageSrc').hasClass('keep')) {
$('#pageSrcInput').val(selectedText)
}
}
$('#pageSrcInput').click(function() {
$('#pageSrc').addClass('keep')
})
$('#pageSrcInput').on('input', function(evt) {
if(!$('#pageSrcInput').val()) {
$('#pageSrc').removeClass('keep')
}
})
document.addEventListener('selectionchange', function() {
var selectedText = window.getSelection().toString()
if (selectedText && !$('input').is(':focus') && !$('textarea').is(':focus')) {
srcBox('open')
}
})
function doSrc(type) {
$('#pageSrc').addClass('hide')
$('#pageSrc').removeClass('keep')
var q = $('#pageSrcInput').val()
var q = $('.srcQ').text()
if (type == 'web') {
var start = localStorage.getItem('srcUrl')
if (!start) {
@@ -356,5 +353,9 @@ function doSrc(type) {
postMessage(["openUrl", start], "*")
} else if (type == 'ts') {
tsAdd(q)
} else if (type == 'copy') {
execCopy(q)
} else if (type == 'toot') {
brInsert(q)
}
}

View File

@@ -9,9 +9,47 @@ if (location.search) {
}
}
//よく使うタグ
function tagShow(tag) {
console.log('[data-regTag=' + decodeURI(tag).toLowerCase() + ']')
$('[data-regTag=' + decodeURI(tag).toLowerCase() + ']').toggleClass('hide')
function tagShow(tag, elm) {
tag = decodeURIComponent(tag)
const tagTL = lang.lang_parse_tagTL.replace('{{tag}}', '#' + tag)
const tagPin = lang.lang_parse_tagpin.replace('{{tag}}', '#' + tag)
const tagToot = lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag)
$('#tagCMTL').text(tagTL)
$('#tagCMPin').text(tagPin)
$('#tagCMToot').text(tagToot)
const acct_id = $(elm).parents('.tl').attr('data-acct')
const rect = elm.getBoundingClientRect()
$('#tagContextMenu').css('top', `calc(${rect.top}px + 1rem)`)
$('#tagContextMenu').css('left', `${rect.left}px`)
$('#tagContextMenu').attr('data-tag', tag)
$('#tagContextMenu').attr('data-acct', acct_id)
$('#tagContextMenu').removeClass('hide')
setTimeout(() => tShowBox('open'), 500)
}
function tShowBox(mode) {
if (mode == 'open') {
$('#tagContextMenu').removeClass('hide')
} else if (mode == 'close') {
if (!$('#tagContextMenu').hasClass('hide')) $('#tagContextMenu').addClass('hide')
$('#tagContextMenu').removeClass('keep')
} else {
$('#tagContextMenu').toggleClass('hide')
}
}
function doTShowBox(type) {
$('#tagContextMenu').addClass('hide')
$('#tagContextMenu').removeClass('keep')
const q = $('#tagContextMenu').attr('data-tag')
const acct_id = $('#tagContextMenu').attr('data-acct')
if (type == 'tl') {
tl('tag', q, acct_id, 'add')
} else if (type == 'toot') {
brInsert(`#${q}`)
} else if (type == 'pin') {
tagPin(q)
} else if (type == 'f') {
tagFeature(q, acct_id)
}
}
//タグ追加
function tagPin(tag) {
@@ -69,17 +107,17 @@ function favTag() {
tag = escapeHTML(tag)
tags =
tags +
`<a onclick="tagShow('${tag}')" class="pointer">#${tag}</a>
`<a onclick="tagShowHorizon('${tag}')" class="pointer">#${tag}</a>
${nowon}<span class="hide" data-tag="${tag}" data-regTag="${tag.toLowerCase()}"> 
<a onclick=\"tagTL('tag','${tag}',false,'add')" class="pointer" title="${lang.lang_parse_tagTL.replace('{{tag}}', '#' + tag)}">
TL
</a> 
</a>
<a onclick="brInsert('#${tag}')" class="pointer" title="${lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag)}">
Toot
</a> 
</a>
<a onclick="autoToot('${tag}');" class="pointer" title="${lang.lang_tags_always}${lang.lang_parse_tagtoot.replace('{{tag}}', '#' + tag)}">
${ptt}
</a> 
</a>
<a onclick="tagRemove('${key}')" class="pointer" title="${lang.lang_tags_tagunpin.replace('{{tag}}', '#' + tag)}">
${lang.lang_del}
</a>
@@ -91,6 +129,9 @@ function favTag() {
$('#taglist').append('')
}
}
function tagShowHorizon(tag) {
$('[data-regTag=' + decodeURI(tag).toLowerCase() + ']').toggleClass('hide')
}
function trendTag() {
$('.trendtag').remove()
var domain = 'imastodon.net'
@@ -124,7 +165,7 @@ function trendTag() {
tag = escapeHTML(tag)
tags =
tags +
`<a onclick="tagShow('${tag}')" class="pointer">#${tag}</a>
`<a onclick="tagShow('${tag}', this)" class="pointer">#${tag}</a>
<span class="hide" data-tag="${tag}" data-regTag="${tag.toLowerCase()}"> 
<a onclick=\"tagTL('tag','${tag}',false,'add')" class="pointer" title="#${tag}のタイムライン">TL</a> 
<a onclick="show();brInsert('#${tag}')" class="pointer" title="#${tag}でトゥート">

View File

@@ -1,6 +1,7 @@
//TL取得
moreloading = false
var errorct = 0
function tl(type, data, acct_id, tlid, delc, voice, mode) {
scrollevent()
$('#unread_' + tlid + ' .material-icons').removeClass('teal-text')
@@ -182,6 +183,7 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
.then(function(response) {
if (!response.ok) {
response.text().then(function(text) {
$('#landing_' + tlid).append(`<div>${response.status}</div><div>${$.strip_tags(text)}`)
setLog(response.url, response.status, text)
})
}
@@ -193,6 +195,7 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
console.error(error)
})
.then(function(json) {
if (!json) return true
console.log(['Result of getting timeline of ' + tlid, json])
$('#landing_' + tlid).hide()
var mute = getFilterTypeByAcct(acct_id, type)
@@ -267,17 +270,14 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
}
}
}
function stremaingSubscribe(type, acct_id, data, unsubscribe) {
let command = 'subscribe'
if (unsubscribe) command = 'unsubscribe'
let stream
const domain = localStorage.getItem('domain_' + acct_id)
if (type == 'home') return false
if (type === 'local' || type === 'mix') { stream = 'public:local' }
else if (type === 'local-media') { stream = 'public:local:media' }
else if (type === 'pub') { stream = 'public' }
else if (type === 'pub-media') { stream = 'public:media' }
else if (type === 'list') {
if (type === 'local' || type === 'mix') { stream = 'public:local' } else if (type === 'local-media') { stream = 'public:local:media' } else if (type === 'pub') { stream = 'public' } else if (type === 'pub-media') { stream = 'public:media' } else if (type === 'list') {
mastodonBaseWs[domain].send(JSON.stringify({ type: command, stream: 'list', list: data }))
return true
} else if (type === 'tag') {
@@ -294,6 +294,7 @@ function stremaingSubscribe(type, acct_id, data, unsubscribe) {
}
mastodonBaseWs[domain].send(JSON.stringify({ type: command, stream: stream }))
}
function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
var misskey = false
const domain = localStorage.getItem(`domain_${acct_id}`)
@@ -315,7 +316,8 @@ function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
var add = ''
if (remoteOnlyCk(tlid)) {
add = '&remote=true'
} var start =
}
var start =
wss + '/api/v1/streaming/?stream=public:media&access_token=' + at + add
} else if (type == 'local') {
var start =
@@ -413,9 +415,7 @@ function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
$('[unique-id=' + JSON.parse(mess.data).payload + ']').remove()
}
} else if (typeA == 'update' || typeA == 'conversation') {
if (
!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')
) {
if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) {
//markers show中はダメ
var obj = JSON.parse(JSON.parse(mess.data).payload)
if (
@@ -967,6 +967,7 @@ function typePs(type) {
return 'userList'
}
}
function misskeycom(type, data) {
if (type == 'home') {
return 'timeline'
@@ -1022,6 +1023,7 @@ function icon(type) {
}
return response
}
function reconnector(tlid, type, acct_id, data, mode) {
console.log('%c Reconnector:' + mode + '(timeline' + tlid + ')', 'color:pink')
if (type == 'mix' || type == 'integrated' || type == 'plus') {
@@ -1051,6 +1053,7 @@ function reconnector(tlid, type, acct_id, data, mode) {
}
M.toast({ html: lang.lang_tl_reconnect, displayLength: 2000 })
}
function columnReload(tlid, type) {
$('#notice_icon_' + tlid).addClass('red-text')
$('#unread_' + tlid + ' .material-icons').removeClass('teal-text')
@@ -1150,6 +1153,7 @@ function getMarker(tlid, type, acct_id) {
}
})
}
function showUnread(tlid, type, acct_id) {
if ($('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) {
goTop(tlid)
@@ -1203,6 +1207,7 @@ function showUnread(tlid, type, acct_id) {
})
}
var ueloadlock = false
function ueload(tlid) {
if (ueloadlock) {
return false
@@ -1259,6 +1264,7 @@ function ueload(tlid) {
ueloadlock = false
})
}
function asRead(callback) {
//Markers
var markers = localStorage.getItem('markers')
@@ -1318,6 +1324,7 @@ function asRead(callback) {
}
}
}
function asReadEnd() {
//Markers
var markers = localStorage.getItem('markers')
@@ -1331,6 +1338,7 @@ function asReadEnd() {
Swal.fire({
title: lang.lang_tl_postmarkers_title,
html: lang.lang_tl_postmarkers,
showConfirmButton: false,
timer: 3000,
onBeforeOpen: () => {
Swal.showLoading()
@@ -1394,6 +1402,7 @@ function getBookmark(acct_id, tlid, more) {
}
}
}
function getUtl(acct_id, tlid, data, more) {
moreloading = true

View File

@@ -77,6 +77,9 @@ function imgCont(type) {
}
function imageXhr(id, key, murl) {
var startTime = new Date()
$('#imgmodal-progress div').removeClass('determinate')
$('#imgmodal-progress div').addClass('indeterminate')
$('#imgmodal-progress').removeClass('hide')
xhr = new XMLHttpRequest()
xhr.open('GET', murl, true)
xhr.responseType = 'arraybuffer'
@@ -87,6 +90,9 @@ function imageXhr(id, key, murl) {
var total = event.total
var now = event.loaded
var per = (now / total) * 100
$('#imgmodal-progress div').removeClass('indeterminate')
$('#imgmodal-progress div').addClass('determinate')
$('#imgmodal-progress div').css('width', `${per}%`)
$('#imgprog').text(Math.floor(per))
}
},
@@ -100,6 +106,10 @@ function imageXhr(id, key, murl) {
var now = event.loaded
var per = (now / total) * 100
$('#imgprog').text(Math.floor(per))
$('#imgmodal-progress').addClass('hide')
$('#imgmodal-progress div').css('width', '0%')
$('#imgmodal-progress div').removeClass('determinate')
$('#imgmodal-progress div').addClass('indeterminate')
},
false
)

View File

@@ -185,6 +185,7 @@ function parseColumn(target, dontclose) {
}
var html = webviewParse('https://tweetdeck.twitter.com', key, insert, icnsert, css)
$('#timeline-container').append(html)
initWebviewEvent()
} else if (acct.type == 'tootsearch') {
if (!acct.left_fold) {
basekey = key
@@ -230,14 +231,14 @@ function parseColumn(target, dontclose) {
}
var unread = `<a id="unread_${key}" onclick="showUnread('${key}','${acct.type}','${acct.domain}')"
class="setting nex waves-effect" title="${lang.lang_layout_unread}">
<i class="material-icons waves-effect nex">more</i><br />${lang.lang_layout_unread}
<i class="material-icons waves-effect nex">more</i><span>${lang.lang_layout_unread}</span>
</a>`
var notfDomain = acct.domain
var notfKey = key
var if_tag = ''
var if_tag_btn = ''
if (acct.type == 'notf') {
var exclude =
var excludeNotf =
`<div style="border: 1px solid; padding: 5px; margin-top: 5px; margin-bottom: 5px;">${lang.lang_layout_excluded}:<br>
<label>
<input type="checkbox" class="filled-in" id="exc-reply-${key}" ${excludeCk(key, 'mention')} />
@@ -271,20 +272,21 @@ function parseColumn(target, dontclose) {
</label> <br />
<button class="btn btn-flat waves-effect notf-exclude-btn waves-light" style="width:calc(50% - 11px); padding:0;" onclick="exclude('${key}')">Filter</button>`
if (checkNotfFilter(key)) {
exclude =
exclude +
excludeNotf =
excludeNotf +
`<button class="btn btn-flat red-text waves-effect notf-exclude-btn waves-light" style="width:calc(50% - 11px); padding:0;" onclick="resetNotfFilter('${key}')">
Clear all
</button>`
}
exclude = exclude + '</div>'
excludeNotf = excludeNotf + '</div>'
notfDomain = 'dummy'
notfKey = 'dummy'
var excludeHome = ''
} else if (acct.type == 'home') {
var exclude = `<a onclick="ebtToggle('${key}')" class="setting nex waves-effect">
var excludeNotf = ''
var excludeHome = `<a onclick="ebtToggle('${key}')" class="setting nex waves-effect">
<i class="fas fa-retweet nex" title="${lang.lang_layout_excludingbt}" style="font-size: 24px"></i>
<span id="sta-bt-${key}">Off</span><br />
${lang.lang_layout_excludingbt}
<span>${lang.lang_layout_excludingbt}</span><span id="sta-bt-${key}">Off</span>
</a>`
} else if (acct.type == 'tag') {
if (acct.data.name) {
@@ -312,10 +314,12 @@ function parseColumn(target, dontclose) {
<i class="material-icons waves-effect nex">note_add</i>
</a>`
unread = ''
var exclude = ''
var excludeNotf = ''
var excludeHome = ''
var if_notf = 'hide'
} else {
var exclude = ''
var excludeNotf = ''
var excludeHome = ''
unread = ''
}
@@ -325,6 +329,7 @@ function parseColumn(target, dontclose) {
} else {
markers = false
}
const smallHeader = localStorage.getItem('smallHeader') === 'yes'
if (!markers) {
unread = ''
}
@@ -335,12 +340,12 @@ function parseColumn(target, dontclose) {
$('#timeline-container').append(basehtml)
}
var left_hold = `<a onclick="leftFoldSet('${key}')" class="setting nex waves-effect">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftFold}">view_agenda</i><br />
${lang.lang_layout_leftFold}</a>`
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftFold}">view_agenda</i>
<span>${lang.lang_layout_leftFold}</span></a>`
} else {
var left_hold = `<a onclick="leftFoldRemove('${key}')" class="setting nex waves-effect">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftUnfold}">view_column</i><br />
${lang.lang_layout_leftUnfold}</a>`
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftUnfold}">view_column</i>
<span>${lang.lang_layout_leftUnfold}</span></a>`
}
if (key === 0) {
left_hold = ''
@@ -361,8 +366,7 @@ function parseColumn(target, dontclose) {
if (acct.type != 'pub' && acct.type != 'pub-media') {
var mediaFil = `<a onclick="mediaToggle('${key}')" class="setting nex waves-effect">
<i class="material-icons nex" title="${lang.lang_layout_mediafil}">perm_media</i>
<span id="sta-media-${key}">On</span><br />
${lang.lang_layout_mediafil}</a>`
<span>${lang.lang_layout_mediafil}</span/><span id="sta-media-${key}">On</span></a>`
} else {
var mediaFil = `<a onclick="remoteOnly('${key}','${acct.type}')" class="setting nex waves-effect">
<i class="material-icons nex" title="${lang.lang_layout_remoteOnly}">perm_media</i><br />
@@ -371,10 +375,9 @@ function parseColumn(target, dontclose) {
}
var html = `
<div class="boxIn" id="timeline_box_${key}_box" tlid="${key}" data-acct="${acct.domain}" style="${addHeight}">
<div class="notice-box z-depth-2" id="menu_${key}" style="${insert}">
<div class="notice-box ${smallHeader ? 'small-header' : ''} z-depth-2" id="menu_${key}" style="${insert}">
<div class="area-notice">
<i class="material-icons waves-effect ${isMisRed} notice_icon_acct_${acct.domain}" id="notice_icon_${key}" ${notf_attr}
style="font-size:40px; padding-top:25%;"
<i class="material-icons waves-effect ${isMisRed} notice_icon_acct_${acct.domain} top-icon" id="notice_icon_${key}" ${notf_attr}
onclick="checkStr('${acct.type}','${data}','${acct.domain}', '${key}', '${delc}','${voice}',null)"
title="${lang.lang_layout_gotop}" aria-hidden="true">
</i>
@@ -397,10 +400,10 @@ function parseColumn(target, dontclose) {
${if_tag_btn}
</div>
<div class="area-sta">
<span class="new badge teal notf-reply_${acct.domain} hide" data-badge-caption="Reply" aria-hidden="true">0</span>
<span class="new badge yellow black-text notf-fav_${acct.domain} hide" data-badge-caption="Fav" aria-hidden="true">0</span>
<span class="new badge teal notf-reply_${acct.domain} hide" data-badge-caption="Rp" aria-hidden="true">0</span>
<span class="new badge yellow black-text notf-fav_${acct.domain} hide" data-badge-caption="Fv" aria-hidden="true">0</span>
<span class="new badge blue notf-bt_${acct.domain} hide" data-badge-caption="BT" aria-hidden="true">0</span>
<span class="new badge orange notf-follow_${acct.domain} hide" data-badge-caption="Follow" aria-hidden="true">0</span>
<span class="new badge orange notf-follow_${acct.domain} hide" data-badge-caption="Fw" aria-hidden="true">0</span>
</div>
<div class="area-a2">
<a onclick="removeColumn('${key}')" class="setting nex">
@@ -421,39 +424,48 @@ function parseColumn(target, dontclose) {
</div>
</div>
<div class="column-hide notf-indv-box" id="util-box_${key}" style="padding:5px;">
${exclude}
${excludeNotf}
<div class="columnSettings">
${excludeHome}
${unread}
${left_hold}
${mediaFil}
<a onclick="cardToggle('${key}')" class="setting nex waves-effect">
<i class="material-icons nex" title="${lang.lang_layout_linkanades}">link</i>
<span id="sta-card-${key}">On</span><br />
${lang.lang_layout_linkana}
<span>${lang.lang_layout_linkana}</span><span id="sta-card-${key}">On</span>
</a>
<a onclick="voiceToggle('${key}')" class="setting nex waves-effect">
<i class="material-icons nex" title="${lang.lang_layout_tts}">hearing</i>
<span id="sta-voice-${key}">On</span><br />
${lang.lang_layout_tts}
TL</a>
<span>${lang.lang_layout_tts}TL</span/><span id="sta-voice-${key}">On</span>
</a>
<a onclick="columnReload('${key}','${acct.type}')" class="setting nex ${if_misskey_hide} waves-effect">
<i class="material-icons nex" title="${lang.lang_layout_reconnect}">refresh</i>
<br />
${lang.lang_layout_reconnect}
<span>${lang.lang_layout_reconnect}</span>
</a>
<a onclick="resetWidth('${key}')" class="setting nex waves-effect">
<i class="material-icons nex" title="${lang.lang_layout_resetWidth}">refresh</i>
<br />
${lang.lang_layout_resetWidth}
</a><br />
${lang.lang_layout_headercolor}
<br>
<i class="material-icons nex rotate-90" title="${lang.lang_layout_resetWidth}">height</i>
<span>${lang.lang_layout_resetWidth}</span>
</a></div>
<p>${lang.lang_layout_headercolor}</p>
<div id="picker_${key}" class="color-picker"></div>
</div>${if_tag}
<div class="tl-box" tlid="${key}">
<div id="timeline_${key}" class="tl ${acct.type}-timeline " tlid="${key}"
data-type="${acct.type}" data-acct="${acct.domain}" data-const="${acct.type}_${acct.domain}">
<div id="landing_${key}" style="text-align:center">
${lang.lang_layout_nodata}
<div id="landing_${key}" class="landing">
<div class="preloader-wrapper small active " style="margin-top: calc(50vh - 15px)">
<div class="spinner-layer spinner-blue-only">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="gap-patch">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
</div>
</div>
</div>`
@@ -643,8 +655,6 @@ function removeColumn(tlid) {
text: lang.lang_layout_deleteColumnDesc,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no,
}).then((result) => {
@@ -661,8 +671,6 @@ function removeColumn(tlid) {
$('#timeline_box_' + tlid + '_parentBox').remove()
}
}
$('#sort-box').removeClass('hide')
$('#sort-box').addClass('show')
})
}

View File

@@ -101,6 +101,7 @@ if (location.search) {
$('.mini-btn').text('expand_less')
}
}
function initPostbox() {
$('#posttgl').click(function (e) {
if (!$('#post-box').hasClass('appear')) {
@@ -124,6 +125,7 @@ function initPostbox() {
selectedToot = 0
localStorage.removeItem('nohide')
srcBox('close')
tShowBox('close')
})
$('#textarea,#cw-text').focusout(function (e) {
localStorage.setItem('nohide', true)

View File

@@ -5,26 +5,31 @@ var envView = new Vue({
methods: {
complete: function(i, val) {
var ls = envView.config[i]
let header = ls.text.head
if (!ls.data) {
ls = [ls]
} else {
ls = ls.data
}
console.log(ls)
for (var j = 0; j < ls.length; j++) {
M.toast({ html: 'Complete', displayLength: 3000 })
var id = ls[j].id
var val = $('#' + id).val()
localStorage.setItem(ls[j].storage, val)
var lsi = ls[j]
if (!val || j > 0) val = lsi.setValue
localStorage.setItem(lsi.storage, val)
}
if (ls == 'ha') {
if (ls[0].id == 'ha') {
hardwareAcceleration(val)
}
if (ls == 'ua_setting') {
if (ls[0].id == 'webview') {
postMessage(['webviewSetting', val], '*')
}
if (ls[0].id == 'ua_setting') {
useragent(val)
}
if (ls == 'frame') {
if (ls[0].id == 'frame') {
frameSet(val)
}
M.toast({ html: `Updated: ${header}`, displayLength: 3000 })
return true
},
},
@@ -35,6 +40,7 @@ var tlView = new Vue({
methods: {
complete: function(i, val) {
var ls = tlView.config[i]
let header = ls.text.head
if (val) {
localStorage.setItem(ls.storage, val)
} else {
@@ -44,12 +50,12 @@ var tlView = new Vue({
ls = ls.data
}
for (var j = 0; j < ls.length; j++) {
M.toast({ html: 'Complete', displayLength: 3000 })
var id = ls[j].id
var val = $('#' + id).val()
localStorage.setItem(ls[j].storage, val)
}
}
M.toast({ html: `Updated: ${header}`, displayLength: 3000 })
return true
},
},
@@ -64,6 +70,7 @@ var postView = new Vue({
methods: {
complete: function(i, val) {
var ls = postView.config[i]
let header = ls.text.head
if (val) {
localStorage.setItem(ls.storage, val)
} else {
@@ -79,6 +86,7 @@ var postView = new Vue({
localStorage.setItem(ls[j].storage, val)
}
}
M.toast({ html: `Updated: ${header}`, displayLength: 3000 })
return true
},
},
@@ -179,6 +187,7 @@ function load() {
//$("#log").val(localStorage.getItem("errors"))
$('#lastFmUser').val(localStorage.getItem('lastFmUser'))
}
function customVol() {
var cvol = $('#soundvol').val()
$('#soundVolVal').text(cvol)
@@ -235,6 +244,7 @@ function climute() {
})
}
}
function cliMuteDel(key) {
var cli = localStorage.getItem('client_mute')
var obj = JSON.parse(cli)
@@ -254,6 +264,7 @@ function wordmute() {
data: obj,
})
}
function wordmuteSave() {
var word = M.Chips.getInstance($('#wordmute')).chipsData
var json = JSON.stringify(word)
@@ -270,11 +281,13 @@ function wordemp() {
data: obj,
})
}
function wordempSave() {
var word = M.Chips.getInstance($('#wordemp')).chipsData
var json = JSON.stringify(word)
localStorage.setItem('word_emp', json)
}
function notftest() {
var os = localStorage.getItem('platform')
var options = {
@@ -283,11 +296,13 @@ function notftest() {
}
var n = new Notification('TheDesk' + lang.lang_setting_notftest, options)
}
function oks(no) {
var txt = $('#oks-' + no).val()
localStorage.setItem('oks-' + no, txt)
M.toast({ html: lang.lang_setting_ksref, displayLength: 3000 })
}
function oksload() {
if (localStorage.getItem('oks-1')) {
$('#oks-1').val(localStorage.getItem('oks-1'))
@@ -299,20 +314,21 @@ function oksload() {
$('#oks-3').val(localStorage.getItem('oks-3'))
}
}
function changeLang() {
const lang = $('#langsel-sel').val()
console.log(lang)
if (lang) postMessage(['lang', lang], '*')
}
function exportSettings() {
var exp = exportSettingsCore()
$('#imp-exp').val(JSON5.stringify(exp))
Swal.fire({
title: lang.lang_setting_exportwarn,
title: 'Warning',
text: lang.lang_setting_exportwarn,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no,
}).then((result) => {
@@ -321,6 +337,7 @@ function exportSettings() {
}
})
}
function exportSettingsCore() {
var exp = {}
//Accounts
@@ -386,25 +403,26 @@ function exportSettingsCore() {
exp.meta.platform = localStorage.getItem('platform')
return exp
}
function importSettings() {
if ($('#imp-exp').val()) {
importSettingsCore(JSON5.parse($('#imp-exp').val()))
return false
}
Swal.fire({
title: lang.lang_setting_importwarn,
title: 'Warning',
text: lang.lang_setting_importwarn,
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no,
}).then((result) => {
if (result.value) {
if ($('#imp-exp').val()) {
importSettingsCore(JSON5.parse($('#imp-exp').val()))
return false
}
postMessage(['importSettings', ''], '*')
}
})
}
function importSettingsCore(obj) {
if (obj) {
localStorage.clear()
@@ -498,13 +516,20 @@ function importSettingsCore(obj) {
})
}
}
function savefolder() {
postMessage(['sendSinmpleIpc', 'savefolder'], '*')
}
function font() {
if ($('#fonts').hasClass('hide')) {
postMessage(['sendSinmpleIpc', 'fonts'], '*')
$('#fonts').removeClass('hide')
} else {
$('#fonts').addClass('hide')
}
}
function fontList(arg) {
$('#fonts').removeClass('hide')
for (var i = 0; i < arg.length; i++) {
@@ -512,16 +537,14 @@ function fontList(arg) {
$('#fonts').append('<div class="font pointer" style="font-family:' + font + '" onclick="insertFont(\'' + font + '\')">' + font + '</div>')
}
}
function insertFont(name) {
$('#fonts').addClass('hide')
$('#font').val(name)
}
function copyColor(from, to) {
let props = [
'background', 'subcolor', 'text', 'accent',
'modal', 'modalFooter', 'third', 'forth',
'bottom', 'emphasized', 'postbox', 'active',
'selected', 'selectedWithShared'
]
let props = ['background', 'subcolor', 'text', 'accent', 'modal', 'modalFooter', 'third', 'forth', 'bottom', 'emphasized', 'postbox', 'active', 'selected', 'selectedWithShared']
let i = 0
let color
for (tag of props) {
@@ -549,9 +572,10 @@ function copyColor(from, to) {
i++
}
}
function customComp() {
function customComp(preview) {
var nameC = $('#custom_name').val()
if (!nameC) {
if (!nameC && !preview) {
return false
}
var descC = $('#custom_desc').val()
@@ -560,11 +584,7 @@ function customComp() {
var textC = $('#color-picker1_value').val()
var accentC = $('#color-picker3_value').val()
var multi = localStorage.getItem('multi')
let advanced = [
'modal', 'modalFooter', 'third', 'forth',
'bottom', 'emphasized', 'postbox', 'active',
'selected', 'selectedWithShared'
]
let advanced = ['modal', 'modalFooter', 'third', 'forth', 'bottom', 'emphasized', 'postbox', 'active', 'selected', 'selectedWithShared']
var advanceTheme = {}
let i = 4
for (tag of advanced) {
@@ -577,13 +597,11 @@ function customComp() {
var my = JSON.parse(multi)[0].name
var id = $('#custom-edit-sel').val()
const defaults = [
'black', 'blue', 'brown', 'green', 'indigo', 'polar', 'snow', 'white'
]
const defaults = ['black', 'blue', 'brown', 'green', 'indigo', 'polar', 'snow', 'white']
if (id == 'add_new' || defaults.includes(id)) {
id = makeCID()
}
localStorage.setItem('customtheme-id', id)
if (!preview) localStorage.setItem('customtheme-id', id)
var json = {
name: nameC,
author: my,
@@ -593,46 +611,26 @@ function customComp() {
background: bgC,
subcolor: subcolorC,
text: textC,
accent: accentC
accent: accentC,
},
advanced: advanceTheme,
id: id,
version: '2'
version: '2',
}
$('#custom_json').val(JSON.stringify(json))
let timerInterval
Swal.fire({
title: 'Saving...',
html: '',
timer: 1000,
timerProgressBar: true,
onBeforeOpen: () => {
Swal.showLoading()
},
onClose: () => {
clearInterval(timerInterval)
}
}).then((result) => {
themes()
ctLoad()
Swal.fire({
title: 'Refreshing...',
html: '',
timer: 1000,
timerProgressBar: true,
onBeforeOpen: () => {
Swal.showLoading()
},
onClose: () => {
clearInterval(timerInterval)
}
}).then((result) => {
if (preview) {
postMessage(['themeCSSPreview', json], '*')
} else {
$('#custom-edit-sel').val(id)
$('select').formSelect()
})
Swal.fire({
type: 'success',
title: 'Saved',
})
postMessage(['themeJsonCreate', JSON.stringify(json)], '*')
}
}
function deleteIt() {
var id = $('#custom-sel-sel').val()
$('#custom_name').val('')
@@ -645,9 +643,11 @@ function deleteIt() {
}
postMessage(['themeJsonDelete', id + '.thedesktheme'], '*')
}
function ctLoad() {
postMessage(['sendSinmpleIpc', 'theme-json-list'], '*')
}
function ctLoadCore(args) {
var template = ''
var editTemplate = ''
@@ -698,16 +698,11 @@ function customConnect(raw) {
$('#color-picker2_value').val(args.primary.subcolor)
//Accent
$('#color-picker3_value').val(args.primary.accent)
let advanced = [
'modal', 'modalFooter', 'third', 'forth',
'bottom', 'emphasized', 'postbox', 'active',
'selected', 'selectedWithShared'
]
let advanced = ['modal', 'modalFooter', 'third', 'forth', 'bottom', 'emphasized', 'postbox', 'active', 'selected', 'selectedWithShared']
let i = 4
for (tag of advanced) {
if (args.advanced[tag]) {
$(`#color-picker${i}_value`).val(args.advanced[tag])
}
$(`#use-color_${i}`).prop('checked', true)
i++
@@ -753,7 +748,7 @@ function customSoundSave(key, file) {
}
function pluginLoad() {
$('#plugin-edit-sel').val('add_new')
$(".plugin_delete").addClass('disabled')
$('.plugin_delete').addClass('disabled')
var template = ''
var pgns = localStorage.getItem('plugins')
var args = JSON.parse(pgns ? pgns : '[]')
@@ -771,9 +766,9 @@ function pluginEdit() {
$('#plugin').attr('data-id', id)
if (id == 'add_new') {
editor.setValue('', -1)
$(".plugin_delete").addClass('disabled')
$('.plugin_delete').addClass('disabled')
} else {
$(".plugin_delete").removeClass('disabled')
$('.plugin_delete').removeClass('disabled')
var pgns = localStorage.getItem('plugins')
var args = JSON.parse(pgns ? pgns : '[]')
Object.keys(args).forEach(function (key) {
@@ -793,7 +788,8 @@ function completePlugin(comp) {
if (!meta.data) {
Swal.fire({
icon: 'error',
title: `error on line ${meta.location.start.line}`,
title: 'Syntax Error',
text: `error on line ${meta.location.start.line}`,
text: meta,
})
return false
@@ -801,7 +797,7 @@ function completePlugin(comp) {
if (!meta.data.name || !meta.data.version || !meta.data.event || !meta.data.author) {
Swal.fire({
icon: 'error',
title: 'error',
title: 'Meta data error',
title: 'Syntax Error of META DATA',
})
return false
@@ -810,7 +806,7 @@ function completePlugin(comp) {
id = makeCID()
args.push({
id: id,
content: inputPlugin
content: inputPlugin,
})
} else {
Object.keys(args).forEach(function (key) {
@@ -832,7 +828,8 @@ function testExecTrg() {
if (meta.location) {
Swal.fire({
icon: 'error',
title: `error on line ${meta.location.start.line}`,
title: 'Error',
text: `error on line ${meta.location.start.line}`,
text: meta,
})
return false
@@ -843,7 +840,7 @@ async function deletePlugin() {
const alert = await Swal.fire({
title: 'delete',
icon: 'warning',
showCancelButton: true
showCancelButton: true,
})
if (!alert) return false
editor.setValue('', -1)
@@ -920,13 +917,13 @@ function checkupd() {
if (newest == ver) {
Swal.fire({
type: 'info',
title: lang.lang_setting_noupd,
text: lang.lang_setting_noupd,
html: ver,
})
} else if (ver.indexOf('beta') != -1 || winstore) {
Swal.fire({
type: 'info',
title: lang.lang_setting_thisisbeta,
text: lang.lang_setting_thisisbeta,
html: ver,
})
} else {
@@ -945,4 +942,6 @@ function lastFmSet() {
M.toast({ html: 'Complete: last.fm', displayLength: 3000 })
}
function stopVideo() { return false }
function stopVideo() {
return false
}

View File

@@ -166,7 +166,7 @@ function nowplaying(mode) {
} else {
Swal.fire({
type: 'info',
title: lang.lang_spotify_acct,
text: lang.lang_spotify_acct,
})
}
} else if (mode == 'itunes') {
@@ -239,7 +239,7 @@ function nowplaying(mode) {
} else {
Swal.fire({
type: 'info',
title: lang.lang_spotify_acct,
text: lang.lang_spotify_acct,
})
}
}

View File

@@ -117,7 +117,7 @@ function trendTagonTip() {
Object.keys(json).forEach(function(tag) {
tags =
tags +
`<a onclick="tagShow('${tag}')" class="pointer">
`<a onclick="tagShow('${tag}', this)" class="pointer">
#${escapeHTML(tag)}
</a>
<span class="hide" data-tag="${tag}" data-regTag="${tag.toLowerCase()}"> 
@@ -226,7 +226,7 @@ function spotifytips() {
} else {
Swal.fire({
type: 'info',
title: lang.lang_spotify_acct
text: lang.lang_spotify_acct
})
tips('ver')
return false

View File

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

View File

@@ -14,12 +14,12 @@ const dl = require('./main/dl.js')
const img = require('./main/img.js')
const np = require('./main/np.js')
const systemFunc = require('./main/system.js')
const Menu = electron.Menu
const { Menu, MenuItem, BrowserWindow, ipcMain } = electron
const join = require('path').join
// ウィンドウを作成するモジュール
const BrowserWindow = electron.BrowserWindow
// メインウィンドウはGCされないようにグローバル宣言
let mainWindow
let opening = true
// アプリが多重起動しないようにする
const gotTheLock = app.requestSingleInstanceLock()
@@ -27,9 +27,12 @@ const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) {
app.quit()
} else {
app.on('second-instance', () => {
// 多重起動を試みた場合、既に存在するウィンドウにフォーカスを移す
// Someone tried to run a second instance, we should focus our window.
app.on('second-instance', (event, commandLine, workingDirector) => {
opening = false
const m = commandLine[2].match(/([a-zA-Z0-9]+)\/\?[a-zA-Z-0-9]+=(.+)/)
if (m) {
mainWindow.send('customUrl', [m[1], m[2]])
}
if (mainWindow) {
if (mainWindow.isMinimized()) mainWindow.restore()
mainWindow.focus()
@@ -89,12 +92,13 @@ function createWindow() {
const data = JSON.parse(package)
const version = data.version
const codename = data.codename
var openingWindow = new BrowserWindow({
const openingWindow = new BrowserWindow({
width: 300,
height: 400,
transparent: false,
frame: false,
resizable: false,
show: opening
})
openingWindow.loadURL(`${__dirname}/opening.html?ver=${version}&codename=${codename}&maxim=${encodeURI(show)}`)
@@ -123,6 +127,7 @@ function createWindow() {
var info_path = join(app.getPath('userData'), 'window-size.json')
var max_info_path = join(app.getPath('userData'), 'max-window-size.json')
var ha_path = join(app.getPath('userData'), 'hardwareAcceleration')
var wv_path = join(app.getPath('userData'), 'webview')
var ua_path = join(app.getPath('userData'), 'useragent')
try {
fs.readFileSync(ha_path, 'utf8')
@@ -131,6 +136,8 @@ function createWindow() {
} catch {
if (!packaged) console.log('enabled: Hardware Acceleration')
}
let webviewEnabled = false
if (fs.existsSync(wv_path, 'utf8')) webviewEnabled = true
var window_size
try {
window_size = JSON.parse(fs.readFileSync(info_path, 'utf8'))
@@ -156,7 +163,7 @@ function createWindow() {
var bit = process.arch
var arg = {
webPreferences: {
webviewTag: true,
webviewTag: webviewEnabled,
nodeIntegration: false,
contextIsolation: true,
spellcheck: false,
@@ -226,7 +233,7 @@ function createWindow() {
}
// ウィンドウが閉じられたらアプリも終了
mainWindow.on('closed', function () {
electron.ipcMain.removeAllListeners()
ipcMain.removeAllListeners()
mainWindow = null
})
closeArg = false
@@ -236,7 +243,7 @@ function createWindow() {
e.preventDefault()
}
const promise = new Promise(function (resolve) {
mainWindow.webContents.send('asReadEnd', '')
mainWindow.send('asReadEnd', '')
let wait = 3000
const url = mainWindow.webContents.getURL()
if (!url.match(/index.html/)) wait = 0
@@ -249,7 +256,7 @@ function createWindow() {
mainWindow.close()
})
})
electron.ipcMain.on('sendMarkersComplete', function (e, arg) {
ipcMain.on('sendMarkersComplete', function (e, arg) {
closeArg = true
mainWindow.close()
})
@@ -283,7 +290,7 @@ function createWindow() {
})
mainWindow.on('minimize', function () {
writePos(mainWindow)
mainWindow.webContents.send('asRead', '')
mainWindow.send('asRead', '')
})
var platform = process.platform
@@ -319,7 +326,7 @@ function mouseTrack(mainWindow) {
if (unchanged > 60 && !locked) {
unchanged = 0
locked = true
mainWindow.webContents.send('asRead', '')
mainWindow.send('asRead', '')
}
}
x = xNow

View File

@@ -10,7 +10,7 @@ function css(mainWindow) {
ipc.on('custom-css-create', function (e, arg) {
fs.writeFileSync(customcss, arg);
e.sender.webContents.send('custom-css-create-complete', "");
e.sender.send('custom-css-create-complete', "");
})
ipc.on('custom-css-request', function (e, arg) {
try {
@@ -18,16 +18,16 @@ function css(mainWindow) {
} catch (e) {
var css = "";
}
e.sender.webContents.send('custom-css-response', css);
e.sender.send('custom-css-response', css);
})
ipc.on('theme-json-create', function (e, arg) {
var themecss = join(app.getPath("userData"), JSON5.parse(arg)["id"] +
".thedesktheme");
fs.writeFileSync(themecss, JSON5.stringify(JSON5.parse(arg)));
if (JSON5.parse(arg)["id"]) {
e.sender.webContents.send('theme-json-create-complete', "");
e.sender.send('theme-json-create-complete', "");
} else {
e.sender.webContents.send('theme-json-create-complete', "error");
e.sender.send('theme-json-create-complete', "error");
}
})
ipc.on('theme-json-delete', function (e, arg) {
@@ -35,10 +35,10 @@ function css(mainWindow) {
var themecss = join(app.getPath("userData"), arg);
console.log(themecss);
fs.unlink(themecss, function (err) {
e.sender.webContents.send('theme-json-delete-complete', "");
e.sender.send('theme-json-delete-complete', "");
});
} catch {
e.sender.webContents.send('theme-json-delete-complete', 'cannot delete');
e.sender.send('theme-json-delete-complete', 'cannot delete');
}
})
@@ -52,16 +52,20 @@ function css(mainWindow) {
var raw = fs.readFileSync(themecss, 'utf8')
var json = JSON5.parse(raw)
}
e.sender.webContents.send('theme-json-response', [json, raw]);
e.sender.send('theme-json-response', [json, raw]);
})
ipc.on('theme-css-request', function (e, arg) {
ipc.on('theme-css-request', function (e, args) {
if (args[0] === 'themeCSSPreview') {
var json = args[1]
} else {
try {
var themecss = join(app.getAppPath(), '/source/themes', arg)
var themecss = join(app.getAppPath(), '/source/themes', args[1])
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'))
} catch {
var themecss = join(app.getPath("userData"), arg)
var themecss = join(app.getPath("userData"), args[1])
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'))
}
}
try {
var css
@@ -149,7 +153,7 @@ function css(mainWindow) {
} else {
var css = compatibleTheme(json)
}
e.sender.webContents.send('theme-css-response', css);
e.sender.send('theme-css-response', css);
} catch (e) {
var css = "";
}
@@ -270,7 +274,7 @@ function css(mainWindow) {
default: false
})
}
e.sender.webContents.send('theme-json-list-response', themes);
e.sender.send('theme-json-list-response', themes);
})
}
exports.css = css;

View File

@@ -41,19 +41,19 @@ function dl(mainWindow, lang_path, base, dirname) {
//アプデDL
ipc.on('download-btn', async (e, args) => {
function dl(url, file, dir, e) {
e.sender.webContents.send('mess', 'Start...')
e.sender.send('mess', 'Start...')
const opts = {
directory: dir,
filename: file,
openFolderWhenDone: true,
onProgress: function(event) {
e.sender.webContents.send('prog', [event, args[2]])
e.sender.send('prog', [event, args[2]])
},
saveAs: false
}
download(updatewin, url, opts)
.then(dl => {
e.sender.webContents.send('mess', 'ダウンロードが完了しました。')
e.sender.send('mess', 'ダウンロードが完了しました。')
app.quit()
})
.catch(console.error)
@@ -111,7 +111,7 @@ function dl(mainWindow, lang_path, base, dirname) {
filename: name,
openFolderWhenDone: false,
onProgress: function(e) {
event.sender.webContents.send('general-dl-prog', e)
event.sender.send('general-dl-prog', e)
},
saveAs: false
}
@@ -126,7 +126,7 @@ function dl(mainWindow, lang_path, base, dirname) {
} else {
var name = dir
}
event.sender.webContents.send('general-dl-message', name)
event.sender.send('general-dl-message', name)
})
.catch(console.error)
})

View File

@@ -26,14 +26,14 @@ function img(mainWindow, dir) {
for (var i = 0; i < fileNames.length; i++) {
var path = fileNames[i]
var bin = fs.readFileSync(path, 'base64')
e.sender.webContents.send('resizeJudgement', [bin, 'new'])
e.sender.send('resizeJudgement', [bin, 'new'])
}
})
ipc.on('bmp-image', (e, args) => {
Jimp.read(args[0], function (err, lenna) {
if (err) throw err
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1]])
e.sender.send('bmp-img-comp', [src, args[1]])
})
})
})
@@ -49,7 +49,7 @@ function img(mainWindow, dir) {
Jimp.read(decodedFile, function (err, lenna) {
if (err) throw err
lenna.scaleToFit(args[1], args[1]).getBase64(Jimp[use], function (err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1]])
e.sender.send('bmp-img-comp', [src, args[1]])
})
})
})
@@ -71,12 +71,12 @@ function img(mainWindow, dir) {
var ave = (color.r + color.g + color.b) / 3
if (ave > 128) {
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function (err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1], true])
e.sender.send('bmp-img-comp', [src, args[1], true])
})
} else {
Jimp.loadFont(Jimp.FONT_SANS_16_WHITE).then((font) => {
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function (err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1], true])
e.sender.send('bmp-img-comp', [src, args[1], true])
})
})
}

View File

@@ -4,10 +4,8 @@ function templete(lang, mainWindow, packaged, dir, dirname) {
if (lang != "ja" && lang != "en") {
lang = "en"
}
const electron = require("electron");
const ipc = electron.ipcMain;
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
const electron = require("electron")
const { Menu, MenuItem, ipcMain, BrowserWindow, app } = electron
const join = require('path').join;
const dict = {
"application": {
@@ -84,7 +82,7 @@ function templete(lang, mainWindow, packaged, dir, dirname) {
{
label: 'Toggle Developer Tools',
accelerator: 'Alt+Command+I',
click: function () { if (!packaged) { mainWindow.toggleDevTools(); } }
click: function () { mainWindow.toggleDevTools(); }
},
{
label: dict.reload[lang],
@@ -150,6 +148,28 @@ function templete(lang, mainWindow, packaged, dir, dirname) {
]
}
];
// コピペメニュー
const ctxMenu = new Menu()
ctxMenu.append(new MenuItem({
label: dict.cut[lang],
role: 'cut',
click: () => { console.log('Cut clicked!') }
}))
ctxMenu.append(new MenuItem({
label: dict.copy[lang],
role: 'copy',
click: () => { console.log('Copy clicked!') }
}))
ctxMenu.append(new MenuItem({
label: dict.paste[lang],
role: 'paste',
click: () => { console.log('Paste clicked!') }
}))
ipcMain.on('textareaContextMenu', function (e, params) {
ctxMenu.popup(mainWindow, params.x, params.y)
})
return menu;
}

View File

@@ -16,7 +16,7 @@ function np(mainWindow) {
title: title,
anynp: true
}
e.sender.webContents.send('itunes-np', ret)
e.sender.send('itunes-np', ret)
} else {
try {
@@ -27,16 +27,16 @@ function np(mainWindow) {
if(artwork) {
const base64 = artwork.toString('base64')
value.artwork = base64
e.sender.webContents.send('itunes-np', value)
e.sender.send('itunes-np', value)
}
} catch (error) {
console.error(error)
e.sender.webContents.send('itunes-np', value)
e.sender.send('itunes-np', value)
}
} catch (error) {
console.error(error)
e.sender.webContents.send('itunes-np', error)
e.sender.send('itunes-np', error)
}
}
})

Binary file not shown.

View File

@@ -9,6 +9,7 @@ function system(mainWindow, dir, lang, dirname) {
const clipboard = electron.clipboard
var tmp_img = join(app.getPath('userData'), 'tmp.png')
var ha_path = join(app.getPath('userData'), 'hardwareAcceleration')
var wv_path = join(app.getPath('userData'), 'webview')
var ua_path = join(app.getPath('userData'), 'useragent')
var lang_path = join(app.getPath('userData'), 'language')
var log_dir_path = join(app.getPath('userData'), 'logs')
@@ -35,13 +36,13 @@ function system(mainWindow, dir, lang, dirname) {
} catch {
var gitHash = null
}
e.sender.webContents.send('platform', [process.platform, process.arch, process.version, process.versions.chrome, process.versions.electron, gitHash])
e.sender.send('platform', [process.platform, process.arch, process.version, process.versions.chrome, process.versions.electron, gitHash])
})
//言語
ipc.on('lang', function (e, arg) {
console.log('set:' + arg)
fs.writeFileSync(lang_path, arg)
e.sender.webContents.send('langres', arg)
e.sender.send('langres', arg)
})
//エクスポートのダイアログ
ipc.on('exportSettings', function (e, args) {
@@ -53,7 +54,7 @@ function system(mainWindow, dir, lang, dirname) {
if (!savedFiles) {
return false
}
e.sender.webContents.send('exportSettingsFile', savedFiles)
e.sender.send('exportSettingsFile', savedFiles)
})
//インポートのダイアログ
ipc.on('importSettings', function (e, args) {
@@ -66,7 +67,7 @@ function system(mainWindow, dir, lang, dirname) {
if (!fileNames) {
return false
}
e.sender.webContents.send('config', JSON5.parse(fs.readFileSync(fileNames[0], 'utf8')))
e.sender.send('config', JSON5.parse(fs.readFileSync(fileNames[0], 'utf8')))
})
//保存フォルダのダイアログ
ipc.on('savefolder', function (e, args) {
@@ -77,7 +78,7 @@ function system(mainWindow, dir, lang, dirname) {
properties: ['openDirectory'],
}
)
e.sender.webContents.send('savefolder', fileNames[0])
e.sender.send('savefolder', fileNames[0])
})
//カスタムサウンドのダイアログ
ipc.on('customSound', function (e, arg) {
@@ -92,7 +93,7 @@ function system(mainWindow, dir, lang, dirname) {
],
}
)
e.sender.webContents.send('customSoundRender', [arg, fileNames[0]])
e.sender.send('customSoundRender', [arg, fileNames[0]])
})
//ハードウェアアクセラレーションの無効化
@@ -105,6 +106,15 @@ function system(mainWindow, dir, lang, dirname) {
app.relaunch()
app.exit()
})
ipc.on('webview', function (e, arg) {
if (arg == 'true') {
fs.writeFileSync(wv_path, arg)
} else {
fs.unlink(wv_path, function (err) { })
}
app.relaunch()
app.exit()
})
//ユーザーエージェント
ipc.on('ua', function (e, arg) {
if (arg == '') {
@@ -124,7 +134,7 @@ function system(mainWindow, dir, lang, dirname) {
//スクリーンリーダー
ipc.on('acsCheck', function (e, arg) {
if (app.accessibilitySupportEnabled) {
mainWindow.webContents.send('accessibility', 'true')
mainWindow.send('accessibility', 'true')
}
})
ipc.on('quit', (e, args) => {
@@ -188,8 +198,8 @@ function system(mainWindow, dir, lang, dirname) {
})
function mems() {
var mem = os.totalmem() - os.freemem()
if (mainWindow && event.webContents) {
event.webContents.send('memory', [mem, os.cpus()[0].model, os.totalmem(), os.cpus().length, os.uptime()])
if (mainWindow && event) {
event.send('memory', [mem, os.cpus()[0].model, os.totalmem(), os.cpus().length, os.uptime()])
}
}
ipc.on('endmem', (e, arg) => {
@@ -200,7 +210,7 @@ function system(mainWindow, dir, lang, dirname) {
ipc.on('export', (e, args) => {
fs.writeFileSync(args[0], JSON5.stringify(args[1]))
e.sender.webContents.send('exportAllComplete', '')
e.sender.send('exportAllComplete', '')
})
//フォント
function object_array_sort(data, key, order, fn) {
@@ -239,7 +249,7 @@ function system(mainWindow, dir, lang, dirname) {
var SystemFonts = require('system-font-families').default
var fm = new SystemFonts()
const fontList = fm.getFontsSync()
e.sender.webContents.send('font-list', fontList)
e.sender.send('font-list', fontList)
})
//コピー
ipc.on('copy', (e, arg) => {
@@ -276,7 +286,7 @@ function system(mainWindow, dir, lang, dirname) {
logs = todayLog + yestLog + yest2Log
})
logs = yest2Log + yestLog + todayLog
e.sender.webContents.send('logData', logs)
e.sender.send('logData', logs)
})
})
@@ -299,5 +309,28 @@ function system(mainWindow, dir, lang, dirname) {
})
}
})
ipc.on('twitterLogin', (e, args) => {
const window = new BrowserWindow({
webPreferences: {
webviewTag: false,
nodeIntegration: false,
contextIsolation: true,
preload: join(dirname, 'js', 'platform', 'preload.js'),
},
width: 414,
height: 736,
})
const login = `https://mobile.twitter.com/login?hide_message=true&redirect_after_login=https%3A%2F%2Ftweetdeck.twitter.com%2F%3Fvia_twitter_login%3Dtrue`
const logout = `https://mobile.twitter.com/logout?redirect_after_logout=https%3A%2F%2Ftweetdeck.twitter.com%2F`
window.loadURL(args ? logout : login)
window.webContents.on('did-navigate', () => {
const url = window.webContents.getURL()
if (url.match("https://tweetdeck.twitter.com")) {
window.close()
e.sender.send('twitterLoginComplete', '')
}
})
})
}
exports.system = system

View File

@@ -1,26 +1,24 @@
{
"name": "thedesk",
"version": "22.1.1",
"version": "22.3.0",
"codename": "Koume",
"description": "TheDesk is a Mastodon client for PC.",
"repository": "https://github.com/cutls/TheDesk",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"construct": "cd view/make && node make --automatic && cd ../../ && browserify aiscript.js -o js/platform/aiscript.js",
"construct:store": "cd view/make && node make --automatic --store && cd ../../ && browserify aiscript.js -o js/platform/aiscript.js",
"dev": "npx electron ./ --dev",
"dist": "build --linux snap",
"watchview": "node view/make/make.js --automatic --watch",
"build:js": "node build.js",
"build": "node view/make/make.js --automatic && npx electron-builder",
"build:pwa": "node view/make/make.js --automatic --pwa",
"build:win:web": "node view/make/make.js --automatic && npx electron-builder --win",
"build:win:msstore": "node view/make/make.js --automatic --store && npx electron-builder --win appx",
"build:linux:web": "node view/make/make.js --automatic && npx electron-builder --linux",
"build:linux:snapstore": "node view/make/make.js --automatic --store && npx electron-builder --linux",
"build:mac:web": "node view/make/make.js --automatic && npx electron-builder --mac",
"build:mac:homebrew": "node view/make/make.js --automatic --store && npx electron-builder --mac",
"postinstall": "run-s util:*",
"util:hash": "node gitHash.js",
"util:browserify": "browserify aiscript.js -o js/platform/aiscript.js",
"construct": "node view/make/makeCli.js",
"construct:store": "node view/make/makeCli.js --store",
"dev": "run-p dev:*",
"dev:run": "electron ./ --dev",
"dev:watchview": "node view/make/makeCli.js --watch",
"build": "node buildCli.js",
"build:pwa": "node view/make/makeCli.js --pwa",
"build:all:x64": "node buildCli.js --withStore",
"build:all": "node buildCli.js --withStore --withIa32 --withArm64",
"lint:fix": "eslint js --fix",
"lint": "eslint js"
},
@@ -40,8 +38,7 @@
"url": "https://cutls.dev",
"email": "p@cutls.com"
},
"contributor": [
{
"contributor": [{
"name": "とねぢ",
"url": "https://minohdon.jp/@toneji",
"email": "solfa.tono@gmail.com"
@@ -59,85 +56,37 @@
],
"license": "GPL-3.0",
"dependencies": {
"@fortawesome/fontawesome-free": "^5.15.2",
"@fortawesome/fontawesome-free": "^5.15.3",
"@syuilo/aiscript": "^0.11.1",
"electron-dl": "^3.2.1",
"itunes-nowplaying-mac": "https://github.com/cutls/itunes-nowplaying-mac/releases/download/v0.4.0/itunes-nowplaying-mac-0.4.0.tgz",
"jimp": "^0.16.1",
"jquery": "^3.6.0",
"jquery-ui-dist": "^1.12.1",
"json5": "^2.2.0",
"lodash": "^4.17.21",
"materialize-css": "git://github.com/cutls/materialize#v1-dev",
"sanitize-html": "^2.3.2",
"sanitize-html": "^2.4.0",
"sumchecker": "^3.0.1",
"sweetalert2": "^10.15.7",
"sweetalert2": "^11.0.17",
"system-font-families": "^0.4.1",
"vue": "^2.6.12"
},
"optionalDependencies": {
"itunes-nowplaying-mac": "0.3.1"
"textarea-caret": "^3.1.0",
"vue": "^2.6.14"
},
"devDependencies": {
"browserify": "^17.0.0",
"chokidar": "^3.5.1",
"electron": "^10.2.0",
"electron-builder": "^22.10.5",
"chokidar": "^3.5.2",
"dotenv": "^10.0.0",
"electron": "^13.1.2",
"electron-builder": "^22.11.7",
"electron-notarize": "^1.0.0",
"electron-rebuild": "^2.3.5",
"eslint": "^7.23.0",
"eslint": "^7.28.0",
"npm-run-all": "^4.1.5",
"readline-sync": "1.4.10"
},
"build": {
"productName": "TheDesk",
"appId": "top.thedesk",
"asarUnpack": [
"node_modules/itunes-nowplaying-mac",
"main/script"
],
"directories": {
"output": "../build"
},
"win": {
"icon": "build/thedesk.ico",
"target": [
"nsis",
"appx",
"portable"
]
},
"appx": {
"identityName": "53491Cutls.TheDesk",
"applicationId": "Cutls.TheDesk",
"publisherDisplayName": "Cutls",
"publisher": "CN=629757F5-A5EE-474F-9562-B304A89A9FD1",
"languages": [
"JA-JP",
"EN-US"
]
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"artifactName": "TheDesk-setup.${ext}"
},
"linux": {
"icon": "build/icons",
"target": [
"zip",
"appImage",
"snap",
"deb"
],
"category": "Network"
},
"mac": {
"target": [
"dmg",
"zip"
]
},
"electronDownload": {
"version": "9.0.5"
},
"electronVersion": "9.0.5"
"resolutions": {
"@types/fs-extra": "9.0.11",
"plist": "3.0.2"
}
}

View File

@@ -17,7 +17,7 @@
bottom: '#eeeeee',
emphasized: '#81c784',
postbox: '#fff',
active: '#009688',
active: '#66dacf',
selected: '#c0c0c0',
selectedWithShared: '#b2babd',
},

View File

@@ -11,16 +11,15 @@
<link href="../../css/userdata.css" rel="stylesheet" type="text/css" />
<link href="../../@@node_base@@/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="../../css/sweetalert2-material.css" type="text/css" rel="stylesheet">
<link href="../../css/acct.css" rel="stylesheet" type="text/css" />
<meta charset="utf-8" />
@@comment-start@@
<meta charset="utf-8" /> @@comment-start@@
<script type="text/javascript">
var _jipt = []
_jipt.push(['project', 'thedesk'])
</script>
<script type="text/javascript" src="https://cdn.crowdin.com/jipt/jipt.js"></script>
@@comment-end@@
@@pwa@@ @@store@@
@@comment-end@@ @@pwa@@ @@store@@
</head>
<body id="mainView" class="@@pwaClass@@">
@@ -28,7 +27,7 @@
<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="main.js"></script>
<script type="text/javascript" src="../../@@node_base@@/sweetalert2/dist/sweetalert2.all.min.js"></script>
<script type="text/javascript" src="../../@@node_base@@/sweetalert2/dist/sweetalert2.min.js"></script>
<script>
var misskeytoken = false
</script>
@@ -39,19 +38,28 @@
<div id="acct-list"></div>
<div class="divider"></div>
</div>
<div>
<h5>@@add@@</h5>
<div class="hide-second">
<a href="setting.html">@@haveExported@@</a>
</div>
<div>
<h5>@@add@@</h5>
<br />
<div id="add">
<div class="row">
<div class="col s8">
@@addAcct@@<br />
<input type="text" id="url" style="width:70%" placeholder="ex)mstdn.jp" />
<div id="ins-suggest"></div>
<button class="btn waves-effect" onclick="instance()">Login</button><br />
@@addAcct@@
<div class="row">
<div class="input-field col s6">
<input type="text" id="autocomplete-input" class="autocomplete" placeholder="eg) mstdn.jp">
<label for="autocomplete-input">URL</label>
</div>
<div class="col s4 loginBtnWrap">
<button class="btn waves-effect" onclick="instance()"><i
class="material-icons left">login</i>Login</button>
</div>
</div>
<div class="pwa">
@@codesetupwarn@@<br />
<label>
@@ -79,8 +87,7 @@
<div id="compt" style="display:none" class="scr">
<h5>ログイン前に必ずご確認ください</h5>
<span id="compt-instance"></span>はバージョンが<span id="compt-ver"></span>のため以下の機能がご利用いただけません。
<span id="compt-warn"
style="display:none">また、このインスタンスはMastodonではなくそのAPI上の互換実装であり、TheDeskでは利用を想定していないため非保証となります。</span>
<span id="compt-warn" style="display:none">また、このインスタンスはMastodonではなくそのAPI上の互換実装であり、TheDeskでは利用を想定していないため非保証となります。</span>
<ul id="compt-list"></ul>
</div>
</div>
@@ -107,16 +114,17 @@
Some instance data by
<a href="https://instances.social" target="_blank">instances.social API</a><br />
<h5 id="ins-title"></h5>
Administered by:<a id="ins-admin"></a><br />
Administered by:
<a id="ins-admin"></a><br />
<span id="ins-desc"></span><br />
<img src="../../img/loading.svg" id="ins-prof" width="200" /><br />
<br />
@@domain@@:<span id="ins-name"></span><br />
@@connect@@:<span id="ins-connect"></span>@@ko@@<br />
@@toots@@:<span id="ins-toot"></span>@@ko@@<br />
@@users@@:<span id="ins-user"></span>@@users@@<br />
@@safety@@:<span id="ins-per"></span>%<br />
@@ver@@:<span id="ins-ver"></span>@<span id="ins-upd"></span><br />
<br /> @@domain@@:
<span id="ins-name"></span><br /> @@connect@@:
<span id="ins-connect"></span>@@ko@@<br /> @@toots@@:
<span id="ins-toot"></span>@@ko@@<br /> @@users@@:
<span id="ins-user"></span>@@users@@<br /> @@safety@@:
<span id="ins-per"></span>%<br /> @@ver@@:
<span id="ins-ver"></span>@<span id="ins-upd"></span><br />
</div>
</div>
<script type="text/javascript" src="../../js/ui/theme.js"></script>
@@ -127,7 +135,10 @@
<script type="text/javascript" src="../../js/login/instance.js"></script>
<script type="text/javascript" src="../../js/login/manager.js"></script>
<script type="text/javascript" src="../../js/tl/date.js"></script>
<script>$('body').addClass(localStorage.getItem('platform'))</script>
<script>
$('body').addClass(localStorage.getItem('platform'))
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -74,6 +74,7 @@
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
@@ -178,6 +179,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",

View File

@@ -9,6 +9,7 @@
"default": "Default",
"change": "Change",
"select": "Select",
"exec": "Exec",
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
@@ -17,6 +18,8 @@
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"theme": "Themes",
"popup": "Popup notification",
"popupwarn": "Hide to set \"0\"",
@@ -69,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@@ -116,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",

View File

@@ -74,6 +74,7 @@
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
@@ -178,6 +179,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",

View File

@@ -9,6 +9,7 @@
"default": "Default",
"change": "Change",
"select": "Select",
"exec": "Exec",
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
@@ -17,6 +18,8 @@
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"theme": "Themes",
"popup": "Popup notification",
"popupwarn": "Hide to set \"0\"",
@@ -69,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@@ -116,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",

View File

@@ -74,6 +74,7 @@
"openBrowser": "Отваряне в браузъра",
"screenshot": "Направете снимка на екрана",
"copyURL": "Копирай URL адреса на този тоот",
"copy": "Copy",
"embed": "Закрепи",
"toots": "Тоот",
"follow": "Следвам",
@@ -178,6 +179,7 @@
"foundBug": "Намерена е грешка",
"show": "Покажи",
"directory": "Директория",
"discover": "Discover",
"active": "Наскоро активен",
"newcomer": "Новодошли",
"local_only": "Само местно",

View File

@@ -103,6 +103,7 @@
"lang_details_embed": "Вграденият HTML е изрязан.",
"lang_details_url": "URL адресът на този toot е изрязан.",
"lang_details_txt": "Съдържанието на този toot е изрязано.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "Няма данни",
"lang_filter_errordegree": "Моля, проверете контекстта",
"lang_list_nodata": "Няма данни",

View File

@@ -9,6 +9,7 @@
"default": "По подразбиране",
"change": "Промяна",
"select": "Избери",
"exec": "Exec",
"env": "Системни предпочитания",
"setlang": "Езици",
"backup": "Внос и износ на предпочитания",
@@ -17,6 +18,8 @@
"export": "Износ",
"hardwareAcceleration": "Деактивиране на хардуерното ускорение",
"hardwareAccelerationWarn": "Автоматичното рестартиране",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"theme": "Теми",
"popup": "Известие с изскачащ прозорец (за Windows)",
"popupwarn": "Скрито ако е зададено на „0“",
@@ -69,6 +72,7 @@
"desc": "Относно тази тема",
"customImport": "Импортиране на персонализирани теми",
"delete": "Изтрий",
"preview": "Preview",
"timeline": "Предпочитания за времевата линия",
"timemode": "Времеви формат",
"relativetime": "Относителен формат: „преди 1 минута“, „преди 3 дни“",
@@ -116,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Звук (Отговор)",
"favSound": "Звук(Фаворит)",
"btSound": "Звук(Подсилване)",

View File

@@ -74,6 +74,7 @@
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
@@ -178,6 +179,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",
@@ -232,6 +233,7 @@
"lang_parse_html": "Show embed HTML",
"lang_parse_notffilter": "Show this user's notifications",
"lang_parse_hidden": "Unvisible quoted toot",
"lang_parse_disconnected": "Streaming has been disconnected(retry after 3s)",
"lang_misskeyparse_renote": "Repost",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaction",

View File

@@ -9,6 +9,7 @@
"default": "Default",
"change": "Change",
"select": "Select",
"exec": "Exec",
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
@@ -17,6 +18,8 @@
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"theme": "Themes",
"popup": "Popup notification",
"popupwarn": "Hide to set \"0\"",
@@ -69,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@@ -116,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",

View File

@@ -74,6 +74,7 @@
"openBrowser": "Otevřít v prohlížeči",
"screenshot": "Vytvořit snímek obrazovky",
"copyURL": "Kopírovat URL tohoto tootu",
"copy": "Copy",
"embed": "Vložit",
"toots": "Tooty",
"follow": "Sledovat",
@@ -178,6 +179,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@@ -103,6 +103,7 @@
"lang_details_embed": "HTML pro vložení je zkopírován.",
"lang_details_url": "URL adresa tohoto tootu je zkopírována.",
"lang_details_txt": "Obsah tohoto tootu je zkopírován.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "Žádná data",
"lang_filter_errordegree": "Prosím zkontrolujte kontext",
"lang_list_nodata": "Žádná data",

View File

@@ -9,6 +9,7 @@
"default": "Default",
"change": "Změnit",
"select": "Vybrat",
"exec": "Exec",
"env": "Systémové předvolby",
"setlang": "Jazyky",
"backup": "Import a export předvoleb",
@@ -17,6 +18,8 @@
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"theme": "Motivy",
"popup": "Popupová oznámení (na Windows)",
"popupwarn": "Hide to set \"0\"",
@@ -69,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Časový formát",
"relativetime": "Relativní formát: „před 1 minutou“, „před 3 dny“",
@@ -116,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",

View File

@@ -74,6 +74,7 @@
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
@@ -178,6 +179,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",

View File

@@ -9,6 +9,7 @@
"default": "Default",
"change": "Change",
"select": "Select",
"exec": "Exec",
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
@@ -17,6 +18,8 @@
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"theme": "Themes",
"popup": "Popup notification",
"popupwarn": "Hide to set \"0\"",
@@ -69,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@@ -116,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",

View File

@@ -1,7 +1,7 @@
{
"draghere": "Zum Hochladen hier her ziehen",
"nowOffline": "OFFLINE: all of your post is in the draft box and you should reload after re-connect to the Internet",
"reOnline": "Now we are in the Internet, you should reload...",
"reOnline": "Jetzt haben wir wieder Internet. Du solltest neuladen...",
"close": "Schließen",
"webSrc": "Suche im Internet",
"tsSrc": "Bei Tootsearch suchen",
@@ -74,6 +74,7 @@
"openBrowser": "Im Browser öffnen",
"screenshot": "Bildschirmfoto aufnehmen",
"copyURL": "URL dieses Tröts kopieren",
"copy": "Copy",
"embed": "Einbinden",
"toots": "Tröts",
"follow": "Folgen",
@@ -178,6 +179,7 @@
"foundBug": "Ich habe einen Fehler gefunden",
"show": "Zeige",
"directory": "Verzeichnis",
"discover": "Discover",
"active": "Kürzlich aktiv",
"newcomer": "Neu eingetroffen",
"local_only": "Nur lokal",

View File

@@ -103,6 +103,7 @@
"lang_details_embed": "Eingefügtes HTML wurde entfernt.",
"lang_details_url": "URL dieses Tröts wurde entfernt.",
"lang_details_txt": "Inhalt dieses Tröts wurde entfernt.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "Keine Daten",
"lang_filter_errordegree": "Bitte überprüfen Sie den Kontext",
"lang_list_nodata": "Keine Daten",

View File

@@ -9,6 +9,7 @@
"default": "Standard",
"change": "Ändern",
"select": "Auswahl",
"exec": "Exec",
"env": "Systemeinstellungen",
"setlang": "Sprachen",
"backup": "Import und Export von Einstellungen",
@@ -17,6 +18,8 @@
"export": "Exportieren",
"hardwareAcceleration": "Hardwarebeschleunigung deaktivieren",
"hardwareAccelerationWarn": "Automatischer Neustart",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"theme": "Designs",
"popup": "Popup-Benachrichtigung(unter Windows)",
"popupwarn": "Bei \"0\" Ausgeschaltet.",
@@ -69,6 +72,7 @@
"desc": "Über dieses Design",
"customImport": "Import von eigenen Designs",
"delete": "Löschen",
"preview": "Preview",
"timeline": "Verlaufseinstellungen",
"timemode": "Zeitformat",
"relativetime": "Relatives Format:\"vor 1 Minuten\",\"vor 3 Tagen\"",
@@ -116,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Ton bei Antwort",
"favSound": "Ton bei Favorit",
"btSound": "Ton bei Verstärkung",

View File

@@ -74,6 +74,7 @@
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
@@ -178,6 +179,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",

View File

@@ -9,6 +9,7 @@
"default": "Default",
"change": "Change",
"select": "Select",
"exec": "Exec",
"env": "System Preferences",
"setlang": "Languages",
"backup": "Import and export of preferences",
@@ -17,6 +18,8 @@
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"theme": "Themes",
"popup": "Popup notification",
"popupwarn": "Hide to set \"0\"",
@@ -69,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@@ -116,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",

View File

@@ -74,6 +74,7 @@
"openBrowser": "crwdns3190:0crwdne3190:0",
"screenshot": "crwdns3192:0crwdne3192:0",
"copyURL": "crwdns3194:0crwdne3194:0",
"copy": "crwdns4586:0crwdne4586:0",
"embed": "crwdns3196:0crwdne3196:0",
"toots": "crwdns3198:0crwdne3198:0",
"follow": "crwdns3200:0crwdne3200:0",
@@ -178,6 +179,7 @@
"foundBug": "crwdns4431:0crwdne4431:0",
"show": "crwdns3388:0crwdne3388:0",
"directory": "crwdns3390:0crwdne3390:0",
"discover": "crwdns4590:0crwdne4590:0",
"active": "crwdns3392:0crwdne3392:0",
"newcomer": "crwdns3394:0crwdne3394:0",
"local_only": "crwdns3396:0crwdne3396:0",

View File

@@ -103,6 +103,7 @@
"lang_details_embed": "crwdns3584:0crwdne3584:0",
"lang_details_url": "crwdns3586:0crwdne3586:0",
"lang_details_txt": "crwdns3588:0crwdne3588:0",
"lang_details_fetch": "crwdns4588:0crwdne4588:0",
"lang_filter_nodata": "crwdns3590:0crwdne3590:0",
"lang_filter_errordegree": "crwdns3592:0crwdne3592:0",
"lang_list_nodata": "crwdns3594:0crwdne3594:0",

View File

@@ -9,6 +9,7 @@
"default": "crwdns3918:0crwdne3918:0",
"change": "crwdns3920:0crwdne3920:0",
"select": "crwdns3922:0crwdne3922:0",
"exec": "crwdns4576:0crwdne4576:0",
"env": "crwdns3924:0crwdne3924:0",
"setlang": "crwdns3926:0crwdne3926:0",
"backup": "crwdns3928:0crwdne3928:0",
@@ -17,6 +18,8 @@
"export": "crwdns3932:0crwdne3932:0",
"hardwareAcceleration": "crwdns3934:0crwdne3934:0",
"hardwareAccelerationWarn": "crwdns3936:0crwdne3936:0",
"webview": "crwdns4578:0crwdne4578:0",
"webviewWarn": "crwdns4580:0crwdne4580:0",
"theme": "crwdns3938:0crwdne3938:0",
"popup": "crwdns3940:0crwdne3940:0",
"popupwarn": "crwdns3942:0crwdne3942:0",
@@ -69,6 +72,7 @@
"desc": "crwdns3992:0crwdne3992:0",
"customImport": "crwdns3996:0crwdne3996:0",
"delete": "crwdns3998:0crwdne3998:0",
"preview": "crwdns4584:0crwdne4584:0",
"timeline": "crwdns4002:0crwdne4002:0",
"timemode": "crwdns4004:0crwdne4004:0",
"relativetime": "crwdns4006:0crwdne4006:0",
@@ -116,6 +120,7 @@
"remote_imgWarn": "crwdns4384:0crwdne4384:0",
"moreContextMode": "crwdns4572:0crwdne4572:0",
"moreContextModeWarn": "crwdns4574:0crwdne4574:0",
"smallHeader": "crwdns4582:0crwdne4582:0",
"replySound": "crwdns4088:0crwdne4088:0",
"favSound": "crwdns4090:0crwdne4090:0",
"btSound": "crwdns4092:0crwdne4092:0",

View File

@@ -74,6 +74,7 @@
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
@@ -178,6 +179,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",

View File

@@ -18,6 +18,8 @@
"export": "Export",
"hardwareAcceleration": "Disable hardware acceleration",
"hardwareAccelerationWarn": "Auto restarted",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"theme": "Themes",
"popup": "Popup notification",
"popupwarn": "Hide to set \"0\"",
@@ -70,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@@ -117,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",

View File

@@ -74,6 +74,7 @@
"openBrowser": "Abrir en navegador web",
"screenshot": "Tomar captura de pantalla",
"copyURL": "Copiar dirección web de este toot",
"copy": "Copiar",
"embed": "Insertar",
"toots": "Toots",
"follow": "Seguir",
@@ -178,6 +179,7 @@
"foundBug": "Encontré un error",
"show": "Mostrar",
"directory": "Directorio",
"discover": "Discover",
"active": "Recientemente activo",
"newcomer": "Recién llegados",
"local_only": "Sólo local",

View File

@@ -103,6 +103,7 @@
"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_txt": "El contenido de este toot se copió al portapapeles.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "Sin datos",
"lang_filter_errordegree": "Por favor, comprobá un contexto",
"lang_list_nodata": "Sin datos",

View File

@@ -9,6 +9,7 @@
"default": "Predeterminado",
"change": "Cambiar",
"select": "Seleccionar",
"exec": "Ejec",
"env": "Configuración del sistema",
"setlang": "Idiomas",
"backup": "Importación y exportación de la configuración",
@@ -17,6 +18,8 @@
"export": "Exportar",
"hardwareAcceleration": "Deshabilitar la aceleración por hardware",
"hardwareAccelerationWarn": "Inicio automático",
"webview": "Integración de Webview",
"webviewWarn": "Para usar Integración de TweetDeck, por favor activalo. Tené en cuenta que puede reducir el nivel de seguridad.",
"theme": "Temas",
"popup": "Ventana emergente de notificaciones (en Windows)",
"popupwarn": "Establecer \"0\" para ocultar",
@@ -69,6 +72,7 @@
"desc": "Acerca de este tema",
"customImport": "Importación de temas personalizados",
"delete": "Eliminar",
"preview": "Previsualización",
"timeline": "Configuración de la línea temporal",
"timemode": "Formato del tiempo",
"relativetime": "Formato relativo: \"hace 1 minuto\", \"hace 3 días\"",
@@ -114,8 +118,9 @@
"markerswarn": "Mastodon 3.0~. Compartido en interface web y clientes de terceros soportados.",
"remote_img": "Obtener imágenes del servidor remoto",
"remote_imgWarn": "Todas las previsualizaciones se obtienen de tu servidor de caché conectado.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"moreContextMode": "Herramienta de contexto",
"moreContextModeWarn": "En detalle de la modal de toot, mostrar toots antes / después del toot en LTL, FTL, UTL",
"smallHeader": "Minimizar cabeceras de columna",
"replySound": "Sonido (respuesta)",
"favSound": "Sonido (marcado como favorito)",
"btSound": "Sonido (retoot)",

View File

@@ -74,6 +74,7 @@
"openBrowser": "Open in browser",
"screenshot": "Take a screenshot",
"copyURL": "Copy the URL",
"copy": "Copy",
"embed": "Embed",
"toots": "Toots",
"follow": "Follow",
@@ -178,6 +179,7 @@
"foundBug": "I found a bug",
"show": "Show",
"directory": "Directory",
"discover": "Discover",
"active": "Recently active",
"newcomer": "New arrivals",
"local_only": "Local only",

View File

@@ -103,6 +103,7 @@
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_details_fetch": "Fetcging toot data...",
"lang_filter_nodata": "Sin datos",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "Sin datos",

View File

@@ -9,6 +9,7 @@
"default": "Default",
"change": "Cambiar",
"select": "Seleccionar",
"exec": "Exec",
"env": "Preferencias del sistema",
"setlang": "Idiomas",
"backup": "Importación y exportación de la configuración",
@@ -17,6 +18,8 @@
"export": "Exportar",
"hardwareAcceleration": "Deshabilitar la aceleración por hardware",
"hardwareAccelerationWarn": "Reinicio automático",
"webview": "Webview Integration",
"webviewWarn": "To use TweetDeck Integration, please turn on. You should understand it may lessen security level.",
"theme": "Temas",
"popup": "Notificación emergente (en Windows)",
"popupwarn": "Ocultar para establecer \"0\"",
@@ -69,6 +72,7 @@
"desc": "About this theme",
"customImport": "Import of custom themes",
"delete": "Delete",
"preview": "Preview",
"timeline": "Timeline Preferences",
"timemode": "Time format",
"relativetime": "Relative format:\"1 minutes ago\",\"3 days ago\"",
@@ -116,6 +120,7 @@
"remote_imgWarn": "All previews are got from your loginned cache server.",
"moreContextMode": "Context Tool",
"moreContextModeWarn": "On detail of the toot modal, show toots before / after the toot on LTL, FTL, UTL",
"smallHeader": "Minimize column headers",
"replySound": "Sound(Reply)",
"favSound": "Sound(Fav)",
"btSound": "Sound(Boost)",

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