Compare commits

..

2 Commits

Author SHA1 Message Date
cutls
5db42cd9f0 fix 2020-01-05 22:42:58 +09:00
cutls
e7599a05f8 initial 2020-01-05 22:38:58 +09:00
248 changed files with 7203 additions and 11707 deletions

2
.github/FUNDING.yml vendored
View File

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

1
.gitignore vendored
View File

@@ -23,4 +23,3 @@ app/view/es-AR
app/git app/git
*.code-workspace *.code-workspace
releasenote.md releasenote.md
app/yarn-error.log

View File

@@ -15,20 +15,6 @@ before_deploy:
- cd app - cd app
- VERSION=$(cat package.json | grep version | head -1 | awk -F= "{ print $2 }" | sed 's/[version:,\",]//g' | tr -d '[[:space:]]') - 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 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 - yarn construct
- if [ "$TRAVIS_OS_NAME" = "osx" ];then electron-builder --mac -p never;else :;fi - 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 electron-builder --linux --x64 -p never;else :;fi
@@ -36,6 +22,7 @@ before_deploy:
- if [ "$TRAVIS_OS_NAME" = "linux" ];then ls;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 mv thedesk-*.zip thedesk.zip;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../app;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 --ia32 -p never;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 cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then ls;else :;fi - if [ "$TRAVIS_OS_NAME" = "windows" ];then ls;else :;fi

View File

@@ -11,10 +11,7 @@
Mastodon/Misskey client for PC(Windows/Linux/macOS) Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント[日本語はこちら](README_ja.md) オープンソースSNSマストドン/MisskeyのPC向けクライアント[日本語はこちら](README_ja.md)
Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com) Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com)
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)
<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://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> <a href="https://liberapay.com/cutls/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
@@ -31,6 +28,7 @@ The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.o
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg) * [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg)
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico) * [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico)
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns) * [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/) The default sounds of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/)
@@ -49,6 +47,19 @@ The default sounds of notifications is provided [Creative Commons BY](https://cr
Crowdin project is available! Visit: https://translate.thedesk.top Crowdin project is available! Visit: https://translate.thedesk.top
## Requirement and development
* Electron 4.2 or above(install yourself)
* electron-dl(in package.json)
* Jimp(in package.json)
* font-manager(in package.json)
* Python 2.x(install yourself)
* VisualC++(Windows)(install yourself)
* itunes-nowplaying-mac(for macOS)(in package.json)
* node-notifier(in package.json)
* sumchecker(in package.json)
* Ability to read unformated files!(install yourself)
### Run on developer mode ### Run on developer mode
`npm run dev` on `app` folder. `npm run dev` on `app` folder.
@@ -148,17 +159,6 @@ Linux
macOS 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` `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 wed-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)**
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 ## Pleroma support
Did you find a bug with Pleroma accounts? Did you find a bug with Pleroma accounts?
@@ -168,3 +168,4 @@ Please write issues to improve TheDesk affinity with Pleroma.
## Vulnerabilities when `npm i`??? ## Vulnerabilities when `npm i`???
No, if your npm says materialize-css has vulnerabilities(CVE-2019-11002/3/4), look at [here](https://github.com/Dogfalo/materialize/issues/6286) under discussion. 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.

View File

@@ -14,8 +14,6 @@ Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge
[Pixiv FANBOX](https://www.pixiv.net/fanbox/creator/28105985) [Pixiv FANBOX](https://www.pixiv.net/fanbox/creator/28105985)
`-store.*`とあるアセットはストアやパッケージマネージャ向けのもので、アップデートの確認をソフト本体で行いません。
![Screenshots1](https://thedesk.top/img/scr1.png) ![Screenshots1](https://thedesk.top/img/scr1.png)
## ライセンス ## ライセンス
@@ -48,6 +46,19 @@ Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge
Crowdinから翻訳に参加してみませんか: https://translate.thedesk.top Crowdinから翻訳に参加してみませんか: https://translate.thedesk.top
## 環境
* Electron 4.2以上(自分で入れて)
* electron-dl(in package.json)
* Jimp(in package.json)
* font-manager(in package.json)
* Python 2.x(自分で入れて)
* VisualC++(Windows)(自分で入れて)
* itunes-nowplaying-mac(macOS向け)(in package.json)
* node-notifier(in package.json)
* sumchecker(in package.json)
* Ability to read unformated files!(自分で入れて)
### デベロッパーモード ### デベロッパーモード
`npm run dev``app`フォルダ内で実行 `npm run dev``app`フォルダ内で実行
@@ -147,17 +158,6 @@ Linux
macOS 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` `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向けに設計されているので一部機能は動きません。
`npm run build:pwa`でビルドできます。PWAに必要な`manifest.json`やサービスワーカーなども要員されています。
**`node_modules``dependencies`にリネームしないと動きません。(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)
## Pleromaのサポート ## Pleromaのサポート
Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。 Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。

View File

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

View File

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

View File

@@ -1,139 +1,135 @@
<!DOCTYPE html> <!doctype html>
<html lang="ja"> <html lang="ja">
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
<link href="./node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
<link href="./css/font-awesome.css" rel="stylesheet" type="text/css" />
<link href="./css/themes.css" type="text/css" rel="stylesheet" />
<link href="./css/master.css" type="text/css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet" />
<meta charset="utf-8" />
<style>
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 5px;
padding-top: 15px;
}
a, <head>
button { <title>TheDesk</title>
-webkit-app-region: no-drag; <meta content="width=device-width,initial-scale=1.0" name="viewport">
} <link href="./node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href="./css/themes.css" type="text/css" rel="stylesheet">
<link href="./css/master.css" type="text/css" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet">
<meta charset="utf-8">
<style>
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 5px;
padding-top: 15px;
}
.container { a,
width: 100%; button {
display: grid; -webkit-app-region: no-drag;
grid-template-columns: 1fr 1fr; }
grid-template-rows: 1fr 1fr 1fr 1fr 1fr;
grid-template-areas: 'name1 data1' 'name2 data2' 'name3 data3' 'name4 data4' 'name5 data5' 'name6 data6';
text-align: left;
margin: 5px;
}
.area-name1 { .container {
grid-area: name1; width: 100%;
} display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr 1fr;
grid-template-areas: 'name1 data1''name2 data2''name3 data3''name4 data4''name5 data5''name6 data6';
text-align: left;
margin: 5px;
}
.area-data1 { .area-name1 {
grid-area: data1; grid-area: name1;
} }
.area-name2 { .area-data1 {
grid-area: name2; grid-area: data1;
} }
.area-data2 { .area-name2 {
grid-area: data2; grid-area: name2;
} }
.area-name3 { .area-data2 {
grid-area: name3; grid-area: data2;
} }
.area-data3 { .area-name3 {
grid-area: data3; grid-area: name3;
} }
.area-name4 { .area-data3 {
grid-area: name4; grid-area: data3;
} }
.area-data4 { .area-name4 {
grid-area: data4; grid-area: name4;
} }
.area-name5 { .area-data4 {
grid-area: name5; grid-area: data4;
} }
.area-data5 { .area-name5 {
grid-area: data5; grid-area: name5;
} }
.area-name6 { .area-data5 {
grid-area: name6; grid-area: data5;
} }
.area-data6 { .area-name6 {
grid-area: data6; grid-area: name6;
} }
</style>
</head>
<body class="center" style="overflow: hidden;"> .area-data6 {
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script> grid-area: data6;
<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> </style>
<img src="./img/desk.svg" style="max-width: 62%;" /> </head>
<h5>TheDesk</h5>
<div class="container"> <body class="center " style="overflow:hidden">
<div class="area-name1">Display version</div> <script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
<div class="area-data1" id="now"></div> <script type="text/javascript" src="./js/platform/first-not-view.js"></script>
<div class="area-name2">Internal version</div> <script type="text/javascript" src="./node_modules/materialize-css/dist/js/materialize.js"></script>
<div class="area-data2" id="ver"></div> <img src="./img/desk.svg" style="max-width:62%;">
<div class="area-name3">Commit(7chars)</div> <h5>TheDesk</h5>
<div class="area-data3" id="hash"></div> <div class="container">
<div class="area-name4">Chromium</div> <div class="area-name1">Display version</div>
<div class="area-data4" id="chrome"></div> <div class="area-data1" id="now"></div>
<div class="area-name5">Electron</div> <div class="area-name2">Internal version</div>
<div class="area-data5" id="electron"></div> <div class="area-data2" id="ver"></div>
<div class="area-name6">Node.js</div> <div class="area-name3">Commit(7chars)</div>
<div class="area-data6" id="node"></div> <div class="area-data3" id="hash"></div>
</div> <div class="area-name4">Chromium</div>
<div class="cp"> <div class="area-data4" id="chrome"></div>
Copyright &copy; TheDesk 2018<br /> <div class="area-name5">Electron</div>
Main developer(author): <a href="https://cutls.com/@Cutls" target="_blank">Cutls P</a><br /> <div class="area-data5" id="electron"></div>
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 <div class="area-name6">Node.js</div>
href="https://pl.kpherox.dev/kPherox" <div class="area-data6" id="node"></div>
target="_blank" </div>
>kPherox</a <div class="cp">Copyright &copy; TheDesk 2018<br>
> Main developer(author): <a href="https://cutls.com/@Cutls" target="_blank">Cutls P</a><br>
and all users Thanks:<a href="https://minohdon.jp/@toneji" target="_blank">toneji</a>/<a
<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" /> href="https://popon.pptdn.jp/@popn_ja" target="_blank">popn_ja</a>/<a href="https://pl.kpherox.dev/kPherox"
<br /><a href="https://thedesk.top" target="_blank">Web site</a> target="_blank">kPherox</a> and all users
</div> <img draggable="false" style="width:0.8rem;top: 1px;margin-left: 1px;position: relative;" alt="❤️"
<button onclick="window.close()" class="btn waves-effect indigo" style="width: calc(100% - 10px);"><i class="material-icons left">close</i>Close</button> title=":heart:" src="https://twemoji.maxcdn.com/2/72x72/2764.png">
<script type="text/javascript" src="./js/ui/theme.js"></script> <br><a href="https://thedesk.top" target="_blank">Web site</a></div>
<script> <button onclick="window.close()" class="btn waves-effect indigo" style="width:calc(100% - 10px);"><i
var about = JSON.parse(localStorage.getItem('about')) class="material-icons left">close</i>Close</button>
$('#now').text(localStorage.getItem('ver')) <script type="text/javascript" src="./js/ui/theme.js"></script>
$('#node').text(about[0]) <script>
$('#chrome').text(about[1]) var about = JSON.parse(localStorage.getItem("about"));
$('#electron').text(about[2]) $("#now").text(localStorage.getItem("ver"));
if (location.search) { $("#node").text(about[0]);
var m = location.search.match(/\?ver=([a-zA-Z-0-9.]+)/) $("#chrome").text(about[1]);
var ver = m[1] $("#electron").text(about[2]);
$('#ver').text(ver) if (location.search) {
} var m = location.search.match(/\?ver=([a-zA-Z-0-9.]+)/);
$('#hash').html('<a href="https://github.com/cutls/TheDesk/commits/' + about[3] + '" target="_blank">' + about[3].slice(0, 7) + '</a>') var ver = m[1];
$(document).on('click', 'a', (e) => { $("#ver").text(ver);
var url = $(e.target).attr('href') }
postMessage(['openUrl', url], '*') $("#hash").html('<a href="https://github.com/cutls/TheDesk/commits/' + about[3] + '" target="_blank">' + about[3].slice(0, 7) + '</a>');
return false $(document).on('click', 'a', e => {
}) var url = $(e.target).attr('href');
</script> postMessage(["openUrl", url], "*")
</body> return false;
</html> });
</script>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

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

View File

@@ -1,636 +1,544 @@
/*共通CSS*/ /*共通CSS*/
html, html,
body { body {
/*transform: translate3d(0,0,0);*/ /*transform: translate3d(0,0,0);*/
overflow: hidden; overflow: hidden;
user-select: none; user-select: none;
cursor: default; cursor: default;
height: 100vh; font-size: 13px;
color: var(--text); height: 100vh;
color: var(--color);
} }
html { .btn {
font-size: 13px; margin: 5px;
} text-transform: none;
.titlebar,
.menubar-menu-container,
.action-menu-item {
background-color: var(--subcolor) !important;
filter: brightness(110%) !important;
color: var(--text) !important;
}
.action-menu-item:hover {
filter: brightness(80%) !important;
}
.btn, .btn-flat {
font-size: 1.1rem;
margin: 0.4rem;
text-transform: none;
height: 2.76rem;
line-height: 2.76rem;
} }
.markdown { .markdown {
display: none; display: none;
} }
.accessMark { help {
font-size: 12px; display: none;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
background-color: var(--emphasized);
padding-left: 5px;
padding-right: 5px;
}
.accessibility .scr {
display: none !important;
} }
.show-help { .show-help {
display: inline; display: inline;
} }
option { option {
display: none; display: none;
} }
#mainView { #mainView {
padding: 10px; padding: 10px;
overflow: scroll; overflow: scroll;
height: auto; height: auto;
} }
#message { #message {
display: none; display: none;
position: fixed; position: fixed;
bottom: 0; bottom: 0;
left: 0; left: 0;
background-color: black; background-color: black;
color: white; color: white;
z-index: 9999; z-index: 9999;
} }
#imagemodal, #imagemodal,
#videomodal { #videomodal {
display: none; display: none;
max-width: 100vw; max-width: 100vw;
max-height: 100vh; max-height: 100vh;
position: fixed; position: fixed;
z-index: 9; z-index: 9;
top: 0 !important; top: 0 !important;
} }
#videomodal, #videomodal,
#tootmodal { #tootmodal {
background-color: var(--modal); background-color: var(--modal);
} }
#imagemodal .modal-content { #imagemodal .modal-content {
overflow: hidden; overflow: hidden;
padding: 0; padding: 0;
} }
#imagemodal .modal-footer { #imagemodal .modal-footer {
overflow-x: hidden; overflow-x: scroll;
overflow-y: hidden; overflow-y: hidden;
} }
#imagewrap { #imagewrap {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.pointer { .pointer {
cursor: pointer; cursor: pointer;
} }
.badge { .badge {
min-width: 0 !important; min-width: 0 !important;
margin-left: 0.4rem !important; margin-left: 5px !important;
} }
.unvisible { .unvisible {
opacity: 0; opacity: 0;
} }
.bbcode-pulse-loadings, .bbcode-pulse-loadings,
.bbcode-pulse-loading, .bbcode-pulse-loading,
.fa-pulse { .fa-pulse {
display: inline-block; display: inline-block;
animation-duration: 3s; animation-duration: 3s;
animation-fill-mode: both; animation-fill-mode: both;
animation-iteration-count: infinite; animation-iteration-count: infinite;
animation-name: pulse; animation-name: pulse;
} }
@keyframes pulse { @keyframes pulse {
from, from,
50%, 50%,
to { to {
opacity: 1; opacity: 1;
} }
25%, 25%,
75% { 75% {
opacity: 0; opacity: 0;
} }
} }
@keyframes shake { @keyframes shake {
from, from,
to { to {
-webkit-transform: translate3d(0, 0, 0); -webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0);
} }
10%, 10%,
30%, 30%,
50%, 50%,
70%, 70%,
90% { 90% {
-webkit-transform: translate3d(-10px, 0, 0); -webkit-transform: translate3d(-10px, 0, 0);
transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0);
} }
20%, 20%,
40%, 40%,
60%, 60%,
80% { 80% {
-webkit-transform: translate3d(10px, 0, 0); -webkit-transform: translate3d(10px, 0, 0);
transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0);
} }
} }
.shake { .shake {
display: inline-block; display: inline-block;
animation-duration: 1s; animation-duration: 1s;
animation-fill-mode: both; animation-fill-mode: both;
animation-iteration-count: infinite; animation-iteration-count: infinite;
animation-name: shake; animation-name: shake;
} }
code:before, code:before,
.pre:before { .pre:before {
content: 'Code'; content: "Code";
font-size: 1.8rem; font-size: 1.8rem;
line-height: 1em; line-height: 1em;
font-family: monospace, monospace; font-family: monospace, monospace;
color: #999; color: #999;
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
} }
code, code,
pre { pre {
color: white; color: white;
display: block; display: block;
border-left: 5px solid; border-left: 5px solid;
border-color: #079903; border-color: #079903;
padding-left: 0.75rem; padding-left: 10px;
margin-top: 0.75rem; margin-top: 5px;
margin-bottom: 0.75rem; margin-bottom: 5px;
margin-left: 0.75rem; margin-left: 5px;
background-color: #000; background-color: #000;
padding: 1em 1em 1em; padding: 1em 1em 1em;
position: relative; position: relative;
border-top-left-radius: 0.75rem; border-top-left-radius: 10px;
border-bottom-right-radius: 0.75rem; border-bottom-right-radius: 10px;
border-bottom-left-radius: 0.75rem; border-bottom-left-radius: 10px;
white-space: normal;
} }
blockquote, blockquote,
.quote p { .quote p {
margin: 0; margin: 0;
} }
blockquote, blockquote,
.quote { .quote {
color: black; color: black;
background-color: #ddd; background-color: #ddd;
padding: 1em 1em 1em; padding: 1em 1em 1em;
position: relative; position: relative;
border-top-left-radius: 0.75rem; border-top-left-radius: 10px;
border-bottom-right-radius: 0.75rem; border-bottom-right-radius: 10px;
border-bottom-left-radius: 0.5rem; border-bottom-left-radius: 10px;
} }
blockquote:before, blockquote:before,
.quote:before { .quote:before {
content: 'Quote'; content: "Quote";
font-size: 1.8rem; font-size: 1.8rem;
line-height: 1em; line-height: 1em;
font-family: Open Sans, cursive; font-family: Open Sans, cursive;
color: #999; color: #999;
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
} }
.pixiv-post { .pixiv-post {
color: black; color: black;
background-color: #fff; background-color: #fff;
padding: 1em 1em 1em; padding: 1em 1em 1em;
position: relative; position: relative;
border-top-left-radius: 0.75rem; border-top-left-radius: 10px;
border-bottom-right-radius: 0.75rem; border-bottom-right-radius: 10px;
border-bottom-left-radius: 0.75rem; border-bottom-left-radius: 10px;
border-left: 5px solid #0096fa; border-left: 5px solid #0096fa;
} }
.pixiv-post :before { .pixiv-post :before {
content: 'From Pixiv'; content: "From Pixiv";
font-size: 1.8rem; font-size: 1.8rem;
line-height: 1em; line-height: 1em;
font-family: Open Sans; font-family: Open Sans;
color: #999; color: #999;
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
} }
#start { #start {
display: none; display: none;
position: fixed; position: fixed;
width: 100vw; width: 100vw;
height: calc(100vh - 3rem); height: calc(100vh - 40px);
background-color: var(--bg); background-color: var(--bg);
filter: brightness(50%); color: var(--color);
color: var(--text); z-index: 99999;
z-index: 99999; justify-content: center;
justify-content: center; align-items: center;
align-items: center;
} }
#drag { #drag {
display: none; display: none;
position: fixed; position: fixed;
width: 100vw; width: 100vw;
height: 100vh; height: 100vh;
background-color: var(--bg); background-color: var(--bg);
color: var(--text); color: var(--color);
z-index: 99999; z-index: 99999;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
#drag-content { #drag-content {
font-size: 2rem; font-size: 2rem;
} }
#pip { #pip {
z-index: 504; z-index: 504;
width: 418px; width: 418px;
background-color: var(--thirdColor); background-color: var(--subcolor);
position: absolute; position: absolute;
} }
.pip-bottom { .pip-bottom {
bottom: 10px; bottom: 10px;
} }
.pip-left { .pip-left {
left: 10px; left: 10px;
} }
.pip-top { .pip-top {
top: 10px; top: 10px;
} }
.pip-right { .pip-right {
right: 10px; right: 10px;
} }
#pip-content .material-icons { #pip-content .material-icons {
display: none; display: none;
} }
.big-text { .big-text {
font-size: 1.2rem; font-size: 1.2rem;
} }
#releasenote { #releasenote {
background-color: var(--modal); background-color: var(--modal);
} }
#releasenote li { #releasenote li {
list-style-type: disc; list-style-type: disc;
} }
@media only screen and (min-width: 993px) { @media only screen and (min-width: 993px) {
#toast-container { #toast-container {
top: auto; top: auto;
right: auto; right: auto;
bottom: 5%; bottom: 5%;
left: 4%; left: 4%;
max-width: 86%; max-width: 86%;
} }
} }
.show { .show {
animation: show 0.2s linear 0s; animation: show 0.2s linear 0s;
} }
@keyframes show { @keyframes show {
from { from {
opacity: 0; opacity: 0;
} }
to { to {
opacity: 1; opacity: 1;
} }
} }
.hide-anime { .hide-anime {
animation: hide 0.2s linear 0s; animation: hide 0.2s linear 0s;
display: none; display: none;
} }
@keyframes hide { @keyframes hide {
from { from {
opacity: 1; opacity: 1;
} }
to { to {
opacity: 0; opacity: 0;
} }
} }
.collapsible-header, .collapsible-header,
.tabs { .tabs {
background-color: var(--thirdColor); background-color: var(--subcolor);
} }
.collapsible-header:focus { .collapsible-header:focus {
background-color: var(--thirdColor) !important; background-color: var(--subcolor) !important;
} }
.modal-footer { .modal-footer {
background-color: var(--modalfooter) !important; background-color: var(--modalfooter) !important;
} }
.font { .font {
font-size: 1.5rem; font-size: 1.5rem;
margin-bottom: 0.4rem; margin-bottom: 5px;
} }
.font:hover { .font:hover {
background-color: #999; background-color: #999;
} }
.release-do { .release-do {
border: solid 2px; border: solid 2px;
border-color: var(--text); border-color: var(--color);
padding: 5px; padding: 5px;
} }
#pickers { #pickers {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
flex-direction: column;
}
input[type="color"] {
-webkit-appearance: none;
border: none;
width: 32px;
height: 32px;
}
input[type="color"]::-webkit-color-swatch-wrapper {
padding: 0;
}
input[type="color"]::-webkit-color-swatch {
border: none;
} }
#menu { #menu {
position: fixed; position: fixed;
z-index: 999; z-index: 9999;
background-color: var(--postbox); background-color: var(--postbox);
width: 540px; width: 540px;
top: calc(50% - 150px); top: calc(50% - 150px);
left: calc(50% - 250px); left: calc(50% - 250px);
padding: 0.4rem; padding: 5px;
border: thin solid gray; border: thin solid gray;
border-radius: 0.4rem; border-radius: 5px;
overflow: hidden; overflow: hidden;
} }
#menu-wrapper { #menu-wrapper {
margin-left: -5px; margin-left: -5px;
display: flex; display: flex;
height: calc(100% - 3.5rem); height: calc(100% - 3.5rem);
overflow: hidden; overflow: hidden;
} }
#left-menu { #left-menu {
width: 17.7rem; width: 230px;
} }
#left-menu a { #left-menu div {
padding-left: 0.4rem; padding-left: 5px;
width: 100%; width: 100%;
height: 3rem; height: 50px;
display: flex; display: flex;
align-items: center; align-items: center;
cursor: pointer; cursor: pointer;
color: var(--text);
} }
#left-menu a:hover { #left-menu div:hover {
background-color: var(--beforehover); background-color: var(--beforehover);
} }
#left-menu span { #left-menu span {
margin-left: 0.4rem; margin-left: 5px;
} }
#left-menu a.active { #left-menu div.active {
background-color: var(--emphasized); background-color: var(--emphasized);
}
#left-menu a.active span {
text-decoration: underline;
} }
#right-menu { #right-menu {
width: 100%; width: 100%;
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
padding: 0.4rem; padding: 5px;
} }
#tltype { #tltype {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} }
#tltype .type { #tltype .type {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; align-items: center;
width: 13rem; width: 170px;
height: 3.1rem; height: 40px;
cursor: pointer; cursor: pointer;
color: var(--text);
} }
#tltype .type span { #tltype .type span {
width: calc(100% - 2.3rem); width: calc(100% - 30px);
} }
#tltype .type:hover { #tltype .type:hover {
background-color: var(--beforehover); background-color: var(--beforehover);
} }
#tltype .active { #tltype .active {
background-color: var(--emphasized); background-color: var(--emphasized);
} }
#tltype i { #tltype i {
font-size: 2.3rem; font-size: 30px;
} }
#tltype i.sub-icon { #tltype i.sub-icon {
font-size: 1.53rem; font-size: 20px;
position: absolute; position: absolute;
color: var(--beforehover); color: var(--beforehover);
left: 0.9rem; left: 10px;
bottom: 0.4rem; bottom: 5px;
background-color: #fff; background-color: #fff;
} }
.drag-bar { .drag-bar {
cursor: move; cursor: move;
text-align: center; text-align: center;
width: calc(100% + 0.8rem); width: calc(100% + 10px);
border-radius: 5px; border-radius: 5px;
background-color: var(--subcolor); background-color: var(--box);
filter: brightness(80%); filter: brightness(80%);
margin-left: -0.4rem; margin-left: -5px;
margin-right: -0.4rem; margin-right: -5px;
margin-top: -0.4rem; margin-top: -5px;
font-size: 1.3rem; font-size: 16px;
padding: 0.3rem; padding: 4px;
} }
#something-wrong { #something-wrong {
flex-direction: column; flex-direction: column;
width: 100%; width: 100%;
height: 100%; height: 100%;
position: absolute; position: absolute;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
#support-btm { #support-btm {
position: fixed; position: fixed;
bottom: -300px; bottom: -300px;
width: 100vw; width: 100vw;
background-color: var(--subcolor); background-color: var(--box);
z-index: 9999; z-index: 9999;
padding: 0.8rem; padding: 10px;
display: grid; display: grid;
grid-template-columns: 3fr 1fr 1fr; grid-template-columns: 3fr 1fr 1fr;
grid-template-rows: 1fr 2.7rem; grid-template-rows: 1fr 36px;
grid-template-areas: 'note middle right' 'note close close'; grid-template-areas: "note middle right" "note close close";
} }
#support-btm-en, #support-btm-en,
#support-btm-ja { #support-btm-ja {
grid-area: note; grid-area: note;
} }
#support-btm-middle { #support-btm-middle {
grid-area: middle; grid-area: middle;
} }
#support-btm-right { #support-btm-right {
grid-area: right; grid-area: right;
} }
#support-btm-close { #support-btm-close {
grid-area: close; grid-area: close;
} }
.select-wrapper .dropdown-content { .select-wrapper .dropdown-content {
width: 19.2rem !important; width: 250px !important;
} }
input, input,
textarea { textarea {
color: var(--text); color: var(--color);
font-size: 1rem !important; font-size: 1rem !important;
font-family: inherit; font-family: inherit;
} }
.swal2-popup { .swal2-popup {
background-color: var(--subcolor) !important; background-color: var(--notfbox) !important;
} }
.swal2-title, .swal2-title,
.swal2-content { .swal2-content {
color: var(--text) !important; color: var(--color) !important;
} }
#src-contents svg { #src-contents svg {
margin-right: 0.4rem; margin-right: 5px;
} }
.contributor { .contributor {
cursor: pointer; cursor: pointer;
} }
.contributor img { .contributor img {
width: 1rem; width: 1rem;
} }
.tagComp { .tagComp{
display: grid; display: grid;
grid-template-columns: 4.6rem 6.15rem 1fr; grid-template-columns: 60px 80px 1fr;
grid-template-rows: 1fr 1fr; grid-template-rows: 1fr 1fr;
grid-template-areas: 'svg toot user' 'svg toot tag' 'svg toots tag'; grid-template-areas: "svg toot user" "svg toot tag" "svg toots tag";
border-top: dotted 0.5px var(--gray); border-top: dotted 0.5px var(--gray);
padding: 0.4rem; padding: 5px
} }
.tagCompSvg { .tagCompSvg {
grid-area: svg; grid-area: svg;
} }
.tagCompToot { .tagCompToot {
grid-area: toot; grid-area: toot;
text-align: center; text-align: center;
} }
.tagCompToots { .tagCompToots {
grid-area: toots; grid-area: toots;
text-align: center; text-align: center;
} }
.tagCompUser { .tagCompUser {
grid-area: user; grid-area: user;
} }
.tagCompTag { .tagCompTag {
grid-area: tag; grid-area: tag;
padding-top: 0.4rem; padding-top: 10px;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
} }
#sabakanMark {
background-color: var(--emphasized);
}
#pageSrc {
position: absolute;
top: 0;
left: calc(50vw - 11.53rem);
width: 23rem;
max-width: 100%;
background-color: var(--subcolor);
z-index: 501;
padding: 0.4rem;
}
#pageSrcInput {
width: 12.3rem;
}
.voice {
clip: rect(1px, 1px, 1px, 1px);
position: absolute !important;
height: 1px;
width: 1px;
overflow: hidden;
}
@media (max-width: 500px) {
#pageSrc {
left: 0;
}
}
/*スクロールバー*/ /*スクロールバー*/
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 5px; width: 5px;
height: 10px; height: 10px;
background: rgba(0, 0, 0, 0.05); background: rgba(0, 0, 0, 0.05);
} }
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
-webkit-border-radius: 5px; -webkit-border-radius: 5px;
border-radius: 5px; border-radius: 5px;
} }
/* Handle */ /* Handle */
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
-webkit-border-radius: 5px; -webkit-border-radius: 5px;
border-radius: 5px; border-radius: 5px;
background: #607d8b; background: #607d8b;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5); -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
} }
/* Web Fonts */ /* Web Fonts */
@font-face { @font-face {
font-family: 'Open Sans'; font-family: "Open Sans";
font-style: normal; font-style: normal;
font-weight: 300; font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), url('../fonts/OpenSans-Light.ttf') format('truetype'); src: local("Open Sans Light"), local("OpenSans-Light"),
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; url(https://fonts.gstatic.com/s/opensans/v17/mem5YaGs126MiZpBA-UN_r8OUuhp.woff2)
format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
U+FEFF, U+FFFD;
} }
@font-face { @font-face {
font-family: 'Material Icons'; font-family: "Material Icons";
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
src: url(https://fonts.gstatic.com/s/materialicons/v48/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2'); src: url(https://fonts.gstatic.com/s/materialicons/v48/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2)
format("woff2");
} }
.material-icons { .material-icons {
font-family: 'Material Icons'; font-family: "Material Icons";
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
font-size: 1.84rem; font-size: 24px;
line-height: 1; line-height: 1;
letter-spacing: normal; letter-spacing: normal;
text-transform: none; text-transform: none;
display: inline-block; display: inline-block;
white-space: nowrap; white-space: nowrap;
word-wrap: normal; word-wrap: normal;
direction: ltr; direction: ltr;
-webkit-font-feature-settings: 'liga'; -webkit-font-feature-settings: "liga";
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
} }
.pwaView .pwa,
.pwaView .mac,
.pwaView .win {
display: none;
}
.win32 .mac,
.linux .mac {
display: none;
}
.linux .win,
.darwin .win {
display: none;
}
.dropdown-content.header:hover {
background-color: white;
}
button {
font-family: inherit !important;
}
.via-dropdown {
text-overflow: ellipsis;
white-space: nowrap;
overflow-x: hidden;
}

View File

@@ -1,148 +1,144 @@
/*トゥートボックス向けCSS*/ /*トゥートボックス向けCSS*/
#post-box { #post-box {
display: none; display: none;
position: fixed; position: fixed;
left: calc(50vw - 150px); left: calc(50vw - 150px);
top: 50vh; top: 50vh;
background-color: var(--postbox); background-color: var(--postbox);
border: thin solid gray; border: thin solid gray;
z-index: 501; z-index: 501;
max-width: 100%; max-width: 100%;
padding: 0.4rem; padding: 5px;
border-radius: 0.4rem; border-radius: 5px;
overflow: hidden; overflow: hidden;
} }
textarea { textarea {
min-height: 7.7rem !important; min-height: 100px !important;
font-family: inherit; font-family: inherit;
} }
#post-box .ui-resizable-s, #post-box .ui-resizable-s, #post-box .ui-resizable-se{
#post-box .ui-resizable-se { display: none !important;
display: none !important;
} }
.cancel { .cancel {
font-size: 0.5rem; font-size: 0.5rem;
color: gray; color: gray;
cursor: pointer; cursor: pointer;
position: absolute; position: absolute;
right: 2px; right: 2px;
top: 4px; top: 4px;
} }
.more-show { .more-show {
display: none; display: none;
} }
#drag { #drag {
width: 100%; width: 100%;
height: 100px; height: 100px;
} }
#post-btn { #post-btn {
display: none; display: none;
} }
#vis { #vis {
text-transform: capitalize; text-transform: capitalize;
} }
#cw-text { #cw-text {
display: none; display: none;
} }
#sch-box { #sch-box {
display: none; display: none;
} }
#sch-box input { #sch-box input {
width: auto; width: auto;
} }
.picker__close, .picker__close,
.picker__today, .picker__today,
.picker__clear { .picker__clear {
color: #26a69a !important; color: #26a69a !important;
} }
.cw { .cw {
display: none; display: none;
} }
.sensitive { .sensitive {
filter: blur(50px); filter: blur(50px);
} }
#emoji { #emoji {
} }
#suggest { #suggest {
max-height: 23rem; max-height: 300px;
overflow-y: scroll; overflow-y: scroll;
} }
#emoji-list { #emoji-list {
width: 100%; width: 100%;
height: 15.4rem; height: 200px;
overflow-y: scroll; overflow-y: scroll;
} }
#preview-field { #preview-field {
display: none; display: none;
} }
.preview-img { .preview-img {
width: 4rem; width: 50px;
max-height: 7.6rem; max-height: 100px;
} }
.pi-wrap { .pi-wrap {
display: inline-block; display: inline-block;
width: 3.8rem; width: 50px;
max-height: 7.7rem; max-height: 100px;
} }
#default-emoji a { #default-emoji a {
color: var(--text); color: var(--color);
margin-right: 0.15rem; margin-right: 2px;
} }
.character-counter { .character-counter {
position: relative; position: relative;
top: -1.9rem; top: -25px;
} }
.trendtag { .trendtag {
overflow-y: scroll; overflow-y: scroll;
max-height: 7.7rem; max-height: 100px;
} }
#toot-btn-field { #toot-btn-field {
display: flex; display: flex;
} }
#toot-post-btn { #toot-post-btn {
width: calc(100% - 0.7rem); width: calc(100% - 10px);
padding: 0; padding: 0;
margin-top: 0.7rem; margin-top: 10px;
height: 2.7rem;
} }
#toot-sec-btn { #toot-sec-btn {
width: 2.3rem; width: 30px;
padding: 0; padding: 0;
margin-top: 0.7rem; margin-top: 10px;
} }
#left-side { #left-side {
float: left; float: left;
overflow-x: hidden; overflow-x: hidden;
height: calc(100% - 2.5rem); height: calc(100% - 32px);
} }
#right-side { #right-side {
display: none; display: none;
float: left; float: left;
width: 23rem; width: 300px;
padding: 0.4rem; padding: 5px;
overflow-x: hidden; overflow-x: hidden;
height: calc(100% - 2.5rem); height: calc(100% - 32px);
} }
#posttgl, #posttgl,#toot-post-btn {
#toot-post-btn { background-color: var(--accentbtn);
background-color: var(--active);
color: var(--text);
} }
/*mini*/ /*mini*/
.mini-post .mize { .mini-post .mize {
display: none !important; display: none !important;
} }
.mini-post #textarea { .mini-post #textarea {
padding: 0; padding: 0;
} }
.mini-post #post-box { .mini-post #post-box {
width: 15.4rem; width: 200px;
min-width: 7.7rem; min-width: 100px;
} }
.mini-post #toot-field { .mini-post #toot-field {
padding: 0; padding: 0;
} }
.mini-post #toot-btn-field { .mini-post #toot-btn-field {
padding: 0; padding: 0;
} }

View File

@@ -3,29 +3,29 @@
cursor: move; cursor: move;
user-select: none; user-select: none;
background-color: var(--modalfooter); background-color: var(--modalfooter);
margin: 0.4rem; margin: 5px;
border-radius: 0.4rem; border-radius: 5px;
color: var(--text); color: var(--color);
padding: 3px; padding: 3px;
display: grid; display: grid;
grid-template-columns: 3.3rem 1fr 4.6rem; grid-template-columns: 43px 1fr 60px;
grid-template-areas: "sorticon sorttitle sorttitle" "sorticon sortacct sortaction"; grid-template-areas: "sorticon sorttitle sorttitle" "sorticon sortacct sortaction";
} }
.sorticon { .sorticon {
grid-area: sorticon; grid-area: sorticon;
} }
.sorticon i { .sorticon i {
font-size: 3.3rem; font-size: 43px;
} }
.sorttitle { .sorttitle {
margin-left: 0.4rem; margin-left: 5px;
grid-area: sorttitle; grid-area: sorttitle;
} }
.sortacct { .sortacct {
margin-left: 0.4rem; margin-left: 5px;
grid-area: sortacct; grid-area: sortacct;
} }
.sortaction { .sortaction {
margin-left: 0.4rem; margin-left: 5px;
grid-area: sortaction; grid-area: sortaction;
} }

View File

@@ -1,22 +1,144 @@
:root { :root {
--bg: white;
--drag: rgba(255, 255, 255, 0.8);
--color: black;
--beforehover: #757575;
--modal: white;
--subcolor: #e0e0e0;
--box: white;
--sidebar: #eeeeee;
--shared: #cfd8dc;
--notfbox: white;
--emphasized: #81c784;
--his-data: rgba(255, 255, 255, 0.9);
--active: #e6ee9c;
--postbox: white;
--modalfooter: #fafafa;
--accentbtn: #009688;
--selected: #c0c0c0;
--selectedWithShare: #b2babd;
--gray: #757575;
}
#imagemodal {
background: url("../img/pixel.white.svg");
}
.blacktheme {
--bg: #212121; --bg: #212121;
--drag: rgba(0, 0, 0, 0.8); --drag: rgba(0, 0, 0, 0.8);
--text: white; --color: white;
--beforehover: #9e9e9e; --beforehover: #9e9e9e;
--modal: black; --modal: black;
--thirdColor: #212121; --subcolor: #212121;
--bottom: #424242; --box: #424242;
--accent: #004d40; --sidebar: #424242;
--subcolor: #333333; --shared: #004d40;
--notfbox: #333333;
--emphasized: #4e342e; --emphasized: #4e342e;
--his-data: rgba(0, 0, 0, 0.8); --his-data: rgba(0, 0, 0, 0.8);
--active: #757575;
--postbox: #424242; --postbox: #424242;
--modalfooter: #212121; --modalfooter: #212121;
--active: #3f51b5; --accentbtn: #3f51b5;
--selected: #3f3f3f; --selected: #3f3f3f;
--selectedWithShare: #003a30; --selectedWithShare: #003a30;
--gray: #cccccc; --gray: #cccccc;
} }
#imagemodal { .blacktheme #imagemodal {
background: url("../img/pixel.svg"); background: url("../img/pixel.svg");
} }
.indigotheme {
--bg: #031833;
--drag: rgba(0, 0, 0, 0.8);
--color: white;
--beforehover: #9e9e9e;
--modal: #0d1351;
--subcolor: #0d1351;
--shared: #004d40;
--box: #0d1351;
--sidebar: #0d1351;
--notfbox: #0d47a1;
--emphasized: #4e342e;
--his-data: rgba(13, 19, 81, 0.8);
--active: #757575;
--postbox: #1a237e;
--modalfooter: #031833;
--accentbtn: #00acc1;
--selected: #214f8a;
--selectedWithShare: #003a30;
--gray: #cccccc ;
}
.indigotheme #imagemodal {
background: url("../img/pixel.svg");
}
.browntheme {
--bg: #261411;
--drag: rgba(0, 0, 0, 0.8);
--color: white;
--beforehover: #9e9e9e;
--modal: #261411;
--subcolor: #4e342e;
--shared: #004d40;
--box: #4e342e;
--sidebar: #4e342e;
--notfbox: #4e342e;
--emphasized: #0d47a1;
--his-data: rgba(62, 39, 35, 0.8);
--active: #757575;
--postbox: #4e342e;
--modalfooter: #261411;
--accentbtn: #827717;
--selected: #6d352b;
--selectedWithShare: #003a30;
--gray: #cccccc;
}
.browntheme #imagemodal {
background: url("../img/pixel.svg");
}
.greentheme {
--bg: #c8e6c9;
--drag: rgba(255, 255, 255, 0.8);
--color: black;
--beforehover: #757575;
--modal: #81c784;
--subcolor: #a5d6a7;
--box: #81c784;
--sidebar: #c5e1a5;
--shared: #ffcc80;
--notfbox: #a5d6a7;
--emphasized: #9e9d24;
--his-data: rgba(255, 255, 255, 0.9);
--active: #e6ee9c;
--postbox: #a5d6a7;
--modalfooter: #81c784;
--accentbtn: #33691e;
--selected: #78c17a;
--selectedWithShare: #caa266;
--gray: #757575;
}
.greentheme #imagemodal {
background: url("../img/pixel.white.svg");
}
.bluetheme {
--bg: #c9e1ec;
--drag: rgba(255, 255, 255, 0.8);
--color: black;
--beforehover: #757575;
--modal: #b2ebf2;
--subcolor: #90caf9;
--box: #90caf9;
--sidebar: #b6e6f5;
--shared: #e0ffe4;
--notfbox: #90caf9;
--emphasized: #c5e1a5;
--his-data: rgba(255, 255, 255, 0.9);
--active: #b39ddb;
--postbox: #dff1ff;
--modalfooter: #2196f3;
--accentbtn: #2f7bb7;
--selected: #9dcade;
--selectedWithShare: #c1dac4;
--gray: #757575;
}
.bluetheme #imagemodal {
background: url("../img/pixel.white.svg");
}

View File

@@ -1,7 +1,7 @@
/*TL CSS(ただしBBCode pulse:master.css/spin:font-awesome*/ /*TL CSS(ただしBBCode pulse:master.css/spin:font-awesome*/
#main { #main {
width: 100vw; width: 100vw;
height: calc(100% - 3rem); height: calc(100vh - 40px);
} }
#timeline-container { #timeline-container {
overflow-x: scroll; overflow-x: scroll;
@@ -11,19 +11,18 @@
} }
#bottom { #bottom {
position: absolute; position: absolute;
overflow: hidden;
bottom: 0; bottom: 0;
width: 100vw; width: 100vw;
height: 3rem; height: 40px;
padding: 0.23rem; padding: 3px;
padding-right: 0; padding-right: 0;
padding-left: 3rem; padding-left: 40px;
background-color: var(--bottom); background-color: var(--sidebar);
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
flex-wrap: wrap; flex-wrap: wrap;
z-index: 500; z-index: 500;
box-shadow: 0.77rem 0 0.77rem, 0.77rem rgba(0, 0, 0, 0.2); box-shadow: 10px 0 10px 10px rgba(0, 0, 0, 0.2);
} }
#demobottom { #demobottom {
width: 500px; width: 500px;
@@ -31,24 +30,24 @@
} }
#bottom.reverse { #bottom.reverse {
padding-left: 0; padding-left: 0;
padding-right: 3rem; padding-right: 40px;
} }
.reverse { .reverse {
flex-direction: row-reverse; flex-direction: row-reverse;
} }
#bottom #dambox { #bottom #dambox {
width: 23rem; width: 300px;
margin-right: 0.76rem; margin-right: 10px;
} }
#bottom.reverse #dambox { #bottom.reverse #dambox {
margin-right: 0; margin-right: 0;
} }
#bottom .trendtag { #bottom .trendtag {
height: 3rem; height: 40px;
} }
#bottom #group, #bottom #group,
#demogroup { #demogroup {
margin-right: 3rem; margin-right: 40px;
} }
#bottom .leftside { #bottom .leftside {
display: flex; display: flex;
@@ -58,41 +57,41 @@
align-items: center; align-items: center;
} }
#bottom #tips img { #bottom #tips img {
vertical-align: -0.23rem; vertical-align: -3px;
} }
#bottom a, #bottom a,
#demogroup a { #demogroup a {
color: var(--text); color: var(--color);
} }
#bottom i { #bottom i {
font-size: 2.3rem; font-size: 30px;
} }
.exc-icons { .exc-icons {
font-size: 1.53rem; font-size: 20px;
} }
.exc-chb { .exc-chb {
padding-left: 1.84rem !important; padding-left: 24px !important;
} }
.btnsgroup { .btnsgroup {
border: 1px solid; border: 1px solid;
padding-top: 1px; padding-top: 1px;
padding-left: 0.4rem; padding-left: 5px;
padding-right: 0.4rem; padding-right: 5px;
margin-right: 1.15rem; margin-right: 15px;
border-radius: 0.4rem; border-radius: 5px;
height: 2.7rem; height: 35px;
} }
.bgReport { .bgReport {
height: 2.61rem; height: 34px;
padding-top: 0.45rem; padding-top: 0.45rem;
text-decoration: underline; text-decoration: underline;
padding-left: 0.4rem; padding-left: 5px;
padding-right: 0.4rem; padding-right: 5px;
} }
#spot-box { #spot-box {
display: grid; display: grid;
grid-template-columns: 3rem 2.3rem 2.5fr 1fr 4.6rem; grid-template-columns: 40px 30px 2.5fr 1fr 60px;
grid-template-rows: 1.7rem 1.5rem; grid-template-rows: 22px 20px;
grid-template-areas: 'cover name name artist refresh' 'cover progress progress progress time'; grid-template-areas: 'cover name name artist refresh' 'cover progress progress progress time';
} }
#spot-refresh { #spot-refresh {
@@ -106,14 +105,14 @@
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
line-height: 1.92rem; line-height: 25px;
} }
#spot-artist { #spot-artist {
grid-area: artist; grid-area: artist;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
line-height: 1.92rem; line-height: 25px;
} }
#spot-img { #spot-img {
width: 90%; width: 90%;
@@ -127,7 +126,7 @@
} }
.btnsgroup .grouptitle { .btnsgroup .grouptitle {
font-family: Open Sans; font-family: Open Sans;
font-size: 1.1rem; font-size: 15px;
} }
@media screen and (max-width: 890px) { @media screen and (max-width: 890px) {
.btnsgroup .grouptitle { .btnsgroup .grouptitle {
@@ -141,7 +140,7 @@
iframe, iframe,
.cvo video { .cvo video {
max-width: 100%; max-width: 100%;
max-height: 23rem; max-height: 300px;
} }
@media screen and (max-width: 600px) { @media screen and (max-width: 600px) {
.mobile #timeline-container { .mobile #timeline-container {
@@ -158,12 +157,11 @@ iframe,
.box { .box {
overflow: hidden; overflow: hidden;
min-width: 300px; min-width: 300px;
max-width: 600px;
flex: 1; flex: 1;
border-top: none; border-top: none;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin-bottom: -0.75rem; margin-bottom: -10px;
} }
.img_FTL { .img_FTL {
display: none; display: none;
@@ -217,20 +215,16 @@ iframe,
} }
.emoji, .emoji,
.emoji-img { .emoji-img {
width: 1.153rem; width: 15px;
height: 1.153rem;
object-fit: cover;
} }
.area-toot .emoji, .area-toot .emoji,
.area-toot .emoji-img { .area-toot .emoji-img {
width: 1.538rem; width: 20px;
height: 1.538rem;
object-fit: cover;
vertical-align: middle; vertical-align: middle;
margin: -1px 0; margin: -1px 0;
} }
.bigemoji { .bigemoji {
width: 7.7rem !important; width: 100px !important;
height: auto !important; height: auto !important;
position: relative; position: relative;
z-index: 9999; z-index: 9999;
@@ -243,7 +237,6 @@ iframe,
flex: 1; flex: 1;
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
background-color: var(--bg);
} }
.additional { .additional {
overflow-x: scroll; overflow-x: scroll;
@@ -260,13 +253,13 @@ iframe,
} }
.cvo { .cvo {
user-select: text; user-select: text;
padding-left: 0.4rem; padding-left: 5px;
border-bottom: 0.5px solid; border-bottom: 0.5px solid;
padding-right: 0.15rem; padding-right: 2px;
word-break: break-word; word-break: break-word;
width: 100%; width: 100%;
display: grid; display: grid;
grid-template-columns: 3.3rem 2fr 1fr; grid-template-columns: 43px 2fr 1fr;
grid-template-rows: auto 1.6rem 1fr auto 2.5rem; grid-template-rows: auto 1.6rem 1fr auto 2.5rem;
grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'space toot toot' 'space additional additional' 'vis actions side'; grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'space toot toot' 'space additional additional' 'vis actions side';
} }
@@ -292,21 +285,21 @@ iframe,
} }
.area-notice { .area-notice {
margin: 0.15rem; margin: 2px;
grid-area: notice; grid-area: notice;
} }
.area-icon { .area-icon {
width: 3rem; width: 40px;
margin: 0.15rem; margin: 2px;
grid-area: icon; grid-area: icon;
} }
.area-display_name { .area-display_name {
user-select: text; user-select: text;
height: 1.5em; height: 1.5em;
margin: 0.15rem; margin: 2px;
margin-left: 0.4rem; margin-left: 5px;
overflow: hidden; overflow: hidden;
grid-area: display_name; grid-area: display_name;
white-space: nowrap; white-space: nowrap;
@@ -317,7 +310,7 @@ iframe,
flex-wrap: nowrap; flex-wrap: nowrap;
} }
.flex-name { .flex-name {
max-width: calc(100% - 4.6rem); max-width: calc(100% - 60px);
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
@@ -325,9 +318,9 @@ iframe,
.area-toot { .area-toot {
cursor: text; cursor: text;
user-select: auto; user-select: auto;
margin-top: 0.4rem; margin-top: 5px;
margin-bottom: 0.4rem; margin-bottom: 5px;
margin-left: 0.4rem; margin-left: 5px;
grid-area: toot; grid-area: toot;
} }
@@ -360,7 +353,7 @@ iframe,
.area-actions { .area-actions {
padding: 0; padding: 0;
margin: 0; margin: 0;
top: -0.4rem; top: -5px;
position: relative; position: relative;
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
@@ -368,28 +361,28 @@ iframe,
grid-area: actions; grid-area: actions;
} }
.area-vis { .area-vis {
margin: 0.4rem; margin: 2px;
grid-area: vis; grid-area: vis;
text-align: center; text-align: center;
} }
.area-side { .area-side {
display: flex; display: flex;
top: -0.4rem; top: -5px;
position: relative; position: relative;
justify-content: flex-end; justify-content: flex-end;
margin: 0.15rem; margin: 2px;
grid-area: side; grid-area: side;
} }
.cusr { .cusr {
user-select: text; user-select: text;
padding-left: 0.4rem; padding-left: 5px;
border-bottom: 0.5px solid; border-bottom: 0.5px solid;
padding-right: 0.15rem; padding-right: 2px;
word-break: break-word; word-break: break-word;
width: 100%; width: 100%;
display: grid; display: grid;
grid-template-columns: 3.3rem 2fr 1fr; grid-template-columns: 43px 2fr 1fr;
grid-template-rows: auto 1.6rem 2fr auto; grid-template-rows: auto 1.6rem 2fr auto;
grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'space status status' 'space actions actions'; grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'space status status' 'space actions actions';
} }
@@ -398,12 +391,12 @@ iframe,
grid-area: status; grid-area: status;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
margin-bottom: 0.75rem; margin-bottom: 5px;
} }
.cusr .cbadge { .cusr .cbadge {
margin-top: 0.46rem; margin-top: 6px;
margin-left: 0.46rem; margin-left: 6px;
} }
.quote-inline { .quote-inline {
@@ -411,16 +404,16 @@ iframe,
} }
.quote-renote { .quote-renote {
display: grid; display: grid;
grid-template-columns: 3.3rem 2fr 1.92rem; grid-template-columns: 43px 2fr 25px;
grid-template-areas: 'ricon ruser rdet' 'ricon rtext rdet'; grid-template-areas: 'ricon ruser rdet' 'ricon rtext rdet';
border: 1px solid; border: 1px solid;
margin-top: 0.23rem; margin-top: 3px;
padding: 1px; padding: 1px;
border-radius: 0.23rem; border-radius: 3px;
} }
.renote-icon { .renote-icon {
grid-area: ricon; grid-area: ricon;
padding: 0.4rem; padding: 5px;
} }
.renote-details { .renote-details {
grid-area: rdet; grid-area: rdet;
@@ -436,34 +429,63 @@ iframe,
} }
.btn-flat { .btn-flat {
color: var(--text); color: var(--color);
} }
.area-side i { .area-side i {
margin-left: 0.75rem; margin-left: 10px;
} }
.viabadge { .viabadge {
margin-top: 0.75rem; margin-top: 10px;
} }
.action i { .action i {
font-size: 1.2rem; font-size: 1.2rem;
margin-right: 0.15rem; margin-right: 2px;
} }
.action .fa-quote-right { .action .fa-quote-right {
margin-top: 0.15rem; margin-top: 2px;
} }
.actct { .actct {
color: var(--beforehover); color: var(--beforehover);
} }
.actct:hover { .actct:hover {
color: var(--text); color: var(--color);
transition: 0.5s; transition: 0.5s;
} }
.contextMenu.dropdown-content { #contextWrap {
padding-top: 5px; position: fixed;
overflow-y: hidden; width: 199vw;
left: calc(100% - 200px) !important; height: 100vh;
width: 200px !important; z-index: 100;
} }
.contextMenu {
position: fixed;
background-color: var(--box);
z-index: 9999;
border-radius: 5px;
padding: 5px;
}
.contextMenu.bottom:before {
content: '';
position: absolute;
top: 100%;
right: 27px;
border: 15px solid transparent;
border-top: 15px solid var(--box);
}
.contextMenu.top:before {
content: '';
position: absolute;
top: -30px;
right: 27px;
border: 15px solid transparent;
border-bottom: 15px solid var(--box);
}
.contextMenu .btn-flat {
text-transform: none !important;
width: 100%;
text-align: left;
}
.gray { .gray {
color: var(--gray); color: var(--gray);
} }
@@ -479,30 +501,30 @@ iframe,
} }
.toot img:not(.emoji-img) { .toot img:not(.emoji-img) {
max-width: 100%; max-width: 100%;
max-height: 23rem; max-height: 300px;
} }
.cbadge { .cbadge {
display: inline-block; display: inline-block;
min-width: 0.76rem; min-width: 10px;
max-width: 7.7rem; max-width: 100px;
padding: 0.23rem 0.5rem; padding: 3px 7px;
font-size: 0.8em; font-size: 0.8em;
margin-right: 0.4rem; margin-right: 5px;
line-height: 1; line-height: 1;
color: #fff; color: #fff;
text-align: center; text-align: center;
white-space: nowrap; white-space: nowrap;
vertical-align: middle; vertical-align: middle;
background-color: #777; background-color: #777;
border-radius: 0.75rem; border-radius: 10px;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
height: calc(0.8em + 0.6rem); height: calc(0.8em + 8px);
user-select: none; user-select: none;
} }
.cbadge-hover { .cbadge-hover {
color: var(--text); color: var(--color);
background-color: transparent; background-color: transparent;
} }
.cbadge-hover:hover { .cbadge-hover:hover {
@@ -512,13 +534,13 @@ iframe,
p { p {
margin: 0; margin: 0;
margin-bottom: 0px; margin-bottom: 0px;
line-height: 1.53rem; line-height: 20px;
} }
p:not(:last-child) { p:not(:last-child) {
margin-bottom: 0.76rem; margin-bottom: 10px;
} }
.shared { .shared {
background-color: var(--accent); background-color: var(--shared);
} }
.emphasized { .emphasized {
background-color: var(--emphasized); background-color: var(--emphasized);
@@ -528,17 +550,17 @@ p:not(:last-child) {
} }
.notice-box { .notice-box {
top: 0; top: 0;
background-color: var(--subcolor); background-color: var(--notfbox);
filter: brightness(110%); filter: brightness(110%);
position: relative; position: relative;
margin-right: 0.7rem; margin-right: 10px;
width: 100%; width: 100%;
min-height: 4.6rem; min-height: 60px;
z-index: 500; z-index: 500;
padding: 0.4rem; padding: 5px;
display: grid; display: grid;
grid-template-columns: 3rem 5rem 1fr 1.8rem; grid-template-columns: 40px 1fr 1fr 24px;
grid-template-rows: 2.3rem 2.3rem; grid-template-rows: 30px 30px;
grid-template-areas: 'notice notice_name notice_name a2' 'notice a1 sta a3' 'notf-box notf-box notf-box notf-box'; grid-template-areas: 'notice notice_name notice_name a2' 'notice a1 sta a3' 'notf-box notf-box notf-box notf-box';
} }
.emp { .emp {
@@ -582,8 +604,8 @@ p:not(:last-child) {
} }
#tools { #tools {
position: fixed; position: fixed;
top: 0.76rem; top: 10px;
right: 0.76rem; right: 10px;
float: right; float: right;
} }
.setting { .setting {
@@ -596,14 +618,14 @@ p:not(:last-child) {
} }
.notf-box { .notf-box {
position: fixed; position: fixed;
right: 5.4rem; right: 70px;
background-color: var(--subcolor); background-color: var(--box);
border: thin solid gray; border: thin solid gray;
z-index: 501; z-index: 501;
width: 30rem; width: 400px;
padding: 0.4rem; padding: 5px;
min-height: 7.7rem; min-height: 100px;
max-height: 38.4rem; max-height: 500px;
} }
.column-hide { .column-hide {
display: none; display: none;
@@ -611,21 +633,17 @@ p:not(:last-child) {
height: 0; height: 0;
} }
.prof-img { .prof-img {
border-radius: 0.23rem; border-radius: 3px;
width: 3rem;
}
.prof-img-sml {
width: 1.5rem;
} }
.notf-icon { .notf-icon {
position: relative; position: relative;
top: -1.53rem; top: -20px;
width: 1.5rem; width: 20px;
left: 1.5rem; left: 20px;
} }
.notf-indv-box { .notf-indv-box {
width: 100%; width: 100%;
max-height: 30.7rem; max-height: 400px;
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
border: thin solid gray; border: thin solid gray;
@@ -634,29 +652,14 @@ p:not(:last-child) {
box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 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; 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;
}
.notf-indv-box .setting {
font-size: 1rem;
width: calc(25% - 3px);
text-align: left;
padding: 5px;
height: 70px;
}
.notf-exclude-btn:hover {
background-color: inherit !important;
border: 1px solid;
}
.type-b { .type-b {
display: none; display: none;
} }
.modal-footer { .modal-footer {
background-color: var(--subcolor); background-color: var(--box);
} }
.ballons { .ballons {
background-color: var(--subcolor); background-color: var(--box);
position: absolute; position: absolute;
bottom: 0px; bottom: 0px;
right: 0px; right: 0px;
@@ -673,54 +676,54 @@ p:not(:last-child) {
.vote { .vote {
width: 100%; width: 100%;
border: 1px solid; border: 1px solid;
margin-top: 0.23rem; margin-top: 3px;
padding: 1px; padding: 1px;
border-radius: 0.23rem; border-radius: 3px;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
} }
.fa-2x > .emoji-img { .fa-2x > .emoji-img {
width: 2.3rem !important; width: 36px !important;
height: 2.3rem !important; height: 36px !important;
} }
.fa-3x > .emoji-img { .fa-3x > .emoji-img {
width: 4.15rem !important; width: 54px !important;
height: 4.15rem !important; height: 54px !important;
} }
.fa-4x > .emoji-img { .fa-4x > .emoji-img {
width: 4.6rem !important; width: 72px !important;
height: 4.6rem !important; height: 72px !important;
} }
.fa-5x > .emoji-img { .fa-5x > .emoji-img {
width: 6.9rem !important; width: 90px !important;
height: 6.9rem !important; height: 90px !important;
} }
#lists-user { #lists-user {
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
max-height: 15.4rem; max-height: 200px;
} }
.votebtn { .votebtn {
border: 1px solid; border: 1px solid;
color: var(--bg); color: var(--bg);
background-color: var(--beforehover); background-color: var(--beforehover);
cursor: pointer; cursor: pointer;
width: 3.8rem; width: 50px;
height: 1.7rem; padding: 2px;
display: inline-block; display: inline-block;
text-align: center; text-align: center;
margin-top: 0.38rem; margin-top: 5px;
border-radius: 0.75rem; border-radius: 10px;
transition-duration: 0.5s; transition-duration: 0.5s;
} }
.votebtn:hover { .votebtn:hover {
background-color: var(--text); background-color: var(--color);
} }
.leadPoll { .leadPoll {
position: absolute; position: absolute;
background-color: var(--subcolor); background-color: var(--box);
height: 1.5rem; height: 20px;
border-radius: 0.23rem; border-radius: 3px;
} }
.lpAnime { .lpAnime {
animation-duration: 1s; animation-duration: 1s;
@@ -737,7 +740,7 @@ p:not(:last-child) {
width: 1.2rem !important; width: 1.2rem !important;
position: relative; position: relative;
top: -1px; top: -1px;
margin-left: 0.38rem !important; margin-left: 5px !important;
} }
.jump { .jump {
display: inline-block; display: inline-block;
@@ -762,9 +765,6 @@ p:not(:last-child) {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.fav_ct, .rt_ct, .rep_ct {
font-size: 1.1rem;
}
.shared.selectedToot { .shared.selectedToot {
background-color: var(--selectedWithShare); background-color: var(--selectedWithShare);
} }
@@ -778,18 +778,18 @@ audio {
white-space: normal; white-space: normal;
} }
.cw_btn { .cw_btn {
margin: 0.23rem; margin: 3px;
background-color: var(--emphasized); background-color: var(--emphasized);
color: var(--text); color: var(--color);
padding-left: 0.23rem; padding-left: 3px;
padding-right: 0.23rem; padding-right: 3px;
border-radius: 0.23rem; border-radius: 3px;
border: 1px solid var(--text); border: 1px solid var(--color);
user-select: none; user-select: none;
} }
.vis-data { .vis-data {
font-size: 1rem !important; font-size: 1rem !important;
margin: 0.4rem; margin: 5px;
user-select: none; user-select: none;
} }
@keyframes jump { @keyframes jump {
@@ -862,31 +862,3 @@ audio {
.box .ui-resizable-se { .box .ui-resizable-se {
display: none !important; display: none !important;
} }
.announcement {
padding: 0.38rem;
border-bottom: 1px solid;
}
.announReaction {
width: 2.7rem;
height: 1.7rem;
font-size: 1.1rem;
margin: 0.23rem;
cursor: pointer;
border: solid 1px;
padding-left: 0.15rem;
background-color: var(--subcolor);
border-radius: 0.15rem;
}
.announReaction img {
position: relative;
top: 0.23rem;
}
.announReaction.reactioned {
background-color: var(--emphasized);
}
.announReaction.add {
width: 1.46rem;
}
.reactionsPack {
display: flex;
}

View File

@@ -1,7 +1,7 @@
/*アイコンをクリックした時とかにでてくるユーザーデータ*/ /*アイコンをクリックした時とかにでてくるユーザーデータ*/
#his-data { #his-data {
background-repeat: no-repeat; background-repeat: no-repeat;
background-image: url("../img/loading.svg"); background-image: url("../../loading.svg");
overflow-y: hidden; overflow-y: hidden;
} }
#his-data .btn .material-icons{ #his-data .btn .material-icons{
@@ -16,27 +16,31 @@
} }
#his-prof { #his-prof {
float: left; float: left;
width: 7.7rem; width: 100px;
margin-right: 0.4rem; margin-right: 5px;
} }
.his-float { .his-float {
overflow-y: scroll; overflow-y: scroll;
padding: 0.4rem; padding: 5px;
} }
#his-float-data { #his-float-data {
height: 100%; height: 100%;
overflow-y: hidden; overflow-y: hidden;
} }
#his-leftside { #his-leftside {
width: 38.4rem; width: 500px;
} }
#his-float-timeline { #his-float-timeline {
max-width: 59.6rem; max-width: 775px;
height: 100%; height: 100%;
overflow-y: hidden; overflow-y: hidden;
} }
#his-basic-prof { #his-basic-prof {
min-height: 10rem; min-height: 130px;
}
#his-matching-list {
overflow-y: scroll;
overflow-x: hidden;
} }
#his-field { #his-field {
vertical-align: baseline; vertical-align: baseline;
@@ -51,14 +55,14 @@
padding: 0; padding: 0;
background-color: #757575; background-color: #757575;
text-align: center; text-align: center;
padding: 0.4rem; padding: 5px;
margin-bottom: 1px; margin-bottom: 1px;
width: 30%; width: 30%;
} }
.his-field-content { .his-field-content {
height: 1.5rem; height: 1.5rem;
padding: 0; padding: 0;
padding-left: 0.4rem; padding-left: 5px;
} }
.his-var-content a span.ellipsis:after { .his-var-content a span.ellipsis:after {
content: "..."; content: "...";
@@ -72,13 +76,13 @@
display: inline !important; display: inline !important;
} }
#his-data-show { #his-data-show {
margin: 1.5rem; margin: 20px;
margin-left: 3.8rem; margin-left: 50px;
margin-right: 3.8rem; margin-right: 50px;
background-color: var(--his-data); background-color: var(--his-data);
height: calc(100% - 1.5rem); height: calc(100% - 20px);
margin-bottom: 0; margin-bottom: 0;
padding: 0.4rem; padding: 5px;
} }
#his-data-wrap { #his-data-wrap {
display: flex; display: flex;
@@ -86,40 +90,39 @@
.his-var-content { .his-var-content {
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
height: calc(100% - 3.4rem); height: calc(100% - 45px);
padding-bottom: 60px;
} }
#my-data-nav .btn { #my-data-nav .btn {
width: 10.7rem; width: 140px;
} }
.active-back { .active-back {
background-color: var(--active); background-color: var(--active);
} }
#his-name .emojione, #his-name .emojione,
#his-name .emoji-img { #his-name .emoji-img {
width: 1.538rem; width: 20px;
} }
#his-plus-action .btn { #his-plus-action .btn {
padding-right: 0.4rem; padding-right: 5px;
padding-left: 0.4rem; padding-left: 5px;
} }
.tabs { .tabs {
display: flex; display: flex;
} }
.tabs .tab a { .tabs .tab a {
padding: 0.6rem 0.9rem; padding: 8px 12px;
} }
#his-des { #his-des {
max-height: 17.7rem; max-height: 250px;
overflow-y: scroll; overflow-y: scroll;
} }
#his-sign-action { #his-sign-action {
border: 1px solid; border: 1px solid;
border-radius: 0.4rem; border-radius: 5px;
display: flex; display: flex;
align-items: center; align-items: center;
padding-left: 0.75rem; padding-left: 10px;
padding-right: 0.75rem; padding-right: 10px;
flex-wrap: wrap; flex-wrap: wrap;
} }
#his-sign-action .btn { #his-sign-action .btn {
@@ -130,7 +133,7 @@
cursor: pointer; cursor: pointer;
} }
#his-table{ #his-table{
max-height: 11.538rem; max-height: 150px;
overflow-y: scroll; overflow-y: scroll;
} }
#his-float-blocked { #his-float-blocked {
@@ -143,9 +146,6 @@
#hisdropdown{ #hisdropdown{
background-color: var(--bg); background-color: var(--bg);
} }
#hisdropdown li a {
color: white;
}
#hisdropdown li:hover{ #hisdropdown li:hover{
background-color: var(--active); background-color: var(--active);
} }

Binary file not shown.

View File

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

Before

Width:  |  Height:  |  Size: 7.8 KiB

View File

@@ -1,37 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 4096 4096" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g id="TheDesk">
<g id="back">
<g transform="matrix(1,0,0,1.53232,-11.8871,-1144.65)">
<rect x="1044.02" y="1686.36" width="2335.77" height="782.558" style="fill:rgba(255,255,255,0);">
<animate attributeName="fill" begin="0.5s" dur="0.1s" fill="freeze" values="rgba(255,255,255,0);rgba(255,255,255,1)" />
</rect>
</g>
<rect x="1058.89" y="609.971" width="711.146" height="2885.69" style="fill:rgba(255,255,255,0);">
<animate attributeName="fill" begin="0.5s" dur="0.1s" fill="freeze" values="rgba(255,255,255,0);rgba(255,255,255,1)" />
</rect>
<g transform="matrix(1.08582,0,0,1,-142.973,0)">
<rect x="1665.9" y="1021.89" width="776.607" height="2050.26" style="fill:rgba(255,255,255,0);">
<animate attributeName="fill" begin="0.5s" dur="0.1s" fill="freeze" values="rgba(255,255,255,0);rgba(255,255,255,1)" />
</rect>
</g>
</g>
<g transform="matrix(1,0,0,0.998821,0,4.65666)" id="gray">
<rect x="678.5" y="128.48" width="450" height="3821.5" style="fill:rgb(84,82,81);"/>
</g>
<g transform="matrix(0.999978,-5.55112e-17,-2.20005e-08,0.996112,-1237.17,972.039)" id="orange">
<rect x="1915.71" y="-583.55" width="450" height="3117.62" style="fill:rgb(240,132,46);" r="3117.62">
<animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0,1915.71,-583.55" to="-60,1915.71,-583.55" dur="0.5s" repeatCount="1" fill="freeze" />
</rect>
</g>
<g transform="matrix(0.999978,5.55112e-17,-5.55112e-17,0.999978,-1236.96,-1164.58)" id="blue">
<rect x="1915.5" y="1775.41" width="450" height="3105.58" style="fill:rgb(54,76,159);" r="3117.62">
<animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0,1915.71,4881" to="60,1915.71,4881" dur="0.5s" repeatCount="1" fill="freeze" />
</rect>
</g>
<path id="cat" d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgba(0,0,0,0);">
<animate attributeName="fill" begin="0.6s" dur="0.5s" fill="freeze" values="rgba(0,0,0,0);rgba(0,0,0,1)" repeatCount="1" />
</path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,26 +1,35 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg width="100%" height="100%" viewBox="0 0 4096 4096" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
<g id="TheDesk"> viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
<g> <style type="text/css">
<g transform="matrix(1,0,0,1.53232,-11.8871,-1144.65)"> .st0{display:none;}
<rect x="1044.02" y="1686.36" width="2335.77" height="782.558" style="fill:white;"/> .st1{fill:#FFFFFF;}
</g> .st2{fill:#545251;stroke:#040000;stroke-miterlimit:10;}
<rect x="1058.89" y="609.971" width="711.146" height="2885.69" style="fill:white;"/> .st3{fill:#F0842E;}
<g transform="matrix(1.08582,0,0,1,-142.973,0)"> .st4{fill:#364C9F;}
<rect x="1665.9" y="1021.89" width="776.607" height="2050.26" style="fill:white;"/> .st5{fill:#FFFFFF;stroke:#040000;stroke-miterlimit:10;}
</g> .st6{fill-rule:evenodd;clip-rule:evenodd;fill:#040000;}
</g> .st7{fill-rule:evenodd;clip-rule:evenodd;fill:none;}
<g transform="matrix(1,0,0,0.998821,0,4.65666)"> </style>
<rect x="678.5" y="128.48" width="450" height="3821.5" style="fill:rgb(84,82,81);"/> <g id="レイヤー_1" class="st0">
</g> </g>
<g transform="matrix(0.5,-0.866,0.862652,0.498067,224.046,2340.41)"> <g id="レイヤー_2">
<rect x="1915.71" y="-583.55" width="450" height="3117.62" style="fill:rgb(240,132,46);"/> <polyline class="st1" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
</g> <rect x="678.5" y="128.48" class="st2" width="450" height="3821.5"/>
<g transform="matrix(0.5,0.866,-0.866,0.5,3757.17,-299.625)">
<rect x="1915.5" y="1555.41" width="450" height="3105.58" style="fill:rgb(54,76,159);"/> <rect x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st3" width="450" height="3117.62"/>
</g>
<path id="cat" d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(4,0,0);"/> <rect x="1915.5" y="1555.41" transform="matrix(0.5 0.866 -0.866 0.5 3762.031 -299.6245)" class="st4" width="450" height="3105.58"/>
<rect x="0" y="0" width="4096" height="4096" style="fill:none;"/> <path class="st5" d="M714.5,2953.5"/>
</g> <path id="path1891" class="st6" d="M1592.47,2584h456.47c0-64.89-4.63-77.76-112.1-77.76c17.17-51.5,86.95-176.11,125.73-176.11
c34.31,0,75.24,1.89,75.24,80.17c0,88.87,149.56,232.16,185.82,173.7c54.04-87.12-92.91-60.55-92.91-270.65
c0-287.43,167.74-246.51,167.74-407.99c0-80.79-22.32-91.7-22.32-149.46c0-76.34,67.25-71.91,54.17-135.2
c-9.04-43.72-16.11-78.78-21.38-131.65c-3.74-37.51-4.93-77.5-43.9-75.89c-45.78,1.89-63.15,82.47-134.31,88.25
c-71.02,5.77-131.57-60.46-159.06-51c-27.25,9.38-18.68,83.32-2.52,135.83c25.4,82.54,80.79,189.86-20.2,206.02
c-100.99,16.16-274.69,32.32-399.92,197.94s-120.6,359.99-169.66,420.11C1314.72,2612.08,1146,2529.23,1146,2697.11
c0,75.16,127.35,129.27,147.55,105.03c20.2-24.24-171.62-96.46,43.01-181.78C1519.91,2547.46,1536.28,2532.58,1592.47,2584z"/>
<rect class="st7" width="4096" height="4096"/>
<path class="st1" d="M-58,1122"/>
</g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,9 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!--
TheDesk icon, Cutls P.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
-->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve"> viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
<style type="text/css"> <style type="text/css">

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>

Before

Width:  |  Height:  |  Size: 259 B

View File

@@ -1,8 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!--
ThinkingDesk: Cutls P's icon, Cutls P.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
-->
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve"> viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@@ -1,7 +0,0 @@
<!doctype html>
<html>
<head>
<meta http-equiv=”refresh” content=”0;URL=./view/ja'” />
<script>location.href = './view/ja';</script>
</head>
</html>

View File

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

View File

@@ -1,204 +1,191 @@
selectedColumn = 0 selectedColumn = 0
selectedToot = 0 selectedToot = 0
$(function($) { $(function ($) {
//キーボードショートカット //キーボードショートカット
$(window).keydown(function(e) { $(window).keydown(function (e) {
var hasFocus = $('input').is(':focus') var hasFocus = $('input').is(':focus');
var hasFocus2 = $('textarea').is(':focus') var hasFocus2 = $('textarea').is(':focus');
if (document.getElementById('webview')) { if (document.getElementById("webview")) {
if ($('#webviewsel:checked').val()) { if ($("#webviewsel:checked").val()) {
var wv = false var wv = false;
} else { } else {
var wv = true var wv = true;
} }
} else { } else {
var wv = true var wv = true;
} }
//Enter //Enter
if (e.keyCode === 13) { if (e.keyCode === 13) {
if ($('#src').is(':focus')) { if($("#src").is(':focus')){
src() src()
return false return false;
} }
if ($('#list-add').is(':focus')) { if($("#list-add").is(':focus')){
makeNewList() makeNewList()
return false return false;
} }
} }
//Ctrl+Shift+Enter:Lgen //Ctrl+Shift+Enter:Lgen
if (event.metaKey || (event.ctrlKey && wv)) { if (event.metaKey || event.ctrlKey && wv) {
if (event.shiftKey) { if (event.shiftKey) {
if (e.keyCode === 13) { if (e.keyCode === 13) {
post('local') post('local');
return false return false;
} }
} }
} }
//Ctrl+Enter:投稿 //Ctrl+Enter:投稿
if (event.metaKey || (event.ctrlKey && wv)) { if (event.metaKey || event.ctrlKey && wv) {
if (e.keyCode === 13) { if (e.keyCode === 13) {
post() post();
return false return false;
} }
} }
//Alt+Enter:セカンダリー //Alt+Enter:セカンダリー
if (event.metaKey || (event.altKey && wv)) { if (event.metaKey || event.altKey && wv) {
if (e.keyCode === 13) { if (e.keyCode === 13) {
sec() sec();
return false return false;
} }
} }
//Esc:消す //Esc:消す
if (e.keyCode === 27 && wv) { if (e.keyCode === 27 && wv) {
hide() hide();
return false return false;
} }
//F5リロード //F5リロード
if (e.keyCode === 116 && wv) { if (e.keyCode === 116 && wv) {
location.href = 'index.html' location.href = "index.html";
return false return false;
} }
//Ctrl+Sift+C:全消し //Ctrl+Sift+C:全消し
if ((event.metaKey || event.ctrlKey) && event.shiftKey && wv) { if (((event.metaKey || event.ctrlKey) && event.shiftKey) && wv) {
if (e.keyCode === 67) { if (e.keyCode === 67) {
clear() clear();
return false return false;
} }
} }
//Ctrl+Sift+N:NowPlaying //Ctrl+Sift+N:NowPlaying
if ((event.metaKey || event.ctrlKey) && event.shiftKey && wv) { if (((event.metaKey || event.ctrlKey) && event.shiftKey) && wv) {
if (e.keyCode === 78) { if (e.keyCode === 78) {
show() show();
nowplaying() nowplaying()
return false return false;
} }
} }
//input/textareaにフォーカスなし時 //input/textareaにフォーカスなし時
if (!hasFocus && !hasFocus2 && wv) { if ((!hasFocus && !hasFocus2) && wv) {
if (!wv) { if (!wv) {
return true return true;
} }
//Ctrl+V:いつもの //Ctrl+V:いつもの
if (event.metaKey || event.ctrlKey) { if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 86) { if (e.keyCode === 86) {
show() show();
}
}
//Ctrl+F:検索
if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 70) {
srcBox()
} }
} }
//X:開閉 //X:開閉
if (e.keyCode === 88) { if (e.keyCode === 88) {
if (!$('#post-box').hasClass('appear')) { if (!$("#post-box").hasClass("appear")) {
show() show();
$('textarea').focus() $('textarea').focus();
} else { } else {
hide() hide();
} }
return false return false;
} }
//N:新トゥート //N:新トゥート
if (e.keyCode === 78) { if (e.keyCode === 78) {
if (!$('#post-box').hasClass('appear')) { if (!$("#post-box").hasClass("appear")) {
show() show();
} }
$('textarea').focus() $('textarea').focus();
return false return false;
} }
//Ctrl+E:全ての通知未読を既読にする //Ctrl+E:全ての通知未読を既読にする
if (event.metaKey || event.ctrlKey) { if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 69) { if (e.keyCode === 69) {
allNotfRead() allNotfRead();
return false return false;
}
}
//Ctrl+K:メニュー開閉
if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 75) {
menu()
return false
} }
} }
//Ctrl+Space:読み込み //Ctrl+Space:読み込み
if (event.metaKey || event.ctrlKey) { if (event.metaKey || event.ctrlKey) {
if (e.keyCode === 32) { if (e.keyCode === 32) {
parseColumn() parseColumn();
return false return false;
} }
} }
//Ctrl+Sift+S:設定 //Ctrl+Sift+S:設定
if ((event.metaKey || event.ctrlKey) && event.shiftKey) { if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 83) { if (e.keyCode === 83) {
location.href = 'setting.html' location.href = "setting.html";
return false return false;
} }
} }
//Ctrl+Sift+M:アカマネ //Ctrl+Sift+M:アカマネ
if ((event.metaKey || event.ctrlKey) && event.shiftKey) { if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 77) { if (e.keyCode === 77) {
location.href = 'acct.html' location.href = "acct.html";
return false return false;
} }
} }
//Ctrl+Sift+P:プロフ //Ctrl+Sift+P:プロフ
if ((event.metaKey || event.ctrlKey) && event.shiftKey) { if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 80) { if (e.keyCode === 80) {
profShow() profShow()
return false return false;
} }
} }
//数字:TL //数字:TL
if (event.metaKey || event.ctrlKey) { if (event.metaKey || event.ctrlKey) {
if (e.keyCode >= 49 && e.keyCode <= 57) { if (e.keyCode >= 49 && e.keyCode <= 57) {
var kz = e.keyCode - 49 var kz = e.keyCode - 49;
goColumn(kz) goColumn(kz);
return false return false;
} }
} }
//矢印:選択 //矢印:選択
if (e.code == 'ArrowLeft') { if (e.code == "ArrowLeft") {
//left //left
if ($('#imagemodal').hasClass('open')) { if ($("#imagemodal").hasClass("open")) {
imgCont('prev') imgCont('prev');
return false return false;
} }
if (selectedColumn > 0) { if (selectedColumn > 0) {
selectedColumn-- selectedColumn--
} }
tootSelector(selectedColumn, selectedToot) tootSelector(selectedColumn, selectedToot)
return false return false;
} else if (e.code == 'ArrowUp') { } else if (e.code == "ArrowUp") {
//up //up
if ($('#imagemodal').hasClass('open')) { if ($("#imagemodal").hasClass("open")) {
return false return false;
} }
if (selectedToot > 0) { if (selectedToot > 0) {
selectedToot-- selectedToot--
} }
tootSelector(selectedColumn, selectedToot) tootSelector(selectedColumn, selectedToot)
return false return false;
} else if (e.code == 'ArrowRight') { } else if (e.code == "ArrowRight") {
//right //right
if ($('#imagemodal').hasClass('open')) { if ($("#imagemodal").hasClass("open")) {
imgCont('next') imgCont('next');
return false return false;
} }
if (selectedColumn < $('.tl-box').length - 1) { if (selectedColumn < $(".tl-box").length - 1) {
selectedColumn++ selectedColumn++
} }
tootSelector(selectedColumn, selectedToot) tootSelector(selectedColumn, selectedToot)
return false return false;
} else if (e.code == 'ArrowDown') { } else if (e.code == "ArrowDown") {
//down //down
if ($('#imagemodal').hasClass('open')) { if ($("#imagemodal").hasClass("open")) {
return false return false;
} }
selectedToot++ selectedToot++
tootSelector(selectedColumn, selectedToot) tootSelector(selectedColumn, selectedToot)
return false return false;
} }
//Ctrl+U:0,0選択 //Ctrl+U:0,0選択
if (event.ctrlKey || event.metaKey) { if (event.ctrlKey || event.metaKey) {
@@ -206,29 +193,29 @@ $(function($) {
selectedToot = 0 selectedToot = 0
selectedColumn = 0 selectedColumn = 0
tootSelector(0, 0) tootSelector(0, 0)
return false return false;
} }
} }
//選択時 //選択時
if (e.keyCode == 70) { if (e.keyCode == 70) {
var id = $('.selectedToot').attr('unique-id') var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr('data-acct') var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
fav(id, acct_id, false) fav(id, acct_id, false)
return false return false;
} }
if (e.keyCode == 66) { if (e.keyCode == 66) {
var id = $('.selectedToot').attr('unique-id') var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr('data-acct') var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
rt(id, acct_id, false) rt(id, acct_id, false)
return false return false;
} }
if (e.keyCode == 82) { if (e.keyCode == 82) {
var id = $('.selectedToot').attr('unique-id') var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr('data-acct') var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
var ats_cm = $('.selectedToot .rep-btn').attr('data-men') var ats_cm = $('.selectedToot .rep-btn').attr("data-men")
var mode = $('.selectedToot .rep-btn').attr('data-visen') var mode = $('.selectedToot .rep-btn').attr("data-visen")
re(id, ats_cm, acct_id, mode) re(id, ats_cm, acct_id, mode)
return false return false;
} }
} }
//textareaフォーカス時 //textareaフォーカス時
@@ -237,27 +224,23 @@ $(function($) {
//C+S+(No):ワンクリ //C+S+(No):ワンクリ
if ((event.metaKey || event.ctrlKey) && event.shiftKey) { if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
if (e.keyCode >= 49 && e.keyCode <= 51) { if (e.keyCode >= 49 && e.keyCode <= 51) {
var no = e.keyCode - 48 var no = e.keyCode - 48;
if (localStorage.getItem('oks-' + no)) { if (localStorage.getItem("oks-" + no)) { $("#textarea").val($("#textarea").val() + localStorage.getItem("oks-" + no)) }
$('#textarea').val($('#textarea').val() + localStorage.getItem('oks-' + no)) return false;
}
return false
} }
} }
} }
} }
}) });
//クリアボタン //クリアボタン
$('#clear').click(function() { $("#clear").click(function () {
clear() clear();
}) });
}) });
//選択する //選択する
function tootSelector(column, toot) { function tootSelector(column, toot) {
$('.cvo').removeClass('selectedToot') $('.cvo').removeClass("selectedToot")
$('#timeline_' + column + ' .cvo') $('#timeline_' + column + ' .cvo').eq(toot).addClass("selectedToot")
.eq(toot)
.addClass('selectedToot')
var scr = $('.tl-box[tlid=' + column + ']').scrollTop() var scr = $('.tl-box[tlid=' + column + ']').scrollTop()
var elem = $('.selectedToot').offset().top var elem = $('.selectedToot').offset().top
var top = elem - $('.tl-box').height() + scr var top = elem - $('.tl-box').height() + scr
@@ -272,4 +255,4 @@ function tootSelector(column, toot) {
$('.tl-box[tlid=' + column + ']').animate({ scrollTop: to }) $('.tl-box[tlid=' + column + ']').animate({ scrollTop: to })
} }
} }
} }

View File

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

View File

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

View File

@@ -1,29 +1,24 @@
//バージョンチェッカー //バージョンチェッカー
function verck(ver, jp) { function verck(ver, jp) {
if (store) return false console.log('%c Welcome😊', 'color: red;font-size:200%;')
console.log('%c Welcome😊 ' + ver, 'color: red;font-size:200%;')
$('body').addClass(localStorage.getItem('platform'))
var date = new Date() var date = new Date()
var showVer = false var show = 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')) { if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) {
showVer = true //ちょっと削除とリンク解析の都合上アレ(s)
//対象外のアプデ:storageが20の最初まで"Usamin (18.6.5)"
if (!localStorage.getItem('usamin_18_6_5_flag')) {
localStorage.setItem('usamin_18_6_5_flag', true)
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
for (var i = 0; i < obj.length; i++) {
localStorage.removeItem('card_' + i)
}
}
//ちょっと削除とリンク解析の都合上アレ(e)
show = true
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;') console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
$(document).ready(function() { $(document).ready(function() {
if (localStorage.getItem('winstore') && !pwa) { if (localStorage.getItem('winstore')) {
$('#releasenote').modal('open') $('#releasenote').modal('open')
} }
verp = ver.replace('(', '') verp = ver.replace('(', '')
@@ -42,8 +37,8 @@ function verck(ver, jp) {
}) })
} }
localStorage.setItem('ver', ver) localStorage.setItem('ver', ver)
if (!showVer) { if (!show) {
console.log(showVer) console.log(show)
if ( if (
date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe') || date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe') ||
!localStorage.getItem('showSupportMe') !localStorage.getItem('showSupportMe')
@@ -73,7 +68,7 @@ function verck(ver, jp) {
} }
var platform = localStorage.getItem('platform') var platform = localStorage.getItem('platform')
console.log('Your platform:' + platform) console.log('Your platform:' + platform)
if (!localStorage.getItem('winstore') && !pwa) { if (!localStorage.getItem('winstore')) {
$('#start').css('display', 'flex') $('#start').css('display', 'flex')
} }
if ( if (
@@ -147,10 +142,9 @@ function verck(ver, jp) {
if (!localStorage.getItem('last-notice-id')) { if (!localStorage.getItem('last-notice-id')) {
localStorage.setItem('last-notice-id', 0) localStorage.setItem('last-notice-id', 0)
} }
var start = 'https://thedesk.top/notice/index.php?since_id=' + localStorage.getItem('last-notice-id') var start = 'https://thedesk.top/notice?since_id=' + localStorage.getItem('last-notice-id')
fetch(start, { fetch(start, {
method: 'GET', method: 'GET'
cors: true
}) })
.then(function(response) { .then(function(response) {
if (!response.ok) { if (!response.ok) {
@@ -178,7 +172,7 @@ function verck(ver, jp) {
} else { } else {
if (obj.type == 'textv2') { if (obj.type == 'textv2') {
if (~obj.languages.indexOf(lang.language)) { if (~obj.languages.indexOf(lang.language)) {
var showVer = true var show = true
if (obj.toot != '') { if (obj.toot != '') {
var toot = var toot =
'<button class="btn-flat toast-action" onclick="detEx(\'' + '<button class="btn-flat toast-action" onclick="detEx(\'' +
@@ -189,25 +183,25 @@ function verck(ver, jp) {
} }
if (obj.ver != '') { if (obj.ver != '') {
if (obj.ver == ver) { if (obj.ver == ver) {
showVer = true show = true
} else { } else {
showVer = false show = false
} }
} }
if (obj.domain != '') { if (obj.domain != '') {
var multi = localStorage.getItem('multi') var multi = localStorage.getItem('multi')
if (multi) { if (multi) {
showVer = false show = false
var accts = JSON.parse(multi) var accts = JSON.parse(multi)
Object.keys(accts).forEach(function(key) { Object.keys(accts).forEach(function(key) {
var acct = accts[key] var acct = accts[key]
if (acct.domain == obj.domain) { if (acct.domain == obj.domain) {
showVer = true show = true
} }
}) })
} }
} }
if (showVer) { if (show) {
M.toast({ M.toast({
html: html:
escapeHTML(obj.text) + escapeHTML(obj.text) +
@@ -237,7 +231,7 @@ function infowebsocket() {
if (obj.type == 'textv2') { if (obj.type == 'textv2') {
if (~obj.languages.indexOf(lang.language)) { if (~obj.languages.indexOf(lang.language)) {
localStorage.setItem('last-notice-id', obj.id) localStorage.setItem('last-notice-id', obj.id)
var showVer = true var show = true
if (obj.toot != '') { if (obj.toot != '') {
var toot = var toot =
'<button class="btn-flat toast-action" onclick="detEx(\'' + '<button class="btn-flat toast-action" onclick="detEx(\'' +
@@ -248,25 +242,25 @@ function infowebsocket() {
} }
if (obj.ver != '') { if (obj.ver != '') {
if (obj.ver == ver) { if (obj.ver == ver) {
showVer = true show = true
} else { } else {
showVer = false show = false
} }
} }
if (obj.domain != '') { if (obj.domain != '') {
var multi = localStorage.getItem('multi') var multi = localStorage.getItem('multi')
if (multi) { if (multi) {
showVer = false show = false
var accts = JSON.parse(multi) var accts = JSON.parse(multi)
Object.keys(accts).forEach(function(key) { Object.keys(accts).forEach(function(key) {
var acct = accts[key] var acct = accts[key]
if (acct.domain == obj.domain) { if (acct.domain == obj.domain) {
showVer = true show = true
} }
}) })
} }
} }
if (showVer) { if (show) {
console.log(obj.text) console.log(obj.text)
console.log(escapeHTML(obj.text)) console.log(escapeHTML(obj.text))
M.toast({ M.toast({
@@ -328,8 +322,54 @@ function closeSupport() {
} }
) )
} }
function storeDialog(platform, ver) {
if (platform == 'win32') {
var mes = lang.lang_version_platform
} else if (platform == 'linux') {
var mes = lang.lang_version_platform_linux
} else if (platform == 'darwin') {
var mes = lang.lang_version_platform_mac
}
Swal.fire({
title: 'Select your platform',
text: mes,
type: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#3085d6',
confirmButtonText: lang.lang_no,
cancelButtonText: lang.lang_yesno
}).then(result => {
//逆にしてる
if (!result.value) {
localStorage.setItem('winstore', 'winstore')
} else {
localStorage.setItem('winstore', 'localinstall')
}
localStorage.setItem('ver', ver)
show = true
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
$(document).ready(function() {
$('#releasenote').modal('open')
verp = ver.replace('(', '')
verp = verp.replace('.', '-')
verp = verp.replace('.', '-')
verp = verp.replace('[', '-')
verp = verp.replace(']', '')
verp = verp.replace(')', '')
verp = verp.replace(' ', '_')
console.log('%c ' + verp, 'color: red;font-size:200%;')
if (lang.language == 'ja') {
$('#release-' + verp).show()
} else {
$('#release-en').show()
}
})
})
}
function closeStart() { function closeStart() {
$('#start').css('display', 'none') $('#start').css('display', 'none')
var platform = localStorage.getItem('platform') var platform = localStorage.getItem('platform')
var ver = localStorage.getItem('ver') var ver = localStorage.getItem('ver')
storeDialog(platform, ver)
} }

View File

@@ -1,105 +1,84 @@
var defaultemojiList = ['activity', 'flag', 'food', 'nature', 'object', 'people', 'place', 'symbol'] var defaultemojiList = ["activity", "flag", "food", "nature", "object", "people", "place", "symbol"];
var defaultemoji = { var defaultemoji = {
activity: activity, activity: activity,
flag: flag, flag: flag,
food: food, food: food,
nature: nature, nature: nature,
object: object, object: object,
people: people, people: people,
place: place, place: place,
symbol: symbol symbol: symbol
} };
if (lang == 'ja') { if (lang == "ja") {
var defaultemojiname = { var defaultemojiname = {
activity: '活動', activity: "活動",
flag: '国旗', flag: "国旗",
food: '食べ物', food: "食べ物",
nature: '自然', nature: "自然",
object: 'もの', object: "もの",
people: 'ひと', people: "ひと",
place: '場所', place: "場所",
symbol: '記号' symbol: "記号"
} };
} else { } else {
var defaultemojiname = { var defaultemojiname = {
activity: 'Activities', activity: "Activities",
flag: 'Flags', flag: "Flags",
food: 'Foods', food: "Foods",
nature: 'Nature', nature: "Nature",
object: 'Tools', object: "Tools",
people: 'People', people: "People",
place: 'Places', place: "Places",
symbol: 'Symbols' symbol: "Symbols"
} };
} }
function defaultEmoji(target) { function defaultEmoji(target) {
var announcement = false var json = defaultemoji[target];
if ($('#media').val() == 'announcement') { var emojis = "";
announcement = true Object.keys(json).forEach(function (key) {
} var emoji = json[key];
var json = defaultemoji[target] emojis = emojis + '<a onclick="defEmoji(\'' + emoji["shortcode"] + '\')" class="pointer"><span style="width: 20px; height: 20px; display: inline-block; background-image: url(\'../../img/sheet.png\'); background-size: 4900%; background-position: ' + emoji["css"] + ';"></span></a>';
var emojis = '' });
Object.keys(json).forEach(function(key) { $("#emoji-list").html(emojis);
var emoji = json[key] $("#now-emoji").text(lang.lang_defaultemojis_text.replace("{{cat}}", defaultemojiname[target]));
if (announcement) { $(".emoji-control").addClass("hide");
var def = `<a onclick="emojiReactionDef('${emoji['shortcode']}')" class="pointer">`
} else {
var def = `<a onclick="defEmoji('${emoji['shortcode']}')" class="pointer">`
}
emojis =
emojis +
`${def}
<span style="
width: 20px; height: 20px; display: inline-block; background-image: url('../../img/sheet.png'); background-size: 4900%;
background-position:${emoji['css']};"></span>
</a>`
})
$('#emoji-list').html(emojis)
$('#now-emoji').text(lang.lang_defaultemojis_text.replace('{{cat}}', defaultemojiname[target]))
$('.emoji-control').addClass('hide')
} }
function customEmoji() { function customEmoji() {
$('#emoji-suggest').val('') $("#emoji-suggest").val("");
$('.emoji-control').removeClass('hide') $(".emoji-control").removeClass("hide");
emojiList('home') emojiList('home')
} }
function defEmoji(target) { function defEmoji(target) {
var selin = $('#textarea').prop('selectionStart') var selin = $("#textarea").prop('selectionStart');
if (!selin) { if (!selin) {
selin = 0 selin = 0;
} }
var emojiraw = newpack.filter(function(item, index) { var emojiraw = newpack.filter(function (item, index) {
if (item.short_name == target) return true if (item.short_name == target) return true;
}) });
var hex = emojiraw[0].unified.split('-') var hex = emojiraw[0].unified.split("-");
if (hex.length === 2) { if (hex.length === 2) {
emoji = twemoji.convert.fromCodePoint(hex[0]) + twemoji.convert.fromCodePoint(hex[1]) emoji = twemoji.convert.fromCodePoint(hex[0]) + twemoji.convert.fromCodePoint(hex[1]);
} else { } else {
emoji = twemoji.convert.fromCodePoint(hex[0]) emoji = twemoji.convert.fromCodePoint(hex[0]);
} }
var now = $('#textarea').val() var now = $("#textarea").val();
var before = now.substr(0, selin) var before = now.substr(0, selin);
var after = now.substr(selin, now.length) var after = now.substr(selin, now.length);
newt = before + emoji + after newt = before + emoji + after;
$('#textarea').val(newt) $("#textarea").val(newt);
$('#textarea').focus() $("#textarea").focus();
} }
function faicon() { function faicon() {
var json = faicons var json = faicons;
var emojis = '' var emojis = "";
Object.keys(json).forEach(function(key) { Object.keys(json).forEach(function (key) {
var emoji = json[key] var emoji = json[key];
var eje = emoji.replace(/fa-/g, '') var eje = emoji.replace(/fa-/g, "");
emojis = emojis = emojis + '<a onclick="emojiInsert(\'[faicon]' + eje + '[/faicon]\')" class="pointer white-text" style="font-size:24px"><i class="fa ' + emoji + '"></i></a>';
emojis + });
'<a onclick="emojiInsert(\'[faicon]' + $("#emoji-list").html(emojis);
eje + $("#now-emoji").text("faicon");
'[/faicon]\')" class="pointer white-text" style="font-size:24px"><i class="fa ' + $(".emoji-control").addClass("hide");
emoji + }
'"></i></a>'
})
$('#emoji-list').html(emojis)
$('#now-emoji').text('faicon')
$('.emoji-control').addClass('hide')
}

View File

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

View File

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

View File

@@ -47,9 +47,6 @@ function ck() {
multiSelector(false) multiSelector(false)
verck(ver, jp) verck(ver, jp)
$('.stw').show() $('.stw').show()
if (localStorage.getItem('tips')) {
tips(localStorage.getItem('tips'))
}
$('#something-wrong img').attr('src', '../../img/thinking.svg') $('#something-wrong img').attr('src', '../../img/thinking.svg')
} }
} }
@@ -590,10 +587,9 @@ function enc(ver) {
} }
//インスタンスティッカー //インスタンスティッカー
function ticker() { function ticker() {
var start = 'https://s.0px.io/json' var start = 'https://toot.app/toot/'
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
cors: true,
headers: { headers: {
'content-type': 'application/json' 'content-type': 'application/json'
} }
@@ -611,8 +607,7 @@ function ticker() {
}) })
.then(function(json) { .then(function(json) {
if (json) { if (json) {
localStorage.removeItem('ticker') localStorage.setItem('ticker', JSON.stringify(json))
localStorage.setItem('sticker', JSON.stringify(json))
} }
}) })
} }

View File

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

View File

@@ -252,31 +252,11 @@ function multiDel(target) {
var newdom = oldcol.domain var newdom = oldcol.domain
} }
var type = oldcol.type var type = oldcol.type
var data = null
if(oldcol.data) {
data = oldcol.data
}
var background = null
if(oldcol.background) {
background = oldcol.background
}
var text = null
if(oldcol.text) {
text = oldcol.text
}
var left_fold = false
if(oldcol.left_fold) {
left_fold = true
}
//消した垢のコラムじゃないときコピー //消した垢のコラムじゃないときコピー
if (target != oldcol.domain) { if (target != oldcol.domain) {
var add = { var add = {
domain: newdom, domain: newdom,
type: type, type: type
data: data,
background: background,
text: text,
left_fold: left_fold
} }
newcols.push(add) newcols.push(add)
} }
@@ -526,7 +506,7 @@ function misskeyLogin(url) {
if (!url) { if (!url) {
var url = $('#misskey-url').val() var url = $('#misskey-url').val()
} }
var start = 'https://' + url + '/api/app/create' var start = 'http://' + url + '/api/app/create'
var httpreq = new XMLHttpRequest() var httpreq = new XMLHttpRequest()
httpreq.open('POST', start, true) httpreq.open('POST', start, true)
httpreq.setRequestHeader('Content-Type', 'application/json') httpreq.setRequestHeader('Content-Type', 'application/json')

View File

@@ -46,17 +46,10 @@ $(document).on('click', 'a', e => {
udgEx(url, 'main') udgEx(url, 'main')
return false return false
} else { } else {
if(pwa) { postMessage(['openUrl', url], '*')
return true
} else {
postMessage(['openUrl', url], '*')
}
} }
} }
} else { } else {
if(pwa) {
return true
}
//hrefがhttp/httpsならブラウザで //hrefがhttp/httpsならブラウザで
if (urls) { if (urls) {
if (urls[0]) { if (urls[0]) {
@@ -130,6 +123,11 @@ function playSound() {
volumeControl.gain.value = vol volumeControl.gain.value = vol
source.start(0) source.start(0)
soundFile = source soundFile = source
function newFunction() {
var source
return source
}
} }
function nano() { function nano() {
postMessage(['nano', null], '*') postMessage(['nano', null], '*')
@@ -144,10 +142,10 @@ onmessage = function(e) {
} else if (e.data[0] == 'post') { } else if (e.data[0] == 'post') {
post('pass') post('pass')
} else if (e.data[0] == 'toastSaved') { } else if (e.data[0] == 'toastSaved') {
var showTxt = `${lang.lang_img_DLDone}${ var show = `${lang.lang_img_DLDone}${
e.data[1][0] e.data[1][0]
}<button class="btn-flat toast-action" onclick="openFinder('${e.data[1][1]}')">Show</button>` }<button class="btn-flat toast-action" onclick="openFinder('${e.data[1][1]}')">Show</button>`
M.toast({ html: showTxt, displayLength: 5000 }) M.toast({ html: show, displayLength: 5000 })
} else if (e.data[0] == 'parseColumn') { } else if (e.data[0] == 'parseColumn') {
parseColumn(e.data[1]) parseColumn(e.data[1])
} else if (e.data[0] == 'exportSettingsCore') { } else if (e.data[0] == 'exportSettingsCore') {
@@ -181,10 +179,6 @@ onmessage = function(e) {
asRead() asRead()
} else if (e.data[0] == 'asReadEnd') { } else if (e.data[0] == 'asReadEnd') {
asReadEnd() asReadEnd()
} else if (e.data[0] == 'accessibility') {
console.log('atrue')
$('body').addClass('accessibility')
$('.window-title').before('<div class="accessMark">Screen Reader Optimized</div>')
} else if (e.data[0] == 'logData') { } else if (e.data[0] == 'logData') {
$('#logs').val(e.data[1]) $('#logs').val(e.data[1])
var obj = document.getElementById('logs') var obj = document.getElementById('logs')
@@ -196,23 +190,3 @@ onmessage = function(e) {
}) })
} }
} }
/* PWA */
if(pwa) {
function postMessage(e) {
if (e[0] == 'openUrl') {
urls = e[1].match(/https?:\/\/(.+)/)
if (urls) {
Swal.fire({
title: 'Open URL',
icon: 'info',
html:
`If you are OK, click: <a href="${urls[0]}" target="_blank" class="btn waves-effect">Here</a>`,
showCloseButton: false,
showCancelButton: true,
focusConfirm: false,
confirmButtonText: 'Close'
})
}
}
}
}

View File

@@ -1,11 +1,12 @@
$.strip_tags = function (str, allowed) { document.title = 'TheDesk'
$.strip_tags = function(str, allowed) {
if (!str) { if (!str) {
return '' return ''
} }
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('') allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('')
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi, var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi
return str.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) { return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '' return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''
}) })
} }
@@ -88,18 +89,17 @@ function formattimeutc(date) {
} }
postMessage(['sendSinmpleIpc', 'custom-css-request'], '*') postMessage(['sendSinmpleIpc', 'custom-css-request'], '*')
function makeCID() { function makeCID() {
let chars = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("") return (
for (let i = 0, len = chars.length; i < len; i++) { randomStr(8) +
switch (chars[i]) { '-' +
case "x": randomStr(4) +
chars[i] = Math.floor(Math.random() * 16).toString(16) '-' +
break randomStr(4) +
case "y": '-' +
chars[i] = (Math.floor(Math.random() * 4) + 8).toString(16) randomStr(4) +
break '-' +
} randomStr(12)
} )
return chars.join("")
} }
function randomStr(l) { function randomStr(l) {
// 生成する文字列に含める文字セット // 生成する文字列に含める文字セット
@@ -148,15 +148,15 @@ function rgbToHex(color) {
console.error(color + ':第1引数はRGB形式で入力') console.error(color + ':第1引数はRGB形式で入力')
} }
/*マルチバイト用切り出し*/ /*マルチバイト用切り出し*/
$.isSurrogatePear = function (upper, lower) { $.isSurrogatePear = function(upper, lower) {
return 0xd800 <= upper && upper <= 0xdbff && 0xdc00 <= lower && lower <= 0xdfff return 0xd800 <= upper && upper <= 0xdbff && 0xdc00 <= lower && lower <= 0xdfff
} }
$.mb_strlen = function (str) { $.mb_strlen = function(str) {
var splitter = new GraphemeSplitter() var splitter = new GraphemeSplitter()
var arr = splitter.splitGraphemes(str) var arr = splitter.splitGraphemes(str)
return arr.length return arr.length
} }
$.mb_substr = function (str, begin, end) { $.mb_substr = function(str, begin, end) {
//配列にする //配列にする
var splitter = new GraphemeSplitter() var splitter = new GraphemeSplitter()
var arr = splitter.splitGraphemes(str) var arr = splitter.splitGraphemes(str)
@@ -176,7 +176,7 @@ function object_array_sort(data, key, order, fn) {
num_a = 1 num_a = 1
num_b = -1 num_b = -1
} }
data = data.sort(function (a, b) { data = data.sort(function(a, b) {
var x = a[key] var x = a[key]
var y = b[key] var y = b[key]
if (x > y) return num_a if (x > y) return num_a
@@ -205,7 +205,7 @@ function escapeCsv(str) {
return str return str
} }
var result var result
result = str.toString().replace(/\"/g, '""') result = str.replace(/\"/g, '""')
if (result.indexOf(',') >= 0) { if (result.indexOf(',') >= 0) {
result = '"' + result + '"' result = '"' + result + '"'
} }

View File

@@ -1,28 +1,6 @@
var electron = require('electron') var electron = require('electron')
const shell = electron.shell const shell = electron.shell
var ipc = electron.ipcRenderer var ipc = electron.ipcRenderer
//title bar
const customTitlebar = require('custom-electron-titlebar')
window.addEventListener('DOMContentLoaded', () => {
document.title = 'TheDesk'
ipc.send('acsCheck', '')
ipc.send('frameCheck', '')
ipc.on('frame', function(event, args) {
const file = location.href.substr(-10)
if (
file == 'index.html' ||
file == '/acct.html' ||
file == 'tting.html'
) {
new customTitlebar.Titlebar({
backgroundColor: customTitlebar.Color.fromHex('#000'),
titleHorizontalAlignment: 'right',
icon: '../../img/desk.png'
})
}
})
})
onmessage = function(e) { onmessage = function(e) {
if (e.data[0] == 'openUrl') { if (e.data[0] == 'openUrl') {
urls = e.data[1].match(/https?:\/\/(.+)/) urls = e.data[1].match(/https?:\/\/(.+)/)
@@ -49,7 +27,7 @@ onmessage = function(e) {
} else if (e.data[0] == 'generalDL') { } else if (e.data[0] == 'generalDL') {
ipc.send('general-dl', e.data[1]) ipc.send('general-dl', e.data[1])
} else if (e.data[0] == 'openFinder') { } else if (e.data[0] == 'openFinder') {
ipc.send('openFinder', e.data[1]) ipc.send('open-finder', e.data[1])
} else if (e.data[0] == 'columnDel') { } else if (e.data[0] == 'columnDel') {
ipc.send('column-del', e.data[1]) ipc.send('column-del', e.data[1])
} else if (e.data[0] == 'lang') { } else if (e.data[0] == 'lang') {
@@ -70,8 +48,6 @@ onmessage = function(e) {
ipc.send('theme-json-request', e.data[1]) ipc.send('theme-json-request', e.data[1])
} else if (e.data[0] == 'ha') { } else if (e.data[0] == 'ha') {
ipc.send('ha', e.data[1]) ipc.send('ha', e.data[1])
} else if (e.data[0] == 'frameSet') {
ipc.send('frameSet', e.data[1])
} else if (e.data[0] == 'ua') { } else if (e.data[0] == 'ua') {
ipc.send('ua', e.data[1]) ipc.send('ua', e.data[1])
} else if (e.data[0] == 'aboutData') { } else if (e.data[0] == 'aboutData') {
@@ -156,12 +132,12 @@ ipc.on('resizeJudgement', function(event, b64) {
var width = element.naturalWidth var width = element.naturalWidth
var height = element.naturalHeight var height = element.naturalHeight
if (width > resize || height > resize) { if (width > resize || height > resize) {
ipc.send('resize-image', [b64[0], resize]) ipc.send('resize-image', [b64, resize])
} else { } else {
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*') postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
} }
} }
element.src = 'data:image/png;base64,' + b64[0] element.src = b64
} else { } else {
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*') postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
} }
@@ -171,7 +147,7 @@ ipc.on('general-dl-prog', function(event, arg) {
console.log('Progress: ' + arg) console.log('Progress: ' + arg)
}) })
ipc.on('general-dl-message', function(event, arg) { ipc.on('general-dl-message', function(event, arg) {
var argC = arg.replace(/\\/g, '\\\\') var argC = arg.replace(/\\/g, '\\\\') + '\\\\.'
console.log('saved') console.log('saved')
postMessage(['toastSaved', [arg, argC]], '*') postMessage(['toastSaved', [arg, argC]], '*')
}) })
@@ -207,7 +183,6 @@ ipc.on('theme-json-response', function(event, args) {
postMessage(['customConnect', args], '*') postMessage(['customConnect', args], '*')
}) })
ipc.on('theme-json-create-complete', function(event, args) { ipc.on('theme-json-create-complete', function(event, args) {
if(args != '') alert(args)
postMessage(['clearCustomImport', ''], '*') postMessage(['clearCustomImport', ''], '*')
postMessage(['ctLoad', ''], '*') postMessage(['ctLoad', ''], '*')
}) })
@@ -233,16 +208,12 @@ ipc.on('prog', function(event, arg) {
ipc.on('mess', function(event, arg) { ipc.on('mess', function(event, arg) {
postMessage(['updateMess', arg], '*') postMessage(['updateMess', arg], '*')
}) })
//misc
ipc.on('asRead', function(event, arg) { ipc.on('asRead', function(event, arg) {
postMessage(['asRead', ''], '*') postMessage(['asRead', ''], '*')
}) })
ipc.on('asReadEnd', function(event, arg) { ipc.on('asReadEnd', function(event, arg) {
postMessage(['asReadEnd', ''], '*') postMessage(['asReadEnd', ''], '*')
}) })
ipc.on('accessibility', function(event, arg) {
postMessage(['accessibility', 'true'], '*')
})
var webviewDom = document.getElementById('webview') var webviewDom = document.getElementById('webview')
if (webviewDom) { if (webviewDom) {
webviewDom.addEventListener('new-window', function(e) { webviewDom.addEventListener('new-window', function(e) {

View File

@@ -193,15 +193,7 @@ function emojiGet(parse, started) {
function emojiList(target, reaction) { function emojiList(target, reaction) {
$('#now-emoji').text(lang.lang_emoji_custom) $('#now-emoji').text(lang.lang_emoji_custom)
var acct_id = $('#post-acct-sel').val() var acct_id = $('#post-acct-sel').val()
if(reaction && $('#media').val() == 'misskey') { if (reaction && localStorage.getItem('emojiReaction_' + acct_id) != 'true') {
var misskeyReact = true
} else {
var misskeyReact = false
}
if (
misskeyReact &&
localStorage.getItem('emojiReaction_' + acct_id) != 'true'
) {
console.error('Disabled') console.error('Disabled')
clear() clear()
hide() hide()
@@ -271,20 +263,9 @@ function emojiList(target, reaction) {
var emoji = obj[i] var emoji = obj[i]
if (emoji) { if (emoji) {
if (reaction) { if (reaction) {
if (emoji.divider) { html =
html = html + '<p style="margin-bottom:0">' + emoji.cat + '</p>' html +
} else { `<a onclick="emojiReaction(':${emoji.shortcode}:')" class="pointer"><img src="${emoji.url}" width="20" title="${emoji.shortcode}"></a>`
if (emoji.listed) {
if(misskeyReact) {
var shortcode = `:${emoji.shortcode}:`
} else {
var shortcode = emoji.shortcode
}
html =
html +
`<a onclick="emojiReaction('${shortcode}')" class="pointer"><img src="${emoji.url}" width="20" title="${emoji.shortcode}"></a>`
}
}
} else { } else {
if (emoji.divider) { if (emoji.divider) {
html = html + '<p style="margin-bottom:0">' + emoji.cat + '</p>' html = html + '<p style="margin-bottom:0">' + emoji.cat + '</p>'

View File

@@ -86,7 +86,7 @@ function handleFileUpload(files, obj, no) {
} }
//ファイルアップロード //ファイルアップロード
async function media(b64, type, no, stamped) { function media(b64, type, no, stamped) {
var acct_id = $('#post-acct-sel').val() var acct_id = $('#post-acct-sel').val()
var domain = localStorage.getItem('domain_' + acct_id) var domain = localStorage.getItem('domain_' + acct_id)
var user = localStorage.getItem('user_' + acct_id) var user = localStorage.getItem('user_' + acct_id)
@@ -130,57 +130,18 @@ async function media(b64, type, no, stamped) {
httpreq.send(fd) httpreq.send(fd)
} else { } else {
var previewer = 'preview_url' var previewer = 'preview_url'
//v2/media var start = 'https://' + domain + '/api/v1/media'
try { httpreq.open('POST', start, true)
var id = await v2MediaUpload(domain, at, fd) httpreq.upload.addEventListener('progress', progshow, false)
if(!id) { httpreq.responseType = 'json'
var start = 'https://' + domain + '/api/v1/media' httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.open('POST', start, true) httpreq.send(fd)
httpreq.upload.addEventListener('progress', progshow, false)
httpreq.responseType = 'json'
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.send(fd)
} else {
var mediav = $('#media').val()
var regExp = new RegExp('tmp_' + r, 'g')
mediav = mediav.replace(regExp, id)
$('#media').val(mediav)
var html = `<img src="../../img/picture.svg" class="preview-img pointer unknown" data-media="${id}" oncontextmenu="deleteImage('${id}')" onclick="altImage('${acct_id}','${id}')" title="${lang.lang_postimg_delete}">`
$('#preview').append(html)
todc()
if (localStorage.getItem('nsfw_' + acct_id)) {
$('#nsfw').addClass('yellow-text')
$('#nsfw').html('visibility')
$('#nsfw').addClass('nsfw-avail')
}
$('.toot-btn-group').prop('disabled', false)
$('select').formSelect()
$('#mec').text(lang.lang_there)
M.toast({ html: '<span>' + lang.lang_postimg_sync + '</span><button class="btn-flat toast-action" onclick="syncDetail()">Click</button>', displayLength: 3000 })
$('#imgup').text('')
$('#imgsel').show()
localStorage.removeItem('image')
}
} catch {
var start = 'https://' + domain + '/api/v1/media'
httpreq.open('POST', start, true)
httpreq.upload.addEventListener('progress', progshow, false)
httpreq.responseType = 'json'
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.send(fd)
}
} }
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
setLog(start, this.status, json) setLog(start, this.status, json)
$('.toot-btn-group').prop('disabled', false)
$('select').formSelect()
$('#mec').text(lang.lang_there)
M.toast({ html: this.status + ':' +json, displayLength: 2000 })
$('#imgup').text('')
$('#imgsel').show()
} }
if (!json.id) { if (!json.id) {
todc() todc()
@@ -192,10 +153,6 @@ async function media(b64, type, no, stamped) {
M.toast({ html: lang.lang_postimg_failupload, displayLength: 5000 }) M.toast({ html: lang.lang_postimg_failupload, displayLength: 5000 })
return false return false
} }
$('#imgup').text('')
$('.toot-btn-group').prop('disabled', false)
$('select').formSelect()
$('#imgsel').show()
var img = localStorage.getItem('img') var img = localStorage.getItem('img')
if (json.type.indexOf('image') != -1) { if (json.type.indexOf('image') != -1) {
var html = `<img src="${json[previewer]}" class="preview-img pointer" data-media="${json['id']}" oncontextmenu="deleteImage('${json['id']}')" onclick="altImage('${acct_id}','${json['id']}')" title="${lang.lang_postimg_delete}">` var html = `<img src="${json[previewer]}" class="preview-img pointer" data-media="${json['id']}" oncontextmenu="deleteImage('${json['id']}')" onclick="altImage('${acct_id}','${json['id']}')" title="${lang.lang_postimg_delete}">`
@@ -215,6 +172,19 @@ async function media(b64, type, no, stamped) {
if (img == 'url' && json['text_url']) { if (img == 'url' && json['text_url']) {
$('#textarea').val($('#textarea').val() + ' ' + json['text_url']) $('#textarea').val($('#textarea').val() + ' ' + json['text_url'])
} }
todc()
if (localStorage.getItem('nsfw_' + acct_id)) {
$('#nsfw').addClass('yellow-text')
$('#nsfw').html('visibility')
$('#nsfw').addClass('nsfw-avail')
}
$('.toot-btn-group').prop('disabled', false)
$('select').formSelect()
$('#mec').text(lang.lang_there)
M.toast({ html: lang.lang_postimg_aftupload, displayLength: 1000 })
$('#imgup').text('')
$('#imgsel').show()
localStorage.removeItem('image')
} }
} }
} }
@@ -299,84 +269,54 @@ function altImage(acct_id, id) {
var domain = localStorage.getItem('domain_' + acct_id) var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at') var at = localStorage.getItem('acct_' + acct_id + '_at')
var start = 'https://' + domain + '/api/v1/media/' + id var start = 'https://' + domain + '/api/v1/media/' + id
if($('[data-media=' + id + ']').hasClass('unknown')) {
fetch(start, { Swal.fire({
method: 'GET', title: lang.lang_postimg_desc,
headers: { text: lang.lang_postimg_leadContext,
'content-type': 'application/json', input: 'text',
Authorization: 'Bearer ' + at inputAttributes: {
} autocapitalize: 'off'
}) },
.then(function(response) { showCancelButton: true,
if (!response.ok) { confirmButtonText: 'Post',
response.text().then(function(text) { showLoaderOnConfirm: true,
setLog(response.url, response.status, text) preConfirm: data => {
return fetch(start, {
method: 'PUT',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
},
body: JSON.stringify({
description: data
}) })
} })
return response.json() .then(function(response) {
}) if (!response.ok) {
.catch(function(error) { response.text().then(function(text) {
todo(error) setLog(response.url, response.status, text)
setLog(start, 'JSON', error) })
console.error(error) }
}) return response.json()
.then(function(json) {
console.log(json)
$('[data-media=' + id + ']').removeClass('unknown')
if(json.preview_url) {
$('[data-media=' + id + ']').attr('src', json.preview_url)
}
})
} else {
Swal.fire({
title: lang.lang_postimg_desc,
text: lang.lang_postimg_leadContext,
input: 'text',
inputAttributes: {
autocapitalize: 'off'
},
showCancelButton: true,
confirmButtonText: 'Post',
showLoaderOnConfirm: true,
preConfirm: data => {
return fetch(start, {
method: 'PUT',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + at
},
body: JSON.stringify({
description: data
})
}) })
.then(function(response) { .catch(function(error) {
if (!response.ok) { todo(error)
response.text().then(function(text) { setLog(start, 'JSON', error)
setLog(response.url, response.status, text) console.error(error)
})
}
return response.json()
})
.catch(function(error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function(json) {
console.log(json)
$('[data-media=' + id + ']').attr('title', data)
})
},
allowOutsideClick: () => !Swal.isLoading()
}).then(result => {
if (result.value) {
Swal.fire({
title: 'Complete'
}) })
} .then(function(json) {
}) console.log(json)
} $('[data-media=' + id + ']').attr('title', data)
})
},
allowOutsideClick: () => !Swal.isLoading()
}).then(result => {
if (result.value) {
Swal.fire({
title: 'Complete'
})
}
})
} }
function stamp() { function stamp() {
if ($('#stamp').hasClass('stamp-avail')) { if ($('#stamp').hasClass('stamp-avail')) {
@@ -386,42 +326,4 @@ function stamp() {
$('#stamp').html('On') $('#stamp').html('On')
$('#stamp').addClass('stamp-avail') $('#stamp').addClass('stamp-avail')
} }
}
//v2/media対応
async function v2MediaUpload(domain, at, fd) {
var start = 'https://' + domain + '/api/v2/media'
let promise = await fetch(start, {
method: 'POST',
headers: {
Authorization:
'Bearer ' + at
},
body: fd
})
var json = await promise.json()
if(json.id) {
return json.id
} else {
return false
}
}
function alertProcessUnfinished() {
Swal.fire({
title: lang.lang_post_unfinishedMedia,
type: 'error',
showCancelButton: true,
confirmButtonText: lang.lang_post_retry,
cancelButtonText: lang.lang_no
}).then(result => {
if (result.value) {
post()
}
})
}
function syncDetail() {
Swal.fire({
title: lang.lang_post_syncDetail,
text: lang.lang_post_syncDetailText,
type: 'info'
})
} }

View File

@@ -116,7 +116,6 @@ function reactiontoggle(id, acct_id, tlid) {
//reactioncustom //reactioncustom
function reactioncustom(acct_id, id) { function reactioncustom(acct_id, id) {
$('#reply').val(id) $('#reply').val(id)
$('#media').val('misskey')
$('#unreact').hide() $('#unreact').hide()
$('#addreact').removeClass('hide') $('#addreact').removeClass('hide')
$('#post-acct-sel').val(acct_id) $('#post-acct-sel').val(acct_id)
@@ -187,14 +186,9 @@ function reactRefreshCore(json) {
} }
} }
function emojiReaction(emoji) { function emojiReaction(emoji) {
var media = $('#media').val()
var acct_id = $('#post-acct-sel').val() var acct_id = $('#post-acct-sel').val()
var id = $('#reply').val() var id = $('#reply').val()
if(media == 'announcement') { reaction(emoji, id, acct_id, null)
announReaction(id, acct_id, 0, false, emoji)
} else {
reaction(emoji, id, acct_id, null)
}
clear() clear()
hide() hide()
} }

View File

@@ -122,10 +122,6 @@ function post(mode, postvis) {
console.log('This toot will be posted at:' + scheduled) console.log('This toot will be posted at:' + scheduled)
schedule() schedule()
toot.scheduled_at = scheduled toot.scheduled_at = scheduled
if($('#sch-box').hasClass('expire')) {
toot.scheduled_at = null
toot.expires_at = scheduled
}
} else { } else {
var scheduled = '' var scheduled = ''
} }
@@ -170,49 +166,21 @@ function post(mode, postvis) {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
if(media && this.status == 422) { setLog(start, this.status, json)
$('#ideKey').val('')
$('.toot-btn-group').prop('disabled', false)
alertProcessUnfinished()
} else {
setLog(start, this.status, json)
var box = localStorage.getItem('box')
if (box == 'yes' || !box) {
$('#textarea').blur()
hide()
}
$('.toot-btn-group').prop('disabled', false)
todc()
clear()
}
} else { } else {
$('#ideKey').val('') $('#ideKey').val('')
var box = localStorage.getItem('box')
if (box == 'yes' || !box) {
$('#textarea').blur()
hide()
}
$('.toot-btn-group').prop('disabled', false)
todc()
clear()
} }
var box = localStorage.getItem('box')
if (box == 'yes' || !box) {
$('#textarea').blur()
hide()
}
$('.toot-btn-group').prop('disabled', false)
todc()
clear()
} }
} }
} }
function expPostMode() {
$('#sch-box').toggleClass('expire')
if($('#sch-box').hasClass('expire')) {
Swal.fire({
type: 'info',
title: 'Expiring toot On'
})
} else {
Swal.fire({
type: 'info',
title: 'Expireing toot Off'
})
}
}
function misskeyPost() { function misskeyPost() {
var str = $('#textarea').val() var str = $('#textarea').val()
var acct_id = $('#post-acct-sel').val() var acct_id = $('#post-acct-sel').val()

View File

@@ -96,9 +96,9 @@ function cw() {
} }
} }
//TLでコンテントワーニングを表示トグル //TLでコンテントワーニングを表示トグル
function cw_show(e) { function cw_show(id) {
$(e).parent().parent().find('.cw_hide').toggleClass('cw') $('.cw_hide_' + id).toggleClass('cw')
$(e).parent().find('.cw_long').toggleClass('hide') $('.cw-long-' + id).toggleClass('hide')
} }
$(function() { $(function() {
$('#cw-text').on('change', function(event) { $('#cw-text').on('change', function(event) {

View File

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

View File

@@ -1,145 +0,0 @@
function announParse(obj, acct_id, tlid) {
var template = ''
var datetype = localStorage.getItem('datetype')
var gif = localStorage.getItem('gif')
//Ticker
var tickerck = localStorage.getItem('ticker_ok')
if (tickerck == 'yes') {
var ticker = true
} else if (!ticker || ticker == 'no') {
var ticker = false
}
if (!datetype) {
datetype = 'absolute'
}
if (!gif) {
var gif = 'yes'
}
Object.keys(obj).forEach(function(key) {
var toot = obj[key]
var content = toot.content
if (toot.emojis) {
Object.keys(toot.emojis).forEach(function(key1) {
var emoji = toot.emojis[key1]
var shortcode = emoji.shortcode
if (gif == 'yes') {
var emoSource = emoji.url
} else {
var emoSource = emoji.static_url
}
var emoji_url = `
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle('bigemoji');">
`
var regExp = new RegExp(':' + shortcode + ':', 'g')
content = content.replace(regExp, emoji_url)
})
}
content = twemoji.parse(content)
var reactions = ''
//既存のリアクション
if (toot.reactions) {
Object.keys(toot.reactions).forEach(function(key2) {
var reaction = toot.reactions[key2]
//普通の絵文字 or カスタム絵文字 は文字数判断。ただしスコットランド国旗みたいなやべぇやつに注意
var splitter = new GraphemeSplitter()
if (splitter.splitGraphemes(reaction.name).length > 1) {
//カスタム絵文字
var shortcode = reaction.shortcode
if (gif == 'yes') {
var emoSource = reaction.url
} else {
var emoSource = reaction.static_url
}
var emoji_url = `
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
alt=" :${shortcode}: " title="${shortcode}">`
} else {
emoji_url = twemoji.parse(reaction.name)
}
var addClass = ''
if (reaction.me) {
addClass = 'reactioned'
}
reactions =
reactions +
`<div class="announReaction ${addClass}" onclick="announReaction('${toot.id}', '${acct_id}', '${tlid}', ${reaction.me},'${reaction.name}')">
${emoji_url} ${reaction.count}
</div>`
})
}
if (toot.ends_at) {
var ended = `<div class="announReaction" title="${date(toot.ends_at, 'absolute')}" style="width: auto; cursor: default;">
<i class="fas fa-arrow-right"></i>
${date(toot.ends_at, datetype)}
</div>`
} else {
var ended = ''
}
template =
template +
`<div class="announcement" data-id="${toot.id}">
${content}
<div class="reactionsPack">
${reactions}
<div class="announReaction add" onclick="announReactionNew('${toot.id}', '${acct_id}', '${tlid}')"><i class="fas fa-plus"></i></div>
${ended}
</div>
</div>`
})
return template
}
function announReaction(id, acct_id, tlid, del, name) {
var at = localStorage.getItem('acct_' + acct_id + '_at')
var domain = localStorage.getItem('domain_' + acct_id)
var start = 'https://' + domain + '/api/v1/announcements/' + id + '/reactions/' + encodeURIComponent(name)
var httpreq = new XMLHttpRequest()
if(del) {
var method = 'DELETE'
} else {
var method = 'PUT'
}
httpreq.open(method, start, true)
httpreq.setRequestHeader('Content-Type', 'application/json')
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json'
httpreq.send()
httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) {
var json = httpreq.response
if (this.status !== 200) {
setLog(start, this.status, this.response)
}
announ(acct_id, tlid)
}
}
}
function announReactionNew(id, acct_id, tlid) {
$('#reply').val(id)
$('#media').val('announcement')
$('#unreact').hide()
$('#addreact').removeClass('hide')
$('#post-acct-sel').val(acct_id)
$('select').formSelect()
localStorage.setItem('nohide', true)
show()
emojiToggle(true)
$('#left-side').hide()
}
function emojiReactionDef(target) {
var emojiraw = newpack.filter(function(item, index) {
if (item.short_name == target) return true
})
var hex = emojiraw[0].unified.split('-')
if (hex.length === 2) {
emoji = twemoji.convert.fromCodePoint(hex[0]) + twemoji.convert.fromCodePoint(hex[1])
} else {
emoji = twemoji.convert.fromCodePoint(hex[0])
}
var acct_id = $('#post-acct-sel').val()
var id = $('#reply').val()
announReaction(id, acct_id, 0, false, emoji)
clear()
hide()
}

View File

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

View File

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

View File

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

View File

@@ -14,46 +14,6 @@ function mediaToggle(tlid) {
$('#timeline_' + tlid).addClass('media-filter') $('#timeline_' + tlid).addClass('media-filter')
} }
} }
/* Remote only */
function remoteOnly(tlid, type) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
if (obj[tlid].data) {
if (obj[tlid].data.remote) {
obj[tlid].data.remote = false
var json = JSON.stringify(obj)
localStorage.setItem('column', json)
$('#sta-remote-' + tlid).text('Off')
$('#sta-remote-' + tlid).css('color', '#009688')
} else {
obj[tlid].data.remote = true
var json = JSON.stringify(obj)
localStorage.setItem('column', json)
$('#sta-remote-' + tlid).text('On')
$('#sta-remote-' + tlid).css('color', 'red')
}
} else {
obj[tlid].data = {}
obj[tlid].data.remote = true
var json = JSON.stringify(obj)
localStorage.setItem('column', json)
$('#sta-remote-' + tlid).text('On')
$('#sta-remote-' + tlid).css('color', 'red')
}
columnReload(tlid, type)
}
function remoteOnlyCk(tlid) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
if (obj[tlid].data) {
if (obj[tlid].data.remote) {
$('#sta-remote-' + tlid).text('On')
$('#sta-remote-' + tlid).css('color', 'red')
return true
}
}
return false
}
//各TL上方のBT[BTOnly/BTExc/Off] //各TL上方のBT[BTOnly/BTExc/Off]
function ebtToggle(tlid) { function ebtToggle(tlid) {
var ebt = localStorage.getItem('ebt_' + tlid) var ebt = localStorage.getItem('ebt_' + tlid)
@@ -141,7 +101,7 @@ function delreset(tlid) {
} }
/*ワードフィルター機能*/ /*ワードフィルター機能*/
function filterMenu() { function filterMenu() {
$('#left-menu a').removeClass('active') $('#left-menu div').removeClass('active')
$('#filterMenu').addClass('active') $('#filterMenu').addClass('active')
$('.menu-content').addClass('hide') $('.menu-content').addClass('hide')
$('#filter-box').removeClass('hide') $('#filter-box').removeClass('hide')
@@ -157,26 +117,26 @@ function filter() {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
Authorization: 'Bearer ' + at, Authorization: 'Bearer ' + at
}, }
}) })
.then(function (response) { .then(function(response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function (text) { response.text().then(function(text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function (error) { .catch(function(error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function (json) { .then(function(json) {
if (json) { if (json) {
var filters = '' var filters = ''
Object.keys(json).forEach(function (key) { Object.keys(json).forEach(function(key) {
var filterword = json[key] var filterword = json[key]
var context = filterword.context.join(',') var context = filterword.context.join(',')
filters = filters =
@@ -220,9 +180,6 @@ function makeNewFilter() {
if ($('#conv_filter:checked').val()) { if ($('#conv_filter:checked').val()) {
cont.push('thread') cont.push('thread')
} }
if ($('#prof_filter:checked').val()) {
cont.push('profiles')
}
if (!cont.length) { if (!cont.length) {
$('#filtered-words').html('Error:' + lang.lang_filter_errordegree) $('#filtered-words').html('Error:' + lang.lang_filter_errordegree)
} }
@@ -231,7 +188,10 @@ function makeNewFilter() {
if (!who) { if (!who) {
who = false who = false
} }
var time = $('#days_filter').val() * 24 * 60 * 60 + $('#hours_filter').val() * 60 * 60 + $('#mins_filter').val() * 60 var time =
$('#days_filter').val() * 24 * 60 * 60 +
$('#hours_filter').val() * 60 * 60 +
$('#mins_filter').val() * 60
var domain = localStorage.getItem('domain_' + acct_id) var domain = localStorage.getItem('domain_' + acct_id)
var at = localStorage.getItem('acct_' + acct_id + '_at') var at = localStorage.getItem('acct_' + acct_id + '_at')
if ($('#filter-edit-id').val()) { if ($('#filter-edit-id').val()) {
@@ -253,10 +213,10 @@ function makeNewFilter() {
context: cont, context: cont,
irreversible: exc, irreversible: exc,
whole_word: who, whole_word: who,
expires_in: time, expires_in: time
}) })
) )
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
@@ -269,7 +229,6 @@ function makeNewFilter() {
$('#local_filter').prop('checked', false) $('#local_filter').prop('checked', false)
$('#notf_filter').prop('checked', false) $('#notf_filter').prop('checked', false)
$('#conv_filter').prop('checked', false) $('#conv_filter').prop('checked', false)
$('#prof_filter').prop('checked', false)
$('#except_filter').prop('checked', false) $('#except_filter').prop('checked', false)
$('#wholeword_filter').prop('checked', false) $('#wholeword_filter').prop('checked', false)
$('#days_filter').val('0') $('#days_filter').val('0')
@@ -300,29 +259,29 @@ function filterEdit(id, acct_id) {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
Authorization: 'Bearer ' + at, Authorization: 'Bearer ' + at
}, }
}) })
.then(function (response) { .then(function(response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function (text) { response.text().then(function(text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function (error) { .catch(function(error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function (json) { .then(function(json) {
if (json) { if (json) {
var now = new Date() var now = new Date()
now = now.getTime() now = now.getTime()
var now = Math.floor(now / 1000) var now = Math.floor(now / 1000)
$('#filter-add-word').val(json.phrase) $('#filter-add-word').val(json.phrase)
Object.keys(json.context).forEach(function (key) { Object.keys(json.context).forEach(function(key) {
var context = json.context[key] var context = json.context[key]
$('[value=' + context + ']').prop('checked', true) $('[value=' + context + ']').prop('checked', true)
}) })
@@ -352,7 +311,7 @@ function filterDel(id, acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at) httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send() httpreq.send()
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response var json = httpreq.response
if (this.status !== 200) { if (this.status !== 200) {
@@ -372,23 +331,23 @@ function getFilter(acct_id) {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
Authorization: 'Bearer ' + at, Authorization: 'Bearer ' + at
}, }
}) })
.then(function (response) { .then(function(response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function (text) { response.text().then(function(text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function (error) { .catch(function(error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function (json) { .then(function(json) {
localStorage.setItem('filter_' + acct_id, JSON.stringify(json)) localStorage.setItem('filter_' + acct_id, JSON.stringify(json))
}) })
} else { } else {
@@ -407,13 +366,13 @@ function getFilterType(json, type) {
type = 'notifi' type = 'notifi'
} }
var mutedfilters = [] var mutedfilters = []
Object.keys(json).forEach(function (key) { Object.keys(json).forEach(function(key) {
var filterword = json[key] var filterword = json[key]
var phrases = filterword.phrase var phrases = filterword.phrase
var arr = filterword.context var arr = filterword.context
if (arr.join(',').indexOf(type) !== -1) { if (arr.join(',').indexOf(type) !== -1) {
mutedfilters.push(phrases) mutedfilters.push(phrases)
} else if (type == 'mix') { } else if (type == 'mix'){
if (arr.indexOf('home') !== -1 || arr.indexOf('public') !== -1) { if (arr.indexOf('home') !== -1 || arr.indexOf('public') !== -1) {
mutedfilters.push(phrases) mutedfilters.push(phrases)
} }
@@ -437,23 +396,23 @@ function filterUpdate(acct_id) {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
Authorization: 'Bearer ' + at, Authorization: 'Bearer ' + at
}, }
}) })
.then(function (response) { .then(function(response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function (text) { response.text().then(function(text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function (error) { .catch(function(error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function (json) { .then(function(json) {
localStorage.setItem('filter_' + acct_id, JSON.stringify(json)) localStorage.setItem('filter_' + acct_id, JSON.stringify(json))
filterUpdateInternal(json, 'home') filterUpdateInternal(json, 'home')
filterUpdateInternal(json, 'local') filterUpdateInternal(json, 'local')
@@ -469,11 +428,13 @@ function filterUpdateInternal(json, type) {
home = home.concat(wordmute) home = home.concat(wordmute)
} }
if (home) { if (home) {
$('[data-acct=' + acct_id + '] [data-type=' + type + '] .cvo').each(function (i, elem) { $('[data-acct=' + acct_id + '] [data-type=' + type + '] .cvo').each(function(i, elem) {
var id = $(elem).attr('toot-id') var id = $(elem).attr('toot-id')
$('[toot-id=' + id + ']').removeClass('hide') $('[toot-id=' + id + ']').removeClass('hide')
var text = $(elem).find('.toot').html() var text = $(elem)
Object.keys(home).forEach(function (key8) { .find('.toot')
.html()
Object.keys(home).forEach(function(key8) {
var word = home[key8] var word = home[key8]
var regExp = new RegExp(word.replace(/[.*+?^=!:${}()|[\]\/\\]/g, '\\$&'), 'g') var regExp = new RegExp(word.replace(/[.*+?^=!:${}()|[\]\/\\]/g, '\\$&'), 'g')
if ($.strip_tags(text).match(regExp)) { if ($.strip_tags(text).match(regExp)) {
@@ -553,6 +514,7 @@ function resetNotfFilter(tlid) {
} }
function notfFilter(id, tlid, acct_id) { function notfFilter(id, tlid, acct_id) {
var excludetxt = localStorage.getItem('exclude-' + tlid) var excludetxt = localStorage.getItem('exclude-' + tlid)
console.log(excludetxt)
if (excludetxt || excludetxt != '') { if (excludetxt || excludetxt != '') {
excludetxt = excludetxt + '&account_id=' + id excludetxt = excludetxt + '&account_id=' + id
} else { } else {

View File

@@ -1,5 +1,5 @@
function listMenu() { function listMenu() {
$('#left-menu a').removeClass('active') $('#left-menu div').removeClass('active')
$('#listMenu').addClass('active') $('#listMenu').addClass('active')
$('.menu-content').addClass('hide') $('.menu-content').addClass('hide')
$('#list-box').removeClass('hide') $('#list-box').removeClass('hide')

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -116,7 +116,7 @@ function notfColumn(acct_id, tlid, sys) {
var start = 'wss://' + domain + '/?i=' + at var start = 'wss://' + domain + '/?i=' + at
} }
} }
function notfCommon(acct_id, tlid, sys, stream) { function notfCommon(acct_id, tlid, sys) {
todo('Notifications Loading...') todo('Notifications Loading...')
var native = localStorage.getItem('nativenotf') var native = localStorage.getItem('nativenotf')
var at = localStorage.getItem('acct_' + acct_id + '_at') var at = localStorage.getItem('acct_' + acct_id + '_at')
@@ -147,10 +147,6 @@ function notfCommon(acct_id, tlid, sys, stream) {
} }
} }
} }
if(stream == 'only') {
notfWS(misskey, acct_id, tlid, domain, at)
return false
}
fetch(start, i) fetch(start, i)
.then(function(response) { .then(function(response) {
console.log('header to get param:' + response.headers.get('link')) console.log('header to get param:' + response.headers.get('link'))
@@ -207,7 +203,7 @@ function notfCommon(acct_id, tlid, sys, stream) {
} }
$('#notf-box').addClass('fetched') $('#notf-box').addClass('fetched')
todc() todc()
if(stream != 'no') notfWS(misskey, acct_id, tlid, domain, at) notfWS(misskey, acct_id, tlid, domain, at)
}) })
} }
function notfWS(misskey, acct_id, tlid, domain, at) { function notfWS(misskey, acct_id, tlid, domain, at) {
@@ -243,10 +239,8 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
localStorage.setItem('lastnotf_' + acct_id, obj.id) localStorage.setItem('lastnotf_' + acct_id, obj.id)
if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) { if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) {
//markers show中はダメ //markers show中はダメ
if (obj.type != 'follow' && obj.type != 'follow_request') { if (obj.type != 'follow') {
templete = parse([obj], 'notf', acct_id, 'notf', popup) templete = parse([obj], 'notf', acct_id, 'notf', popup)
} else if (obj.type == 'follow_request') {
templete = userparse([obj.account], 'request', acct_id, 'notf', -1)
} else { } else {
templete = userparse([obj], obj.type, acct_id, 'notf', popup) templete = userparse([obj], obj.type, acct_id, 'notf', popup)
} }
@@ -412,11 +406,6 @@ function notfCanceler(acct) {
localStorage.removeItem('notf-follow_' + acct) localStorage.removeItem('notf-follow_' + acct)
$('.notf-follow_' + acct).addClass('hide') $('.notf-follow_' + acct).addClass('hide')
$('.notf-icon_' + acct).removeClass('red-text') $('.notf-icon_' + acct).removeClass('red-text')
var id = $('#announce_' + acct + ' .announcement').first().attr('data-id')
$('.notf-announ_' + acct + '_ct').text("")
if(id) {
localStorage.setItem('announ_' + acct, id)
}
} }
function allNotfRead() { function allNotfRead() {
var multi = localStorage.getItem('multi') var multi = localStorage.getItem('multi')

File diff suppressed because it is too large Load Diff

View File

@@ -49,25 +49,30 @@ function pollCalc() {
return days * 86400 + hrs * 3600 + mins * 60 return days * 86400 + hrs * 3600 + mins * 60
} }
//Vote //Vote
function voteSelMastodon(acct_id, id, to, mul, elem) { function voteSelMastodon(acct_id, id, to, mul) {
if ($(elem).hasClass('sel')) { if ($('.vote_' + acct_id + '_' + id + '_' + to).hasClass('sel')) {
$(elem).css('background-color', 'transparent') $('.vote_' + acct_id + '_' + id + '_' + to).css('background-color', 'transparent')
$(elem).removeClass('sel') $('.vote_' + acct_id + '_' + id + '_' + to).removeClass('sel')
} else { } else {
if (!mul) { if (!mul) {
$('.vote_' + acct_id + '_' + id + ' div').css('background-color', 'transparent') $('.vote_' + acct_id + '_' + id + ' div').each(function(i, elem) {
$('.vote_' + acct_id + '_' + id + ' div').removeClass('sel') if (i == to) {
$(elem).css('background-color', 'var(--emphasized)') $(this).css('background-color', 'var(--emphasized)')
$(elem).addClass('sel') $(this).addClass('sel')
} else {
$(this).css('background-color', 'transparent')
$(this).removeClass('sel')
}
})
} else { } else {
$(elem).css('background-color', 'var(--emphasized)') $('.vote_' + acct_id + '_' + id + '_' + to).css('background-color', 'var(--emphasized)')
$(elem).addClass('sel') $('.vote_' + acct_id + '_' + id + '_' + to).addClass('sel')
} }
} }
} }
function voteMastodon(acct_id, id, target) { function voteMastodon(acct_id, id) {
var choice = [] var choice = []
$(`#vote${target} div`).each(function(i, elem) { $('.vote_' + acct_id + '_' + id + ' div').each(function(i, elem) {
if ($(this).hasClass('sel')) { if ($(this).hasClass('sel')) {
choice.push(i + '') choice.push(i + '')
} }
@@ -85,13 +90,13 @@ function voteMastodon(acct_id, id, target) {
httpreq.responseType = 'json' httpreq.responseType = 'json'
httpreq.send(JSON.stringify({ choices: choice })) httpreq.send(JSON.stringify({ choices: choice }))
httpreq.onreadystatechange = function() { httpreq.onreadystatechange = function() {
voteMastodonrefresh(acct_id, id, target) voteMastodonrefresh(acct_id, id)
} }
} }
function showResult(acct_id, id) { function showResult(acct_id, id) {
$('.vote_' + acct_id + '_' + id + '_result').toggleClass('hide') $('.vote_' + acct_id + '_' + id + '_result').toggleClass('hide')
} }
function voteMastodonrefresh(acct_id, id, target) { function voteMastodonrefresh(acct_id, id) {
var datetype = localStorage.getItem('datetype') var datetype = localStorage.getItem('datetype')
if (!datetype) { if (!datetype) {
datetype = 'absolute' datetype = 'absolute'
@@ -116,7 +121,7 @@ function voteMastodonrefresh(acct_id, id, target) {
return false return false
} }
var poll = pollParse(json, acct_id, json.emojis) var poll = pollParse(json, acct_id, json.emojis)
$(`#vote${target}`).html(poll) $('.vote_' + acct_id + '_' + json.id).html(poll)
} }
} }
} }

View File

@@ -3,7 +3,7 @@
function searchMenu() { function searchMenu() {
$('#src-contents').html('') $('#src-contents').html('')
trend() trend()
$('#left-menu a').removeClass('active') $('#left-menu div').removeClass('active')
$('#searchMenu').addClass('active') $('#searchMenu').addClass('active')
$('.menu-content').addClass('hide') $('.menu-content').addClass('hide')
$('#src-box').removeClass('hide') $('#src-box').removeClass('hide')
@@ -36,7 +36,7 @@ function src(mode, offset) {
var user = $('#his-data').attr('user-id') var user = $('#his-data').attr('user-id')
} }
if (!mode) { if (!mode) {
var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + encodeURIComponent(q) + add var start = 'https://' + domain + '/api/v2/search?q=' + q + add
} else { } else {
var start = 'https://' + domain + '/api/v1/search?q=' + q var start = 'https://' + domain + '/api/v1/search?q=' + q
} }
@@ -116,11 +116,8 @@ function tsAdd(q) {
parseColumn('add') parseColumn('add')
} }
function tootsearch(tlid, q) { function tootsearch(tlid, q) {
if(!q || q=='undefined') {
return false
}
var start = 'https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=' + q var start = 'https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=' + q
console.log('Toot search at ' + start) console.log('Toot srrach at ' + start)
$('#notice_' + tlid).text('tootsearch(' + q + ')') $('#notice_' + tlid).text('tootsearch(' + q + ')')
$('#notice_icon_' + tlid).text('search') $('#notice_icon_' + tlid).text('search')
fetch(start, { fetch(start, {
@@ -219,9 +216,9 @@ function moreTs(tlid, q) {
function graphDraw(tag, acct_id) { function graphDraw(tag, acct_id) {
var tags = '' var tags = ''
var his = tag.history var his = tag.history
return graphDrawCore(his, tag, acct_id) return graphDrawCore(his, tag)
} }
function graphDrawCore(his, tag, acct_id) { function graphDrawCore(his, tag){
var max = Math.max.apply(null, [ var max = Math.max.apply(null, [
his[0].uses, his[0].uses,
his[1].uses, his[1].uses,
@@ -255,9 +252,7 @@ function graphDrawCore(his, tag, acct_id) {
toot toot
</div> </div>
<div class="tagCompTag"> <div class="tagCompTag">
<a onclick="tl('tag','${escapeHTML( <a onclick="tl('tag','${escapeHTML(tag.name)}','${acct_id}','add')" class="pointer" title="${escapeHTML(tag.name)}">
tag.name
)}','${acct_id}','add')" class="pointer" title="${escapeHTML(tag.name)}">
#${escapeHTML(tag.name)} #${escapeHTML(tag.name)}
</a> </a>
</div> </div>
@@ -307,54 +302,9 @@ function trend() {
Object.keys(json).forEach(function(keye) { Object.keys(json).forEach(function(keye) {
var tag = json[keye] var tag = json[keye]
var his = tag.history var his = tag.history
tags = graphDrawCore(his, tag, acct_id) tags = graphDrawCore(his, tag)
$('#src-contents').append(tags) $('#src-contents').append(tags)
}) })
}) })
} }
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()
if(type == 'web') {
var start = localStorage.getItem('srcUrl')
if(!start) {
start = 'https://google.com/search?q={q}'
}
start = start.replace(/{q}/, q)
postMessage(["openUrl", start], "*")
} else if(type == 'ts') {
tsAdd(q)
}
}

View File

@@ -198,28 +198,3 @@ function tagFeature(name, acct_id) {
M.toast({ html: 'Complete: ' + escapeHTML(name), displayLength: 3000 }) M.toast({ html: 'Complete: ' + escapeHTML(name), displayLength: 3000 })
}) })
} }
//タグのフィルタ
function addTag(id) {
var columns = JSON.parse(localStorage.getItem('column'))
var column = columns[id]
if(!column.data.name) {
var name = column.data
} else {
var name = column.data.name
}
var col = localStorage.getItem('column')
var o = JSON.parse(col)
var obj = o[id]
obj.data = {
'name': name,
'all': $(`#all_tm-${id}`).val(),
'any': $(`#any_tm-${id}`).val(),
'none': $(`#none_tm-${id}`).val(),
}
o[id] = obj
var json = JSON.stringify(o)
console.log(json)
localStorage.setItem('column',json)
columnReload(id, 'tag')
}

File diff suppressed because it is too large Load Diff

View File

@@ -102,13 +102,6 @@ function imageXhr(id, key, murl) {
}, },
false false
) )
xhr.addEventListener(
'error',
function(event) {
$('#imgmodal').attr('src', murl)
},
false
)
xhr.onreadystatechange = function() { xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) { if (this.readyState == 4 && this.status == 200) {
r = new FileReader() r = new FileReader()
@@ -119,22 +112,19 @@ function imageXhr(id, key, murl) {
var width var width
element.onload = function() { element.onload = function() {
var width = element.naturalWidth var width = element.naturalWidth
if(width < 650) {
width = 650
}
var height = element.naturalHeight var height = element.naturalHeight
var windowH = $(window).height() var windowH = $(window).height()
var windowW = $(window).width() var windowW = $(window).width()
$('#imagemodal').css('bottom', '0') $('#imagemodal').css('bottom', '0')
$('#imagemodal img').css('width', 'auto') $('#imagemodal img').css('width', 'auto')
if (height < windowH) { if (height < windowH) {
$('#imagemodal').css('height', height + 100 + 'px') $('#imagemodal').css('height', height + 60 + 'px')
$('#imagemodal img').css('height', height + 'px') $('#imagemodal img').css('height', '100%')
if (width > windowW * 0.8) { if (width > windowW * 0.8) {
$('#imagemodal').css('width', '80vw') $('#imagemodal').css('width', '80vw')
$('#imagemodal img').css('width', 'auto') $('#imagemodal img').css('width', '100%')
var heightS = ((windowW * 0.8) / width) * height var heightS = ((windowW * 0.8) / width) * height
$('#imagemodal').css('height', heightS + 100 + 'px') $('#imagemodal').css('height', heightS + 60 + 'px')
} else { } else {
$('#imagemodal').css('width', width + 'px') $('#imagemodal').css('width', width + 'px')
} }
@@ -182,7 +172,7 @@ function zoom(z) {
$('#imagewrap img').css('height', hgt + 'px') $('#imagewrap img').css('height', hgt + 'px')
} }
//スマホ対応ドラッグ移動システム //スマホ対応ドラッグ移動システム
(function() { ;(function() {
$.fn.dragScroll = function() { $.fn.dragScroll = function() {
var target = this var target = this
$(this) $(this)

View File

@@ -8,13 +8,13 @@ var websocketNotf = []
//カラム追加ボックストグル //カラム追加ボックストグル
function addColumnMenu() { function addColumnMenu() {
$('#left-menu a').removeClass('active') $('#left-menu div').removeClass('active')
$('#addColumnMenu').addClass('active') $('#addColumnMenu').addClass('active')
$('.menu-content').addClass('hide') $('.menu-content').addClass('hide')
$('#add-box').removeClass('hide') $('#add-box').removeClass('hide')
addselCk() addselCk()
} }
$('.type').click(function () { $('.type').click(function() {
$('.type').removeClass('active') $('.type').removeClass('active')
$(this).addClass('active') $(this).addClass('active')
$('#type-sel').val($(this).attr('data-type')) $('#type-sel').val($(this).attr('data-type'))
@@ -42,16 +42,18 @@ function parseColumn(target, dontclose) {
var multi = localStorage.getItem('multi') var multi = localStorage.getItem('multi')
if (multi) { if (multi) {
var obj = JSON.parse(multi) var obj = JSON.parse(multi)
var templete var templete
Object.keys(obj).forEach(function (key) { Object.keys(obj).forEach(function(key) {
var acct = obj[key] var acct = obj[key]
localStorage.setItem('name_' + key, acct.name) localStorage.setItem('name_' + key, acct.name)
localStorage.setItem('user_' + key, acct.user) localStorage.setItem('user_' + key, acct.user)
localStorage.setItem('user-id_' + key, acct.id) localStorage.setItem('user-id_' + key, acct.id)
localStorage.setItem('prof_' + key, acct.prof) localStorage.setItem('prof_' + key, acct.prof)
localStorage.setItem('domain_' + key, acct.domain) localStorage.setItem('domain_' + key, acct.domain)
localStorage.setItem('acct_' + key + '_at', acct.at) localStorage.setItem('acct_' + key + '_at', acct.at)
if(!target) mastodonBaseStreaming(key) notf(key, 0)
ckdb(key) ckdb(key)
//フィルターデータ読もう //フィルターデータ読もう
getFilter(key) getFilter(key)
@@ -74,11 +76,7 @@ function parseColumn(target, dontclose) {
var obj = [ var obj = [
{ {
domain: 0, domain: 0,
type: 'home', type: 'local'
},
{
domain: 0,
type: 'local',
} }
] ]
var json = JSON.stringify(obj) var json = JSON.stringify(obj)
@@ -124,7 +122,10 @@ function parseColumn(target, dontclose) {
var if_notf = '' var if_notf = ''
} }
if (localStorage.getItem('notification_' + acct.domain)) { if (localStorage.getItem('notification_' + acct.domain)) {
var unique_notf = lang.lang_layout_thisacct.replace('{{notf}}', localStorage.getItem('notification_' + acct.domain)) var unique_notf = lang.lang_layout_thisacct.replace(
'{{notf}}',
localStorage.getItem('notification_' + acct.domain)
)
} else { } else {
if (lang.language == 'ja') { if (lang.language == 'ja') {
var notflocale = '通知' var notflocale = '通知'
@@ -149,6 +150,7 @@ function parseColumn(target, dontclose) {
icnsert = ' style="color: #' + ichex + '" ' icnsert = ' style="color: #' + ichex + '" '
} }
} }
console.log(acct)
if (acctlist[acct.domain]) { if (acctlist[acct.domain]) {
if (acctlist[acct.domain].background != 'def') { if (acctlist[acct.domain].background != 'def') {
insert = insert + ' border-bottom:medium solid #' + acctlist[acct.domain].background + ';' insert = insert + ' border-bottom:medium solid #' + acctlist[acct.domain].background + ';'
@@ -159,21 +161,15 @@ function parseColumn(target, dontclose) {
} else { } else {
localStorage.removeItem('hasNotfC_' + acct.domain) localStorage.removeItem('hasNotfC_' + acct.domain)
} }
var css = ''
var width = localStorage.getItem('width') var width = localStorage.getItem('width')
if (width) { if (width) {
css = ' min-width:' + width + 'px;' var css = ' min-width:' + width + 'px;'
}
var maxWidth = localStorage.getItem('max-width')
if (maxWidth) {
css = css +'max-width:' + maxWidth + 'px;'
}
var margin = localStorage.getItem('margin')
if (margin) {
css = css +'margin-right:' + margin + 'px;'
} }
if (acct.width) { if (acct.width) {
css = css + ' min-width:' + acct.width + 'px !important;max-width:' + acct.width + 'px !important;' var css = ' min-width:' + acct.width + 'px;max-width:' + acct.width + 'px;'
}
if (!css) {
var css = ''
} }
if (acct.type == 'webview') { if (acct.type == 'webview') {
if (localStorage.getItem('fixwidth')) { if (localStorage.getItem('fixwidth')) {
@@ -195,7 +191,17 @@ function parseColumn(target, dontclose) {
} else { } else {
var animecss = '' var animecss = ''
} }
unstreamingTL(acct.type, key, basekey, insert, icnsert, acct.left_fold, css, animecss, acct.data) unstreamingTL(
acct.type,
key,
basekey,
insert,
icnsert,
acct.left_fold,
css,
animecss,
acct.data
)
} else if (acct.type == 'bookmark') { } else if (acct.type == 'bookmark') {
if (!acct.left_fold) { if (!acct.left_fold) {
basekey = key basekey = key
@@ -207,19 +213,17 @@ function parseColumn(target, dontclose) {
} else { } else {
var animecss = '' var animecss = ''
} }
unstreamingTL(acct.type, key, basekey, insert, icnsert, acct.left_fold, css, animecss, acct.domain) unstreamingTL(
} else if (acct.type == 'utl') { acct.type,
if (!acct.left_fold) { key,
basekey = key basekey,
} insert,
icnsert,
var anime = localStorage.getItem('animation') acct.left_fold,
if (anime == 'yes' || !anime) { css,
var animecss = 'box-anime' animecss,
} else { acct.domain
var animecss = '' )
}
unstreamingTL(acct.type, key, basekey, insert, icnsert, acct.left_fold, css, animecss, { acct: acct.domain, data: acct.data })
} else { } else {
var anime = localStorage.getItem('animation') var anime = localStorage.getItem('animation')
if (anime == 'yes' || !anime) { if (anime == 'yes' || !anime) {
@@ -228,8 +232,8 @@ function parseColumn(target, dontclose) {
var animecss = '' var animecss = ''
} }
var unread = `<a id="unread_${key}" onclick="showUnread('${key}','${acct.type}','${acct.domain}')" var unread = `<a id="unread_${key}" onclick="showUnread('${key}','${acct.type}','${acct.domain}')"
class="setting nex waves-effect" title="${lang.lang_layout_unread}"> class="setting nex" 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>
</a>` </a>`
var notfDomain = acct.domain var notfDomain = acct.domain
var notfKey = key var notfKey = key
@@ -237,82 +241,67 @@ function parseColumn(target, dontclose) {
var if_tag_btn = '' var if_tag_btn = ''
if (acct.type == 'notf') { if (acct.type == 'notf') {
var exclude = var exclude =
`<div style="border: 1px solid; padding: 5px; margin-top: 5px; margin-bottom: 5px;">${lang.lang_layout_excluded}:<br> lang.lang_excluded +
`:<br>
<label> <label>
<input type="checkbox" class="filled-in" id="exc-reply-${key}" ${excludeCk(key, 'mention')} /> <input type="checkbox" class="filled-in" id="exc-reply-${key}" ${excludeCk(key, 'mention')} />
<span> <span>
${lang.lang_layout_mention} <i class="fas fa-share exc-icons"></i>
</span> </span>
</label> </label>
<label> <label>
<input type="checkbox" class="filled-in" id="exc-fav-${key}" ${excludeCk(key, 'favourite')} /> <input type="checkbox" class="filled-in" id="exc-fav-${key}" ${excludeCk(key, 'favourite')} />
<span> <span>
${lang.lang_layout_fav} <i class="fas fa-star exc-icons"></i>
</span> </span>
</label> </label>
<label> <label>
<input type="checkbox" class="filled-in" id="exc-bt-${key}" ${excludeCk(key, 'reblog')} /> <input type="checkbox" class="filled-in" id="exc-bt-${key}" ${excludeCk(key, 'reblog')} />
<span> <span>
${lang.lang_layout_bt} <i class="fas fa-retweet exc-icons"></i>
</span> </span>
</label> </label>
<label> <label>
<input type="checkbox" class="filled-in" id="exc-follow-${key}" ${excludeCk(key, 'follow')} /> <input type="checkbox" class="filled-in" id="exc-follow-${key}" ${excludeCk(key, 'follow')} />
<span> <span>
${lang.lang_status_follow} <i class="fas fa-users exc-icons"></i>
</span> </span>
</label> </label>
<label> <label>
<input type="checkbox" class="filled-in" id="exc-poll-${key}" ${excludeCk(key, 'poll')} /> <input type="checkbox" class="filled-in" id="exc-poll-${key}" ${excludeCk(key, 'poll')} />
<span> <span>
${lang.lang_layout_poll} <i class="fas fa-tasks exc-icons"></i>
</span> </span>
</label> <br /> </label>
<button class="btn btn-flat waves-effect notf-exclude-btn waves-light" style="width:calc(50% - 11px); padding:0;" onclick="exclude('${key}')">Filter</button>` <button class="btn waves-effect" style="width:60px; padding:0;" onclick="exclude('${key}')">Filter</button>`
if (checkNotfFilter(key)) { if (checkNotfFilter(key)) {
exclude = exclude =
exclude + exclude +
`<button class="btn btn-flat red-text waves-effect notf-exclude-btn waves-light" style="width:calc(50% - 11px); padding:0;" onclick="resetNotfFilter('${key}')"> `<button class="btn red waves-effect" style="width:60px; padding:0;" onclick="resetNotfFilter('${key}')">
Clear all Clear all
</button>` </button>`
} }
exclude = exclude + '</div>' exclude = exclude + '<br>'
notfDomain = 'dummy' notfDomain = 'dummy'
notfKey = 'dummy' notfKey = 'dummy'
} else if (acct.type == 'home') { } else if (acct.type == 'home') {
var exclude = `<a onclick="ebtToggle('${key}')" class="setting nex waves-effect"> var exclude = `<a onclick="ebtToggle('${key}')" class="setting nex">
<i class="fas fa-retweet nex" title="${lang.lang_layout_excludingbt}" style="font-size: 24px"></i> <i class="fas fa-retweet waves-effect nex" title="${lang.lang_layout_excludingbt}" style="font-size:24px"></i>
<span id="sta-bt-${key}">Off</span><br /> <span id="sta-bt-${key}">Off</span>
</a>
${lang.lang_layout_excludingbt} ${lang.lang_layout_excludingbt}
</a>` <br>`
} else if (acct.type == 'tag') { } else if (acct.type == 'tag') {
if (acct.data.name) {
var name = acct.data.name
var all = acct.data.all
var any = acct.data.any
var none = acct.data.none
} else {
var name = acct.data
var all = ''
var any = ''
var none = ''
}
if_tag = `<div class="column-hide notf-indv-box" id="tag-box_${key}" style="padding:5px;"> if_tag = `<div class="column-hide notf-indv-box" id="tag-box_${key}" style="padding:5px;">
Base: ${name}<br> Base: ${acct.data}<br>
<div id="tagManager-${key}"> <div id="tagManager-${key}"></div>
all: <input type="text" id="all_tm-${key}"" value="${all}"> <button onclick="addTag('${key}')" class="btn waves-effect" style="width: 100%">Add</button>
any: <input type="text" id="any_tm-${key}" value="${any}">
none: <input type="text" id="none_tm-${key}"" value="${none}">
</div>
<button onclick="addTag('${key}')" class="btn waves-effect" style="width: 100%">Refresh</button>
</div>` </div>`
if_tag_btn = `<a onclick="setToggleTag('${key}')" class="setting nex" if_tag_btn = `<a onclick="setToggleTag('${key}')" class="setting nex"
title="${lang.lang_layout_tagManager}" style="width:30px"> title="${lang.lang_layout_tagManager}" style="width:30px">
<i class="material-icons waves-effect nex">note_add</i> <i class="material-icons waves-effect nex">note_add</i>
</a>` </a>`
unread = '' unread = ''
var exclude = ''
var if_notf = 'hide'
} else { } else {
var exclude = '' var exclude = ''
unread = '' unread = ''
@@ -333,18 +322,22 @@ function parseColumn(target, dontclose) {
var basehtml = `<div style="${css}" class="box ${animecss}" id="timeline_box_${basekey}_parentBox"></div>` var basehtml = `<div style="${css}" class="box ${animecss}" id="timeline_box_${basekey}_parentBox"></div>`
$('#timeline-container').append(basehtml) $('#timeline-container').append(basehtml)
} }
var left_hold = `<a onclick="leftFoldSet('${key}')" class="setting nex waves-effect"> var left_hold = `<a onclick="leftFoldSet('${key}')" class="setting nex">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftFold}">view_agenda</i><br /> <i class="material-icons waves-effect nex" title="${lang.lang_layout_leftFold}">view_agenda</i>
${lang.lang_layout_leftFold}</a>` </a>
${lang.lang_layout_leftFold}<br>`
} else { } else {
var left_hold = `<a onclick="leftFoldRemove('${key}')" class="setting nex waves-effect"> var left_hold = `<a onclick="leftFoldRemove('${key}')" class="setting nex">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftUnfold}">view_column</i><br /> <i class="material-icons waves-effect nex" title="${lang.lang_layout_leftUnfold}">view_column</i>
${lang.lang_layout_leftUnfold}</a>` </a>
${lang.lang_layout_leftUnfold}<br>`
} }
if (key === 0) { if (key === 0) {
left_hold = '' left_hold = ''
} }
if (localStorage.getItem('mode_' + localStorage.getItem('domain_' + acct.domain)) == 'misskey') { if (
localStorage.getItem('mode_' + localStorage.getItem('domain_' + acct.domain)) == 'misskey'
) {
var isMisRed = '' var isMisRed = ''
exclude = '' exclude = ''
var if_misskey_hide = 'hide' var if_misskey_hide = 'hide'
@@ -357,25 +350,14 @@ function parseColumn(target, dontclose) {
} else { } else {
var addHeight = '' var addHeight = ''
} }
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>`
} 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 />
<span id="sta-remote-${key}">Off</span>
${lang.lang_layout_remoteOnly}</a>`
}
var html = ` var html = `
<div class="boxIn" id="timeline_box_${key}_box" tlid="${key}" data-acct="${acct.domain}" style="${addHeight}"> <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 z-depth-2" id="menu_${key}" style="${insert}">
<div class="area-notice"> <div class="area-notice">
<i class="material-icons waves-effect ${isMisRed} notice_icon_acct_${acct.domain}" id="notice_icon_${key}" ${notf_attr} <i class="material-icons waves-effect ${isMisRed}" id="notice_icon_${key}" ${notf_attr}
style="font-size:40px; padding-top:25%;" style="font-size:40px; padding-top:25%;"
onclick="checkStr('${acct.type}','${data}','${acct.domain}', '${key}', '${delc}','${voice}',null)" onclick="checkStr('${acct.type}','${data}','${acct.domain}', '${key}', '${delc}','${voice}',null)"
title="${lang.lang_layout_gotop}" aria-hidden="true"> title="${lang.lang_layout_gotop}">
</i> </i>
</div> </div>
<div class="area-notice_name"> <div class="area-notice_name">
@@ -384,61 +366,58 @@ function parseColumn(target, dontclose) {
<div class="area-a1"> <div class="area-a1">
<a onclick="notfToggle('${acct.domain}','${key}')" class="setting nex ${if_notf}" <a onclick="notfToggle('${acct.domain}','${key}')" class="setting nex ${if_notf}"
title="${unique_notf}" ${icnsert}> title="${unique_notf}" ${icnsert}>
<i class="material-icons waves-effect nex notf-icon_${acct.domain}" aria-hidden="true">notifications</i> <i class="material-icons waves-effect nex notf-icon_${acct.domain}">notifications</i>
<span class="voice">${unique_notf}</span>
</a> </a>
<span class="cbadge hide notf-announ_${acct.domain}" style="margin-right:0" ${unread}
onclick="notfToggle('${acct.domain}','${key}')" title="${lang.lang_layout_announ}">
<i class="fas fa-bullhorn"></i>
<span class="notf-announ_${acct.domain}_ct"></span>
<span class="voice">${lang.lang_layout_announ}</span>
</span>
${if_tag_btn} ${if_tag_btn}
</div> </div>
<div class="area-sta"> <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 teal notf-reply_${acct.domain} hide" data-badge-caption="Reply">0</span>
<span class="new badge yellow black-text notf-fav_${acct.domain} hide" data-badge-caption="Fav" aria-hidden="true">0</span> <span class="new badge yellow black-text notf-fav_${acct.domain} hide" data-badge-caption="Fav">0</span>
<span class="new badge blue notf-bt_${acct.domain} hide" data-badge-caption="BT" aria-hidden="true">0</span> <span class="new badge blue notf-bt_${acct.domain} hide" data-badge-caption="BT">0</span>
<span class="new badge orange notf-follow_${acct.domain} hide" data-badge-caption="Follow" aria-hidden="true">0</span> <span class="new badge orange notf-follow_${acct.domain} hide" data-badge-caption="Follow">0</span>
</div> </div>
<div class="area-a2"> <div class="area-a2">
<a onclick="removeColumn('${key}')" class="setting nex"> <a onclick="removeColumn('${key}')" class="setting nex">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_delthis}" ${icnsert} aria-hidden="true">cancel</i> <i class="material-icons waves-effect nex" title="${lang.lang_layout_delthis}" ${icnsert}>cancel</i>
<span class="voice">${lang.lang_layout_delthis}</span>
</a> </a>
</div> </div>
<div class="area-a3"> <div class="area-a3">
<a onclick="setToggle('${key}')" class="setting nex" title="${lang.lang_layout_setthis}" ${icnsert}> <a onclick="setToggle('${key}')" class="setting nex" title="${lang.lang_layout_setthis}" ${icnsert}>
<i class="material-icons waves-effect nex" aria-hidden="true">settings</i> <i class="material-icons waves-effect nex">settings</i>
<span class="voice">${lang.lang_layout_setthis}</span>
</a> </a>
</div> </div>
</div> </div>
<div class="column-hide notf-indv-box z-depth-4" id="notf-box_${notfKey}"> <div class="column-hide notf-indv-box z-depth-4" id="notf-box_${notfKey}">
<div class="announce_${acct.domain}" style="border: 1px solid"></div>
<div id="notifications_${notfKey}" data-notf="${notfDomain}" data-type="notf" class="notf-timeline"> <div id="notifications_${notfKey}" data-notf="${notfDomain}" data-type="notf" class="notf-timeline">
</div> </div>
</div> </div>
<div class="column-hide notf-indv-box" id="util-box_${key}" style="padding:5px;"> <div class="column-hide notf-indv-box" id="util-box_${key}" style="padding:5px;">
${exclude} ${exclude}${left_hold}
${unread} <a onclick="mediaToggle('${key}')" class="setting nex">
${left_hold} <i class="material-icons waves-effect nex" title="${lang.lang_layout_mediafil}">perm_media</i>
${mediaFil} <span id="sta-media-${key}">On</span>
<a onclick="cardToggle('${key}')" class="setting nex waves-effect"> </a>
<i class="material-icons nex" title="${lang.lang_layout_linkanades}">link</i> ${lang.lang_layout_mediafil}<br>
<span id="sta-card-${key}">On</span><br /> <a onclick="cardToggle('${key}')" class="setting nex">
${lang.lang_layout_linkana} <i class="material-icons waves-effect nex" title="${lang.lang_layout_linkanades}">link</i>
<span id="sta-card-${key}">On</span>
</a>
${lang.lang_layout_linkana}
<br>
<a onclick="voiceToggle('${key}')" class="setting nex">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_tts}">hearing</i>
<span id="sta-voice-${key}">On</span>
</a> </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} ${lang.lang_layout_tts}
TL</a> TL<br>
<a onclick="columnReload('${key}','${acct.type}')" class="setting nex ${if_misskey_hide} waves-effect"> <a onclick="columnReload('${key}','${acct.type}')" class="setting nex ${if_misskey_hide}">
<i class="material-icons nex" title="${lang.lang_layout_reconnect}">refresh</i> <i class="material-icons waves-effect nex" title="${lang.lang_layout_reconnect}">refresh</i>
<br /> </a>
<span>
${lang.lang_layout_reconnect} ${lang.lang_layout_reconnect}
</a><br /> </span>
<br>
${lang.lang_layout_headercolor} ${lang.lang_layout_headercolor}
<br> <br>
<div id="picker_${key}" class="color-picker"></div> <div id="picker_${key}" class="color-picker"></div>
@@ -511,13 +490,13 @@ function parseColumn(target, dontclose) {
minHeight: 50, minHeight: 50,
minWidth: 50, minWidth: 50,
grid: 50, grid: 50,
resize: function (event, ui) { resize: function(event, ui) {
$(this).css('min-width', ui.size.width + 'px') $(this).css('min-width', ui.size.width + 'px')
$(this).css('max-width', ui.size.width + 'px') $(this).css('max-width', ui.size.width + 'px')
$(this).css('min-height', ui.size.height + 'px') $(this).css('min-height', ui.size.height + 'px')
$(this).css('max-height', ui.size.height + 'px') $(this).css('max-height', ui.size.height + 'px')
}, },
stop: function (event, ui) { stop: function(event, ui) {
var col = localStorage.getItem('column') var col = localStorage.getItem('column')
var o = JSON.parse(col) var o = JSON.parse(col)
var width = ui.size.width var width = ui.size.width
@@ -532,14 +511,16 @@ function parseColumn(target, dontclose) {
} else { } else {
//横幅。その縦幅を持つカラムのidは //横幅。その縦幅を持つカラムのidは
console.log('yoko') console.log('yoko')
var key = $(this).find('.boxIn').attr('tlid') var key = $(this)
.find('.boxIn')
.attr('tlid')
var obj = o[key] var obj = o[key]
obj.width = width obj.width = width
o[key] = obj o[key] = obj
} }
var json = JSON.stringify(o) var json = JSON.stringify(o)
localStorage.setItem('column', json) localStorage.setItem('column', json)
}, }
}) })
} }
function checkStr(type, data, acct_id, key, delc, voice) { function checkStr(type, data, acct_id, key, delc, voice) {
@@ -589,7 +570,7 @@ function addColumn() {
} }
var add = { var add = {
domain: acct, domain: acct,
type: type, type: type
} }
var multi = localStorage.getItem('column') var multi = localStorage.getItem('column')
var obj = JSON.parse(multi) var obj = JSON.parse(multi)
@@ -623,7 +604,9 @@ function addselCk() {
$('#webview-add').addClass('hide') $('#webview-add').addClass('hide')
} }
if (domain == 'knzk.me' || domain == 'mstdn.y-zu.org') { if (domain == 'knzk.me' || domain == 'mstdn.y-zu.org') {
$('#type-sel').append('<option value="dm" data-trans="dm" id="direct-add">' + lang.layout_dm + '</option>') $('#type-sel').append(
'<option value="dm" data-trans="dm" id="direct-add">' + lang.layout_dm + '</option>'
)
} else { } else {
$('#direct-add').remove() $('#direct-add').remove()
} }
@@ -640,20 +623,16 @@ function removeColumn(tlid) {
confirmButtonColor: '#3085d6', confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33', cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno, confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no, cancelButtonText: lang.lang_no
}).then((result) => { }).then(result => {
if (result.value) { if (result.value) {
var multi = localStorage.getItem('column') var multi = localStorage.getItem('column')
var obj = JSON.parse(multi) var obj = JSON.parse(multi)
var data = obj[tlid]
obj.splice(tlid, 1) obj.splice(tlid, 1)
var json = JSON.stringify(obj) var json = JSON.stringify(obj)
localStorage.setItem('column', json) localStorage.setItem('column', json)
sortLoad() sortLoad()
$('#timeline_box_' + tlid + '_box').remove() $('#timeline_box_' + tlid + '_parentBox').remove()
if (!data.left_fold) {
$('#timeline_box_' + tlid + '_parentBox').remove()
}
} }
$('#sort-box').removeClass('hide') $('#sort-box').removeClass('hide')
$('#sort-box').addClass('show') $('#sort-box').addClass('show')
@@ -667,28 +646,28 @@ function setToggle(tlid) {
$('#util-box_' + tlid).css('display', 'block') $('#util-box_' + tlid).css('display', 'block')
$('#util-box_' + tlid).animate( $('#util-box_' + tlid).animate(
{ {
height: '200px', height: '200px'
}, },
{ {
duration: 300, duration: 300,
complete: function () { complete: function() {
$('#util-box_' + tlid).css('overflow-y', 'scroll') $('#util-box_' + tlid).css('overflow-y', 'scroll')
$('#util-box_' + tlid).removeClass('column-hide') $('#util-box_' + tlid).removeClass('column-hide')
}, }
} }
) )
} else { } else {
$('#util-box_' + tlid).css('overflow-y', 'hidden') $('#util-box_' + tlid).css('overflow-y', 'hidden')
$('#util-box_' + tlid).animate( $('#util-box_' + tlid).animate(
{ {
height: '0', height: '0'
}, },
{ {
duration: 300, duration: 300,
complete: function () { complete: function() {
$('#util-box_' + tlid).addClass('column-hide') $('#util-box_' + tlid).addClass('column-hide')
$('#util-box_' + tlid).css('display', 'none') $('#util-box_' + tlid).css('display', 'none')
}, }
} }
) )
} }
@@ -700,28 +679,28 @@ function setToggleTag(tlid) {
$('#tag-box_' + tlid).css('display', 'block') $('#tag-box_' + tlid).css('display', 'block')
$('#tag-box_' + tlid).animate( $('#tag-box_' + tlid).animate(
{ {
height: '200px', height: '200px'
}, },
{ {
duration: 300, duration: 300,
complete: function () { complete: function() {
$('#tag-box_' + tlid).css('overflow-y', 'scroll') $('#tag-box_' + tlid).css('overflow-y', 'scroll')
$('#tag-box_' + tlid).removeClass('column-hide') $('#tag-box_' + tlid).removeClass('column-hide')
}, }
} }
) )
} else { } else {
$('#tag-box_' + tlid).css('overflow-y', 'hidden') $('#tag-box_' + tlid).css('overflow-y', 'hidden')
$('#tag-box_' + tlid).animate( $('#tag-box_' + tlid).animate(
{ {
height: '0', height: '0'
}, },
{ {
duration: 300, duration: 300,
complete: function () { complete: function() {
$('#tag-box_' + tlid).addClass('column-hide') $('#tag-box_' + tlid).addClass('column-hide')
$('#tag-box_' + tlid).css('display', 'none') $('#tag-box_' + tlid).css('display', 'none')
}, }
} }
) )
} }
@@ -785,8 +764,7 @@ function webviewParse(url, key, insert, icnsert, css) {
<i class="fab fa-twitter waves-effect" id="notice_icon_${key}" style="font-size:40px; padding-top:25%;"></i> <i class="fab fa-twitter waves-effect" id="notice_icon_${key}" style="font-size:40px; padding-top:25%;"></i>
</div> </div>
<div class="area-notice_name tl-title">WebView('${url}')</div> <div class="area-notice_name tl-title">WebView('${url}')</div>
<div class="area-sta"> <div class="area-sta"></div>
</div>
<div class="area-a2"> <div class="area-a2">
<a onclick="removeColumn('${key}')" class="setting nex"> <a onclick="removeColumn('${key}')" class="setting nex">
<i class="material-icons waves-effect nex" title="${lang.lang_layout_delthis}" ${icnsert}>cancel</i> <i class="material-icons waves-effect nex" title="${lang.lang_layout_delthis}" ${icnsert}>cancel</i>
@@ -829,16 +807,11 @@ function unstreamingTL(type, key, basekey, insert, icnsert, left_fold, css, anim
${lang.lang_layout_leftUnfold} ${lang.lang_layout_leftUnfold}
</span><br>` </span><br>`
} }
if (type == 'utl') {
var dataHtml = false
} else {
var dataHtml = data
}
var html = `<div class="boxIn" id="timeline_box_${key}_box" tlid="${key}"> var html = `<div class="boxIn" id="timeline_box_${key}_box" tlid="${key}">
<div class="notice-box z-depth-2" id="menu_${key}" style="${insert} "> <div class="notice-box z-depth-2" id="menu_${key}" style="${insert} ">
<div class="area-notice"> <div class="area-notice">
<i class="material-icons waves-effect" id="notice_icon_${key}" style="font-size:40px; padding-top:25%;" <i class="material-icons waves-effect" id="notice_icon_${key}" style="font-size:40px; padding-top:25%;"
onclick="${type}('${key}','${dataHtml}');" title="${lang.lang_layout_gotop}"></i> onclick="${type}('${key}','${data}');" title="${lang.lang_layout_gotop}"></i>
</div> </div>
<div class="area-notice_name"> <div class="area-notice_name">
<span id="notice_${key}" class="tl-title"></span> <span id="notice_${key}" class="tl-title"></span>
@@ -879,8 +852,6 @@ function unstreamingTL(type, key, basekey, insert, icnsert, left_fold, css, anim
} else if (type == 'bookmark') { } else if (type == 'bookmark') {
console.log(key, data) console.log(key, data)
bookmark(key, data) bookmark(key, data)
} else if (type == 'utl') {
utl(key, data.acct, data.data)
} }
cardCheck(key) cardCheck(key)
ebtCheck(key) ebtCheck(key)
@@ -898,22 +869,6 @@ function bookmark(key, data) {
} }
tl('bookmark', '', data, key, 'false', voice, '') tl('bookmark', '', data, key, 'false', voice, '')
} }
function utl(key, acct_id, data) {
if (!data) {
var multi = localStorage.getItem('column')
var obj = JSON.parse(multi)
data = obj[key].data
acct_id = obj[key].domain
}
console.log(key, data)
if (localStorage.getItem('voice_' + key)) {
var voice = true
} else {
var voice = false
}
tl('utl', data, acct_id, key, 'false', voice, '')
}
function leftFoldSet(key) { function leftFoldSet(key) {
var multi = localStorage.getItem('column') var multi = localStorage.getItem('column')
var obj = JSON.parse(multi) var obj = JSON.parse(multi)

View File

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

View File

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

View File

@@ -58,10 +58,10 @@ function show() {
mdCheck() mdCheck()
} }
$(function () { $(function() {
$('#post-box').draggable({ $('#post-box').draggable({
handle: '#post-bar', handle: '#post-bar',
stop: function () { stop: function() {
var left = $('#post-box').offset().left var left = $('#post-box').offset().left
if (left > $('body').width() - $('#post-box').width()) { if (left > $('body').width() - $('#post-box').width()) {
left = $('body').width() - $('#post-box').width() left = $('body').width() - $('#post-box').width()
@@ -76,15 +76,15 @@ $(function () {
} }
localStorage.setItem('postbox-left', left) localStorage.setItem('postbox-left', left)
localStorage.setItem('postbox-top', top) localStorage.setItem('postbox-top', top)
}, }
}) })
$('#post-box').resizable({ $('#post-box').resizable({
minHeight: 150, minHeight: 150,
minWidth: 100, minWidth: 100,
stop: function (event, ui) { stop: function(event, ui) {
$('#textarea').blur() $('#textarea').blur()
localStorage.setItem('postbox-width', ui.size.width) localStorage.setItem('postbox-width', ui.size.width)
}, }
}) })
}) })
@@ -101,39 +101,40 @@ if (location.search) {
$('.mini-btn').text('expand_less') $('.mini-btn').text('expand_less')
} }
} }
window.onload = initPostbox $('#posttgl').click(function(e) {
function initPostbox() { if (!$('#post-box').hasClass('appear')) {
$('#posttgl').click(function (e) { show()
if (!$('#post-box').hasClass('appear')) { } else {
show() hide()
} else { }
$('.cvo').removeClass('selectedToot')
selectedColumn = 0
selectedToot = 0
})
$('#timeline-container,#group').click(function(e) {
if (localStorage.getItem('box') != 'absolute') {
if ($('#post-box').hasClass('appear') && !localStorage.getItem('nohide')) {
hide() hide()
} }
$('.cvo').removeClass('selectedToot') }
selectedColumn = 0 $('.cvo').removeClass('selectedToot')
selectedToot = 0 selectedColumn = 0
}) selectedToot = 0
localStorage.removeItem('nohide')
$('#timeline-container,#group').click(function (e) { })
if (localStorage.getItem('box') != 'absolute') { $('#contextWrap').click(function(e) {
if ($('#post-box').hasClass('appear') && !localStorage.getItem('nohide')) { $('#contextWrap').addClass('hide')
hide() $('.contextMenu').addClass('hide')
} $('.act-icon').text('expand_more')
} })
$('.cvo').removeClass('selectedToot') $('#textarea,#cw-text').focusout(function(e) {
selectedColumn = 0 localStorage.setItem('nohide', true)
selectedToot = 0 var countup = function() {
localStorage.removeItem('nohide') localStorage.removeItem('nohide')
srcBox('close') }
}) //setTimeout(remove, 100);
$('#textarea,#cw-text').focusout(function (e) { $('.cvo').removeClass('selectedToot')
localStorage.setItem('nohide', true) selectedColumn = 0
var countup = function () { selectedToot = 0
localStorage.removeItem('nohide') })
}
//setTimeout(remove, 100);
$('.cvo').removeClass('selectedToot')
selectedColumn = 0
selectedToot = 0
})
}

View File

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

View File

@@ -3,7 +3,7 @@ var envView = new Vue({
el: '#envView', el: '#envView',
data: { config: envConstruction }, data: { config: envConstruction },
methods: { methods: {
complete: function (i, val) { complete: function(i, val) {
var ls = envView.config[i].storage var ls = envView.config[i].storage
M.toast({ html: 'Complete', displayLength: 3000 }) M.toast({ html: 'Complete', displayLength: 3000 })
if (!val) { if (!val) {
@@ -17,18 +17,15 @@ var envView = new Vue({
if (ls == 'ua_setting') { if (ls == 'ua_setting') {
useragent(val) useragent(val)
} }
if (ls == 'frame') {
frameSet(val)
}
return true return true
}, }
}, }
}) })
var tlView = new Vue({ var tlView = new Vue({
el: '#tlView', el: '#tlView',
data: { config: tlConstruction }, data: { config: tlConstruction },
methods: { methods: {
complete: function (i, val) { complete: function(i, val) {
var ls = tlView.config[i] var ls = tlView.config[i]
if (val) { if (val) {
localStorage.setItem(ls.storage, val) localStorage.setItem(ls.storage, val)
@@ -46,18 +43,18 @@ var tlView = new Vue({
} }
} }
return true return true
}, }
}, }
}) })
var postView = new Vue({ var postView = new Vue({
el: '#postView', el: '#postView',
data: { data: {
config: postConstruction, config: postConstruction,
kirishima: localStorage.getItem('kirishima'), kirishima: localStorage.getItem('kirishima'),
quoters: localStorage.getItem('quoters'), quoters: localStorage.getItem('quoters')
}, },
methods: { methods: {
complete: function (i, val) { complete: function(i, val) {
var ls = postView.config[i] var ls = postView.config[i]
if (val) { if (val) {
localStorage.setItem(ls.storage, val) localStorage.setItem(ls.storage, val)
@@ -75,22 +72,38 @@ var postView = new Vue({
} }
} }
return true return true
}, }
}, }
}) })
//設定ボタン押した。 //設定ボタン押した。
function settings() { function settings() {
var cd = $('[name=theme]:checked').val()
var ct = $('[data-ct=' + cd + ']').html()
if (cd == 'custom' && !$('#custom-sel-sel').val()) {
var theme = localStorage.getItem('theme')
if (!theme) {
var theme = 'white'
}
$('#' + theme).prop('checked', true)
} else {
if (cd != localStorage.getItem('theme')) {
M.toast({ html: lang.lang_setting_theme.replace('{{set}}', ct), displayLength: 3000 })
}
//テーマはこの場で設定
themes(cd)
localStorage.setItem('theme', cd)
}
var fontd = $('#font').val() var fontd = $('#font').val()
if (fontd) { if (fontd) {
if (fontd != localStorage.getItem('font')) { if (fontd != localStorage.getItem('font')) {
M.toast({ html: lang.lang_setting_font.replace('{{set}}', fontd), displayLength: 3000 }) M.toast({ html: lang.lang_setting_font.replace('{{set}}', ct), displayLength: 3000 })
} }
localStorage.setItem('font', fontd) localStorage.setItem('font', fontd)
themes() themes()
} else { } else {
if (localStorage.getItem('font')) { if (localStorage.getItem('font')) {
localStorage.removeItem('font') localStorage.removeItem('font')
M.toast({ html: lang.lang_setting_font.replace('{{set}}', '"default"'), displayLength: 3000 }) M.toast({ html: lang.lang_setting_font.replace('{{set}}', ct), displayLength: 3000 })
themes() themes()
} }
} }
@@ -151,17 +164,16 @@ function load() {
var font = '' var font = ''
} }
$('#font').val(font) $('#font').val(font)
$('#c1-file').text(localStorage.getItem('custom1') != 'null' ? localStorage.getItem('custom1') : '') $('#c1-file').text(localStorage.getItem('custom1'))
$('#c2-file').text(localStorage.getItem('custom2') != 'null' ? localStorage.getItem('custom2') : '') $('#c2-file').text(localStorage.getItem('custom2'))
$('#c3-file').text(localStorage.getItem('custom3') != 'null' ? localStorage.getItem('custom3') : '') $('#c3-file').text(localStorage.getItem('custom3'))
$('#c4-file').text(localStorage.getItem('custom4') != 'null' ? localStorage.getItem('custom4') : '') $('#c4-file').text(localStorage.getItem('custom4'))
var cvol = localStorage.getItem('customVol') var cvol = localStorage.getItem('customVol')
if (cvol) { if (cvol) {
$('#soundvol').val(cvol * 100) $('#soundvol').val(cvol * 100)
$('#soundVolVal').text(cvol * 100) $('#soundVolVal').text(cvol * 100)
} }
//$("#log").val(localStorage.getItem("errors")) //$("#log").val(localStorage.getItem("errors"))
$('#lastFmUser').val(localStorage.getItem('lastFmUser'))
} }
function customVol() { function customVol() {
var cvol = $('#soundvol').val() var cvol = $('#soundvol').val()
@@ -200,7 +212,7 @@ function climute() {
return return
} }
var templete var templete
Object.keys(obj).forEach(function (key) { Object.keys(obj).forEach(function(key) {
var cli = obj[key] var cli = obj[key]
var list = key * 1 + 1 var list = key * 1 + 1
templete = templete =
@@ -235,7 +247,7 @@ function wordmute() {
obj = [] obj = []
} }
$('#wordmute').chips({ $('#wordmute').chips({
data: obj, data: obj
}) })
} }
function wordmuteSave() { function wordmuteSave() {
@@ -251,7 +263,7 @@ function wordemp() {
obj = [] obj = []
} }
$('#wordemp').chips({ $('#wordemp').chips({
data: obj, data: obj
}) })
} }
function wordempSave() { function wordempSave() {
@@ -263,7 +275,7 @@ function notftest() {
var os = localStorage.getItem('platform') var os = localStorage.getItem('platform')
var options = { var options = {
body: lang.lang_setting_notftest + '(' + lang.lang_setting_notftestprof + ')', body: lang.lang_setting_notftest + '(' + lang.lang_setting_notftestprof + ')',
icon: localStorage.getItem('prof_0'), icon: localStorage.getItem('prof_0')
} }
var n = new Notification('TheDesk' + lang.lang_setting_notftest, options) var n = new Notification('TheDesk' + lang.lang_setting_notftest, options)
} }
@@ -288,7 +300,7 @@ function changelang(lang) {
} }
function exportSettings() { function exportSettings() {
var exp = exportSettingsCore() var exp = exportSettingsCore()
$('#imp-exp').val(JSON5.stringify(exp)) $("#imp-exp").val(JSON5.stringify(exp))
Swal.fire({ Swal.fire({
title: lang.lang_setting_exportwarn, title: lang.lang_setting_exportwarn,
type: 'warning', type: 'warning',
@@ -296,8 +308,8 @@ function exportSettings() {
confirmButtonColor: '#3085d6', confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33', cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno, confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no, cancelButtonText: lang.lang_no
}).then((result) => { }).then(result => {
if (result.value) { if (result.value) {
postMessage(['exportSettings', ''], '*') postMessage(['exportSettings', ''], '*')
} }
@@ -336,7 +348,11 @@ function exportSettingsCore() {
config.font = localStorage.getItem('font') config.font = localStorage.getItem('font')
exp.config = config exp.config = config
//keysc //keysc
exp.ksc = [localStorage.getItem('oks-1'), localStorage.getItem('oks-2'), localStorage.getItem('oks-3')] exp.ksc = [
localStorage.getItem('oks-1'),
localStorage.getItem('oks-2'),
localStorage.getItem('oks-3')
]
//climu //climu
var cli = localStorage.getItem('client_mute') var cli = localStorage.getItem('client_mute')
var climu = JSON.parse(cli) var climu = JSON.parse(cli)
@@ -365,8 +381,8 @@ function exportSettingsCore() {
return exp return exp
} }
function importSettings() { function importSettings() {
if ($('#imp-exp').val()) { if($("#imp-exp").val()) {
importSettingsCore(JSON5.parse($('#imp-exp').val())) importSettingsCore(JSON5.parse($("#imp-exp").val()))
return false return false
} }
Swal.fire({ Swal.fire({
@@ -376,8 +392,8 @@ function importSettings() {
confirmButtonColor: '#3085d6', confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33', cancelButtonColor: '#d33',
confirmButtonText: lang.lang_yesno, confirmButtonText: lang.lang_yesno,
cancelButtonText: lang.lang_no, cancelButtonText: lang.lang_no
}).then((result) => { }).then(result => {
if (result.value) { if (result.value) {
postMessage(['importSettings', ''], '*') postMessage(['importSettings', ''], '*')
} }
@@ -471,7 +487,7 @@ function importSettingsCore(obj) {
} else { } else {
Swal.fire({ Swal.fire({
type: 'error', type: 'error',
title: 'Error', title: 'Error'
}) })
} }
} }
@@ -486,45 +502,50 @@ function fontList(arg) {
$('#fonts').removeClass('hide') $('#fonts').removeClass('hide')
for (var i = 0; i < arg.length; i++) { for (var i = 0; i < arg.length; i++) {
var font = arg[i] var font = arg[i]
$('#fonts').append('<div class="font pointer" style="font-family:' + font + '" onclick="insertFont(\'' + font + '\')">' + font + '</div>') $('#fonts').append(
'<div class="font pointer" style="font-family:' +
font.family +
'" onclick="insertFont(\'' +
font.family +
'\')">' +
font.family +
'</div>'
)
} }
} }
function insertFont(name) { function insertFont(name) {
$('#font').val(name) $('#font').val(name)
} }
function copyColor(from, to) { $('.color-picker').each(function(i, elem) {
let props = [ pickerDefine(i, 'fff')
'background', 'subcolor', 'text', 'accent', })
'modal', 'modalFooter', 'third', 'forth', function pickerDefine(i, color) {
'bottom', 'emphasized', 'postbox', 'active', var pickr = new Pickr({
'selected', 'selectedWithShared' el: '#color-picker' + i,
] default: color,
let i = 0 showAlways: true,
let color appendToBody: true,
for (tag of props) { closeWithKey: 'Escape',
if(tag == from) { comparison: false,
let used = $(`#use-color_${i}`).prop('checked') components: {
if(!used) { preview: true, // Left side color comparison
Swal.fire({ opacity: false, // Opacity slider
type: 'error', hue: true, // Hue slider
title: 'Not checked', interaction: {
}) rgba: false, // rgba option (red green blue and alpha)
break input: true // input / output element
} }
color = $(`#color-picker${i}_value`).val() },
break strings: {
save: 'Save', // Default for save button
clear: 'Clear' // Default for clear button
} }
i++ })
} pickr.on('change', (...args) => {
if(!color) return false var rgb =
for (tag of props) { 'rgb(' + args[0].toRGBA()[0] + ',' + args[0].toRGBA()[1] + ',' + args[0].toRGBA()[2] + ')'
if(tag == to) { $('#color-picker' + i + '_value').val(rgb)
$(`#color-picker${i}_value`).val(color) })
$(`#use-color_${i}`).prop('checked', true)
break
}
i++
}
} }
function customComp() { function customComp() {
var nameC = $('#custom_name').val() var nameC = $('#custom_name').val()
@@ -532,32 +553,59 @@ function customComp() {
return false return false
} }
var descC = $('#custom_desc').val() var descC = $('#custom_desc').val()
var bgC = $('#color-picker0_value').val() var primaryC = $('#color-picker0_value').val()
var subcolorC = $('#color-picker2_value').val() if (!primaryC) {
var textC = $('#color-picker1_value').val() primaryC = 'rgb(255,255,255)'
var accentC = $('#color-picker3_value').val() }
var secondaryC = $('#color-picker1_value').val()
if (!secondaryC) {
secondaryC = 'rgb(255,255,255)'
}
var textC = $('#color-picker2_value').val()
if (!textC) {
textC = 'rgb(255,255,255)'
}
var multi = localStorage.getItem('multi') var multi = localStorage.getItem('multi')
let advanced = [ if ($('#pickers').hasClass('advanceTheme')) {
'modal', 'modalFooter', 'third', 'forth', var accentC = $('#color-picker3_value').val()
'bottom', 'emphasized', 'postbox', 'active', if (!accentC) {
'selected', 'selectedWithShared' accentC = null
]
var advanceTheme = {}
let i = 4
for (tag of advanced) {
let used = $(`#use-color_${i}`).prop('checked')
if (used) {
advanceTheme[tag] = $(`#color-picker${i}_value`).val()
} }
i++ var activeC = $('#color-picker4_value').val()
if (!activeC) {
activeC = null
}
var modalC = $('#color-picker5_value').val()
if (!modalC) {
modalC = null
}
var bottomC = $('#color-picker6_value').val()
if (!bottomC) {
bottomC = null
}
var postboxC = $('#color-picker7_value').val()
if (!postboxC) {
postboxC = null
}
var subcolorC = $('#color-picker8_value').val()
if (!subcolorC) {
subcolorC = null
}
var advanceTheme = {
TheDeskAccent: accentC,
TheDeskActive: activeC,
TheDeskModal: modalC,
TheDeskBottom: bottomC,
TheDeskPostbox: postboxC,
TheDeskSubcolor: subcolorC
}
} else {
var advanceTheme = {}
} }
var my = JSON.parse(multi)[0].name var my = JSON.parse(multi)[0].name
var id = $('#custom-edit-sel').val() var id = $('#custom-edit-sel').val()
const defaults = [ if (id == 'add_new') {
'black','blue','brown','green','indigo','polar','snow','white'
]
if (id == 'add_new' || defaults.includes(id)) {
id = makeCID() id = makeCID()
} }
localStorage.setItem('customtheme-id', id) localStorage.setItem('customtheme-id', id)
@@ -566,48 +614,28 @@ function customComp() {
author: my, author: my,
desc: descC, desc: descC,
base: $('[name=direction]:checked').val(), base: $('[name=direction]:checked').val(),
primary: { vars: {
background: bgC, primary: primaryC,
subcolor: subcolorC, secondary: secondaryC,
text: textC, text: textC
accent: accentC
}, },
advanced: advanceTheme, props: advanceTheme,
id: id, id: id
version: '2'
} }
$('#custom_json').val(JSON.stringify(json)) $('#custom_json').val(JSON.stringify(json))
let timerInterval themes('custom')
Swal.fire({ $('#custom').prop('checked', true)
title: 'Saving...', $('#custom_name').val('')
html: '', $('#custom_desc').val('')
timer: 1000, $('#dark').prop('checked', true)
timerProgressBar: true, $('#custom_json').val('')
onBeforeOpen: () => { for (var i = 0; i <= 8; i++) {
Swal.showLoading() $('#color-picker' + i + '-wrap').html(
}, '<div class="color-picker" id="color-picker' + i + '"></div>'
onClose: () => { )
clearInterval(timerInterval) $('#color-picker' + i + '_value').val('')
} pickerDefine(i, 'fff')
}).then((result) => { }
themes()
ctLoad()
Swal.fire({
title: 'Refreshing...',
html: '',
timer: 1000,
timerProgressBar: true,
onBeforeOpen: () => {
Swal.showLoading()
},
onClose: () => {
clearInterval(timerInterval)
}
}).then((result) => {
$('#custom-edit-sel').val(id)
$('select').formSelect()
})
})
postMessage(['themeJsonCreate', JSON.stringify(json)], '*') postMessage(['themeJsonCreate', JSON.stringify(json)], '*')
} }
function deleteIt() { function deleteIt() {
@@ -616,34 +644,37 @@ function deleteIt() {
$('#custom_desc').val('') $('#custom_desc').val('')
$('#dark').prop('checked', true) $('#dark').prop('checked', true)
$('#custom_json').val('') $('#custom_json').val('')
for (var i = 0; i <= 13; i++) { for (var i = 0; i <= 8; i++) {
if (i >= 4) $(`#use-color_${i}`).prop('checked', false) $('#color-picker' + i + '-wrap').html(
'<div class="color-picker" id="color-picker' + i + '"></div>'
)
$('#color-picker' + i + '_value').val('') $('#color-picker' + i + '_value').val('')
pickerDefine(i, 'fff')
} }
postMessage(['themeJsonDelete', id + '.thedesktheme'], '*') postMessage(['themeJsonDelete', id], '*')
} }
function ctLoad() { function ctLoad() {
postMessage(['sendSinmpleIpc', 'theme-json-list'], '*') postMessage(['sendSinmpleIpc', 'theme-json-list'], '*')
} }
function ctLoadCore(args) { function ctLoadCore(args) {
var template = '' var templete = ''
var editTemplate = '' Object.keys(args).forEach(function(key) {
Object.keys(args).forEach(function (key) {
var theme = args[key] var theme = args[key]
var themeid = theme.id var themeid = theme.id
template = template + `<option value="${themeid}">${theme.name}${theme.compatible ? `(${lang.lang_setting_compat})` : ''}</option>` templete = templete + '<option value="' + themeid + '">' + theme.name + '</option>'
if (!theme.compatible) editTemplate = editTemplate + `<option value="${themeid}">${theme.name}</option>`
}) })
$('#custom-sel-sel').html(template) if (args[0]) {
editTemplate = '<option value="add_new">' + $('#edit-selector').attr('data-add') + '</option>' + editTemplate localStorage.setItem('customtheme-id', args[0].id)
$('#custom-edit-sel').html(editTemplate) }
$('#custom-sel-sel').val(localStorage.getItem('customtheme-id')) $('#custom-sel-sel').html(templete)
templete =
'<option value="add_new">' + $('#edit-selector').attr('data-add') + '</option>' + templete
$('#custom-edit-sel').html(templete)
$('select').formSelect() $('select').formSelect()
} }
function customSel() { function customSel() {
var id = $('#custom-sel-sel').val() var id = $('#custom-sel-sel').val()
localStorage.setItem('customtheme-id', id) localStorage.setItem('customtheme-id', id)
themes(id)
} }
function custom() { function custom() {
var id = $('#custom-edit-sel').val() var id = $('#custom-edit-sel').val()
@@ -652,47 +683,62 @@ function custom() {
$('#custom_desc').val('') $('#custom_desc').val('')
$('#dark').prop('checked', true) $('#dark').prop('checked', true)
$('#custom_json').val('') $('#custom_json').val('')
for (var i = 0; i <= 13; i++) { for (var i = 0; i <= 8; i++) {
if (i >= 4) $(`#use-color_${i}`).prop('checked', false) $('#color-picker' + i + '-wrap').html(
'<div class="color-picker" id="color-picker' + i + '"></div>'
)
$('#color-picker' + i + '_value').val('') $('#color-picker' + i + '_value').val('')
pickerDefine(i, 'fff')
} }
$('#delTheme').addClass('disabled') $('#delTheme').addClass('disabled')
} else { } else {
$('#delTheme').removeClass('disabled') $('#delTheme').removeClass('disabled')
postMessage(['themeJsonRequest', id + '.thedesktheme'], '*') postMessage(['themeJsonRequest', id], '*')
} }
} }
function customConnect(raw) { function customConnect(raw) {
var args = raw[0] var args = raw[0]
$('#custom_name').val(`${args.name} ${args.default ? 'Customed' : ''}`) $('#custom_name').val(args.name)
$('#custom_desc').val(args.default ? 'TheDesk default theme with some changes by user' : args.desc) $('#custom_desc').val(args.desc)
$('#' + args.base).prop('checked', true) $('#' + args.base).prop('checked', true)
//Background //Primary
$('#color-picker0_value').val(args.primary.background) $('#color-picker0-wrap').html('<div class="color-picker" id="color-picker0"></div>')
pickerDefine(0, rgbToHex(args.vars.primary))
$('#color-picker0_value').val(args.vars.primary)
//Secondary
$('#color-picker1-wrap').html('<div class="color-picker" id="color-picker1"></div>')
pickerDefine(1, rgbToHex(args.vars.secondary))
$('#color-picker1_value').val(args.vars.secondary)
//Text //Text
$('#color-picker1_value').val(args.primary.text) $('#color-picker2-wrap').html('<div class="color-picker" id="color-picker2"></div>')
//Subcolor $('#color-picker2_value').val(args.vars.text)
$('#color-picker2_value').val(args.primary.subcolor) pickerDefine(2, rgbToHex(args.vars.text))
//Accent //TheDesk Only
$('#color-picker3_value').val(args.primary.accent) advancedConncet(args, 'TheDeskAccent', 'secondary', 3)
let advanced = [ advancedConncet(args, 'TheDeskActive', 'primary', 4)
'modal', 'modalFooter', 'third', 'forth', advancedConncet(args, 'TheDeskModal', 'secondary', 5)
'bottom', 'emphasized', 'postbox', 'active', advancedConncet(args, 'TheDeskBottom', 'primary', 6)
'selected', 'selectedWithShared' advancedConncet(args, 'TheDeskPostbox', 'primary', 7)
] advancedConncet(args, 'TheDeskSubcolor', 'primary', 8)
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++
}
$('#custom_json').val(raw[1]) $('#custom_json').val(raw[1])
if(args.default) { }
$('#delTheme').addClass('disabled') function advancedConncet(args, tar, sub, i) {
if (args.props) {
if (args.props[tar]) {
var color = args.props[tar]
$('#pickers').addClass('advanceTheme')
$('.advanced').removeClass('hide')
} else {
var color = args.vars[sub]
}
} else {
var color = args.vars[sub]
} }
$('#color-picker' + i + '-wrap').html(
'<div class="color-picker" id="color-picker' + i + '"></div>'
)
$('#color-picker' + i + '_value').val(color)
pickerDefine(i, rgbToHex(color))
} }
function customImp() { function customImp() {
var json = $('#custom_import').val() var json = $('#custom_import').val()
@@ -701,7 +747,7 @@ function customImp() {
} else { } else {
Swal.fire({ Swal.fire({
type: 'error', type: 'error',
title: 'Error', title: 'Error'
}) })
} }
} }
@@ -718,17 +764,14 @@ function hardwareAcceleration(had) {
function useragent(val) { function useragent(val) {
postMessage(['ua', val], '*') postMessage(['ua', val], '*')
} }
function frameSet(val) {
postMessage(['frameSet', val], '*')
}
function customSound(key) { function customSound(key) {
postMessage(['customSound', key], '*') postMessage(['customSound', key], '*')
} }
function customSoundSave(key, file) { function customSoundSave(key, file) {
localStorage.setItem('custom' + key, file) localStorage.setItem('custom' + key, file)
$(`#c${key}-file`).text(file) $('#c1-file').text(file)
} }
window.onload = function () { window.onload = function() {
//最初に読む //最初に読む
load() load()
climute() climute()
@@ -738,14 +781,17 @@ window.onload = function () {
voiceSettingLoad() voiceSettingLoad()
oksload() oksload()
ctLoad() ctLoad()
$('body').addClass(localStorage.getItem('platform'))
} }
//設定画面で未読マーカーは要らない //設定画面で未読マーカーは要らない
function asReadEnd() { function asReadEnd() {
postMessage(['asReadComp', ''], '*') postMessage(['asReadComp', ''], '*')
} }
function checkupd() { function checkupd() {
if (localStorage.getItem('winstore') == 'brewcask' || localStorage.getItem('winstore') == 'snapcraft' || localStorage.getItem('winstore') == 'winstore') { if (
localStorage.getItem('winstore') == 'brewcask' ||
localStorage.getItem('winstore') == 'snapcraft' ||
localStorage.getItem('winstore') == 'winstore'
) {
var winstore = true var winstore = true
} else { } else {
var winstore = false var winstore = false
@@ -753,22 +799,22 @@ function checkupd() {
var ver = localStorage.getItem('ver') var ver = localStorage.getItem('ver')
var start = 'https://thedesk.top/ver.json' var start = 'https://thedesk.top/ver.json'
fetch(start, { fetch(start, {
method: 'GET', method: 'GET'
}) })
.then(function (response) { .then(function(response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function (text) { response.text().then(function(text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text)
}) })
} }
return response.json() return response.json()
}) })
.catch(function (error) { .catch(function(error) {
todo(error) todo(error)
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function (mess) { .then(function(mess) {
console.table(mess) console.table(mess)
if (mess) { if (mess) {
var platform = localStorage.getItem('platform') var platform = localStorage.getItem('platform')
@@ -781,13 +827,13 @@ function checkupd() {
Swal.fire({ Swal.fire({
type: 'info', type: 'info',
title: lang.lang_setting_noupd, title: lang.lang_setting_noupd,
html: ver, html: ver
}) })
} else if (ver.indexOf('beta') != -1 || winstore) { } else if (ver.indexOf('beta') != -1 || winstore) {
Swal.fire({ Swal.fire({
type: 'info', type: 'info',
title: lang.lang_setting_thisisbeta, title: lang.lang_setting_thisisbeta,
html: ver, html: ver
}) })
} else { } else {
localStorage.removeItem('new-ver-skip') localStorage.removeItem('new-ver-skip')
@@ -796,13 +842,3 @@ function checkupd() {
} }
}) })
} }
function lastFmSet() {
if ($('#lastFmUser').val()) {
localStorage.setItem('lastFmUser', $('#lastFmUser').val())
} else {
localStorage.removeItem('lastFmUser')
}
M.toast({ html: 'Complete: last.fm', displayLength: 3000 })
}
function stopVideo() { return false }

View File

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

View File

@@ -1,310 +1,189 @@
function spotifyConnect() { function spotifyConnect() {
var auth = 'https://spotify.thedesk.top/connect' var auth = "https://accounts.spotify.com/authorize?client_id=0f18e54abe0b4aedb4591e353d3aff69&redirect_uri=https://thedesk.top/spotify-connect&response_type=code&scope=user-read-currently-playing";
$('#spotify-code-show').removeClass('hide') var platform = localStorage.getItem("platform");
postMessage(['openUrl', auth], '*') if (platform == "win32") {
postMessage(["openUrl", auth], "*");
postMessage(["sendSinmpleIpc", "quit"], "*");
} else {
auth = auth + "&state=code";
$("#spotify-code-show").removeClass("hide");
postMessage(["openUrl", auth], "*");
}
} }
function spotifyAuth() { function spotifyAuth() {
var code = $('#spotify-code').val() var code = $("#spotify-code").val();
localStorage.setItem('spotify-token', code) localStorage.setItem("spotify", "code");
$('#spotify-code-show').addClass('hide') localStorage.setItem("spotify-refresh", code);
$('#spotify-enable').addClass('disabled') $("#spotify-code-show").addClass("hide");
$('#spotify-disable').removeClass('disabled') $("#spotify-enable").addClass("disabled");
$("#spotify-disable").removeClass("disabled");
} }
function spotifyDisconnect() { function spotifyDisconnect() {
var start = 'https://spotify.thedesk.top/disconnect?code=' + localStorage.getItem('spotify-token') localStorage.removeItem("spotify");
fetch(start, { localStorage.removeItem("spotify-refresh");
method: 'GET', checkSpotify();
headers: {
'content-type': 'application/json',
},
})
.then(function (response) {
if (!response.ok) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
if (!json.success) alert('error')
localStorage.removeItem('spotify-token')
checkSpotify()
})
} }
function checkSpotify() { function checkSpotify() {
if (localStorage.getItem('spotify-token')) { if (localStorage.getItem("spotify")) {
$('#spotify-enable').addClass('disabled') $("#spotify-enable").addClass("disabled");
$('#spotify-disable').removeClass('disabled') $("#spotify-disable").removeClass("disabled");
} else { } else {
$('#spotify-enable').removeClass('disabled') $("#spotify-enable").removeClass("disabled");
$('#spotify-disable').addClass('disabled') $("#spotify-disable").addClass("disabled");
} }
var content = localStorage.getItem('np-temp') var content = localStorage.getItem("np-temp");
if (!content || content == '' || content == 'null') { if (!content || content == "" || content == "null") {
var content = '#NowPlaying {song} / {album} / {artist}\n{url} #SpotifyWithTheDesk' var content = "#NowPlaying {song} / {album} / {artist}\n{url} #SpotifyWithTheDesk";
} }
$('#np-temp').val(content) $("#np-temp").val(content);
var flag = localStorage.getItem('artwork') var flag = localStorage.getItem("artwork");
if (flag) { if (flag) {
$('#awk_yes').prop('checked', true) $("#awk_yes").prop("checked", true);
} else { } else {
$('#awk_no').prop('checked', true) $("#awk_no").prop("checked", true);
}
var flag2 = localStorage.getItem('complete-artwork')
if (flag2) {
$('#amw_yes').prop('checked', true)
} else {
$('#amw_no').prop('checked', true)
} }
} }
function spotifyFlagSave() { function spotifyFlagSave() {
var awk = $('[name=awk]:checked').val() var awk = $("[name=awk]:checked").val();
if (awk == 'yes') { if (awk == "yes") {
localStorage.setItem('artwork', 'yes') localStorage.setItem("artwork", "yes");
M.toast({ html: lang.lang_spotify_img, displayLength: 3000 }) M.toast({ html: lang.lang_spotify_img, displayLength: 3000 });
} else { } else {
localStorage.removeItem('artwork') localStorage.removeItem("artwork");
M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 }) M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 });
}
}
function aMusicFlagSave() {
var awk = $('[name=amw]:checked').val()
if (awk == 'yes') {
localStorage.setItem('complete-artwork', 'yes')
M.toast({ html: lang.lang_spotify_img, displayLength: 3000 })
} else {
localStorage.removeItem('complete-artwork')
M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 })
} }
} }
function nowplaying(mode) { function nowplaying(mode) {
if (mode == 'spotify') { if (mode == "spotify") {
var start = 'https://spotify.thedesk.top/current-playing?code=' + localStorage.getItem('spotify-token') var start = "https://thedesk.top/now-playing?at=" + localStorage.getItem("spotify") + "&rt=" + localStorage.getItem("spotify-refresh");
var at = localStorage.getItem('spotify-token') var at = localStorage.getItem("spotify");
if (at) { if (at) {
fetch(start, { fetch(start, {
method: 'GET', method: "GET",
headers: { headers: {
'content-type': 'application/json', "content-type": "application/json"
}, }
}) })
.then(function (response) { .then(function(response) {
if (!response.ok) { if (!response.ok) {
response.text().then(function (text) { response.text().then(function(text) {
setLog(response.url, response.status, text) setLog(response.url, response.status, text);
}) });
} }
return response.json() return response.json();
}) })
.catch(function (error) { .catch(function(error) {
todo(error) todo(error);
setLog(start, 'JSON', error) setLog(start, "JSON", error);
console.error(error) console.error(error);
}) })
.then(function (jsonRaw) { .then(function(json) {
var code = jsonRaw.token console.table(json);
localStorage.setItem('spotify-token', code)
var json = jsonRaw.data
console.table(json)
if (json.length < 1) { if (json.length < 1) {
return false return false;
} }
var item = json.item var item = json.item;
var img = item.album.images[0].url var img = item.album.images[0].url;
var flag = localStorage.getItem('artwork') var flag = localStorage.getItem("artwork");
if (flag) { if (flag) {
postMessage(['bmpImage', [img, 0]], '*') postMessage(["bmpImage", [img, 0]], "*");
} }
var content = localStorage.getItem('np-temp') var content = localStorage.getItem("np-temp");
if (!content || content == '' || content == 'null') { if (!content || content == "" || content == "null") {
var content = '#NowPlaying {song} / {album} / {artist}\n{url}' var content = "#NowPlaying {song} / {album} / {artist}\n{url}";
} }
var regExp = new RegExp('{song}', 'g') var regExp = new RegExp("{song}", "g");
content = content.replace(regExp, item.name) content = content.replace(regExp, item.name);
var regExp = new RegExp('{album}', 'g') var regExp = new RegExp("{album}", "g");
content = content.replace(regExp, item.album.name) content = content.replace(regExp, item.album.name);
var regExp = new RegExp('{artist}', 'g') var regExp = new RegExp("{artist}", "g");
content = content.replace(regExp, item.artists[0].name) content = content.replace(regExp, item.artists[0].name);
var regExp = new RegExp('{url}', 'g') var regExp = new RegExp("{url}", "g");
content = content.replace(regExp, item.external_urls.spotify) content = content.replace(regExp, item.external_urls.spotify);
var regExp = new RegExp('{composer}', 'g') var regExp = new RegExp("{composer}", "g");
content = content.replace(regExp, '') content = content.replace(regExp, "");
var regExp = new RegExp('{hz}', 'g') var regExp = new RegExp("{hz}", "g");
content = content.replace(regExp, '') content = content.replace(regExp, "");
var regExp = new RegExp('{bitRate}', 'g') var regExp = new RegExp("{bitRate}", "g");
content = content.replace(regExp, '') content = content.replace(regExp, "");
var regExp = new RegExp('{lyricist}', 'g') var regExp = new RegExp("{lyricist}", "g");
content = content.replace(regExp, '') content = content.replace(regExp, "");
var regExp = new RegExp('{bpm}', 'g') var regExp = new RegExp("{bpm}", "g");
content = content.replace(regExp, '') content = content.replace(regExp, "");
var regExp = new RegExp('{genre}', 'g') var regExp = new RegExp("{genre}", "g");
content = content.replace(regExp, '') content = content.replace(regExp, "");
$('#textarea').val(content) $("#textarea").val(content);
}) });
} else { } else {
Swal.fire({ Swal.fire({
type: 'info', type: "info",
title: lang.lang_spotify_acct, title: lang.lang_spotify_acct
}) });
}
} else if (mode == 'itunes') {
postMessage(['itunes', ''], '*')
} else if (mode == 'lastFm') {
var user = localStorage.getItem('lastFmUser')
var start = 'https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=' + user + '&limit=1&api_key=8f113803bfea951b6dde9e56d32458b2&format=json'
if (user) {
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
},
})
.then(function (response) {
if (!response.ok) {
response.text().then(function (text) {
setLog(response.url, response.status, text)
})
}
return response.json()
})
.catch(function (error) {
todo(error)
setLog(start, 'JSON', error)
console.error(error)
})
.then(function (json) {
console.table(json)
if (!json || !json.recenttracks) {
console.error('no data')
return false
}
var item = json.recenttracks.track[0]
if (!item['@attr']) return false
var img = item.image[3]['#text']
var flag = localStorage.getItem('artwork')
if (flag && img != 'https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png' && img) {
postMessage(['bmpImage', [img, 0]], '*')
}
var content = localStorage.getItem('np-temp')
if (!content || content == '' || content == 'null') {
var content = '#NowPlaying {song} / {album} / {artist}\n{url}'
}
var regExp = new RegExp('{song}', 'g')
content = content.replace(regExp, item.name)
var regExp = new RegExp('{album}', 'g')
content = content.replace(regExp, item.album['#text'])
var regExp = new RegExp('{artist}', 'g')
content = content.replace(regExp, item.artist['#text'])
var regExp = new RegExp('{url}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{composer}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{hz}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{bitRate}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{lyricist}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{bpm}', 'g')
content = content.replace(regExp, '')
var regExp = new RegExp('{genre}', 'g')
content = content.replace(regExp, '')
$('#textarea').val(content)
})
} else {
Swal.fire({
type: 'info',
title: lang.lang_spotify_acct,
})
} }
} else if (mode == "itunes") {
postMessage(["itunes", ""], "*");
} }
} }
async function npCore(arg) { function npCore(arg) {
console.table(arg) if (arg.cmd) {
var content = localStorage.getItem('np-temp') console.error(arg);
if (!content || content == '' || content == 'null') { return;
var content = '#NowPlaying {song} / {album} / {artist}\n{url}'
} }
var flag = localStorage.getItem('artwork') console.table(arg);
var platform = localStorage.getItem('platform') var content = localStorage.getItem("np-temp");
var aaw = { aaw: '', album: '' } if (!content || content == "" || content == "null") {
if (platform == 'win32') { var content = "#NowPlaying {song} / {album} / {artist}\n{url}";
}
var flag = localStorage.getItem("artwork");
var platform = localStorage.getItem("platform");
if (platform == "win32") {
if (flag && arg.path) { if (flag && arg.path) {
media(arg.path, 'image/png', 'new') media(arg.path, "image/png", "new");
} }
} else if (platform == 'darwin') { } else if (platform == "darwin") {
if (flag && arg.artwork) { if (flag && arg.artwork) {
media(arg.artwork, 'image/png', 'new') media(arg.artwork, "image/png", "new");
} else if (flag && localStorage.getItem('complete-artwork')) {
var q = arg.artist + ' ' + arg.album.name + ' ' + arg.name
aaw = await getUnknownAA(q)
postMessage(['bmpImage', [aaw.aaw, 0]], '*')
} }
} }
var regExp = new RegExp('{song}', 'g') var regExp = new RegExp("{song}", "g");
content = content.replace(regExp, arg.name) content = content.replace(regExp, arg.name);
var regExp = new RegExp('{album}', 'g') var regExp = new RegExp("{album}", "g");
if (arg.album) { if (arg.album) {
if (arg.album.name) { if (arg.album.name) {
content = content.replace(regExp, arg.album.name) content = content.replace(regExp, arg.album.name);
} else {
if (aaw.album) content = content.replace(regExp, aaw.album)
content = content.replace(regExp, '-')
} }
} else {
if (aaw.album) content = content.replace(regExp, aaw.album)
content = content.replace(regExp, '-')
} }
var regExp = new RegExp('{artist}', 'g') var regExp = new RegExp("{artist}", "g");
content = content.replace(regExp, arg.artist) content = content.replace(regExp, arg.artist);
var regExp = new RegExp('{url}', 'g') var regExp = new RegExp("{url}", "g");
content = content.replace(regExp, '') content = content.replace(regExp, "");
var regExp = new RegExp('{composer}', 'g') var regExp = new RegExp("{composer}", "g");
content = content.replace(regExp, arg.composer) content = content.replace(regExp, arg.composer);
var regExp = new RegExp('{hz}', 'g') var regExp = new RegExp("{hz}", "g");
content = content.replace(regExp, arg.sampleRate / 1000 + 'kHz') content = content.replace(regExp, arg.sampleRate / 1000 + "kHz");
var regExp = new RegExp('{lyricist}', 'g') var regExp = new RegExp("{lyricist}", "g");
content = content.replace(regExp, '') content = content.replace(regExp, "");
var regExp = new RegExp('{bpm}', 'g') var regExp = new RegExp("{bpm}", "g");
content = content.replace(regExp, '') content = content.replace(regExp, "");
var regExp = new RegExp('{bitRate}', 'g') var regExp = new RegExp("{bitRate}", "g");
content = content.replace(regExp, arg.bitRate + 'kbps') content = content.replace(regExp, arg.bitRate + "kbps");
var regExp = new RegExp('{genre}', 'g') var regExp = new RegExp("{genre}", "g");
content = content.replace(regExp, arg.genre) content = content.replace(regExp, arg.genre);
$('#textarea').val(content) $("#textarea").val(content);
} }
function spotifySave() { function spotifySave() {
var temp = $('#np-temp').val() var temp = $("#np-temp").val();
localStorage.setItem('np-temp', temp) localStorage.setItem("np-temp", temp);
M.toast({ html: lang.lang_spotify_np, displayLength: 3000 }) M.toast({ html: lang.lang_spotify_np, displayLength: 3000 });
} }
if (location.search) { if (location.search) {
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/) var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
var mode = m[1] var mode = m[1];
var codex = m[2] var codex = m[2];
if (mode == 'spotify') { if (mode == "spotify") {
var coder = codex.split(':') var coder = codex.split(":");
localStorage.setItem('spotify', coder[0]) localStorage.setItem("spotify", coder[0]);
localStorage.setItem('spotify-refresh', coder[1]) localStorage.setItem("spotify-refresh", coder[1]);
} else { } else {
} }
} }
async function getUnknownAA(q) {
const start = 'https://itunes.apple.com/search?term=' + q + '&country=JP&entity=song'
let promise = await fetch(start, {
method: 'GET',
})
const json = await promise.json()
if (!json.resultCount) {
return []
}
const data = json.results[0].artworkUrl100
return { aaw: data.replace(/100x100/, '512x512'), album: json.results[0].collectionName }
}

View File

@@ -1,20 +1,33 @@
//テーマ適用 //テーマ適用
function themes(theme) { function themes(theme) {
if (!theme) { if (!theme) {
var theme = localStorage.getItem('customtheme-id') var theme = localStorage.getItem('theme')
if (!theme) { if (!theme) {
localStorage.setItem('customtheme-id', 'black') var theme = 'black'
theme = 'black' localStorage.setItem('theme', 'black')
} }
} }
postMessage(['themeCSSRequest', theme + '.thedesktheme'], '*')
var el = document.getElementsByTagName('html')[0] var el = document.getElementsByTagName('html')[0]
el.style.backgroundColor = 'var(--bg)'
el.classList.remove('indigotheme')
el.classList.remove('greentheme')
el.classList.remove('browntheme')
el.classList.remove('blacktheme')
el.classList.remove('bluetheme')
el.classList.remove('customtheme')
el.classList.add(theme + 'theme')
var font = localStorage.getItem('font') var font = localStorage.getItem('font')
if(font) { if (font) {
el.style.fontFamily = font font = font.replace(/"(.+)"/, '$1')
el.style.fontFamily = '"' + font + '"'
} else { } else {
el.style.fontFamily = '' el.style.fontFamily = ''
} }
if (theme == 'custom') {
if (localStorage.getItem('customtheme-id')) {
postMessage(['themeCSSRequest', localStorage.getItem('customtheme-id')], '*')
}
}
el.style.backgroundColor = 'var(--bg)'
} }
themes() themes()

View File

@@ -30,7 +30,7 @@ function tips(mode) {
localStorage.getItem('ver') + localStorage.getItem('ver') +
' git: ' + ' git: ' +
gitHash + gitHash +
'\')"> ' + '\')">TheDesk ' +
localStorage.getItem('ver') + localStorage.getItem('ver') +
' {' + ' {' +
gitHash.slice(0, 7) + gitHash.slice(0, 7) +
@@ -131,8 +131,12 @@ function trendTagonTip() {
spotint = null spotint = null
function spotifytips() { function spotifytips() {
if (spotint) clearInterval(spotint) if (spotint) clearInterval(spotint)
var start = 'https://spotify.thedesk.top/current-playing?code=' + localStorage.getItem('spotify-token') var start =
var at = localStorage.getItem('spotify-token') 'https://thedesk.top/now-playing?at=' +
localStorage.getItem('spotify') +
'&rt=' +
localStorage.getItem('spotify-refresh')
var at = localStorage.getItem('spotify')
if (at) { if (at) {
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
@@ -153,15 +157,8 @@ function spotifytips() {
setLog(start, 'JSON', error) setLog(start, 'JSON', error)
console.error(error) console.error(error)
}) })
.then(function(jsonRaw) { .then(function(json) {
var code = jsonRaw.token
localStorage.setItem('spotify-token', code)
var json = jsonRaw.data
var ms = json.progress_ms var ms = json.progress_ms
if(!ms) {
tips('ver')
return false
}
var last = 1000 - (ms % 1000) var last = 1000 - (ms % 1000)
var item = json.item var item = json.item
var img = item.album.images[0].url var img = item.album.images[0].url
@@ -221,8 +218,6 @@ function spotifytips() {
type: 'info', type: 'info',
title: lang.lang_spotify_acct title: lang.lang_spotify_acct
}) })
tips('ver')
return false
} }
} }
function spotStart() { function spotStart() {
@@ -293,4 +288,6 @@ function tipsToggle() {
$('#tips').toggleClass('hide') $('#tips').toggleClass('hide')
$('#tips-menu').toggleClass('hide') $('#tips-menu').toggleClass('hide')
} }
if (localStorage.getItem('tips')) {
tips(localStorage.getItem('tips'))
}

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@@ -3,10 +3,6 @@ var dir = 'file://' + __dirname
var base = dir + '/view/' var base = dir + '/view/'
// Electronのモジュール // Electronのモジュール
const electron = require('electron') const electron = require('electron')
// アプリケーションをコントロールするモジュール
const app = electron.app
// Electronの初期化完了後に実行
app.on('ready', createWindow)
const fs = require('fs') const fs = require('fs')
const language = require('./main/language.js') const language = require('./main/language.js')
const css = require('./main/css.js') const css = require('./main/css.js')
@@ -16,6 +12,10 @@ const np = require('./main/np.js')
const systemFunc = require('./main/system.js') const systemFunc = require('./main/system.js')
const Menu = electron.Menu const Menu = electron.Menu
const join = require('path').join const join = require('path').join
const windowStateKeeper = require('electron-window-state')
// アプリケーションをコントロールするモジュール
const app = electron.app
// ウィンドウを作成するモジュール // ウィンドウを作成するモジュール
const BrowserWindow = electron.BrowserWindow const BrowserWindow = electron.BrowserWindow
// メインウィンドウはGCされないようにグローバル宣言 // メインウィンドウはGCされないようにグローバル宣言
@@ -37,11 +37,39 @@ if (!gotTheLock) {
}) })
} }
// 全てのウィンドウが閉じたら終了 if (process.argv.indexOf('--dev') === -1) {
app.on('window-all-closed', function () { var packaged = true
electron.session.defaultSession.clearCache(() => {}) } else {
app.quit() var packaged = false
}) console.log(
'||\\\\\\ \n' +
'|||| \\\\\\\\ \n' +
'|||| \\\\\\\\ \n' +
'|||| Am I a \\\\\\\\ \n' +
'|||| cat? ^ ^ \\\\\\\\\\ _____ _ ____ _ \n' +
'|||| (.-.) \\\\\\\\\\ |_ _| |__ ___| _ \\ ___ ___| | __\n' +
"|||| ___> ) ||||| | | | '_ \\ / _ \\ | | |/ _ \\/ __| |/ /\n" +
'|||| < _ _) ////// | | | | | | __/ |_| | __/__ \\ < \n' +
'|||| |_||_| ///// |_| |_| |_|\\___|____/ \\___||___/_|\\_\\ \n' +
'|||| ///// \n' +
'|||| /////\n' +
'|||| /////\n' +
'||||//////'
)
console.log('Welcome!')
}
var info_path = join(app.getPath('userData'), 'window-size.json')
var lang_path = join(app.getPath('userData'), 'language')
var ha_path = join(app.getPath('userData'), 'hardwareAcceleration')
var ua_path = join(app.getPath('userData'), 'useragent')
try {
fs.readFileSync(ha_path, 'utf8')
app.disableHardwareAcceleration()
if (!packaged) console.log('disabled: Hardware Acceleration')
} catch {
if (!packaged) console.log('enabled: Hardware Acceleration')
}
function isFile(file) { function isFile(file) {
try { try {
fs.statSync(file) fs.statSync(file)
@@ -50,8 +78,16 @@ function isFile(file) {
if (err.code === 'ENOENT') return false if (err.code === 'ENOENT') return false
} }
} }
// 全てのウィンドウが閉じたら終了
app.on('window-all-closed', function() {
electron.session.defaultSession.clearCache(() => {})
app.quit()
})
function createWindow() { function createWindow() {
var lang_path = join(app.getPath('userData'), 'language') let window_size = windowStateKeeper({
defaultWidth: 1000,
defaultHeight: 750
})
if (isFile(lang_path)) { if (isFile(lang_path)) {
var lang = fs.readFileSync(lang_path, 'utf8') var lang = fs.readFileSync(lang_path, 'utf8')
} else { } else {
@@ -68,135 +104,65 @@ function createWindow() {
} else { } else {
lang = 'en' lang = 'en'
} }
fs.mkdir(app.getPath('userData'), function (err) { fs.mkdir(app.getPath('userData'), function(err) {
fs.writeFileSync(lang_path, lang) fs.writeFileSync(lang_path, lang)
}) })
} }
if (!packaged) console.log('your lang:' + app.getLocale()) if (!packaged) console.log('your lang:' + app.getLocale())
if (!packaged) console.log('launch:' + lang) if (!packaged) console.log('launch:' + lang)
//Opening
const package = fs.readFileSync(__dirname + '/package.json')
if(lang == 'ja') {
const maxims = JSON.parse(fs.readFileSync(__dirname + '/maxim.ja.json'))
var show = maxims[Math.floor(Math.random() * maxims.length)]
} else if(lang == 'ja-KS') {
//ja-KSも作れたらいいね
const maxims = JSON.parse(fs.readFileSync(__dirname + '/maxim.ja.json'))
var show = maxims[Math.floor(Math.random() * maxims.length)]
} else{
var show = 'TheDesk 2018'
}
const data = JSON.parse(package)
const version = data.version
const codename = data.codename
var openingWindow = new BrowserWindow({
width: 300,
height: 400,
transparent: false,
frame: false,
resizable: false,
})
openingWindow.loadURL(`${__dirname}/opening.html?ver=${version}&codename=${codename}&maxim=${encodeURI(show)}`)
if (process.argv.indexOf('--dev') === -1) {
var packaged = true
} else {
var packaged = false
console.log(
'||\\\\\\ \n' +
'|||| \\\\\\\\ \n' +
'|||| \\\\\\\\ \n' +
'|||| Am I a \\\\\\\\ \n' +
'|||| cat? ^ ^ \\\\\\\\\\ _____ _ ____ _ \n' +
'|||| (.-.) \\\\\\\\\\ |_ _| |__ ___| _ \\ ___ ___| | __\n' +
"|||| ___> ) ||||| | | | '_ \\ / _ \\ | | |/ _ \\/ __| |/ /\n" +
'|||| < _ _) ////// | | | | | | __/ |_| | __/__ \\ < \n' +
'|||| |_||_| ///// |_| |_| |_|\\___|____/ \\___||___/_|\\_\\ \n' +
'|||| ///// \n' +
'|||| /////\n' +
'|||| /////\n' +
'||||//////'
)
console.log('If it does not show the window, you might forget `npm run construct`.')
}
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 ua_path = join(app.getPath('userData'), 'useragent')
var frame_path = join(app.getPath('userData'), 'frame')
try {
fs.readFileSync(ha_path, 'utf8')
app.disableHardwareAcceleration()
if (!packaged) console.log('disabled: Hardware Acceleration')
} catch {
if (!packaged) console.log('enabled: Hardware Acceleration')
}
var window_size
try {
window_size = JSON.parse(fs.readFileSync(info_path, 'utf8'))
} catch (e) {
window_size = {
width: 1000,
height: 750,
} // デフォルトバリュー
}
var max_window_size
try {
max_window_size = JSON.parse(fs.readFileSync(max_info_path, 'utf8'))
} catch (e) {
max_window_size = {
width: 'string',
height: 'string',
x: 'string',
y: 'string',
} // デフォルトバリュー
}
try {
var frameRaw = fs.readFileSync(frame_path, 'utf8')
if (frameRaw == 'false') {
var frame = false
var frameTitle = 'hidden'
} else {
var frame = true
var frameTitle = 'default'
}
} catch {
var frame = true
}
// メイン画面の表示。ウィンドウの幅、高さを指定できる // メイン画面の表示。ウィンドウの幅、高さを指定できる
var platform = process.platform var platform = process.platform
var bit = process.arch var bit = process.arch
var arg = {
webPreferences: {
webviewTag: true,
nodeIntegration: false,
contextIsolation: true,
preload: join(__dirname, 'js', 'platform', 'preload.js'),
},
width: window_size.width,
height: window_size.height,
x: window_size.x,
y: window_size.y,
show: false,
frame: frame,
}
if (platform == 'linux') { if (platform == 'linux') {
arg.resizable = true var arg = {
arg.icon = __dirname + '/desk.png' webPreferences: {
webviewTag: true,
nodeIntegration: false,
contextIsolation: true,
preload: join(__dirname, 'js', 'platform', 'preload.js')
},
width: window_size.width,
height: window_size.height,
x: window_size.x,
y: window_size.y,
icon: __dirname + '/desk.png',
show: false
}
} else if (platform == 'win32') { } else if (platform == 'win32') {
arg.simpleFullscreen = true var arg = {
webPreferences: {
webviewTag: true,
nodeIntegration: false,
contextIsolation: true,
preload: join(__dirname, 'js', 'platform', 'preload.js')
},
width: window_size.width,
height: window_size.height,
x: window_size.x,
y: window_size.y,
simpleFullscreen: true,
show: false
}
} else if (platform == 'darwin') { } else if (platform == 'darwin') {
arg.simpleFullscreen = true var arg = {
arg.titleBarStyle = frameTitle webPreferences: {
webviewTag: true,
nodeIntegration: false,
contextIsolation: true,
preload: join(__dirname, 'js', 'platform', 'preload.js')
},
width: window_size.width,
height: window_size.height,
x: window_size.x,
y: window_size.y,
simpleFullscreen: true,
show: false
}
} }
mainWindow = new BrowserWindow(arg) mainWindow = new BrowserWindow(arg)
mainWindow.once('page-title-updated', () => { mainWindow.once('page-title-updated', () => {
openingWindow.close()
mainWindow.show() mainWindow.show()
console.log('Accessibility: ' + app.accessibilitySupportEnabled) if (window_size.isMaximized) {
if (window_size.max) {
mainWindow.maximize() mainWindow.maximize()
} }
}) })
@@ -226,77 +192,49 @@ function createWindow() {
// Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) thedesk/18.11.3 Chrome/76.0.3809.146 Electron/6.0.12 Safari/537.36 // Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) thedesk/18.11.3 Chrome/76.0.3809.146 Electron/6.0.12 Safari/537.36
const crypto = require('crypto') const crypto = require('crypto')
const N = 100 const N = 100
var ua = 'Mastodon client: ' + crypto.randomBytes(N).toString('base64').substring(0, N) var ua =
'Mastodon client: ' +
crypto
.randomBytes(N)
.toString('base64')
.substring(0, N)
} }
mainWindow.loadURL(base + lang + '/index.html' + plus, { userAgent: ua }) mainWindow.loadURL(base + lang + '/index.html' + plus, { userAgent: ua })
if (!window_size.x && !window_size.y) { window_size.manage(mainWindow)
mainWindow.center()
}
// ウィンドウが閉じられたらアプリも終了 // ウィンドウが閉じられたらアプリも終了
mainWindow.on('closed', function () { mainWindow.on('closed', function() {
electron.ipcMain.removeAllListeners() electron.ipcMain.removeAllListeners()
mainWindow = null mainWindow = null
}) })
closeArg = false closeArg = false
mainWindow.on('close', function (e, arg) { mainWindow.on('close', function(e, arg) {
writePos(mainWindow)
if (!closeArg) { if (!closeArg) {
e.preventDefault() e.preventDefault()
} }
const promise = new Promise(function (resolve) { const promise = new Promise(function(resolve) {
mainWindow.webContents.send('asReadEnd', '') mainWindow.webContents.send('asReadEnd', '')
setTimeout(function () { setTimeout(function() {
resolve() resolve()
}, 3000) }, 3000)
}) })
promise.then(function (response) { promise.then(function(response) {
closeArg = true closeArg = true
mainWindow.close() mainWindow.close()
}) })
}) })
electron.ipcMain.on('sendMarkersComplete', function (e, arg) { electron.ipcMain.on('sendMarkersComplete', function(e, arg) {
closeArg = true closeArg = true
mainWindow.close() mainWindow.close()
}) })
function writePos(mainWindow) { mainWindow.on('minimize', function() {
if (
max_window_size.width == mainWindow.getBounds().width &&
max_window_size.height == mainWindow.getBounds().height &&
max_window_size.x == mainWindow.getBounds().x &&
max_window_size.y == mainWindow.getBounds().y
) {
var size = {
width: mainWindow.getBounds().width,
height: mainWindow.getBounds().height,
x: mainWindow.getBounds().x,
y: mainWindow.getBounds().y,
max: true,
}
} else {
var size = {
width: mainWindow.getBounds().width,
height: mainWindow.getBounds().height,
x: mainWindow.getBounds().x,
y: mainWindow.getBounds().y,
}
}
fs.writeFileSync(info_path, JSON.stringify(size))
}
mainWindow.on('maximize', function () {
writePos(mainWindow)
fs.writeFileSync(max_info_path, JSON.stringify(mainWindow.getBounds()))
})
mainWindow.on('minimize', function () {
writePos(mainWindow)
mainWindow.webContents.send('asRead', '') mainWindow.webContents.send('asRead', '')
}) })
var platform = process.platform var platform = process.platform
var bit = process.arch var bit = process.arch
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang, mainWindow, packaged, dir, dirname, frame))) Menu.setApplicationMenu(
if (!frame) { Menu.buildFromTemplate(language.template(lang, mainWindow, packaged, dir, dirname))
mainWindow.setMenu(null) )
}
//CSS //CSS
css.css(mainWindow) css.css(mainWindow)
//アップデータとダウンロード //アップデータとダウンロード
@@ -307,7 +245,7 @@ function createWindow() {
np.TheDeskNowPlaying(mainWindow) np.TheDeskNowPlaying(mainWindow)
//その他system //その他system
systemFunc.system(mainWindow, dir, lang, dirname) systemFunc.system(mainWindow, dir, lang, dirname)
setInterval(function () { setInterval(function() {
mouseTrack(mainWindow) mouseTrack(mainWindow)
}, 1000) }, 1000)
} }
@@ -333,5 +271,10 @@ function mouseTrack(mainWindow) {
x = xNow x = xNow
y = yNow y = yNow
} }
// Electronの初期化完了後に実行
app.on('ready', createWindow)
var onError = function(err, response) {
console.error(err, response)
}
app.setAsDefaultProtocolClient('thedesk') app.setAsDefaultProtocolClient('thedesk')

View File

@@ -31,246 +31,119 @@ function css(mainWindow) {
} }
}) })
ipc.on('theme-json-delete', function (e, arg) { ipc.on('theme-json-delete', function (e, arg) {
try{ var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
var themecss = join(app.getPath("userData"), arg); console.log(themecss);
console.log(themecss); fs.unlink(themecss, function (err) {
fs.unlink(themecss, function (err) { e.sender.webContents.send('theme-json-delete-complete', "");
e.sender.webContents.send('theme-json-delete-complete', ""); });
});
} catch {
e.sender.webContents.send('theme-json-delete-complete', 'cannot delete');
}
}) })
ipc.on('theme-json-request', function (e, arg) { ipc.on('theme-json-request', function (e, arg) {
try { var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
var themecss = join(app.getAppPath(), '/source/themes', arg) var raw = fs.readFileSync(themecss, 'utf8')
var raw = fs.readFileSync(themecss, 'utf8') var json = JSON5.parse(raw);
var json = JSON5.parse(raw)
} catch {
var themecss = join(app.getPath("userData"), arg)
var raw = fs.readFileSync(themecss, 'utf8')
var json = JSON5.parse(raw)
}
e.sender.webContents.send('theme-json-response', [json, raw]); e.sender.webContents.send('theme-json-response', [json, raw]);
}) })
ipc.on('theme-css-request', function (e, arg) { ipc.on('theme-css-request', function (e, arg) {
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
try { try {
var themecss = join(app.getAppPath(), '/source/themes', arg) var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'));
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'))
} catch {
var themecss = join(app.getPath("userData"), arg)
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'))
}
try { var primary = json.vars.primary;
var css var secondary = json.vars.secondary;
if (json.version) { var text = json.vars.text;
var bg = json.primary.background if (json.base == "light") {
var subcolor = json.primary.subcolor var drag = "rgba(255, 255, 255, 0.8)";
var text = json.primary.text var beforehover = "#757575";
var accent = json.primary.accent var selected = "#3f3f3f"
if (json.base == "light") { var selectedWithShare = "#b2babd"
var drag = "rgba(255, 255, 255, 0.8)"; var gray = "#757575"
var beforehover = "#757575";
var selected = "#3f3f3f"
var selectedWithShare = "#b2babd"
var gray = "#757575"
var hisData = 'rgba(255, 255, 255, 0.9)'
} else {
var drag = "rgba(0, 0, 0, 0.8)";
var beforehover = "#9e9e9e";
var selected = "#c0c0c0"
var selectedWithShare = "#003a30"
var gray = "#cccccc"
var hisData = 'rgba(0, 0, 0, 0.8)'
}
if (!json.advanced) {
json.advanced = {}
}
if (json.advanced.modal) {
var modal = json.advanced.modal
} else {
var modal = bg
}
if (json.advanced.modalFooter) {
var modalFooter = json.advanced.modalFooter
} else {
var modalFooter = bg
if (modal != bg) modalFooter = modal
}
if (json.advanced.thirdColor) {
var thirdColor = json.advanced.thirdColor
} else {
var thirdColor = subcolor
}
if (json.advanced.forthColor) {
var forthColor = json.advanced.forthColor
} else {
var forthColor = subcolor
if (thirdColor != subcolor) forthColor = thirdColor
}
if (json.advanced.bottom) {
var bottom = json.advanced.bottom
} else {
var bottom = subcolor
}
if (json.advanced.emphasized) {
var emphasized = json.advanced.emphasized
} else {
var emphasized = accent
}
if (json.advanced.postbox) {
var postbox = json.advanced.postbox
} else {
var postbox = subcolor
}
if (json.advanced.active) {
var active = json.advanced.active
} else {
var active = accent
}
if (json.advanced.selected) {
var selected = json.advanced.selected
}
if (json.advanced.selectedWithShare) {
var selectedWithShare = json.advanced.selectedWithShare
}
var css = ":root {--bg:" + bg + ";--drag:" + drag + ";" +
"--text:" + text + ";--beforehover:" + beforehover + ";--modal:" +
modal + ";--thirdColor:" + thirdColor + ";--subcolor:" + forthColor +
";--bottom:" + bottom + ";--accent:" + accent + ";" + ";--emphasized:" + emphasized + ";--his-data:" +
hisData +
";--active:" + active + ";--postbox:" + postbox + ";--modalfooter:" +
modalFooter + ";--selected:" + selected + ";--selectedWithShare:" + selectedWithShare +
"--gray:" + gray + ";}" +
".customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
} else { } else {
var css = compatibleTheme(json) var drag = "rgba(0, 0, 0, 0.8)";
var beforehover = "#9e9e9e";
var selected = "#c0c0c0"
var selectedWithShare = "#003a30"
var gray = "#cccccc"
} }
if (json.props) {
if (json.props.TheDeskAccent) {
var emphasized = json.props.TheDeskAccent
} else {
var emphasized = secondary
}
if (json.props.TheDeskActive) {
var active = json.props.TheDeskActive
} else {
var active = primary
}
if (json.props.TheDeskModal) {
var modal = json.props.TheDeskModal
} else {
var modal = secondary
}
if (json.props.TheDeskBottom) {
var bottom = json.props.TheDeskBottom
} else {
var bottom = primary
}
if (json.props.TheDeskPostbox) {
var postbox = json.props.TheDeskPostbox
} else {
var postbox = primary
}
if (json.props.TheDeskSubcolor) {
var subcolor = json.props.TheDeskSubcolor
} else {
var subcolor = primary
}
} else {
var emphasized = primary
var acs = secondary
var active = primary
var modal = secondary
var bottom = primary
var postbox = primary
var subcolor = primary
}
var css = ".customtheme {--bg:" + secondary + ";--drag:" + drag + ";" +
"--color:" + text + ";--beforehover:" + beforehover + ";--modal:" +
modal + ";--subcolor:" + subcolor + ";--box:" + subcolor +
";--sidebar:" + bottom + ";--shared:" + emphasized + ";" +
"--notfbox:" + secondary + ";--emphasized:" + active + ";--his-data:" +
secondary +
";--active:" + active + ";--postbox:" + postbox + ";--modalfooter:" +
primary +
";--accentbtn:" + subcolor + ";--selected:" + selected + ";--selectedWithShare:" + selectedWithShare + "}"+
"--gray:" + gray + ";"+
".customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
e.sender.webContents.send('theme-css-response', css); e.sender.webContents.send('theme-css-response', css);
} catch (e) { } catch (e) {
var css = ""; var css = "";
} }
}) })
function compatibleTheme(json) {
var primary = json.vars.primary;
var secondary = json.vars.secondary;
var text = json.vars.text;
if (json.base == "light") {
var drag = "rgba(255, 255, 255, 0.8)";
var beforehover = "#757575";
var selected = "#3f3f3f"
var selectedWithShare = "#b2babd"
var gray = "#757575"
} else {
var drag = "rgba(0, 0, 0, 0.8)";
var beforehover = "#9e9e9e";
var selected = "#c0c0c0"
var selectedWithShare = "#003a30"
var gray = "#cccccc"
}
if (json.advanced) {
if (json.advanced.TheDeskAccent) {
var emphasized = json.advanced.TheDeskAccent
} else {
var emphasized = secondary
}
if (json.advanced.TheDeskActive) {
var active = json.advanced.TheDeskActive
} else {
var active = primary
}
if (json.advanced.TheDeskModal) {
var modal = json.advanced.TheDeskModal
} else {
var modal = secondary
}
if (json.advanced.TheDeskBottom) {
var bottom = json.advanced.TheDeskBottom
} else {
var bottom = primary
}
if (json.advanced.TheDeskPostbox) {
var postbox = json.advanced.TheDeskPostbox
} else {
var postbox = primary
}
if (json.advanced.TheDeskSubcolor) {
var subcolor = json.advanced.TheDeskSubcolor
} else {
var subcolor = primary
}
} else {
var emphasized = primary
var acs = secondary
var active = primary
var modal = secondary
var bottom = primary
var postbox = primary
var subcolor = primary
}
var css = ".customtheme {--bg:" + secondary + ";--drag:" + drag + ";" +
"--text:" + text + ";--beforehover:" + beforehover + ";--modal:" +
modal + ";--thirdColor:" + subcolor + ";--subcolor:" + subcolor +
";--bottom:" + bottom + ";--accent:" + emphasized + ";" +
"--subcolor:" + secondary + ";--emphasized:" + active + ";--his-data:" +
secondary +
";--active:" + active + ";--postbox:" + postbox + ";--modalfooter:" +
primary +
";--active:" + subcolor + ";--selected:" + selected + ";--selectedWithShare:" + selectedWithShare + "}" +
"--gray:" + gray + ";" +
".customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
return css
}
ipc.on('theme-json-list', function (e, arg) { ipc.on('theme-json-list', function (e, arg) {
var files1 = fs.readdirSync(join(app.getAppPath(), '/source/themes')) fs.readdir(app.getPath("userData"), function (err, files) {
var file1List = files1.filter(function (file) { if (err || !files) throw err;
if (file.match(/\.thedesktheme$/)) { var fileList = files.filter(function (file) {
var tfile = join(app.getAppPath(), '/source/themes', file) if(file.match(/\.thedesktheme$/)){
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile) var tfile = join(app.getPath("userData"), file)
} else { return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile)
return null }else{
} return null
}) }
var themes = [];
for (var i = 0; i < file1List.length; i++) {
var themecss = join(app.getAppPath(), '/source/themes', file1List[i]);
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'));
let compat = true
if (json.version) compat = false
themes.push({
name: json.name,
id: json.id,
compatible: compat,
default: true
}) })
} var themes = [];
var files2 = fs.readdirSync(app.getPath("userData")) for (var i = 0; i < fileList.length; i++) {
var file2List = files2.filter(function (file) { var themecss = join(app.getPath("userData"), fileList[i]);
if (file.match(/\.thedesktheme$/)) { var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'));
var tfile = join(app.getPath("userData"), file) themes.push({
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile) name: json.name,
} else { id: json.id
return null })
} }
}) e.sender.webContents.send('theme-json-list-response', themes);
for (var i = 0; i < file2List.length; i++) { });
var themecss = join(app.getPath("userData"), file2List[i]);
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'));
let compat = true
if (json.version) compat = false
themes.push({
name: json.name,
id: json.id,
compatible: compat,
default: false
})
}
e.sender.webContents.send('theme-json-list-response', themes);
}) })
} }
exports.css = css; exports.css = css;

View File

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

View File

@@ -6,33 +6,38 @@ function img(mainWindow, dir) {
var ipc = electron.ipcMain var ipc = electron.ipcMain
const BrowserWindow = electron.BrowserWindow const BrowserWindow = electron.BrowserWindow
ipc.on('file-select', (e, args) => { ipc.on('file-select', (e, args) => {
let fileNames = dialog.showOpenDialogSync(mainWindow, { dialog.showOpenDialog(
properties: ['openFile', 'multiSelections'], null,
title: '添付ファイルを選択', {
defaultPath: '.', properties: ['openFile', 'multiSelections'],
filters: [ title: '添付ファイルを選択',
{ defaultPath: '.',
name: 'メディアファイル', filters: [
extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm'], {
}, name: 'メディアファイル',
{ name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] }, extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm']
{ name: '動画', extensions: ['mp4', 'webm'] }, },
{ name: '全てのファイル', extensions: ['*'] }, { name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] },
], { name: '動画', extensions: ['mp4', 'webm'] },
}) { name: '全てのファイル', extensions: ['*'] }
if (!fileNames) { ]
return false },
} fileNames => {
for (var i = 0; i < fileNames.length; i++) { if (!fileNames) {
var path = fileNames[i] return false
var bin = fs.readFileSync(path, 'base64') }
e.sender.webContents.send('resizeJudgement', [bin, 'new']) 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'])
}
}
)
}) })
ipc.on('bmp-image', (e, args) => { ipc.on('bmp-image', (e, args) => {
Jimp.read(args[0], function (err, lenna) { Jimp.read(args[0], function(err, lenna) {
if (err) throw err if (err) throw err
lenna.getBase64(Jimp.MIME_PNG, function (err, src) { lenna.getBase64(Jimp.MIME_PNG, function(err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1]]) e.sender.webContents.send('bmp-img-comp', [src, args[1]])
}) })
}) })
@@ -46,9 +51,9 @@ function img(mainWindow, dir) {
} }
var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '') var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '')
var decodedFile = new Buffer(b64, 'base64') var decodedFile = new Buffer(b64, 'base64')
Jimp.read(decodedFile, function (err, lenna) { Jimp.read(decodedFile, function(err, lenna) {
if (err) throw err if (err) throw err
lenna.scaleToFit(args[1], args[1]).getBase64(Jimp[use], function (err, src) { lenna.scaleToFit(args[1], args[1]).getBase64(Jimp[use], function(err, src) {
e.sender.webContents.send('bmp-img-comp', [src, args[1]]) e.sender.webContents.send('bmp-img-comp', [src, args[1]])
}) })
}) })
@@ -58,24 +63,24 @@ function img(mainWindow, dir) {
var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '') var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '')
var decodedFile = new Buffer(b64, 'base64') var decodedFile = new Buffer(b64, 'base64')
console.log(text) console.log(text)
Jimp.read(decodedFile, function (err, image) { Jimp.read(decodedFile, function(err, image) {
if (err) throw err if (err) throw err
Jimp.loadFont(Jimp.FONT_SANS_16_BLACK).then((font) => { Jimp.loadFont(Jimp.FONT_SANS_16_BLACK).then(font => {
var evWidth = Jimp.measureText(font, text) var evWidth = Jimp.measureText(font, text)
var width = image.bitmap.width var width = image.bitmap.width
var height = image.bitmap.height var height = image.bitmap.height
var left = width - evWidth - 10 var left = width - evWidth - 10
var top = height - 30 var top = height - 30
var color = Jimp.intToRGBA(image.getPixelColor(left, top)) var color = Jimp.intToRGBA(image.getPixelColor(left, top))
console.log(left, top, color) console.log(left, top, color)
var ave = (color.r + color.g + color.b) / 3 var ave = (color.r + color.g + color.b) / 3
if (ave > 128) { if (ave > 128) {
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function (err, src) { 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.webContents.send('bmp-img-comp', [src, args[1], true])
}) })
} else { } else {
Jimp.loadFont(Jimp.FONT_SANS_16_WHITE).then((font) => { Jimp.loadFont(Jimp.FONT_SANS_16_WHITE).then(font => {
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function (err, src) { 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.webContents.send('bmp-img-comp', [src, args[1], true])
}) })
}) })

View File

@@ -1,19 +1,12 @@
// Create the Application's main menu // Create the Application's main menu
function templete(lang, mainWindow, packaged, dir, dirname, frame) { function templete(lang, mainWindow, packaged, dir, dirname) {
//フレーム
if(lang !="ja" && lang != "en"){ if(lang !="ja" && lang != "en"){
lang = "en" lang = "en"
} }
const electron = require("electron"); const electron = require("electron");
const ipc = electron.ipcMain;
const app = electron.app; const app = electron.app;
const BrowserWindow = electron.BrowserWindow; const BrowserWindow = electron.BrowserWindow;
const join = require('path').join; const join = require('path').join;
ipc.on("frameCheck", function(e, arg) {
if(!frame) {
e.sender.webContents.send("frame", "");
}
});
const dict = { const dict = {
"application": { "application": {
"ja": "アプリケーション", "ja": "アプリケーション",

View File

@@ -1,36 +1,36 @@
function np(mainWindow) { function np(mainWindow) {
const electron = require('electron') const electron = require("electron");
const ipc = electron.ipcMain const join = require('path').join;
ipc.on('itunes', async (e, args) => { const app = electron.app;
console.log('Access') const fs = require("fs");
if (args[0] == 'set') { var ipc = electron.ipcMain;
} else { ipc.on('itunes', async (e, args) => {
var platform = process.platform //Verified on Windows
var bit = process.arch console.log("Access");
if (platform == 'darwin') { if (args[0] == "set") {
try {
const nowplaying = require('itunes-nowplaying-mac') } else {
let value = await nowplaying() var platform = process.platform;
try { var bit = process.arch;
const artwork = await nowplaying.getThumbnailBuffer(value.databaseID) if (platform == "darwin") {
if(artwork) { try {
const base64 = artwork.toString('base64') const nowplaying = require("itunes-nowplaying-mac");
value.artwork = base64 let value = await nowplaying();
e.sender.webContents.send('itunes-np', value)
} const artwork = await nowplaying.getThumbnailBuffer(value.databaseID);
} catch (error) { const base64 = artwork.toString('base64');
console.error(error) value.artwork = base64
e.sender.webContents.send('itunes-np', value) e.sender.webContents.send('itunes-np', value);
} } catch (error) {
// エラーを返す
} catch (error) { console.error(error);
console.error(error) e.sender.webContents.send('itunes-np', error);
e.sender.webContents.send('itunes-np', error) }
} } else {
} else {
} }
} }
})
});
} }
exports.TheDeskNowPlaying = np exports.TheDeskNowPlaying = np;

View File

@@ -12,7 +12,6 @@ function system(mainWindow, dir, lang, dirname) {
var ua_path = join(app.getPath('userData'), 'useragent') var ua_path = join(app.getPath('userData'), 'useragent')
var lang_path = join(app.getPath('userData'), 'language') var lang_path = join(app.getPath('userData'), 'language')
var log_dir_path = join(app.getPath('userData'), 'logs') var log_dir_path = join(app.getPath('userData'), 'logs')
var frame_path = join(app.getPath('userData'), 'frame')
//ログ //ログ
var today = new Date() var today = new Date()
//今日のやつ //今日のやつ
@@ -29,104 +28,115 @@ function system(mainWindow, dir, lang, dirname) {
const os = require('os') const os = require('os')
const language = require('../main/language.js') const language = require('../main/language.js')
//プラットフォーム //プラットフォーム
ipc.on('getPlatform', function (e, arg) { ipc.on('getPlatform', function(e, arg) {
try { try {
var gitHash = fs.readFileSync('git', 'utf8') var gitHash = fs.readFileSync('git', 'utf8')
} catch { } catch {
var gitHash = null var gitHash = null
} }
e.sender.webContents.send('platform', [process.platform, process.arch, process.version, process.versions.chrome, process.versions.electron, gitHash]) e.sender.webContents.send('platform', [
process.platform,
process.arch,
process.version,
process.versions.chrome,
process.versions.electron,
gitHash
])
}) })
//言語 //言語
ipc.on('lang', function (e, arg) { ipc.on('lang', function(e, arg) {
console.log('set:' + arg) console.log('set:' + arg)
fs.writeFileSync(lang_path, arg) fs.writeFileSync(lang_path, arg)
e.sender.webContents.send('langres', arg) e.sender.webContents.send('langres', arg)
}) })
//エクスポートのダイアログ //エクスポートのダイアログ
ipc.on('exportSettings', function (e, args) { ipc.on('exportSettings', function(e, args) {
let savedFiles = dialog.showSaveDialogSync(mainWindow, { dialog.showSaveDialog(
title: 'Export', mainWindow,
properties: ['openFile', 'createDirectory'], {
defaultPath: 'export.thedeskconfig.json5', title: 'Export',
}) properties: ['openFile', 'createDirectory'],
if (!savedFiles) { defaultPath: 'export.thedeskconfig.json5'
return false },
} savedFiles => {
e.sender.webContents.send('exportSettingsFile', savedFiles) if (!savedFiles) {
return false
}
e.sender.webContents.send('exportSettingsFile', savedFiles)
}
)
}) })
//インポートのダイアログ //インポートのダイアログ
ipc.on('importSettings', function (e, args) { ipc.on('importSettings', function(e, args) {
let fileNames = dialog.showOpenDialogSync(mainWindow, { dialog.showOpenDialog(
title: 'Import', mainWindow,
properties: ['openFile'], {
filters: [{ name: 'TheDesk Config', extensions: ['thedeskconfig', 'thedeskconfigv2', 'json5'] }], title: 'Import',
}) properties: ['openFile'],
console.log('imported from: ', fileNames) filters: [
if (!fileNames) { { name: 'TheDesk Config', extensions: ['thedeskconfig', 'thedeskconfigv2', 'json5'] }
return false ]
} },
e.sender.webContents.send('config', JSON5.parse(fs.readFileSync(fileNames[0], 'utf8'))) fileNames => {
console.log('imported from: ', fileNames)
if (!fileNames) {
return false
}
e.sender.webContents.send('config', JSON5.parse(fs.readFileSync(fileNames[0], 'utf8')))
}
)
}) })
//保存フォルダのダイアログ //保存フォルダのダイアログ
ipc.on('savefolder', function (e, args) { ipc.on('savefolder', function(e, args) {
let fileNames = dialog.showOpenDialogSync( dialog.showOpenDialog(
mainWindow, mainWindow,
{ {
title: 'Save folder', title: 'Save folder',
properties: ['openDirectory'], properties: ['openDirectory']
},
fileNames => {
e.sender.webContents.send('savefolder', fileNames[0])
} }
) )
e.sender.webContents.send('savefolder', fileNames[0])
}) })
//カスタムサウンドのダイアログ //カスタムサウンドのダイアログ
ipc.on('customSound', function (e, arg) { ipc.on('customSound', function(e, arg) {
let fileNames = dialog.showOpenDialogSync( dialog.showOpenDialog(
mainWindow, mainWindow,
{ {
title: 'Custom sound', title: 'Custom sound',
properties: ['openFile'], properties: ['openFile'],
filters: [ filters: [
{ name: 'Audio', extensions: ['mp3', 'aac', 'wav', 'flac', 'm4a'] }, { name: 'Audio', extensions: ['mp3', 'aac', 'wav', 'flac', 'm4a'] },
{ name: 'All', extensions: ['*'] }, { name: 'All', extensions: ['*'] }
], ]
},
fileNames => {
e.sender.webContents.send('customSoundRender', [arg, fileNames[0]])
} }
) )
e.sender.webContents.send('customSoundRender', [arg, fileNames[0]])
}) })
//ハードウェアアクセラレーションの無効化 //ハードウェアアクセラレーションの無効化
ipc.on('ha', function (e, arg) { ipc.on('ha', function(e, arg) {
if (arg == 'true') { if (arg == 'true') {
fs.writeFileSync(ha_path, arg) fs.writeFileSync(ha_path, arg)
} else { } else {
fs.unlink(ha_path, function (err) {}) fs.unlink(ha_path, function(err) {})
} }
app.relaunch() app.relaunch()
app.exit() app.exit()
}) })
//ユーザーエージェント ipc.on('ua', function(e, arg) {
ipc.on('ua', function (e, arg) {
if (arg == '') { if (arg == '') {
fs.unlink(ua_path, function (err) {}) fs.unlink(ua_path, function(err) {})
} else { } else {
fs.writeFileSync(ua_path, arg) fs.writeFileSync(ua_path, arg)
} }
app.relaunch() app.relaunch()
app.exit() app.exit()
}) })
//フレームのありなし
ipc.on('frameSet', function (e, arg) {
fs.writeFileSync(frame_path, arg)
app.relaunch()
app.exit()
})
//スクリーンリーダー
ipc.on('acsCheck', function (e, arg) {
if (app.accessibilitySupportEnabled) {
mainWindow.webContents.send('accessibility', 'true')
}
})
ipc.on('quit', (e, args) => { ipc.on('quit', (e, args) => {
app.quit() app.quit()
}) })
@@ -140,18 +150,18 @@ function system(mainWindow, dir, lang, dirname) {
webviewTag: false, webviewTag: false,
nodeIntegration: false, nodeIntegration: false,
contextIsolation: true, contextIsolation: true,
preload: join(dirname, 'js', 'platform', 'preload.js'), preload: join(dirname, 'js', 'platform', 'preload.js')
}, },
width: 300, width: 300,
height: 500, height: 500,
transparent: false, // ウィンドウの背景を透過 transparent: false, // ウィンドウの背景を透過
frame: false, // 枠の無いウィンドウ frame: false, // 枠の無いウィンドウ
resizable: false, resizable: false
}) })
window.loadURL(dir + '/about.html?ver=' + ver) window.loadURL(dir + '/about.html?ver=' + ver)
return 'true' return 'true'
} }
ipc.on('nano', function (e, x, y) { ipc.on('nano', function(e, x, y) {
var nano_info_path = join(app.getPath('userData'), 'nano-window-position.json') var nano_info_path = join(app.getPath('userData'), 'nano-window-position.json')
var window_pos var window_pos
try { try {
@@ -164,19 +174,19 @@ function system(mainWindow, dir, lang, dirname) {
webviewTag: false, webviewTag: false,
nodeIntegration: false, nodeIntegration: false,
contextIsolation: true, contextIsolation: true,
preload: join(dirname, 'js', 'platform', 'preload.js'), preload: join(dirname, 'js', 'platform', 'preload.js')
}, },
width: 350, width: 350,
height: 140, height: 140,
transparent: false, // ウィンドウの背景を透過 transparent: false, // ウィンドウの背景を透過
frame: false, // 枠の無いウィンドウ frame: false, // 枠の無いウィンドウ
resizable: false, resizable: false
}) })
nanowindow.loadURL(dir + '/nano.html') nanowindow.loadURL(dir + '/nano.html')
nanowindow.setAlwaysOnTop(true) nanowindow.setAlwaysOnTop(true)
//nanowindow.toggleDevTools() //nanowindow.toggleDevTools()
nanowindow.setPosition(window_pos[0], window_pos[1]) nanowindow.setPosition(window_pos[0], window_pos[1])
nanowindow.on('close', function () { nanowindow.on('close', function() {
fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition())) fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition()))
}) })
return true return true
@@ -214,7 +224,7 @@ function system(mainWindow, dir, lang, dirname) {
num_b = -1 num_b = -1
} }
data = data.sort(function (a, b) { data = data.sort(function(a, b) {
var x = a[key] var x = a[key]
var y = b[key] var y = b[key]
if (x > y) return num_a if (x > y) return num_a
@@ -236,10 +246,11 @@ function system(mainWindow, dir, lang, dirname) {
fn(data) // ソート後の配列を返す fn(data) // ソート後の配列を返す
} }
ipc.on('fonts', (e, arg) => { ipc.on('fonts', (e, arg) => {
var SystemFonts = require('system-font-families').default const fm = require('font-manager')
var fm = new SystemFonts() var fonts = fm.getAvailableFontsSync()
const fontList = fm.getFontsSync() object_array_sort(fonts, 'family', 'asc', function(fonts_sorted) {
e.sender.webContents.send('font-list', fontList) e.sender.webContents.send('font-list', fonts_sorted)
})
}) })
//コピー //コピー
ipc.on('copy', (e, arg) => { ipc.on('copy', (e, arg) => {
@@ -250,7 +261,7 @@ function system(mainWindow, dir, lang, dirname) {
var today = new Date() var today = new Date()
var todayStr = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate() var todayStr = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate()
var log_path = join(log_dir_path, todayStr + '.log') var log_path = join(log_dir_path, todayStr + '.log')
fs.appendFile(log_path, '\n' + arg, function (err) { fs.appendFile(log_path, '\n' + arg, function(err) {
if (err) { if (err) {
throw err throw err
} }
@@ -261,9 +272,9 @@ function system(mainWindow, dir, lang, dirname) {
var todayLog = '' var todayLog = ''
var yestLog = '' var yestLog = ''
var yest2Log = '' var yest2Log = ''
fs.readdir(log_dir_path, function (err, files) { fs.readdir(log_dir_path, function(err, files) {
if (err) throw err if (err) throw err
files.filter(function (file) { files.filter(function(file) {
if (file == todayStr) { if (file == todayStr) {
todayLog = fs.readFileSync(join(log_dir_path, file), 'utf8') todayLog = fs.readFileSync(join(log_dir_path, file), 'utf8')
} }
@@ -279,9 +290,8 @@ function system(mainWindow, dir, lang, dirname) {
e.sender.webContents.send('logData', logs) e.sender.webContents.send('logData', logs)
}) })
}) })
//起動時ログディレクトリ存在確認と作成、古ログ削除 //起動時ログディレクトリ存在確認と作成、古ログ削除
fs.access(log_dir_path, fs.constants.R_OK | fs.constants.W_OK, (error) => { fs.access(log_dir_path, fs.constants.R_OK | fs.constants.W_OK, error => {
if (error) { if (error) {
if (error.code === 'ENOENT') { if (error.code === 'ENOENT') {
fs.mkdirSync(log_dir_path) fs.mkdirSync(log_dir_path)
@@ -289,9 +299,9 @@ function system(mainWindow, dir, lang, dirname) {
return return
} }
} else { } else {
fs.readdir(log_dir_path, function (err, files) { fs.readdir(log_dir_path, function(err, files) {
if (err) throw err if (err) throw err
files.filter(function (file) { files.filter(function(file) {
if (file != todayStr && file != yestStr && file != yest2Str) { if (file != todayStr && file != yestStr && file != yest2Str) {
fs.unlinkSync(join(log_dir_path, file)) fs.unlinkSync(join(log_dir_path, file))
} }
@@ -299,5 +309,57 @@ function system(mainWindow, dir, lang, dirname) {
}) })
} }
}) })
var $ = require('nodobjc')
$.framework('Foundation')
$.framework('AppKit')
var GetSongs = $.NSObject.extend('Delegate')
GetSongs.addMethod('getMySongs:', 'v@:@', function(self, _cmd, notif) {
var userInfo = notif('userInfo')
var keys = userInfo('keyEnumerator')
var key
var song = {}
while ((key = keys('nextObject'))) {
var value = userInfo('objectForKey', key)
song[key.toString()] = value.toString()
}
console.log(song)
})
GetSongs.register()
var gs = GetSongs('alloc')('init')
var nc = $.NSDistributedNotificationCenter('defaultCenter')
var selector = $.NSSelectorFromString($('getMySongs:'))
var notification = $('com.apple.iTunes.playerInfo')
nc('addObserver', gs, 'selector', 'getMySongs:', 'name', notification, 'object', null)
var apps = $.NSApplication('sharedApplication')
function runLoop() {
var pool = $.NSAutoreleasePool('alloc')('init')
try {
apps(
'nextEventMatchingMask',
$.NSAnyEventMask.toString(),
'untilDate',
$.NSDate('distantFuture'),
'inMode',
$.NSDefaultRunLoopMode,
'dequeue',
1
)
} catch (e) {
console.error('run loop error', e.message)
}
pool('drain')
setTimeout(runLoop, 1000)
//process.nextTick(runLoop);
}
runLoop()
} }
exports.system = system exports.system = system

View File

@@ -1,52 +0,0 @@
{
"name": "TheDesk",
"short_name": "TheDesk",
"theme_color": "#212121",
"background_color": "#212121",
"display": "standalone",
"Scope": "/",
"start_url": "/",
"icons": [
{
"src": "img/icons/icon-72x72.png",
"sizes": "72x72",
"type": "image/png"
},
{
"src": "img/icons/icon-96x96.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "img/icons/icon-128x128.png",
"sizes": "128x128",
"type": "image/png"
},
{
"src": "img/icons/icon-144x144.png",
"sizes": "144x144",
"type": "image/png"
},
{
"src": "img/icons/icon-152x152.png",
"sizes": "152x152",
"type": "image/png"
},
{
"src": "img/icons/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "img/icons/icon-384x384.png",
"sizes": "384x384",
"type": "image/png"
},
{
"src": "img/icons/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"splash_pages": null
}

View File

@@ -1,59 +0,0 @@
[
"あと数秒でPCのファンが全力で回り始める",
"カラムの数だけ夢があるがネットワークは逼迫する",
"朝起きたらストリーミングが止まっていた…",
"誰も使ってない機能1: 未読管理",
"誰も使ってない機能2: スタンプ機能",
"誰も使ってない機能3: コードセットアップをオフにしたログイン",
"誰も使ってない機能4: TheDesk上でのプロフィール更新",
"誰も使ってない機能5: フォローレコメンデーション",
"TheDeskは重い(ダブルミーニング)",
"今日も生茶が美味しい(4ケース96本の在庫)",
"jQueryは死すべき(流れ弾)",
"なんでTheDeskのバージョン19は無いの",
"デレマス要素なくない?",
"今日も「TheDesk」でエゴサが捗る",
"開発者はTheDeskのヘビーユーザではない",
"アイコンは猫だが開発者は犬派",
"#TheDeskのアイコンは猫虐待",
"上のアニメーションからしてこの猫は完全に仮想化されている",
"TheDeskの歴史は2016年まで遡ることができる",
"WIP: Croudia, ネコ型SNS",
"リリース間隔は平均1桁日(昔1日に6回アプデを提供したせい)",
"node_modulesをignoreせずに上げてしまったせいでCode Frequencyが破壊された",
"TheDesk XSS Hunt をしなければならない()",
"毎月出る支援お願いしますダイアログで月初めを知る人 #いろいろな人",
"Integrated TLは目玉機能なので消せないが消せるものなら消したいくらい内部構造がヤバい",
"「アンケート」か「投票」か。「時間指定投稿」か「予約投稿」か",
"実装当初は言語を「関西弁」にするとお問い合わせフォームまで関西弁だった",
"Ctrl+Kでメニューが出ます",
"検索ボックスは入力後Enterで確定できる",
"開発者の推しカラーテーマはPolar Night",
"TheDeskのユーザーエージェントは毎回起動時に変わります。TheDeskと確定させることはできません",
"AppData/Roaming/TheDesk(Windows)の中にcutsom.cssを入れるとカスタムCSSを導入できます",
"環境設定の「ウィンドウフレーム」は「オフ」がおすすめ",
"各トゥートの右上の時刻表示を押すとトゥートのリンクがコピーされます",
"各トゥートの左下の公開範囲のアイコンを押すとそのトゥートの本文がコピーされますが挙動にバグがあります",
"TheDeskをMisskeyクライアントだと思って使ってはいけません",
"この迷文を追加したい場合はapp/maxim.ja.jsonを編集",
"本当はTheDesk 21.0.0(Mayu)専用のアイコンを用意していた",
"TheDesk 20.x.xと21.x.xではアイコンがちょっと違う",
"三大見てはいけないもの: TheDeskのコード、TheDeskのDevTool console、あと一つは",
"この画面がずっと出続けているのは多分yarn construct忘れてる",
"たまにここに何も出ないことがあるけど、なんでかはわからない",
"Kawaii->Mayu(今ここ)->Koume->Chieri->Anastasia->Aiko",
"言語設定を日本語以外にするとこの表示はどうなると思う?",
"今日も使ってくれてありがとう。利用者カウンターがキリ番ならご報告を",
"Ctrl+Eで通知の赤くなって「Fav: 1」とかなってるのをリセットできる",
"このアプリケーションの正式な名称は小文字thedeskだけど、内部でしか使われてない",
"N押すとトゥートのボックスが出て、すぐ打ち込める。",
"Xを押すとトゥートのボックスは出るけど、打ち込めない。その代わりもう一度押すと消せる。",
"トゥートした後ボックスを閉じるとかそのままにしておくとかは、設定で変えられます。",
"OpenStickerへの登録データ募集中",
"Microsoft Store版のアップデートは向こうに止められてます",
"いのちの輝き版ロゴ",
"いのちの輝き版ロゴ",
"いのちの輝き版ロゴ",
"いのちの輝き版ロゴ",
"いのちの輝き版ロゴ"
]

View File

@@ -6,7 +6,6 @@
<link href="./css/tl.css" type="text/css" rel="stylesheet" /> <link href="./css/tl.css" type="text/css" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" /> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
<link href="./node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet"> <link href="./node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="./node_modules/grapheme-splitter/index.js"></script>
<title>TheDesk Nano</title> <title>TheDesk Nano</title>
<style> <style>
html { html {
@@ -16,7 +15,7 @@
height: 100vh; height: 100vh;
overflow: hidden; overflow: hidden;
font-family: sans-serif; font-family: sans-serif;
color: var(--text) !important; color: var(--color) !important;
} }
body { body {
@@ -45,7 +44,7 @@
textarea { textarea {
-webkit-app-region: no-drag; -webkit-app-region: no-drag;
color: var(--text) !important; color: var(--color) !important;
} }
::-webkit-scrollbar { ::-webkit-scrollbar {
@@ -83,16 +82,12 @@
.cvo { .cvo {
grid-template-rows: auto 1rem 1fr auto 2rem; grid-template-rows: auto 1rem 1fr auto 2rem;
} }
.voice {
display: none;
}
</style> </style>
</head> </head>
<body> <body>
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script> <script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
<script> <script>
var pwa = false
$.strip_tags = function(str, allowed) { $.strip_tags = function(str, allowed) {
if (!str) { if (!str) {
return ""; return "";
@@ -133,7 +128,7 @@
</select> </select>
</div> </div>
<button onclick="set()" id="setting">Setting</button> <button onclick="set()" id="setting">Setting</button>
<textarea id="textarea" style="width:55%; background-color:transparent" placeholder="Post something new"></textarea> <textarea id="textarea" style="width:55%; background-color:transparent" placeholder="Post someyhing new"></textarea>
<button class="btn" onclick="post()">Post</button> <button class="btn" onclick="post()">Post</button>
<button onclick="window.close()">x</button><br /> <button onclick="window.close()">x</button><br />
<div id="timeline_nano">Click "settings" to show TL</div> <div id="timeline_nano">Click "settings" to show TL</div>
@@ -146,7 +141,7 @@
} }
</script> </script>
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script> <script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
<script type="text/javascript" src="./js/platform/first.js"></script> <script type="text/javascript" src="view/en/main.js"></script>
<script type="text/javascript" src="./js/post/status.js"></script> <script type="text/javascript" src="./js/post/status.js"></script>
<script type="text/javascript" src="./js/post/post.js"></script> <script type="text/javascript" src="./js/post/post.js"></script>
<script type="text/javascript" src="./js/post/use-txtbox.js"></script> <script type="text/javascript" src="./js/post/use-txtbox.js"></script>

View File

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

View File

@@ -1,97 +0,0 @@
<!DOCTYPE html>
<html lang="ja">
<head>
<title>TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
<meta charset="utf-8" />
<style>
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), url('./fonts/OpenSans-Light.ttf') format('truetype');
}
body {
font-family: 'Open Sans';
-webkit-app-region: drag;
cursor: move;
padding: 5px;
padding-top: 15px;
background-color: #222222;
color: white;
text-align: center;
}
.loading {
animation: throbber-loader 1000ms 300ms infinite ease-out;
background: #3d3d3d;
display: inline-block;
position: relative;
text-indent: -9999px;
width: 0.9em;
height: 0.9em;
margin: 0 .9em;
}
.loading:before,
.loading:after {
background: #3d3d3d;
content: '\x200B';
display: inline-block;
width: 0.9em;
height: 0.9em;
position: absolute;
top: 0;
}
.loading:before {
animation: throbber-loader 1000ms 150ms infinite ease-out;
left: -1.9em;
}
.loading:after {
animation: throbber-loader 1000ms 450ms infinite ease-out;
right: -1.9em;
}
@keyframes throbber-loader {
0% {
background: #3d3d3d;
}
10% {
background: #6b9dc8;
}
40% {
background: #3d3d3d;
}
}
a,
button {
-webkit-app-region: no-drag;
}
h1 {
margin: 0;
}
#maxim {
font-size: 0.7rem;
}
</style>
</head>
<body class="center" style="overflow: hidden;">
<img src="./img/desk-animation.svg" id="leader" style="max-width: 62%;" />
<h1>TheDesk</h1>
<span id="ver"></span><br />
<span class="loading"></span><br />
<div class="cp">
<span id="maxim"></span><br />
<script>
if (location.search) {
var m = location.search.match(/\?ver=([0-9.]+)&codename=([a-zA-Z]+)&maxim=(.+)/)
var maxim = decodeURI(m[3])
if(maxim == 'いのちの輝き版ロゴ') document.getElementById('leader').setAttribute('src', './img/2025.svg')
var ver = m[1]
var code = m[2]
document.getElementById('ver').innerText = `${ver}(${code})`
document.getElementById('maxim').innerText = maxim
}
</script>
</div>
</body>
</html>

View File

@@ -1,140 +1,129 @@
{ {
"name": "thedesk", "name": "thedesk",
"version": "21.2.2", "version": "20.1.0",
"codename": "Mayu", "description": "TheDesk is a Mastodon client for PC.",
"description": "TheDesk is a Mastodon client for PC.", "repository": "https://github.com/cutls/TheDesk",
"repository": "https://github.com/cutls/TheDesk", "main": "main.js",
"main": "main.js", "scripts": {
"scripts": { "test": "echo \"Error: no test specified\" && exit 1",
"test": "echo \"Error: no test specified\" && exit 1", "construct": "cd view/make && node make --automatic && cd ../../",
"construct": "cd view/make && node make --automatic && cd ../../", "dev": "npx electron ./ --dev",
"construct:store": "cd view/make && node make --automatic --store && cd ../../", "dist": "build --linux snap",
"dev": "npx electron ./ --dev", "watchview": "node view/make/make.js --automatic --watch",
"dist": "build --linux snap", "build:js": "node build.js",
"watchview": "node view/make/make.js --automatic --watch", "build": "npx electron-builder",
"build:js": "node build.js", "build:all": "npx electron-builder --win --linux",
"build": "node view/make/make.js --automatic && npx electron-builder", "build:win": "npx electron-builder --win"
"build:pwa": "node view/make/make.js --automatic --pwa", },
"build:win:web": "node view/make/make.js --automatic && npx electron-builder --win", "keywords": [
"build:win:msstore": "node view/make/make.js --automatic --store && npx electron-builder --win appx", "mastodon",
"build:linux:web": "node view/make/make.js --automatic && npx electron-builder --linux", "client",
"build:linux:snapstore": "node view/make/make.js --automatic --store && npx electron-builder --linux", "electron",
"build:mac:web": "node view/make/make.js --automatic && npx electron-builder --mac", "thedesk"
"build:mac:homebrew": "node view/make/make.js --automatic --store && npx electron-builder --mac", ],
"lint:fix": "eslint js --fix" , "bugs": {
"lint": "eslint js" "url": "https://github.com/cutls/TheDesk/issues",
"email": "web-pro@cutls.com"
},
"homepage": "https://thedesk.top",
"author": {
"name": "Cutls",
"url": "https://cutls.com/@Cutls",
"email": "web-pro@cutls.com"
},
"contributor": [
{
"name": "とねぢ",
"url": "https://minohdon.jp/@toneji",
"email": "solfa.tono@gmail.com"
}, },
"keywords": [ {
"mastodon", "name": "ぽぷんじゃ",
"client", "url": "https://popon.pptdn.jp/@popn_ja",
"electron", "email": "popn.ja@gmail.com"
"thedesk"
],
"bugs": {
"url": "https://github.com/cutls/TheDesk/issues",
"email": "p@cutls.com"
}, },
"homepage": "https://thedesk.top", {
"author": { "name": "kPherox",
"name": "Cutls", "url": "https://pl.kpherox.dev/kPherox",
"url": "https://cutls.dev", "email": "admin@mail.kr-kp.com"
"email": "p@cutls.com"
},
"contributor": [
{
"name": "とねぢ",
"url": "https://minohdon.jp/@toneji",
"email": "solfa.tono@gmail.com"
},
{
"name": "ぽぷんじゃ",
"url": "https://popon.pptdn.jp/@popn_ja",
"email": "popn.ja@gmail.com"
},
{
"name": "kPherox",
"url": "https://pl.kpherox.dev/kPherox",
"email": "admin@mail.kr-kp.com"
}
],
"license": "GPL-3.0",
"dependencies": {
"@fortawesome/fontawesome-free": "^5.14.0",
"custom-electron-titlebar": "^3.2.3",
"electron-dl": "^3.0.1",
"jimp": "^0.14.0",
"jquery": "^3.5.1",
"jquery-ui-dist": "^1.12.1",
"json5": "^2.1.3",
"lodash": "^4.17.19",
"materialize-css": "git://github.com/cutls/materialize#v1-dev",
"sumchecker": "^3.0.1",
"sweetalert2": "^9.17.0",
"system-font-families": "^0.4.1",
"vue": "^2.6.11"
},
"optionalDependencies": {
"itunes-nowplaying-mac": "0.3.1"
},
"devDependencies": {
"chokidar": "^3.4.1",
"electron": "^9.1.1",
"electron-builder": "^22.7.0",
"electron-rebuild": "^1.11.0",
"eslint": "^7.6.0",
"readline-sync": "1.4.10"
},
"build": {
"productName": "TheDesk",
"appId": "top.thedesk",
"asarUnpack": [
"node_modules/itunes-nowplaying-mac"
],
"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"
} }
],
"license": "GPL-3.0",
"dependencies": {
"@fortawesome/fontawesome-free": "^5.11.2",
"electron-dl": "^1.14.0",
"electron-window-state": "^5.0.3",
"jimp": "^0.9.1",
"jquery": "^3.4.1",
"jquery-ui-dist": "^1.12.1",
"json5": "^2.1.1",
"lodash": "^4.17.15",
"materialize-css": "git://github.com/cutls/materialize",
"sumchecker": "^3.0.1",
"sweetalert2": "^9.4.0",
"vue": "^2.6.10"
},
"optionalDependencies": {
"font-manager": "0.3.0",
"itunes-nowplaying-mac": "0.3.1"
},
"devDependencies": {
"chokidar": "^3.3.0",
"electron": "^7.1.1",
"electron-builder": "^22.1.0",
"electron-rebuild": "^1.8.8",
"readline-sync": "1.4.10"
},
"build": {
"productName": "TheDesk",
"appId": "top.thedesk",
"asarUnpack": [
"node_modules/itunes-nowplaying-mac"
],
"directories": {
"output": "../build"
},
"win": {
"icon": "build/thedesk.ico",
"target": [
"nsis",
"portable",
"appx"
]
},
"appx": {
"identityName": "53491Cutls.TheDesk",
"applicationId": "Cutls.TheDesk",
"publisherDisplayName": "Cutls",
"publisher": "CN=629757F5-A5EE-474F-9562-B304A89A9FD1",
"languages": [
"JA-JP",
"EN-US"
]
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"artifactName": "TheDesk-setup.${ext}"
},
"linux": {
"icon": "build/icons",
"target": [
"zip",
"snap",
"deb"
],
"category": "Network"
},
"mac": {
"target": [
"dmg",
"zip"
]
},
"electronDownload": {
"version": "6.0.0"
},
"electronVersion": "6.0.0"
}
} }

View File

@@ -1,27 +0,0 @@
{
name: 'Black',
author: 'TheDesk',
desc: 'TheDesk Default Theme',
base: 'dark',
primary: {
background: '#212121',
subcolor: '#424242',
text: '#fff',
accent: '#004d40',
},
advanced: {
modal: '#000',
modalFooter: '#212121',
third: '#212121',
forth: '#333333',
bottom: '#424242',
emphasized: '#4e342e',
postbox: '#424242',
active: '#3f51b5',
selected: '#3f3f3f',
selectedWithShared: '#003a30',
},
id: 'black',
version: '2',
default: true
}

View File

@@ -1,27 +0,0 @@
{
name: 'Blue',
author: 'TheDesk',
desc: 'TheDesk Default Theme',
base: 'light',
primary: {
background: '#c9e1ec',
subcolor: '#dff1ff',
text: '#000',
accent: '#e0ffe4',
},
advanced: {
modal: '#b2ebf2',
modalFooter: '#2196f3',
third: '#90caf9',
forth: '#90caf9',
bottom: '#b6e6f5',
emphasized: '#c5e1a5',
postbox: '#dff1ff',
active: '#2f7bb7',
selected: '#9dcade',
selectedWithShared: '#c1dac4',
},
id: 'blue',
version: '2',
default: true
}

View File

@@ -1,27 +0,0 @@
{
name: 'Brown',
author: 'TheDesk',
desc: 'TheDesk Default Theme',
base: 'dark',
primary: {
background: '#261411',
subcolor: '#4e342e',
text: '#fff',
accent: '#004d40',
},
advanced: {
modal: '#261411',
modalFooter: '#261411',
third: '#4e342e',
forth: '#4e342e',
bottom: '#4e342e',
emphasized: '#0d47a1',
postbox: '#4e342e',
active: '#827717',
selected: '#6d352b',
selectedWithShared: '#003a30',
},
id: 'brown',
version: '2',
default: true
}

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