Compare commits

..

2 Commits

Author SHA1 Message Date
Cutls
1f597a9d4a Merge pull request #63 from cutls/WIP-(before-CI)
Wip (before ci)
2019-04-22 23:20:07 +09:00
Cutls
edf1a6ec29 Merge pull request #59 from cutls/WIP-(before-CI)
Wip (before ci)
2019-04-20 13:52:35 +09:00
177 changed files with 47187 additions and 21758 deletions

8
.github/FUNDING.yml vendored
View File

@@ -1,8 +0,0 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: cutls
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
custom: https://www.pixiv.net/fanbox/creator/28105985

View File

@@ -1,27 +0,0 @@
---
name: Bug report English
about: Create a report to help us improve
title: ''
labels: "\U0001F41Bbug"
assignees: ''
---
Describe the bug: a clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Click on '....'
2. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Environment**
- OS: [e.g. macOS High Sierra , Windows 10 Pro 1903, Ubuntu 19.04]
- Version: [e.g. Usamin (18.0.0)]
Check at 'Application,' 'About TheDesk' at top of the window.
- Your instance: [e.g. mastodon.social]
**Additional context**
Add any other context about the problem here.

View File

@@ -1,27 +0,0 @@
---
name: Bug report Japanese(日本語のバグ報告)
about: 迅速なバグ撲滅のために
title: ''
labels: "\U0001F41Bbug"
assignees: ''
---
バグの簡単な説明を最初に入れます。
**再現方法**
このようにするとバグが発生しました。
1. '....'をクリックすると
2. エラーが出ます
**本来の挙動**
本来どのように動くのが望ましいかを記入
**環境**
- OS: [例 macOS High Sierra , Windows 10 Pro 1903, Ubuntu 19.04]
- バージョン: [例 Usamin (18.0.0)]
TheDesk画面上部の「アプリケーション」から「TheDeskについて」で確認
- インスタンス: [例. mastodon.social]
**追記**
追記

13
.gitignore vendored
View File

@@ -3,7 +3,10 @@
*.7z *.7z
*.exe *.exe
TheDesk-* TheDesk-*
build/* app/build
build
make.js
make_js.js
app/.DS_Store app/.DS_Store
.DS_Store .DS_Store
.vs/* .vs/*
@@ -12,11 +15,3 @@ enq.md
app/.tkn app/.tkn
app/node_modules app/node_modules
app/js/login/tkn.js app/js/login/tkn.js
app/package-lock.json
app/view/en
app/view/ja
app/view/de
app/view/bg
app/view/cs
app/view/ps
app/git

View File

@@ -1,48 +1,36 @@
os: language: objective-c
- windows cache:
- linux directories:
- osx - node_modules
language: node_js env:
node_js: - NODE_VERSION="10.15.2"
- '10.15.2' before_install:
- git clone https://github.com/creationix/nvm.git /tmp/.nvm
- source /tmp/.nvm/nvm.sh
- nvm install $NODE_VERSION
- nvm use --delete-prefix $NODE_VERSION
- node --version
script: node -v script: node -v
before_deploy: before_deploy:
- npm install electron-builder -g - npm install electron-builder -g
- cd app - cd app
- VERSION=$(cat package.json | grep version | head -1 | awk -F= "{ print $2 }" | sed 's/[version:,\",]//g' | tr -d '[[:space:]]')
- npm install - npm install
- npm run construct - electron-builder --mac --x64 -p never
- if [ "$TRAVIS_OS_NAME" = "osx" ];then electron-builder --mac -p never;else :;fi - mv ../build/TheDesk*.dmg ../TheDesk.dmg
- if [ "$TRAVIS_OS_NAME" = "linux" ];then electron-builder --linux --x64 -p never;else :;fi - mv ../build/TheDesk*.zip ../TheDesk-darwin-x64.zip
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then ls;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then mv thedesk-*.zip thedesk.zip;else :;fi
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../app;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win --ia32 -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then ls;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv TheDesk-setup.exe TheDesk-setup-ia32.exe;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv *$VERSION.exe TheDesk-ia32.exe;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../app;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win --x64 -p never;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../build;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then ls;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv ../build/TheDesk-setup.exe ../build/TheDesk-setup.exe;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv ../build/*$VERSION.exe ../build/TheDesk.exe;else :;fi
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../app;else :;fi
- cd ../ - cd ../
- ls build
deploy: deploy:
provider: releases provider: releases
# GitHub にリリースするための API KEY を暗号化した値 # GitHub にリリースするための API KEY を暗号化した値
api_key: api_key:
secure: jndR02p5KRTtcJk18b3YsXL2cC+yzEf1AOqXdpWciF8f3lO5oY01jlxd17xdHIcK7VywSsLVZpLToSdqAoIEhJ5OxEQ/FmA3FlmbwwD6ou13gLa4VGIvsBHveCmKGjVu0Z++atIy76tZYU1SOWFWv4B0ZhnVz2ca2VZynvLgw3YNsPJH7rHO966GXgRkGYJAJ4UvLg3sj/iztVh2FSfbUj5IGO1e/JHJO63wAo1MSQtRjkutVgl/djnBLC6vbL4YHkM3Ynpkx/YQEcxwrmeY0Ra8D5yYDq4MNIDMmZahWC+k4u2eA2Cj2ifBFNxbZvTN75vLwRBp6DsTNHsiqkXrSPDBdNeet31RbwTQ6LtsK8jqmL4S/59dmLcj7uCU2WxyBLPbJdbdZWlqW2ZQvfQY8QVAYy7S3MiHQWQN0oP5wqXk89jcgR42ig/zsqFNPpXHM4mExR7l/gDLPg0j9c3XEF6sWtk3FmJN1i4+B+9kn09b6UKlV7EFPKp8XcFNrz4ZcE9/I8lKwsqLVG2jAXIk7Z9LwDRcAmK5eG348X5zwFtOY6raKIvRw2cn92bPnEI+55v8A4WANS2647GFTgxHj30D0d/sOZmJ5BS34zpdWTgE0AlKg7sOqkncjqoW5J5zCh5Ow7b3KXvEvlAts44mAag8tZTectxMP4iguXvTnv4= secure: jndR02p5KRTtcJk18b3YsXL2cC+yzEf1AOqXdpWciF8f3lO5oY01jlxd17xdHIcK7VywSsLVZpLToSdqAoIEhJ5OxEQ/FmA3FlmbwwD6ou13gLa4VGIvsBHveCmKGjVu0Z++atIy76tZYU1SOWFWv4B0ZhnVz2ca2VZynvLgw3YNsPJH7rHO966GXgRkGYJAJ4UvLg3sj/iztVh2FSfbUj5IGO1e/JHJO63wAo1MSQtRjkutVgl/djnBLC6vbL4YHkM3Ynpkx/YQEcxwrmeY0Ra8D5yYDq4MNIDMmZahWC+k4u2eA2Cj2ifBFNxbZvTN75vLwRBp6DsTNHsiqkXrSPDBdNeet31RbwTQ6LtsK8jqmL4S/59dmLcj7uCU2WxyBLPbJdbdZWlqW2ZQvfQY8QVAYy7S3MiHQWQN0oP5wqXk89jcgR42ig/zsqFNPpXHM4mExR7l/gDLPg0j9c3XEF6sWtk3FmJN1i4+B+9kn09b6UKlV7EFPKp8XcFNrz4ZcE9/I8lKwsqLVG2jAXIk7Z9LwDRcAmK5eG348X5zwFtOY6raKIvRw2cn92bPnEI+55v8A4WANS2647GFTgxHj30D0d/sOZmJ5BS34zpdWTgE0AlKg7sOqkncjqoW5J5zCh5Ow7b3KXvEvlAts44mAag8tZTectxMP4iguXvTnv4=
# Releases ページにアップロードするファイル # Releases ページにアップロードするファイル
file_glob: true
file: file:
- build/* - TheDesk.dmg
- TheDesk-darwin-x64.zip
skip_cleanup: true skip_cleanup: true
on: on:
repo: cutls/TheDesk repo: cutls/TheDesk
tags: true branches:
all_branches: true only:
- master

View File

@@ -1,54 +1,53 @@
<img src="https://thedesk.top/img/top.png" width="300" align="left">
<img src="https://thedesk.top/img/desk.png" width="150" align="right">
# TheDesk # TheDesk
[![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk) [![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk)
[![FOSSA Status](https://bit.ly/2N4cLd1)](https://bit.ly/31zqMmZ)
[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS) Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント[日本語はこちら](README_ja.md) オープンソースSNSマストドン/MisskeyのWindows/Linuxクライアント
Download:[TheDesk](https://thedesk.top)
Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com) Contact me(bug report...):GitHub Issues, mention to [Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls) or toot with #Desk
<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> バグレポートなど:GitHub Issuesや[Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls)へのリプ,または#Deskでトゥートして下さい.
<a href="https://liberapay.com/cutls/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
![Screenshots1](https://thedesk.top/img/scr1.png)
## License ### Contribute/コントリビュート
Please make a pull request to ***WIP(before CI)*** brunch
***WIP(before CI)*** ブランチにプルリクエストをお願いします。
## License/ライセンス
[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE) [GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/) The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/)/アイコンは[クリエイティブ・コモンズ 表示-非営利-継承](https://creativecommons.org/licenses/by-nc-sa/4.0/)で提供されています。
[Press Kit](https://d2upiril6ywqp9.cloudfront.net/press/TheDesk+PressKit.zip) [Press Kit](https://dl.thedesk.top/press/TheDesk+PressKit.zip)
* [PNG 512x512](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.png) * [PNG](https://dl.thedesk.top/press/TheDesk.png)
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg) * [Monotone SVG](https://dl.thedesk.top/press/TheDesk.svg)
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico) * [ico](https://dl.thedesk.top/press/TheDesk.ico)
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns) * [icns](https://dl.thedesk.top/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 sound of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/)
## Terms of Use ## Terms of Use/利用規約
* [利用規約(Terms of Use(ja))](https://thedesk.top/tos.html) * [利用規約(Terms of Use(ja))](https://thedesk.top/tos.html)
* [プライバシーポリシー(Privacy Policy(ja))](https://thedesk.top/priv.html) * [プライバシーポリシー(Privacy Policy(ja))](https://thedesk.top/priv.html)
## Language ## Language/言語
* 日本語(Japanese) * 日本語(Japanese)
* English * English(英語)
### Translation ### Translation/翻訳
Crowdin project is available! Visit: https://translate.thedesk.top Crowdin project is available! Visit: https://translate.thedesk.top
## Requirement and development Crowdinから翻訳に参加してみませんか: https://translate.thedesk.top
* Electron 4.2 or above(install yourself) ## Requirement/環境
* Electron 3.0.10(install yourself)
* electron-dl(in package.json) * electron-dl(in package.json)
* Jimp(in package.json) * Jimp(in package.json)
* font-manager(in package.json) * font-manager(in package.json)
@@ -59,52 +58,55 @@ Crowdin project is available! Visit: https://translate.thedesk.top
* sumchecker(in package.json) * sumchecker(in package.json)
* Ability to read unformated files!(install yourself) * Ability to read unformated files!(install yourself)
### Run on developer mode ## Contributors/主なコントリビューター
`npm run dev` on `app` folder. macOSビルダー
## Contributors * [とねぢ](https://minohdon.jp/@toneji)
Build for macOS Linuxビルダー
* [toneji](https://minohdon.jp/@toneji) * [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
Build for Linux iTunes NowPlayingにアルバムアートワークを付けてくれた人
* [popn_ja](https://popon.pptdn.jp/@popn_ja) * [kPherox](https://www.kr-kp.com/)
Fellow coder ## Build/ビルド
* [kPherox](https://pl.kpherox.dev/kPherox) Misskey(misskey.xyz) application token is not in cutls/TheDesk
Misskey(misskey.xyz)のトークンは含まれておりません。
## Build
```sh ```sh
git clone https://github.com/cutls/TheDesk git clone https://github.com/cutls/TheDesk
cd TheDesk/app cd TheDesk/app
npm install npm install
npm install --only=dev npm install --only=dev
npm run construct
``` ```
### electron-builder(Recommended) ### electron-builder(推奨)
Use npm scripts. Use npm scripts.
npm scriptsを利用します
```sh ```sh
# Build for current platform # Build for current platform
# 実行している環境向けにビルド
npm run build npm run build
# Select build target # Select build target
# ターゲットを指定してビルド
## Windows ## Windows
npm run build:win npm run build:win
## Windows and Linux (The macOS target should run on macOS. So, this option hasn't include the build for macOS) ## Windows and Linux (The macOS target should run on macOS. So, this option hasn't include the build for macOS)
## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません
npm run build:all npm run build:all
``` ```
Config is all on package.json Config is all on package.json
ビルド設定はすべてpackage.jsonに記載しています。
### electron-packager ### electron-packager(非推奨)
`npm install --save-dev electron-rebuild` `npm install --save-dev electron-rebuild`
Linux/macOS Linux/macOS
@@ -113,8 +115,11 @@ Windows
`.\node_modules\.bin\electron-rebuild.cmd` `.\node_modules\.bin\electron-rebuild.cmd`
To install Python 2.x and Visual C++ for Windows, before running `npm install --save-dev electron-rebuild` To install Python 2.x and Visual C++ for Windows, before running `npm install --save-dev electron-rebuild`
WindowsでPython 2.xやVisualC++を一発でインストールできるツールもあります(`npm install --save-dev electron-rebuild`の前に)
`npm install --global windows-build-tools` `npm install --global windows-build-tools`
日本語話者向けですが、macOSビルドにはXCodeが要るとの情報があります。([とねぢ](https://minohdon.jp/@toneji)氏談)
Windows Windows
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite` `electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite`
Linux Linux
@@ -127,8 +132,9 @@ macOS
Did you find a bug with Pleroma accounts? Did you find a bug with Pleroma accounts?
Pleroma **does not** follow Mastodon API rules completely although Pleroma developers say so. Pleroma **does not** follow Mastodon API rules completely although Pleroma developers say so.
Please write issues to improve TheDesk affinity with Pleroma. Please write issues to improve TheDesk affinity with Pleroma.
Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。
Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。
## Vulnerabilities when `npm i`??? ## See also/詳しく
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.
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)

View File

@@ -1,139 +0,0 @@
<img src="https://thedesk.top/img/top.png" width="300" align="left">
<img src="https://thedesk.top/img/desk.png" width="150" align="right">
# TheDesk
[![Build Status](https://travis-ci.org/cutls/TheDesk.svg?branch=master)](https://travis-ci.org/cutls/TheDesk)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/thedesk/localized.svg)](https://translate.thedesk.top/project/thedesk)
[![FOSSA Status](https://bit.ly/2N4cLd1)](https://bit.ly/31zqMmZ)
[![Version](https://flat.badgen.net/github/release/cutls/TheDesk)](https://github.com/cutls/TheDesk/releases)
![Contributors](https://flat.badgen.net/github/contributors/cutls/TheDesk)
Mastodon/Misskey client for PC(Windows/Linux/macOS)
オープンソースSNSマストドン/MisskeyのPC向けクライアント
Download:[TheDesk](https://thedesk.top) [![check](https://status.cutls.com/badge/?site=thedesk.top)](https://status.cutls.com)
[Pixiv FANBOX](https://www.pixiv.net/fanbox/creator/28105985)
![Screenshots1](https://thedesk.top/img/scr1.png)
## ライセンス
[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
アイコンは[クリエイティブ・コモンズ 表示-非営利-継承](https://creativecommons.org/licenses/by-nc-sa/4.0/)で提供されています。
[プレスキット](https://d2upiril6ywqp9.cloudfront.net/press/TheDesk+PressKit.zip)
* [PNG 512x512](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.png)
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg)
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico)
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns)
* [Illustrator .ai](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ai)
標準の通知音は [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/) で提供されています。
## 利用規約
* [利用規約](https://thedesk.top/tos.html)
* [プライバシーポリシー](https://thedesk.top/priv.html)
## 言語
* 日本語
* English(英語)
### 翻訳
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`フォルダ内で実行
## 主なコントリビューター
macOSビルダー
* [とねぢ](https://minohdon.jp/@toneji)
Linuxビルダー
* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
iTunes NowPlayingにアルバムアートワークを付けてくれた人
* [kPherox](https://pl.kpherox.dev/kPherox)
## ビルド
```sh
git clone https://github.com/cutls/TheDesk
cd TheDesk/app
npm install
npm install --only=dev
npm run construct
```
### electron-builder(推奨)
npm scriptsを利用します
```sh
# 実行している環境向けにビルド
npm run build
# ターゲットを指定してビルド
## Windows
npm run build:win
## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません
npm run build:all
```
ビルド設定はすべてpackage.jsonに記載しています。
### electron-packager(非推奨)
`npm install --save-dev electron-rebuild`
Linux/macOS
`./node_modules/.bin/electron-rebuild`
Windows
`.\node_modules\.bin\electron-rebuild.cmd`
WindowsでPython 2.xやVisualC++を一発でインストールできるツールもあります(`npm install --save-dev electron-rebuild`の前に)
`npm install --global windows-build-tools`
日本語話者向けですが、macOSビルドにはXCodeが要るとの情報があります。([とねぢ](https://minohdon.jp/@toneji)氏談)
Windows
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite`
Linux
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=linux --arch=x64,ia32 --electron-version=4.0.5 --overwrite`
macOS
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite`
## Pleromaのサポート
Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。
Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。
## 詳しく
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)
## `npm i`したら脆弱性あるって言われた
materialize-cssの脆弱性(CVE-2019-11002/3/4)については[こちら](https://github.com/Dogfalo/materialize/issues/6286)で本当に脆弱性かどうか議論しています。
実際には害が無いものと思われます。

View File

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

260
app/adobe.html Normal file
View File

@@ -0,0 +1,260 @@
<!doctype html>
<html lang="ja">
<head>
<title>Adobe Photo Editor - TheDesk</title>
<meta content="width=device-width,initial-scale=1.0" name="viewport">
<link href="./css/materialize.css" type="text/css" rel="stylesheet">
<link href="./css/themes.css" type="text/css" rel="stylesheet">
<link href="./css/master.css" type="text/css" rel="stylesheet">
<link href="./css/auth.css" type="text/css" rel="stylesheet">
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
<link href='./css/tl.css' rel='stylesheet' type='text/css'>
<link href='./css/userdata.css' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
<style>
#cb-drag {
margin-bottom: 8px;
padding: 24px 0;
text-align: center;
}
#cb-drag p {
font-weight: bold;
text-align: center;
}
#cb-file {
cursor: pointer;
}
#cb-display {
margin-bottom: 0;
}
#cb-display p {
margin-top: 8px;
margin-bottom: 0;
line-height: 1.4;
}
.cb-div {
padding: 16px;
margin-bottom: 8px;
}
.cb-image {
cursor: pointer;
}
</style>
<meta charset="utf-8">
</head>
<body id="mainView">
<script type="text/javascript" src="./js/common/jquery.js"></script>
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
<script type="text/javascript" src="./js/common/materialize.js"></script>
<script type="text/javascript" src="./js/ui/tips.js"></script>
<script type="text/javascript" src="./js/common/time.js"></script>
<script type="text/javascript" src="./js/common/modal.js"></script>
<div>
<div id="cb-drag">
<p>ここに画像ファイルをドラッグし、画像をクリックしてください。</p>
<input type="file" id="cb-file">
</div>
<div id="cb-display"></div>
</div>
<script type="text/javascript" src="https://dme0ih8comzn4.cloudfront.net/imaging/v2/editor.js"></script>
<script type="text/javascript">
var dragAndDrop = (function (window, document) {
"use strict";
var drag = document.getElementById("mainView");
var disp = document.getElementById("cb-display");
var file = document.getElementById("cb-file");
function makeView(data) {
var div, img, customEvent;
var metaData = "<p>■ファイル名: <b>" + data.name + "</b><br>■容量: <b>" + data.size + "</b>バイト</p>";
div = document.createElement("div");
div.setAttribute("class", "cb-div");
img = document.createElement("img");
img.src = data.url;
img.setAttribute("class", "cb-image");
img.style.maxWidth = "100%";
img.style.height = "auto";
div.appendChild(img);
img.insertAdjacentHTML("afterend", metaData);
disp.appendChild(div);
customEvent = document.createEvent("HTMLEvents");
customEvent.initEvent("makeView", true, false);
div.dispatchEvent(customEvent);
}
function readImage(e) {
var f = (e.dataTransfer) ? e.dataTransfer.files : e.target.files;
for (var i = 0, l = f.length; i < l; i++) {
var reader = new FileReader();
reader.onload = (function (f) {
var imageData = {};
return function (evt) {
if (f.type === "image/gif" || f.type === "image/png" || f.type === "image/jpeg") {
imageData.type = f.type;
imageData.name = f.name;
imageData.size = f.size;
imageData.date = f.lastModifiedDate.toLocaleDateString();
imageData.url = evt.target.result;
makeView(imageData);
} else {
return;
}
};
})(f[i]);
reader.readAsDataURL(f[i]);
}
}
function dragFiles() {
drag.addEventListener("drop", function (e) {
e.stopPropagation();
e.preventDefault();
readImage(e);
}, false);
drag.addEventListener("dragover", function (e) {
e.stopPropagation();
e.preventDefault();
}, false);
}
function uploadFiles() {
file.addEventListener("change", function(e) {
readImage(e);
}, false);
}
return {
init: function () {
dragFiles();
uploadFiles();
}
};
})(this, this.document);
var photoEditor = (function (window, document) {
"use strict";
var featherEditor = new Aviary.Feather({
apiKey: "ffee425017ab44b18ce95dab98a5cdc1",
onSave: function(imageID, newURL) {
var img1 = document.getElementById(imageID);
img1.src = newURL;
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('bmp-image', [newURL,0]);
window.close();
}
});
function clearImage() {
this.parentNode.style.display = "none";
}
function launchEditor(id, src) {
featherEditor.launch({
image: id,
url: src
});
return false;
}
function editPhoto() {
//console.log(this);
var id = this.getAttribute("id");
var src = this.getAttribute("src");
launchEditor(id, src);
}
function makeButton() {
var button = document.createElement("button");
button.setAttribute("style",
"width: 64px;"
+ " line-height: 24px;"
+ " background-color: #37474F;"
+ " color: #fff;"
+ " border: none;"
+ " cursor: pointer;"
+ " border-radius: 2px;"
+ " font-size: 14px;"
+ " position: absolute;"
+ " text-align: center;"
+ " top: 16px;"
+ " right: 8px;"
+ " padding: 0;"
+ " z-index: 1000;"
);
button.innerHTML = "削除";
return button;
}
function listener() {
var disp = document.getElementById("cb-display");
disp.addEventListener("makeView", function () {
var image = document.querySelectorAll(".cb-image");
var button = [];
for (var i = 0, l = image.length; i < l; i++) {
button[i] = makeButton();
image[i].setAttribute("id", "cb-image_" + i);
image[i].parentNode.style.position = "relative";
image[i].parentNode.appendChild(button[i]);
button[i].addEventListener("click", clearImage, false);
image[i].addEventListener("click", editPhoto, false);
}
}, false);
}
return {
init: function () {
listener();
}
};
})(this, this.document);
dragAndDrop.init();
photoEditor.init();
</script>
<script type="text/javascript" src="./js/ui/theme.js"></script>
<script type="text/javascript" src="./js/platform/end.js"></script>
</body>
</html>

View File

@@ -1,112 +0,0 @@
const builder = require("electron-builder");
const fs = require('fs');
const os = process.platform;
const Platform = builder.Platform
const Arch = builder.Arch
const targets = new Map();
const archToType = new Map();
const pref = {
productName: "TheDesk",
appId: "top.thedesk",
asarUnpack: [
"node_modules/itunes-nowplaying-mac"
],
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
},
linux: {
icon: "build/icons",
target: [
"zip",
"snap"
],
category: "Network"
},
mac: {
target: [
"dmg",
"zip"
]
},
electronDownload: {
version: "5.0.1"
},
electronVersion: "5.0.1"
}
const json = JSON.parse(fs.readFileSync("package.json", 'utf8'));
const version = json.version;
if (os == "win32") {
archToType.set(Arch.ia32, []);
targets.set(Platform.WINDOWS, archToType);
} else if (os == "linux") {
archToType.set(Arch.x64, []);
archToType.set(Arch.ia32, []);
targets.set(Platform.LINUX, archToType);
} else if (os == "darwin") {
archToType.set(Arch.x64, []);
targets.set(Platform.MAC, archToType);
} else {
return false
}
builder.build({
targets: targets,
config: pref
})
.then(() => {
console.log("Done on "+os)
if (os == "win32") {
console.log("Windows")
fs.renameSync('../build/TheDesk ' + version + '.exe', '../build/TheDesk-ia32.exe');
fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup-ia32.exe');
retry()
}else if (os == "linux") {
console.log("Linux")
fs.renameSync('../build/thedesk-' + version + '.zip', '../build/TheDesk.zip');
fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup-ia32.exe');
}
})
.catch((error) => {
// handle error
})
function retry(){
console.log("Windows x64")
const targetsAlt = new Map();
const archToTypeAlt = new Map();
targetsAlt.set(Platform.WINDOWS, archToTypeAlt);
archToTypeAlt.set(Arch.x64, []);
builder.build({
targets: targetsAlt,
config: pref
})
.then(() => {
fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup.exe');
fs.renameSync('../build/TheDesk ' + version + '.exe', '../build/TheDesk.exe');
})
.catch((error) => {
// handle error
})
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -1,4 +1,2 @@
/*このソフトについてを押した時に読み込まれます*/ /*このソフトについてを押した時に読み込まれます*/
body { body{font-family:Open Sans;}
font-family: Open Sans;
}

View File

@@ -5,15 +5,9 @@
/* FONT PATH /* FONT PATH
* -------------------------- */ * -------------------------- */
@font-face { @font-face {
font-family: "FontAwesome"; font-family: 'FontAwesome';
src: url("../fonts/fontawesome-webfont.eot?v=4.7.0"); src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
src: url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
format("embedded-opentype"),
url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),
url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),
url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),
url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular")
format("svg");
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
} }
@@ -66,9 +60,9 @@
left: -1.85714286em; left: -1.85714286em;
} }
.fa-border { .fa-border {
padding: 0.2em 0.25em 0.15em; padding: .2em .25em .15em;
border: solid 0.08em #eeeeee; border: solid 0.08em #eeeeee;
border-radius: 0.1em; border-radius: .1em;
} }
.fa-pull-left { .fa-pull-left {
float: left; float: left;
@@ -77,10 +71,10 @@
float: right; float: right;
} }
.fa.fa-pull-left { .fa.fa-pull-left {
margin-right: 0.3em; margin-right: .3em;
} }
.fa.fa-pull-right { .fa.fa-pull-right {
margin-left: 0.3em; margin-left: .3em;
} }
/* Deprecated as of 4.4.0 */ /* Deprecated as of 4.4.0 */
.pull-right { .pull-right {
@@ -90,10 +84,10 @@
float: left; float: left;
} }
.fa.pull-left { .fa.pull-left {
margin-right: 0.3em; margin-right: .3em;
} }
.fa.pull-right { .fa.pull-right {
margin-left: 0.3em; margin-left: .3em;
} }
.fa-spin { .fa-spin {
-webkit-animation: fa-spin 2s infinite linear; -webkit-animation: fa-spin 2s infinite linear;

View File

@@ -1,14 +1,17 @@
/*共通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;
font-size: 13px; font-size:13px;
height: 100vh; height: 100vh;
background-color: var(--bg);
color: var(--color); color: var(--color);
} }
body{
border: thin solid gray;
}
.btn { .btn {
margin: 5px; margin: 5px;
text-transform: none; text-transform: none;
@@ -27,7 +30,7 @@ option {
} }
#mainView { #mainView {
padding: 10px; padding: 10px;
overflow: scroll; overflow:scroll;
height: auto; height: auto;
} }
#message { #message {
@@ -39,26 +42,23 @@ option {
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;
} }
#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: scroll; overflow-x:scroll;
overflow-y: hidden; overflow-y:hidden;
} }
#imagewrap { #imagewrap {
@@ -68,16 +68,11 @@ option {
.pointer { .pointer {
cursor: pointer; cursor: pointer;
} }
.badge { .badge{
min-width: 0 !important; min-width: 0 !important;
margin-left: 5px !important; margin-left: 5px !important;
} }
.unvisible{ .bbcode-pulse-loadings, .bbcode-pulse-loading, .fa-pulse {
opacity: 0;
}
.bbcode-pulse-loadings,
.bbcode-pulse-loading,
.fa-pulse {
display: inline-block; display: inline-block;
animation-duration: 3s; animation-duration: 3s;
animation-fill-mode: both; animation-fill-mode: both;
@@ -85,13 +80,10 @@ option {
animation-name: pulse; animation-name: pulse;
} }
@keyframes pulse { @keyframes pulse {
from, from, 50%, to {
50%,
to {
opacity: 1; opacity: 1;
} }
25%, 25%, 75% {
75% {
opacity: 0; opacity: 0;
} }
} }
@@ -127,8 +119,7 @@ option {
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;
@@ -138,8 +129,7 @@ code:before,
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;
@@ -155,12 +145,10 @@ pre {
border-bottom-right-radius: 10px; border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px; border-bottom-left-radius: 10px;
} }
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;
@@ -169,8 +157,7 @@ blockquote,
border-bottom-right-radius: 10px; border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px; 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;
@@ -234,225 +221,178 @@ blockquote:before,
#drag-content { #drag-content {
font-size: 2rem; font-size: 2rem;
} }
#pip { .radio{
z-index: 504; font-family:'Baloo Bhai'
width: 418px; }
#pip{
z-index:504;
width:418px;
background-color: var(--subcolor); 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(--subcolor); background-color: var(--subcolor);
} }
.collapsible-header:focus { .modal-footer{
background-color: var(--subcolor) !important;
}
.modal-footer {
background-color: var(--modalfooter) !important; background-color: var(--modalfooter) !important;
} }
.font { .font{
font-size: 1.5rem; font-size:1.5rem;
margin-bottom: 5px; 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(--color); border-color:var(--color);
padding: 5px; padding:5px;
} }
#pickers { #pickers{
display: flex; display:flex;
flex-wrap: wrap; flex-wrap: wrap;
} }
#menu { #menu{
position: fixed; position:fixed;
z-index: 9999; z-index:9999;
background-color: var(--box); background-color: var(--box);
width: 540px; width:540px;
top: calc(50% - 150px); top:calc(50% - 150px);
left: calc(50% - 250px); left:calc(50% - 250px);
padding: 5px; padding: 5px;
border: thin solid gray; border: thin solid gray;
border-radius: 5px; border-radius:5px;
overflow: hidden;
} }
#menu-wrapper { #menu-wrapper{
margin-left: -5px; margin-left:-5px;
display: flex; display:flex;
height: calc(100% - 3.5rem);
overflow: hidden;
} }
#left-menu { #left-menu{
width: 230px; width:170px;
} }
#left-menu div { #left-menu div{
padding-left: 5px; padding-left:5px;
width: 100%; width:100%;
height: 50px; height:50px;
display: flex; display:flex;
align-items: center; align-items:center;
cursor: pointer; cursor:pointer;
} }
#left-menu div:hover { #left-menu div:hover {
background-color: var(--beforehover); background-color: var(--beforehover);
} }
#left-menu span { #left-menu span{
margin-left: 5px; margin-left:5px;
} }
#left-menu div.active { #left-menu div.active{
background-color: var(--emphasized); background-color: var(--emphasized);
} }
#right-menu { #right-menu{
width: 100%; width:380px;
overflow-y: scroll; max-height:375px;
overflow-x: hidden; overflow-y:scroll;
padding: 5px; overflow-x:hidden;
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: 170px; width:170px;
height: 40px; height:40px;
cursor: pointer; cursor:pointer;
} }
#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: 30px; font-size:30px;
} }
#tltype i.sub-icon { #tltype i.sub-icon{
font-size: 20px; font-size: 20px;
position: relative; position: relative;
color: var(--beforehover); color: var(--beforehover);
left: -15px; left: -15px;
} }
.drag-bar { .drag-bar{
cursor: move; cursor:move;
text-align: center; text-align:center;
width: calc(100% + 10px); width:calc(100% + 10px);
border-radius: 5px; border-radius: 5px;
background-color: var(--box); background-color: var(--bg);
filter: brightness(80%); margin-left:-5px;
margin-left: -5px; margin-right:-5px;
margin-right: -5px; margin-top:-5px;
margin-top: -5px; font-size:16px;
font-size: 16px; padding:4px;
padding: 4px;
} }
#something-wrong { #something-wrong{
flex-direction: column; width:100%; height:100%; position:absolute; display:flex; justify-content: center; align-items:center
width: 100%;
height: 100%;
position: absolute;
display: flex;
justify-content: center;
align-items: center;
}
#support-btm {
position: fixed;
bottom: -300px;
width: 100vw;
background-color: var(--box);
z-index: 9999;
padding: 10px;
display: grid;
grid-template-columns: 3fr 1fr 1fr;
grid-template-rows: 1fr 36px;
grid-template-areas: "note middle right" "note close close";
}
#support-btm-en,
#support-btm-ja {
grid-area: note;
}
#support-btm-middle {
grid-area: middle;
}
#support-btm-right {
grid-area: right;
}
#support-btm-close {
grid-area: close;
}
.select-wrapper .dropdown-content {
width: 250px !important;
}
input, textarea {
color: var(--color);
font-size: 1rem !important;
font-family: inherit;
}
.swal2-popup{
background-color: var(--notfbox) !important;
}
.swal2-title, .swal2-content{
color: var(--color) !important;
} }
/*スクロールバー*/ /*スクロールバー*/
@@ -472,32 +412,3 @@ input, textarea {
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 */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), 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-family: 'Material Icons';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/materialicons/v48/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
}
.material-icons {
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
font-size: 24px;
line-height: 1;
letter-spacing: normal;
text-transform: none;
display: inline-block;
white-space: nowrap;
word-wrap: normal;
direction: ltr;
-webkit-font-feature-settings: 'liga';
-webkit-font-smoothing: antialiased;
}

9411
app/css/materialize.css vendored Normal file

File diff suppressed because it is too large Load Diff

16
app/css/materialize.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,23 +1,16 @@
/*トゥートボックス向け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%; min-width:300px;
max-width:100%;
padding: 5px; padding: 5px;
border-radius: 5px; border-radius:5px;
overflow: hidden;
}
textarea {
min-height: 100px !important;
font-family: inherit;
}
#post-box .ui-resizable-s, #post-box .ui-resizable-se{
display: none !important;
} }
.cancel { .cancel {
@@ -26,7 +19,8 @@ textarea {
cursor: pointer; cursor: pointer;
position: absolute; position: absolute;
right: 2px; right: 2px;
top: 4px; top:4px;
} }
.more-show { .more-show {
display: none; display: none;
@@ -48,12 +42,10 @@ textarea {
display: none; display: none;
} }
#sch-box input { #sch-box input {
width: auto; width:auto;
} }
.picker__close, .picker__close, .picker__today, .picker__clear {
.picker__today, color: #26a69a !important;
.picker__clear {
color: #26a69a !important;
} }
.cw { .cw {
display: none; display: none;
@@ -62,9 +54,10 @@ textarea {
filter: blur(50px); filter: blur(50px);
} }
#emoji { #emoji {
} }
#suggest { #suggest{
max-height: 300px; max-height:300px;
overflow-y: scroll; overflow-y: scroll;
} }
#emoji-list { #emoji-list {
@@ -75,70 +68,70 @@ textarea {
#preview-field { #preview-field {
display: none; display: none;
} }
.preview-img { .preview-img{
width: 50px; width:50px;
max-height: 100px; max-height:100px;
} }
.pi-wrap { .pi-wrap{
display: inline-block; display:inline-block;
width: 50px; width:50px;
max-height: 100px; max-height:100px;
} }
#default-emoji a { #default-emoji a{
color: var(--color); color:white;
margin-right: 2px; margin-right:2px;
} }
.character-counter { .character-counter{
position: relative; position: relative;
top: -25px; top: -25px;
} }
.trendtag { .trendtag{
overflow-y:scroll;
max-height:100px;
}
#toot-btn-field{
display:flex;
}
#toot-post-btn{
width:calc(100% - 10px); padding:0; margin-top:10px;
}
#toot-sec-btn{
width:30px; padding:0; margin-top:10px;
}
#left-side{
float:left;
width:300px;
}
#right-side{
display:none;
float:left;
width:300px;
padding:5px;
}
#poll{
}
.poll-provider{
position: absolute;
height: calc(100% - 90px);
overflow-y: scroll; overflow-y: scroll;
max-height: 100px; top: 90px;
}
#toot-btn-field {
display: flex;
}
#toot-post-btn {
width: calc(100% - 10px);
padding: 0;
margin-top: 10px;
}
#toot-sec-btn {
width: 30px;
padding: 0;
margin-top: 10px;
}
#left-side {
float: left;
overflow-x: hidden;
height: calc(100% - 32px);
}
#right-side {
display: none;
float: left;
width: 300px;
padding: 5px;
overflow-x: hidden;
height: calc(100% - 32px);
}
#posttgl,#toot-post-btn {
background-color: var(--accentbtn);
} }
/*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: 200px; width:200px;
min-width: 100px; 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

@@ -1,31 +1,32 @@
.drag-content {
text-overflow: ellipsis; .drag-content{
cursor: move; text-overflow: ellipsis;
user-select: none; cursor:move;
background-color: var(--modalfooter); user-select: none;
margin: 5px; background-color:var(--modalfooter);
border-radius: 5px; margin:5px;
color: var(--color); border-radius:5px;
padding: 3px; color:var(--color);
display: grid; padding:3px;
grid-template-columns: 43px 1fr 60px; display:grid;
grid-template-areas: "sorticon sorttitle sorttitle" "sorticon sortacct sortaction"; grid-template-columns: 43px 1fr 60px;
grid-template-areas: 'sorticon sorttitle sorttitle' 'sorticon sortacct sortaction';
} }
.sorticon { .sorticon {
grid-area: sorticon; grid-area:sorticon;
} }
.sorticon i { .sorticon i{
font-size: 43px; font-size:43px;
} }
.sorttitle { .sorttitle {
margin-left: 5px; margin-left:5px;
grid-area: sorttitle; grid-area:sorttitle;
} }
.sortacct { .sortacct {
margin-left: 5px; margin-left:5px;
grid-area: sortacct; grid-area:sortacct;
} }
.sortaction { .sortaction {
margin-left: 5px; margin-left:5px;
grid-area: sortaction; grid-area:sortaction;
} }

View File

@@ -1,144 +1,100 @@
:root { :root{
--bg: white; --bg:white;
--drag: rgba(255, 255, 255, 0.8); --drag:rgba(255, 255, 255, 0.8);
--color: black; --color:black;
--beforehover: #757575; --beforehover:#757575;
--modal: white; --modal:white;
--subcolor: #e0e0e0; --subcolor:#e0e0e0;
--box: white; --box:white;
--sidebar: #eeeeee; --sidebar:#eeeeee;
--shared: #cfd8dc; --shared:#cfd8dc;
--notfbox: white; --notfbox:white;
--emphasized: #81c784; --emphasized:#81c784;
--his-data: rgba(255, 255, 255, 0.9); --his-data:rgba(255, 255, 255, 0.9);
--active: #e6ee9c; --active:#e6ee9c;
--postbox: white; --postbox:white;
--modalfooter: #fafafa; --modalfooter:#fafafa;
--accentbtn: #009688;
--selected: #c0c0c0;
--selectedWithShare: #b2babd;
--gray: #757575;
} }
#imagemodal { #imagemodal{
background: url("../img/pixel.white.svg"); background: url("../img/pixel.white.svg");
} }
.blacktheme { .blacktheme {
--bg: #212121; --bg:#212121;
--drag: rgba(0, 0, 0, 0.8); --drag:rgba(0, 0, 0, 0.8);
--color: white; --color:white;
--beforehover: #9e9e9e; --beforehover:#9e9e9e;
--modal: black; --modal:black;
--subcolor: #212121; --subcolor:#212121;
--box: #424242; --box:#424242;
--sidebar: #424242; --sidebar:#424242;
--shared: #004d40; --shared:#004d40;
--notfbox: #333333; --notfbox:#333333;
--emphasized: #4e342e; --emphasized:#4e342e;
--his-data: rgba(0, 0, 0, 0.8); --his-data:rgba(0, 0, 0, 0.8);
--active: #757575; --active:#757575;
--postbox: #424242; --postbox:#424242;
--modalfooter: #212121; --modalfooter:#212121;
--accentbtn: #3f51b5;
--selected: #3f3f3f;
--selectedWithShare: #003a30;
--gray: #cccccc;
} }
.blacktheme #imagemodal { .blacktheme #imagemodal{
background: url("../img/pixel.svg"); background: url("../img/pixel.svg");
} }
.indigotheme { .indigotheme {
--bg: #031833; --bg:#031833;
--drag: rgba(0, 0, 0, 0.8); --drag:rgba(0, 0, 0, 0.8);
--color: white; --color:white;
--beforehover: #9e9e9e; --beforehover:#9e9e9e;
--modal: #0d1351; --modal:#0d1351;
--subcolor: #0d1351; --subcolor:#0d1351;
--shared: #004d40; --shared:#004d40;
--box: #0d1351; --box:#0d1351;
--sidebar: #0d1351; --sidebar:#0d1351;
--notfbox: #0d47a1; --notfbox:#0d47a1;
--emphasized: #4e342e; --emphasized:#4e342e;
--his-data: rgba(13, 19, 81, 0.8); --his-data:rgba(13, 19, 81,0.8);
--active: #757575; --active:#757575;
--postbox: #1a237e; --postbox:#1a237e;
--modalfooter: #031833; --modalfooter:#031833;
--accentbtn: #00acc1;
--selected: #214f8a;
--selectedWithShare: #003a30;
--gray: #cccccc ;
} }
.indigotheme #imagemodal { .indigotheme #imagemodal{
background: url("../img/pixel.svg"); background: url("../img/pixel.svg");
} }
.browntheme { .browntheme {
--bg: #261411; --bg:#261411;
--drag: rgba(0, 0, 0, 0.8); --drag:rgba(0, 0, 0, 0.8);
--color: white; --color:white;
--beforehover: #9e9e9e; --beforehover:#9e9e9e;
--modal: #261411; --modal:#261411;
--subcolor: #4e342e; --subcolor:#4e342e;
--shared: #004d40; --shared:#004d40;
--box: #4e342e; --box:#4e342e;
--sidebar: #4e342e; --sidebar:#4e342e;
--notfbox: #4e342e; --notfbox:#4e342e;
--emphasized: #0d47a1; --emphasized:#0d47a1;
--his-data: rgba(62, 39, 35, 0.8); --his-data:rgba(62, 39, 35,0.8);
--active: #757575; --active:#757575;
--postbox: #4e342e; --postbox:#4e342e;
--modalfooter: #261411; --modalfooter:#261411;
--accentbtn: #827717;
--selected: #6d352b;
--selectedWithShare: #003a30;
--gray: #cccccc;
} }
.browntheme #imagemodal { .browntheme #imagemodal{
background: url("../img/pixel.svg"); background: url("../img/pixel.svg");
} }
.greentheme { .greentheme{
--bg: #c8e6c9; --bg:#c8e6c9;
--drag: rgba(255, 255, 255, 0.8); --drag:rgba(255, 255, 255, 0.8);
--color: black; --color:black;
--beforehover: #757575; --beforehover:#757575;
--modal: #81c784; --modal:#81c784;
--subcolor: #a5d6a7; --subcolor:#a5d6a7;
--box: #81c784; --box:#81c784;
--sidebar: #c5e1a5; --sidebar:#81c784;
--shared: #ffcc80; --shared:#ffcc80;
--notfbox: #a5d6a7; --notfbox:#a5d6a7;
--emphasized: #9e9d24; --emphasized:#9e9d24;
--his-data: rgba(255, 255, 255, 0.9); --his-data:rgba(255, 255, 255, 0.9);
--active: #e6ee9c; --active:#e6ee9c;
--postbox: #a5d6a7; --postbox:#a5d6a7;
--modalfooter: #81c784; --modalfooter:#81c784;
--accentbtn: #33691e;
--selected: #78c17a;
--selectedWithShare: #caa266;
--gray: #757575;
} }
.greentheme #imagemodal { .greentheme #imagemodal{
background: url("../img/pixel.white.svg"); 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,107 +1,97 @@
/*TL CSS(ただしBBCode pulse:master.css/spin:font-awesome*/ /*TL CSS(ただしBBCode pulse:master.css/spin:font-awesome*/
#main { #main{
width: 100vw; display:flex;
height: calc(100vh - 40px); width:100vw;
} }
#timeline-container { #timeline-container {
overflow-x: scroll; overflow-x: scroll;
overflow-y: hidden; overflow-y: hidden;
display: flex; display: flex;
height: 100%; height: calc(100vh - 40px);
flex-grow:4;
} }
#bottom { #bottom{
position: absolute; position:absolute;
bottom: 0; bottom:0;
width: 100vw; width:100vw;
height: 40px; height:40px;
padding: 3px; padding:3px;
padding-right: 0; padding-right:0;
padding-left: 40px; padding-left:40px;
background-color: var(--sidebar); 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: 10px 0 10px 10px rgba(0, 0, 0, 0.2); box-shadow: 10px 0 10px 10px rgba(0, 0, 0, 0.2);
} }
#bottom.reverse { #bottom.reverse{
padding-left: 0; padding-left:0;
padding-right: 40px; padding-right:40px;
} }
.reverse { .reverse{
flex-direction: row-reverse; flex-direction: row-reverse;
} }
#bottom #dambox { #bottom #dambox{
width: 300px; width:300px;
margin-right: 10px; margin-right:10px;
} }
#bottom.reverse #dambox { #bottom.reverse #dambox{
margin-right: 0; margin-right:0;
} }
#bottom .trendtag { #bottom .trendtag{
height: 40px; height:40px;
} }
#bottom #group { #bottom #group{
margin-right: 40px; margin-right:40px;
} }
#bottom .leftside { #bottom .leftside{
display: flex; display:flex;
} }
#tips{ #bottom #tips img{
display: flex;
align-items: center;
}
#bottom #tips img {
vertical-align: -3px; vertical-align: -3px;
} }
#bottom a { #bottom a{
color: var(--color); color:var(--color);
} }
#bottom i { #bottom i{
font-size: 30px; font-size:30px;
} }
.exc-icons { .exc-icons{
font-size: 20px; font-size:20px;
} }
.exc-chb { .exc-chb{
padding-left: 24px !important; padding-left:24px !important;
} }
#bottom .btnsgroup { #bottom .btnsgroup{
border: 1px solid; border:1px solid;
padding-top: 1px; padding:1px;
padding-left: 5px; padding-left:5px;
padding-right: 5px; padding-right:5px;
margin-right: 15px; margin-right:15px;
border-radius: 5px; border-radius:5px;
} }
#spot-box { #spot-box{
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
#spot-img { #spot-img{
margin-right: 2px; margin-right:2px;
} }
#spot-art { #spot-art{
margin-right: 2px; margin-right:2px;
margin-left: 2px; margin-left:2px;
} }
.btnsgroup .grouptitle { .btnsgroup .grouptitle{
font-family: Open Sans; font-family:Open Sans;
font-size: 15px; font-size:15px;
} }
@media screen and (max-width: 890px) { @media screen and (max-width: 890px) {
.btnsgroup .grouptitle { .btnsgroup .grouptitle{ display: none; }
display: none; #tips,#tips-menu{ display: none; }
}
#tips,
#tips-menu {
display: none;
}
} }
iframe, iframe {
.cvo video { max-width:100%;
max-width: 100%;
max-height: 300px;
} }
@media screen and (max-width: 600px) { @media screen and (max-width: 600px) {
.mobile #timeline-container { .mobile #timeline-container {
@@ -119,252 +109,195 @@ iframe,
overflow: hidden; overflow: hidden;
min-width: 300px; min-width: 300px;
flex: 1; flex: 1;
border-top: none; border-top:none;
display: flex; display:flex;
flex-direction: column; flex-direction: column;
margin-bottom: -10px; margin-bottom: -10px;
} }
.img_FTL { .img_FTL{
display: none; display:none;
} }
.bbcode_FTL { .bbcode_FTL{
display: none; display:none;
} }
.marquee { .boxIn{
width: 100%; height:100%;
padding: 0.5em 0;
overflow: hidden;
margin-bottom: 0;
position: relative;
}
.marquee .bbcode-marq-lateral {
margin: 0;
padding-left: 100%;
display: inline-block;
white-space: nowrap;
animation-name: marquee;
animation-timing-function: linear;
animation-duration: 10s;
animation-iteration-count: infinite;
}
@keyframes marquee {
0% {
-webkit-transform: translate(0);
transform: translate(0);
}
99%,
100% {
-webkit-transform: translate(-100%);
transform: translate(-100%);
}
}
.boxIn {
display: flex;
flex-direction: column;
height: 100%;
border: thin solid gray; border: thin solid gray;
overflow: hidden; overflow: hidden;
border-top: none;
} }
.box .pin, .box .pin,#his-data .pin{
#his-data .pin { display:none;
display: none;
} }
.user { .user{
cursor: text; cursor:text;
font-size: 1.1rem; font-size:1.1rem;
} }
.emoji, .emoji,.emoji-img{
.emoji-img {
width: 15px; width: 15px;
} }
.area-toot .emoji, .area-toot .emoji,.area-toot .emoji-img{
.area-toot .emoji-img {
width: 20px; width: 20px;
vertical-align: middle; vertical-align: middle;
margin: -1px 0; margin: -3px 0 0;
} }
.faicon_FTL { .faicon_FTL{
display: none; display:none;
}
.tl-box {
position: relative;
flex: 1;
overflow-y: scroll;
overflow-x: hidden;
} }
.tl-box{
position:relative;
height:calc(100% - 40px);
overflow-y:scroll;
overflow-x:hidden }
.additional { .additional {
overflow-x: scroll; overflow-x: scroll;
width: 100%; width: 100%;
} }
.media-filter .nomedia { .media-filter .nomedia{
display: none; display:none;
} }
.bt-filter .shared { .bt-filter .shared{
display: none; display:none;
} }
.except-bt-filter .unshared { .except-bt-filter .unshared{
display: none; display:none;
} }
.cvo { .cvo {
user-select: text; user-select: text;
padding-left: 5px; padding-left: 5px;
border-bottom: 0.5px solid; border-bottom:0.5px solid;
padding-right: 2px; padding-right: 2px;
word-break: break-word; word-break: break-word;
width: 100%; width: 100%;
display: grid; display: grid;
grid-template-columns: 43px 2fr 1fr; grid-template-columns: 43px 2fr 1fr;
grid-template-rows: auto 1.6rem 1fr auto 2.5rem; grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'icon toot toot' 'vis additional additional' 'actions actions side';
grid-template-areas: "notice notice notice" "icon display_name display_name" "space toot toot" "space additional additional" "vis actions side";
} }
.cvo h1, .cvo h1,.cvo h2,.cvo h3,.cvo h4,.cvo h5,.cvo h6{
.cvo h2, margin:0;
.cvo h3,
.cvo h4,
.cvo h5,
.cvo h6 {
margin: 0;
} }
.area-notice { .area-notice {
margin: 2px; margin:2px;
grid-area: notice; grid-area: notice;
} }
.area-icon { .area-icon {
width: 40px; width:40px;
margin: 2px; 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: 2px; margin:2px;
margin-left: 5px; margin-left:5px;
overflow: hidden; overflow:hidden;
grid-area: display_name; grid-area: display_name;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
display: flex; display:flex;
justify-content: space-between; justify-content:space-between;
width: 100%; width:100%;
flex-wrap: nowrap; flex-wrap:nowrap
} }
.flex-name { .flex-name{
max-width: calc(100% - 60px); max-width:calc(100% - 60px);
overflow: hidden; overflow:hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.area-toot { .area-toot {
cursor: text; cursor:text;
user-select: auto; user-select: auto;
margin-top: 5px; margin:2px;
margin-bottom: 5px; margin-left:5px;
margin-left: 5px; grid-area: toot;
grid-area: toot;
} }
.area-date_via { .area-date_via {
text-align: right; text-align:right;
grid-area: date_via; grid-area: date_via;
} }
.area-additional { .area-additional {
cursor: text; cursor:text;
user-select: auto; user-select: auto;
grid-area: additional; grid-area: additional;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.acct-note p{
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.area-toot.acct-note p:not(:first-child) {
display: none;
}
.area-toot.acct-note p:first-child:after {
content: "...";
color: var(--gray)
}
.area-actions { .area-actions {
padding: 0; padding:0;
margin: 0; margin:0;
top: -5px; top:-20px;
position: relative; display:flex;
display: flex; justify-content:space-around;
justify-content: space-around; width:250px;
max-width: 100%; max-width:100%;
grid-area: actions; grid-area: actions;
} }
.area-vis { .area-vis {
margin: 2px; margin:2px;
grid-area: vis; grid-area: vis;
text-align: center; }
}
.area-side { .area-side {
display: flex; display:flex;
top: -5px; justify-content:flex-end;
position: relative; margin:2px;
justify-content: flex-end;
margin: 2px;
grid-area: side; grid-area: side;
} }
.quote-renote { .quote-renote{
display: grid; display: grid;
grid-template-columns: 43px 2fr 1fr; grid-template-columns: 43px 2fr 1fr;
grid-template-areas: "ricon ruser" "ricon rtext"; grid-template-areas: 'ricon ruser' 'ricon rtext';
border: 1px solid; border: 1px solid;
margin-top: 3px; margin-top: 3px;
padding: 1px; padding: 1px;
border-radius: 3px; border-radius: 3px;
} }
.renote-icon { .renote-icon{
grid-area: ricon; grid-area: ricon;
} }
.renote-icon img { .renote-icon img{
width: 43px; width:43px;
} }
.renote-user { .renote-user{
grid-area: ruser; grid-area: ruser;
} }
.renote-text { .renote-text{
grid-area: rtext; grid-area: rtext;
} }
.btn-flat { .btn-flat{
color: var(--color); color:var(--color);
} }
.area-side i { .area-side i{
margin-left: 10px; margin-left:10px;
} }
.viabadge { .viabadge{
margin-top: 10px; margin-top:10px;
} }
.action i { .action i{
font-size: 1.2rem; font-size:1.2rem;
margin-right: 2px; margin-right:2px;
} }
.action .fa-quote-right { .action .fa-quote-right{
margin-top: 2px; margin-top: 2px;
} }
.actct { .actct{
color: var(--beforehover); color:var(--beforehover);
} }
.actct:hover { .actct:hover{
color: var(--color); color:var(--color);
transition: 0.5s; transition: 0.5s;
} }
.gray { .gray {
color: var(--gray); color: gray;
} }
.sml { .sml {
font-size: 0.8em; font-size: 0.8em;
@@ -375,6 +308,7 @@ iframe,
.toot-img { .toot-img {
object-fit: cover; object-fit: cover;
width: 100%; width: 100%;
margin-right:1px;
} }
.toot img:not(.emoji-img) { .toot img:not(.emoji-img) {
max-width: 100%; max-width: 100%;
@@ -383,7 +317,7 @@ iframe,
.cbadge { .cbadge {
display: inline-block; display: inline-block;
min-width: 10px; min-width: 10px;
max-width: 100px; max-width:100px;
padding: 3px 7px; padding: 3px 7px;
font-size: 0.8em; font-size: 0.8em;
margin-right: 5px; margin-right: 5px;
@@ -397,8 +331,7 @@ iframe,
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
height: calc(0.8em + 8px); height:calc(0.8em + 8px);
user-select: none;
} }
.cbadge-hover { .cbadge-hover {
color: var(--color); color: var(--color);
@@ -411,9 +344,8 @@ iframe,
p { p {
margin: 0; margin: 0;
margin-bottom: 0px; margin-bottom: 0px;
line-height: 20px;
} }
p:not(:last-child) { p:not(:last-child){
margin-bottom: 10px; margin-bottom: 10px;
} }
.shared { .shared {
@@ -427,20 +359,20 @@ p:not(:last-child) {
} }
.notice-box { .notice-box {
top: 0; top: 0;
background-color: var(--notfbox); background-color:var(--notfbox);
filter: brightness(110%); filter: brightness(110%);
position: relative; position: relative;
margin-right: 10px; margin-right: 10px;
width: 100%; width:100%;
min-height: 60px; min-height:60px;
z-index: 500; z-index:500;
padding: 5px; padding:5px;
display: grid; display: grid;
grid-template-columns: 40px 48px 1fr 24px; grid-template-columns: 40px 48px 1fr 24px;
grid-template-rows: 30px 30px; 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{
font-weight: bold; font-weight: bold;
text-decoration: underline; text-decoration: underline;
} }
@@ -451,9 +383,6 @@ p:not(:last-child) {
.area-notice_name { .area-notice_name {
grid-area: notice_name; grid-area: notice_name;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
} }
.area-notice_acct { .area-notice_acct {
@@ -505,86 +434,89 @@ p:not(:last-child) {
min-height: 100px; min-height: 100px;
max-height: 500px; max-height: 500px;
} }
.column-hide { .column-hide{
display: none; display:none;
overflow: hidden; overflow:hidden;
height: 0; height:0;
} }
.prof-img { .prof-img{
border-radius: 3px; border-radius: 3px;
} }
.notf-icon { .notf-icon{
position: relative; position: relative;
top: -20px; top: -20px;
width: 20px; width: 20px;
left: 20px; left: 20px;
} }
.notf-indv-box { .notf-indv-box {
width: 100%; width:100%;
max-height: 400px; max-height: 400px;
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
border: thin solid gray; border: thin solid gray;
border-bottom: 2px solid white; border-bottom: 2px solid white;
grid-area: notf-box; grid-area: notf-box;
box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 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 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;
} }
.type-b { #src-contents {
display: none; min-height: 100px;
max-height: 190px;
overflow-y: scroll;
} }
.modal-footer { .type-b{
display:none;
}
.modal-footer{
background-color:var(--box);
}
.ballons{
background-color: var(--box); background-color: var(--box);
position:absolute;
bottom:0px;
right:0px;
} }
.ballons { .toot a span.ellipsis:after{
background-color: var(--box); content:"...";
position: absolute;
bottom: 0px;
right: 0px;
} }
.toot a span.ellipsis:after { .toot a:not(.mention) span:last-of-type{
content: "..."; display:none;
} }
.toot a:not(.mention) span:last-of-type { .tl-box .via-hide{
/*display: none;*/ display:none;
} }
.tl-box .via-hide { .vote{
display: none;
}
.vote {
width: 100%; width: 100%;
border: 1px solid; border: 1px solid;
margin-top: 3px; margin-top: 3px;
padding: 1px; padding: 1px;
border-radius: 3px; border-radius: 3px;
} }
.fa-2x > .emoji-img { .fa-2x>.emoji-img {
width: 36px !important; width: 36px!important;
height: 36px !important; height: 36px!important
} }
.fa-3x > .emoji-img { .fa-3x>.emoji-img {
width: 54px !important; width: 54px!important;
height: 54px !important; height: 54px!important
} }
.fa-4x > .emoji-img { .fa-4x>.emoji-img {
width: 72px !important; width: 72px!important;
height: 72px !important; height: 72px!important
} }
.fa-5x > .emoji-img { .fa-5x>.emoji-img {
width: 90px !important; width: 90px!important;
height: 90px !important; height: 90px!important
} }
#lists-user { #lists-user{
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
max-height: 200px; 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: 50px; width: 50px;
padding: 2px; padding: 2px;
display: inline-block; display: inline-block;
@@ -593,73 +525,28 @@ p:not(:last-child) {
border-radius: 10px; border-radius: 10px;
transition-duration: 0.5s; transition-duration: 0.5s;
} }
.votebtn:hover { .votebtn:hover{
background-color: var(--color); background-color:var(--color);
} }
.jump { .jump{
display: inline-block; display: inline-block; animation: jump 0.75s linear infinite;
animation: jump 0.75s linear infinite;
}
.img-link {
position: relative;
display: block;
margin-right: 1px;
float: left;
overflow: hidden;
}
.nsfw-media {
position: absolute;
top: 0;
right: 0;
background-color: black;
color: white;
}
.img-link img {
display: block;
width: 100%;
height: 100%;
}
.shared.selectedToot {
background-color: var(--selectedWithShare);
}
.selectedToot {
background-color: var(--selected);
}
audio {
height: 2rem;
}
.translate {
white-space: normal;
}
.cw_btn {
margin: 3px;
background-color: var(--emphasized);
color: var(--color);
padding-left: 3px;
padding-right: 3px;
border-radius: 3px;
border: 1px solid var(--color);
}
.vis-data {
font-size: 1rem !important;
margin: 5px;
} }
@keyframes jump { @keyframes jump {
0% { 0% {
transform: translateY(0); transform: translateY(0);
} }
25% { 25% {
transform: translateY(-16px); transform: translateY(-16px);
} }
50% { 50% {
transform: translateY(0); transform: translateY(0);
} }
75% { 75% {
transform: translateY(-8px); transform: translateY(-8px);
} }
100% { 100% {
transform: translateY(0); transform: translateY(0);
} }
} }
@keyframes fadeInDown { @keyframes fadeInDown {
from { from {
@@ -696,3 +583,4 @@ audio {
animation-duration: 0.1s; animation-duration: 0.1s;
animation-name: fadeInDown; animation-name: fadeInDown;
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,126 +1,100 @@
/*アイコンをクリックした時とかにでてくるユーザーデータ*/ /*アイコンをクリックした時とかにでてくるユーザーデータ*/
#his-data { #his-data {
background-repeat: no-repeat; background-repeat: no-repeat;
background-image: url("../../loading.svg"); background-image: url('../../loading.svg');
overflow-y: hidden; overflow-y: hidden;
} }
#his-data-content { #his-name{
display: flex; font-size:1.5rem;
justify-content: center;
}
#his-name {
font-size: 1.5rem;
} }
#his-prof { #his-prof {
float: left; float: left;
width: 100px; width: 100px;
margin-right: 5px; margin-right:5px;
} }
.his-float { .his-float {
float: left;
overflow-y: scroll; overflow-y: scroll;
padding: 5px; padding: 5px;
} }
#his-float-data { #his-float-data{
width: 400px;
height: 100%; height: 100%;
} }
#his-leftside { #his-float-timeline{
width: 500px; width: calc(100% - 400px);
height:100%;
overflow-y:hidden;
} }
#his-float-timeline { #his-basic-prof{
max-width: 775px; min-height:130px;
height: 100%;
overflow-y: hidden;
} }
#his-basic-prof { #his-matching-list{
min-height: 130px;
}
#his-matching-list {
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
} }
#his-field { #his-field{
vertical-align: baseline; vertical-align: baseline;
text-align: center; text-align:center;
padding: 0; padding:0;
} }
#his-field tr { #his-field tr{
height: 1.5rem; height:1.5rem;
} }
.his-field-title { .his-field-title{
height: 1.5rem; height:1.5rem; padding:0; background-color:#757575; text-align:center;
padding: 0; padding:5px;
background-color: #757575; margin-bottom:1px;
text-align: center; width:30%;
padding: 5px;
margin-bottom: 1px;
width: 30%;
} }
.his-field-content { .his-field-content{
height: 1.5rem; height:1.5rem; padding:0; padding-left:5px;
padding: 0;
padding-left: 5px;
} }
#his-data a span.ellipsis:after { #his-data a span.ellipsis:after{
content: "..."; content:"...";
} }
#his-data a:not(.mention) span:last-of-type { #his-data a:not(.mention) span:last-of-type{
display: none; display:none;
}
#his-data a .rep_ct,
#his-data a .rt_ct,
#his-data a .fav_ct {
display: inline !important;
} }
#his-data-show { #his-data-show {
margin: 20px; margin: 20px;
margin-left: 50px; background-color:var(--his-data);
margin-right: 50px; width: calc(100% - 20px);
background-color: var(--his-data);
height: calc(100% - 20px); height: calc(100% - 20px);
margin-bottom: 0; margin-bottom: 0;
padding: 5px; padding: 5px;
} }
#his-data-wrap { .tab-content {
display: flex;
}
.his-var-content {
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
height: calc(100% - 45px); height: calc(100% - 240px)
} }
#my-data-nav .btn { .my-data-width {
width: 140px; width: 10%;
} }
.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: 20px; width: 20px;
} }
#his-plus-action .btn { #his-plus-action .btn{
width: 170px; width:170px
} }
.tabs { .custom-tabs{
display: flex; display:flex;
} }
.tabs .tab a { .custom-tabs .custom-tab a{
padding: 8px 12px; padding: 8px 12px;
} }
#his-des .mention { #his-des .mention{
color: #039be5; color: #039be5;
cursor: pointer; cursor: pointer;
} }
#his-float-blocked { #his-float-blocked{
display: flex; display:flex; justify-content: center; align-items:center;
justify-content: center; font-size:2rem;
align-items: center; width: 90%;
font-size: 2rem;
height: 100%; height: 100%;
} position: absolute;
#hisdropdown{
background-color: var(--bg);
}
#hisdropdown li:hover{
background-color: var(--active);
} }

View File

@@ -1,4 +0,0 @@
directories:
output: dist
buildResources: build
electronVersion: 1.4.13

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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"
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
<style type="text/css">
.st0{display:none;}
.st1{fill:#FFFFFF;}
.st2{fill:#545251;stroke:#040000;stroke-miterlimit:10;}
.st3{fill:#F0842E;}
.st4{fill:#364C9F;}
.st5{fill:#FFFFFF;stroke:#040000;stroke-miterlimit:10;}
.st6{fill-rule:evenodd;clip-rule:evenodd;fill:#040000;}
.st7{fill-rule:evenodd;clip-rule:evenodd;fill:none;}
</style>
<g id="レイヤー_1" class="st0">
</g>
<g id="レイヤー_2">
<polyline class="st1" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
<rect x="678.5" y="128.48" class="st2" width="450" height="3821.5"/>
<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"/>
<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"/>
<path class="st5" d="M714.5,2953.5"/>
<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>

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,35 +1,122 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
<style type="text/css">
.st0{display:none;}
.st1{fill:none;}
.st2{fill:#FFFFFF;}
.st3{fill:#FFFFFF;}
.st4{fill:#FFFFFF;}
.st5{fill:#none;}
.st6{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
.st7{fill-rule:evenodd;clip-rule:evenodd;fill:none;}
</style>
<g id="レイヤー_1" class="st0">
</g>
<g id="レイヤー_2">
<polyline class="st1" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
<rect x="678.5" y="128.48" class="st2" width="450" height="3821.5"/>
<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"/> <svg xmlns="http://www.w3.org/2000/svg"
width="7.11022in" height="7.11022in"
<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"/> viewBox="0 0 512 512">
<path class="st5" d="M714.5,2953.5"/> <path id="選択範囲 #1"
<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 fill="white" stroke="white" stroke-width="1"
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 d="M 96.00,16.00
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 99.85,16.01 102.39,15.12 104.00,19.00
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 104.00,19.00 97.00,19.00 97.00,19.00
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 97.00,19.00 108.00,22.07 108.00,22.07
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 108.00,22.07 144.00,43.08 144.00,43.08
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"/> 144.00,43.08 181.83,64.31 181.83,64.31
<rect class="st7" width="4096" height="4096"/> 181.83,64.31 223.00,88.26 223.00,88.26
<path class="st1" d="M-58,1122"/> 223.00,88.26 247.00,102.22 247.00,102.22
</g> 247.00,102.22 257.00,107.00 257.00,107.00
260.09,110.36 266.43,114.39 271.00,115.00
271.00,115.00 298.00,133.00 298.00,133.00
298.00,133.00 300.00,132.00 300.00,132.00
300.00,132.00 312.00,141.00 312.00,141.00
312.00,141.00 314.00,140.00 314.00,140.00
318.40,144.39 334.83,152.80 341.00,156.45
341.00,156.45 404.00,192.94 404.00,192.94
404.00,192.94 425.67,205.63 425.67,205.63
428.70,208.64 426.87,211.86 425.12,215.00
425.12,215.00 412.26,237.00 412.26,237.00
410.65,240.07 409.02,245.62 404.90,245.68
401.70,245.72 396.83,242.47 394.00,240.87
394.00,240.87 370.00,226.89 370.00,226.89
370.00,226.89 282.00,176.51 282.00,176.51
282.00,176.51 271.00,169.52 271.00,169.52
271.00,169.52 261.00,164.31 261.00,164.31
257.45,162.08 251.05,157.46 247.00,157.00
247.00,157.00 234.00,148.55 234.00,148.55
234.00,148.55 208.17,133.78 208.17,133.78
208.17,133.78 190.00,124.00 190.00,124.00
190.00,124.00 163.00,107.60 163.00,107.60
163.00,107.60 103.00,73.00 103.00,73.00
103.00,73.00 103.00,453.00 103.00,453.00
103.00,453.00 127.00,439.42 127.00,439.42
127.00,439.42 170.00,414.58 170.00,414.58
170.00,414.58 237.17,376.24 237.17,376.24
237.17,376.24 256.00,364.59 256.00,364.59
256.00,364.59 264.00,360.53 264.00,360.53
264.00,360.53 285.00,348.20 285.00,348.20
285.00,348.20 292.99,344.12 292.99,344.12
292.99,344.12 299.28,339.83 299.28,339.83
299.28,339.83 320.00,328.41 320.00,328.41
320.00,328.41 362.00,304.05 362.00,304.05
362.00,304.05 371.91,297.68 371.91,297.68
371.91,297.68 379.04,294.41 379.04,294.41
379.04,294.41 410.00,276.00 410.00,276.00
410.00,276.00 416.00,285.00 416.00,285.00
416.81,288.83 421.21,296.21 424.00,299.00
424.00,299.00 423.00,301.00 423.00,301.00
427.24,303.72 430.62,312.17 432.00,317.00
432.00,317.00 388.00,342.67 388.00,342.67
388.00,342.67 317.00,383.55 317.00,383.55
317.00,383.55 279.00,405.32 279.00,405.32
279.00,405.32 264.00,415.00 264.00,415.00
264.00,415.00 262.00,414.00 262.00,414.00
262.00,414.00 250.00,423.00 250.00,423.00
250.00,423.00 248.00,422.00 248.00,422.00
248.00,422.00 238.00,428.92 238.00,428.92
238.00,428.92 218.00,440.67 218.00,440.67
218.00,440.67 207.00,448.00 207.00,448.00
207.00,448.00 193.00,455.18 193.00,455.18
193.00,455.18 176.00,465.08 176.00,465.08
176.00,465.08 166.09,470.31 166.09,470.31
166.09,470.31 137.00,487.31 137.00,487.31
137.00,487.31 103.00,506.00 103.00,506.00
103.00,506.00 104.00,509.00 104.00,509.00
104.00,509.00 57.00,509.00 57.00,509.00
57.00,509.00 57.00,16.00 57.00,16.00
57.00,16.00 96.00,16.00 96.00,16.00 Z
M 102.00,72.00
C 102.00,72.00 103.00,73.00 103.00,73.00
103.00,73.00 103.00,72.00 103.00,72.00
103.00,72.00 102.00,72.00 102.00,72.00 Z
M 261.00,190.61
C 270.30,188.63 274.03,177.15 280.77,179.78
284.36,181.18 284.28,187.65 284.72,191.00
285.35,195.85 287.64,207.99 286.57,212.00
285.51,216.00 282.42,218.30 280.78,222.00
277.54,229.29 282.79,236.85 282.99,245.00
283.38,261.24 274.02,264.52 266.36,276.00
261.36,283.50 258.58,297.05 259.09,306.00
259.91,320.41 263.09,322.38 271.02,333.00
273.09,335.77 275.09,339.39 272.11,342.37
269.94,344.63 266.39,343.51 264.00,342.37
258.40,339.52 252.76,332.51 249.91,327.00
246.61,320.60 248.26,314.37 244.57,310.23
240.72,305.90 235.19,306.50 231.18,310.23
225.69,315.34 221.16,325.22 218.00,332.00
226.04,333.96 232.79,331.61 234.00,342.00
234.00,342.00 175.00,342.00 175.00,342.00
166.62,341.85 166.77,339.11 162.00,338.56
158.39,338.15 148.72,341.68 145.00,343.05
138.31,345.53 120.54,352.22 119.64,360.00
119.01,365.49 125.06,367.91 127.00,374.00
115.41,373.03 104.20,364.93 108.88,352.00
111.36,345.12 117.06,343.57 123.00,340.75
132.86,336.05 141.94,332.38 149.58,323.96
151.40,321.95 154.62,318.26 155.92,316.00
155.92,316.00 166.03,283.00 166.03,283.00
169.87,271.08 179.16,256.26 189.00,248.52
199.37,240.36 208.38,237.36 221.00,234.66
226.45,233.50 237.77,232.36 240.99,227.79
244.55,222.75 241.98,216.26 240.34,211.00
237.46,201.77 234.64,193.69 237.00,184.00
244.82,185.47 252.94,192.32 261.00,190.61 Z
M 102.00,453.00
C 102.00,453.00 103.00,454.00 103.00,454.00
103.00,454.00 103.00,453.00 103.00,453.00
103.00,453.00 102.00,453.00 102.00,453.00 Z
M 102.00,505.00
C 102.00,505.00 103.00,506.00 103.00,506.00
103.00,506.00 103.00,505.00 103.00,505.00
103.00,505.00 102.00,505.00 102.00,505.00 Z" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

BIN
app/img/osushi_qr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

BIN
app/img/sticker.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -1,132 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 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"
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
<style type="text/css">
.st0{fill:#040000;}
.st1{fill:#040000;stroke:#040000;stroke-miterlimit:10;}
.st2{clip-path:url(#SVGID_2_);}
.st3{clip-path:url(#SVGID_4_);}
.st4{fill:none;}
.st5{fill:#FFFFFF;}
.st6{fill:#545251;stroke:#040000;stroke-miterlimit:10;}
.st7{fill:#F0842E;}
.st8{fill:#3D4FA0;}
.st9{fill:#63451F;stroke:#FFFFFF;stroke-width:20;stroke-miterlimit:10;}
.st10{fill:#63451F;}
</style>
<g id="DrawBlack">
<polyline id="BG_1_" class="st0" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
<rect id="Left_1_" x="678.5" y="128.48" class="st1" width="450" height="3821.5"/>
<rect id="Top_1_" x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st0" width="450" height="3117.62"/>
<g id="Finger_1_">
<g>
<defs>
<rect id="SVGID_1_" x="-626.54" y="666.18" transform="matrix(0.9063 -0.4226 0.4226 0.9063 -723.8983 1097.2598)" width="5478.6" height="3030.2"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
</clipPath>
<g id="g14_3_" class="st2">
<g id="g44_1_" transform="translate(17.2764,0.8682)">
<path id="path46_1_" class="st0" d="M2605.11,3533.86c0,0,159.85-112.71,149-195.05c-10.68-85.2-127.58-48.89-127.58-48.89
s136.18-82.82,112.7-180.35c-22.17-91.83-167.38-48.54-167.38-48.54s119.56-92.9,85.39-182.75
c-28.87-75.6-188.03-44.94-188.03-44.94s651.47-417.09,718.51-459.5c66.86-42.42,160.29-131.95,87.28-198.12
c-72.76-66.37-205.83-7.85-269.88,32.69c-64.01,40.62-874.42,553.28-1153.93,730.24c-29.84,18.84-169.66,107.16-186.59,118.03
c-69.96,44.42-112.22,42.02-74.07-13.01c51.14-73.63,74.73-139.7,55.45-222.1c-20.44-86.69-114.31-161.6-159.65-186.44
c-84.35-46.21-197.27-61.16-306.71-33.34c-170.83,43.44-256.98,149.65-157.15,218.26c149.29,102.66,148.88,244.02,37.82,381.07
c-261.05,322.06-363.57,512.7-142.28,713.95c241.24,219.53,812.72,166.75,1276.35-126.35
C2218.92,3773.38,2605.11,3533.86,2605.11,3533.86"/>
</g>
</g>
</g>
</g>
<g id="Eyes_1_">
<g>
<defs>
<rect id="SVGID_3_" x="95.01" y="544.01" width="3526.99" height="3526.99"/>
</defs>
<clipPath id="SVGID_4_">
<use xlink:href="#SVGID_3_" style="overflow:visible;"/>
</clipPath>
<g id="g14_2_" class="st3">
<g id="g24_1_" transform="translate(15.4063,25.5)">
<path id="path26_1_" class="st0" d="M1588.99,1547.21c0,135.3-87.78,244.93-195.94,244.93
c-108.16,0-195.94-109.63-195.94-244.93c0-135.2,87.78-244.93,195.94-244.93C1501.21,1302.28,1588.99,1412.01,1588.99,1547.21"
/>
</g>
<g id="g32_1_" transform="translate(9.6709,29.667)">
<path id="path34_1_" class="st0" d="M1032.82,1134.8c-16.07-8.52-29.69-21.85-38.31-38.99c-21.16-42.03-3.92-90.82,38.5-109.04
c417.95-179.29,754.29-4.21,768.39,3.33c42.42,22.63,59.57,73.28,38.31,113.06c-21.16,39.68-72.5,53.49-114.92,31.16
c-12.05-6.27-277.46-140.3-615.07,4.6C1084.54,1149.59,1056.13,1147.24,1032.82,1134.8"/>
</g>
<g id="g36_1_" transform="translate(14.7427,16.4277)">
<path id="path38_1_" class="st0" d="M1524.64,2445.12c-13.32-12.44-23.12-28.71-27.04-47.61c-9.7-45.95,19.4-88.76,65.15-95.42
c449.89-66.43,730.09,188.99,741.94,199.86c35.27,32.72,38.7,85.92,8.03,119.04c-30.57,32.92-83.77,33.11-118.94,0.59
c-10.19-9.01-232.39-206.52-595.87-152.93C1570.78,2472.65,1543.94,2463.15,1524.64,2445.12"/>
</g>
<g id="g40_1_" transform="translate(20.4307,25.917)">
<path id="path42_1_" class="st0" d="M2076.21,1505.94c-15.28-9.6-28.02-23.81-35.47-41.54c-18.32-43.3,2.25-90.92,45.75-106.2
c429.22-150.48,752.91,47.03,766.53,55.55c40.66,25.47,54.28,77.1,30.47,115.41c-23.71,38.21-76.03,48.5-116.68,23.32
c-11.76-7.15-267.27-158.81-613.99-37.23C2126.96,1524.26,2098.75,1519.95,2076.21,1505.94"/>
</g>
<g id="g28_1_" transform="translate(26,24.5)">
<path id="path30_1_" class="st0" d="M2616.28,1646.19c0,135.3-87.69,244.93-195.94,244.93
c-108.16,0-195.94-109.63-195.94-244.93c0-135.2,87.78-244.93,195.94-244.93C2528.6,1401.26,2616.28,1510.99,2616.28,1646.19"
/>
</g>
</g>
</g>
</g>
</g>
<g id="Path">
<path id="CutLine" class="st4" d="M528,128C532-14,669,0,669,0h346l2629,1464c0,0,78,34,28,108s-217,359-217,359s-22,9,9,226
s-204,313-204,313l-545,356c0,0,421.37,492.67,29.68,732.33S1798,4056,1798,4056s28.13,15-290.94,15s-828.56,0-828.56,0
S531,4102,528,3904S528,128,528,128z"/>
</g>
<g id="Draw">
<polyline id="BG" class="st5" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
<rect id="Left" x="678.5" y="128.48" class="st6" width="450" height="3821.5"/>
<rect id="Top" x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st7" width="450" height="3117.62"/>
<g id="Finger">
<g id="g44" transform="translate(17.2764,0.8682)">
<path id="path46" class="st8" d="M2605.11,3533.86c0,0,159.85-112.71,149-195.05c-10.68-85.2-127.58-48.89-127.58-48.89
s136.18-82.82,112.7-180.35c-22.17-91.83-167.38-48.54-167.38-48.54s119.56-92.9,85.39-182.75
c-28.87-75.6-188.03-44.94-188.03-44.94s651.47-417.09,718.51-459.5c66.86-42.42,160.29-131.95,87.28-198.12
c-72.76-66.37-205.83-7.85-269.88,32.69c-64.01,40.62-874.42,553.28-1153.93,730.24c-29.84,18.84-169.66,107.16-186.59,118.03
c-69.96,44.42-112.22,42.02-74.07-13.01c51.14-73.63,74.73-139.7,55.45-222.1c-20.44-86.69-114.31-161.6-159.65-186.44
c-84.35-46.21-197.27-61.16-306.71-33.34c-170.83,43.44-256.98,149.65-157.15,218.26c149.29,102.66,148.88,244.02,37.82,381.07
c-261.05,322.06-363.57,512.7-142.28,713.95c241.24,219.53,812.72,166.75,1276.35-126.35
C2218.92,3773.38,2605.11,3533.86,2605.11,3533.86"/>
</g>
</g>
<g id="Eyes">
<g id="g24" transform="translate(15.4063,25.5)">
<path id="path26" class="st9" d="M1588.99,1547.21c0,135.3-87.78,244.93-195.94,244.93c-108.16,0-195.94-109.63-195.94-244.93
c0-135.2,87.78-244.93,195.94-244.93C1501.21,1302.28,1588.99,1412.01,1588.99,1547.21"/>
</g>
<g id="g32" transform="translate(9.6709,29.667)">
<path id="path34" class="st9" d="M1032.82,1134.8c-16.07-8.52-29.69-21.85-38.31-38.99c-21.16-42.03-3.92-90.82,38.5-109.04
c417.95-179.29,754.29-4.21,768.39,3.33c42.42,22.63,59.57,73.28,38.31,113.06c-21.16,39.68-72.5,53.49-114.92,31.16
c-12.05-6.27-277.46-140.3-615.07,4.6C1084.54,1149.59,1056.13,1147.24,1032.82,1134.8"/>
</g>
<g id="g36" transform="translate(14.7427,16.4277)">
<path id="path38" class="st9" d="M1524.64,2445.12c-13.32-12.44-23.12-28.71-27.04-47.61c-9.7-45.95,19.4-88.76,65.15-95.42
c449.89-66.43,730.09,188.99,741.94,199.86c35.27,32.72,38.7,85.92,8.03,119.04c-30.57,32.92-83.77,33.11-118.94,0.59
c-10.19-9.01-232.39-206.52-595.87-152.93C1570.78,2472.65,1543.94,2463.15,1524.64,2445.12"/>
</g>
<g id="g40" transform="translate(20.4307,25.917)">
<path id="path42" class="st9" d="M2076.21,1505.94c-15.28-9.6-28.02-23.81-35.47-41.54c-18.32-43.3,2.25-90.92,45.75-106.2
c429.22-150.48,752.91,47.03,766.53,55.55c40.66,25.47,54.28,77.1,30.47,115.41c-23.71,38.21-76.03,48.5-116.68,23.32
c-11.76-7.15-267.27-158.81-613.99-37.23C2126.96,1524.26,2098.75,1519.95,2076.21,1505.94"/>
</g>
<g id="g28" transform="translate(26,24.5)">
<path id="path30" class="st10" d="M2616.28,1646.19c0,135.3-87.69,244.93-195.94,244.93c-108.16,0-195.94-109.63-195.94-244.93
c0-135.2,87.78-244.93,195.94-244.93C2528.6,1401.26,2616.28,1510.99,2616.28,1646.19"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.6 KiB

View File

@@ -1,4 +1,6 @@
//このソフトについて //このソフトについて
function about() { function about() {
postMessage(["sendSinmpleIpc", "about"], "*") var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('about', 'go');
} }

View File

@@ -1,119 +0,0 @@
var digitCharacters = [
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d",
"e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
"o", "p", "q", "r", "s", "t", "u", "v", "w", "x",
"y", "z", "#", "$", "%", "*", "+", ",", "-", ".",
":", ";", "=", "?", "@", "[", "]", "^", "_", "{",
"|", "}", "~",
];
function decode83(str) {
var value = 0;
for (var i = 0; i < str.length; i++) {
var c = str[i];
var digit = digitCharacters.indexOf(c);
value = value * 83 + digit;
}
return value;
}
function linearTosRGB(value) {
var v = Math.max(0, Math.min(1, value));
if (v <= 0.0031308) {
return Math.round(v * 12.92 * 255 + 0.5);
}
else {
return Math.round((1.055 * Math.pow(v, 1 / 2.4) - 0.055) * 255 + 0.5);
}
}
function sRGBToLinear(value) {
var v = value / 255;
if (v <= 0.04045) {
return v / 12.92;
}
else {
return Math.pow((v + 0.055) / 1.055, 2.4);
}
}
function decodeDC(value) {
var intR = value >> 16;
var intG = (value >> 8) & 255;
var intB = value & 255;
return [sRGBToLinear(intR), sRGBToLinear(intG), sRGBToLinear(intB)];
};
function sign(n) { return (n < 0 ? -1 : 1); }
function signPow(val, exp) { return sign(val) * Math.pow(Math.abs(val), exp); }
function decodeDC2(value, maximumValue) {
var quantR = Math.floor(value / (19 * 19));
var quantG = Math.floor(value / 19) % 19;
var quantB = value % 19;
var rgb = [
signPow((quantR - 9) / 9, 2.0) * maximumValue,
signPow((quantG - 9) / 9, 2.0) * maximumValue,
signPow((quantB - 9) / 9, 2.0) * maximumValue,
];
return rgb;
};
function decodeblur(blurhash, width, height, punch) {
punch = punch | 1;
if (blurhash.length < 6) {
console.error('too short blurhash');
return null;
}
var sizeFlag = decode83(blurhash[0]);
var numY = Math.floor(sizeFlag / 9) + 1;
var numX = (sizeFlag % 9) + 1;
var quantisedMaximumValue = decode83(blurhash[1]);
var maximumValue = (quantisedMaximumValue + 1) / 166;
if (blurhash.length !== 4 + 2 * numX * numY) {
console.error('blurhash length mismatch', blurhash.length, 4 + 2 * numX * numY);
return null;
}
var colors = new Array(numX * numY);
for (var i = 0; i < colors.length; i++) {
if (i === 0) {
var value = decode83(blurhash.substring(2, 6));
colors[i] = decodeDC(value);
}
else {
var value = decode83(blurhash.substring(4 + i * 2, 6 + i * 2));
colors[i] = decodeDC2(value, maximumValue * punch);
}
}
var bytesPerRow = width * 4;
var pixels = new Uint8ClampedArray(bytesPerRow * height);
for (var y = 0; y < height; y++) {
for (var x = 0; x < width; x++) {
var r = 0;
var g = 0;
var b = 0;
for (var j = 0; j < numY; j++) {
for (var i = 0; i < numX; i++) {
var basis = Math.cos(Math.PI * x * i / width) * Math.cos(Math.PI * y * j / height);
var color = colors[i + j * numX];
r += color[0] * basis;
g += color[1] * basis;
b += color[2] * basis;
}
}
var intR = linearTosRGB(r);
var intG = linearTosRGB(g);
var intB = linearTosRGB(b);
pixels[4 * x + 0 + y * bytesPerRow] = intR;
pixels[4 * x + 1 + y * bytesPerRow] = intG;
pixels[4 * x + 2 + y * bytesPerRow] = intB;
pixels[4 * x + 3 + y * bytesPerRow] = 255; // alpha
}
}
return pixels;
}
function parseBlur(blur) {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var pixels = decodeblur(blur, 32, 32)
const imageData = new ImageData(pixels, 32, 32);
ctx.putImageData(imageData, 0, 0);
return canvas.toDataURL()
}

4
app/js/common/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,18 +1,16 @@
selectedColumn = 0 $(function($) {
selectedToot = 0
$(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;
} }
//Ctrl+Shift+Enter:Lgen //Ctrl+Shift+Enter:Lgen
if (event.metaKey || event.ctrlKey && wv) { if (event.metaKey || event.ctrlKey && wv) {
@@ -22,6 +20,7 @@ $(function ($) {
return false; return false;
} }
} }
} }
//Ctrl+Enter:投稿 //Ctrl+Enter:投稿
if (event.metaKey || event.ctrlKey && wv) { if (event.metaKey || event.ctrlKey && wv) {
@@ -37,6 +36,14 @@ $(function ($) {
return false; return false;
} }
} }
//Shift+Space:Markdownゼロ幅スペース
if (event.shiftKey) {
if (e.keyCode === 32) {
brInsert("");
return false;
}
}
//Esc:消す //Esc:消す
if (e.keyCode === 27 && wv) { if (e.keyCode === 27 && wv) {
hide(); hide();
@@ -47,8 +54,16 @@ $(function ($) {
location.href = "index.html"; location.href = "index.html";
return false; return false;
} }
//Ctrl+R:ランキング
if ((event.metaKey || event.ctrlKey) && wv) {
if (e.keyCode === 82) {
if(localStorage.getItem("kirishima")){
window.open("https://astarte.thedesk.top");
}
}
}
//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;
@@ -63,8 +78,8 @@ $(function ($) {
} }
} }
//input/textareaにフォーカスなし時 //input/textareaにフォーカスなし時
if ((!hasFocus && !hasFocus2) && wv) { if ((!hasFocus && !hasFocus2 ) && wv) {
if (!wv) { if(!wv){
return true; return true;
} }
//Ctrl+V:いつもの //Ctrl+V:いつもの
@@ -120,7 +135,7 @@ $(function ($) {
} }
} }
//Ctrl+Sift+P:プロフ //Ctrl+Sift+P:プロフ
if ((event.metaKey || event.ctrlKey) && event.shiftKey) { if ((event.ctrlKey) && event.shiftKey) {
if (e.keyCode === 80) { if (e.keyCode === 80) {
profShow() profShow()
return false; return false;
@@ -128,120 +143,62 @@ $(function ($) {
} }
//数字: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;
}
}
//矢印:選択
if (e.code == "ArrowLeft") {
//left
if ($("#imagemodal").hasClass("open")) {
imgCont('prev');
return false;
}
if (selectedColumn > 0) {
selectedColumn--
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowUp") {
//up
if ($("#imagemodal").hasClass("open")) {
return false;
}
if (selectedToot > 0) {
selectedToot--
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowRight") {
//right
if ($("#imagemodal").hasClass("open")) {
imgCont('next');
return false;
}
if (selectedColumn < $(".tl-box").length - 1) {
selectedColumn++
}
tootSelector(selectedColumn, selectedToot)
return false;
} else if (e.code == "ArrowDown") {
//down
if ($("#imagemodal").hasClass("open")) {
return false;
}
selectedToot++
tootSelector(selectedColumn, selectedToot)
return false; return false;
} }
//Ctrl+U:0,0選択
if (event.ctrlKey || event.metaKey) {
if (e.keyCode === 85) {
selectedToot = 0
selectedColumn = 0
tootSelector(0, 0)
return false;
}
}
//選択時
if (e.keyCode == 70) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
fav(id, acct_id, false)
return false;
}
if (e.keyCode == 66) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
rt(id, acct_id, false)
return false;
}
if (e.keyCode == 82) {
var id = $(".selectedToot").attr('unique-id')
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
var ats_cm = $('.selectedToot .rep-btn').attr("data-men")
var mode = $('.selectedToot .rep-btn').attr("data-visen")
re(id, ats_cm, acct_id, mode)
return false;
} }
} }
//textareaフォーカス時 //textareaフォーカス時
if (hasFocus2 && wv) { if (hasFocus2 && wv) {
if (event.metaKey || event.ctrlKey) { if (event.metaKey || event.ctrlKey) {
//Ctrl+B:太字
if (e.keyCode === 66) {
tagsel('b');
return false;
}
//Ctrl+I:斜字
if (e.keyCode === 73) {
tagsel('i');
return false;
}
//Ctrl+U:下線
if (e.keyCode === 85) {
tagsel('u');
return false;
}
//Ctrl+S:取り消し線
if (e.keyCode === 83) {
tagsel('s');
return false;
}
//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)) { $("#textarea").val($("#textarea").val() + localStorage.getItem("oks-" + no)) } if(localStorage.getItem("oks-"+no)){$("#textarea").val($("#textarea").val()+localStorage.getItem("oks-"+no))}
return false; return false;
} }
} }
} }
} }
//イメージビューワー切り替え
if (e.keyCode === 37 &&wv) {
if ($("#imagemodal").hasClass("open")) {
imgCont('prev');
return false;
}
}
if (e.keyCode === 39 && wv) {
if ($("#imagemodal").hasClass("open")) {
imgCont('next');
return false;
}
}
}); });
//クリアボタン //クリアボタン
$("#clear").click(function () { $("#clear").click(function() {
clear(); clear();
}); });
}); });
//選択する
function tootSelector(column, toot) {
$('.cvo').removeClass("selectedToot")
$('#timeline_' + column + ' .cvo').eq(toot).addClass("selectedToot")
var scr = $('.tl-box[tlid=' + column + ']').scrollTop()
var elem = $('.selectedToot').offset().top
var top = elem - $('.tl-box').height() + scr
if (top > 0) {
top = top + $('.selectedToot').height()
if (top > scr) {
$('.tl-box[tlid=' + column + ']').animate({ scrollTop: top })
}
} else if (elem < 0) {
var to = scr + elem - $('.selectedToot').height()
if (to < scr) {
$('.tl-box[tlid=' + column + ']').animate({ scrollTop: to })
}
}
}

10022
app/js/common/materialize.js vendored Normal file

File diff suppressed because it is too large Load Diff

6
app/js/common/materialize.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,26 +1,17 @@
//モーダル・ドロップダウンの各種設定 //モーダル・ドロップダウンの各種設定
$(document).ready(function () { $(document).ready(function(){
// the "href" attribute of the modal trigger must specify the modal ID that wants to be triggered // the "href" attribute of the modal trigger must specify the modal ID that wants to be triggered
$('.modal').modal({ $('.modal').modal();
inDuration: 300, $('.dropdown-button').dropdown({
outDuration: 225, inDuration: 300,
constrainWidth: false, // Does not change width of dropdown to that of the activator outDuration: 225,
hover: false, // Activate on hover constrainWidth: false, // Does not change width of dropdown to that of the activator
gutter: 0, // Spacing from edge hover: false, // Activate on hover
belowOrigin: false, // Displays dropdown below the button gutter: 0, // Spacing from edge
alignment: 'left', // Displays dropdown with edge aligned to the left of button belowOrigin: false, // Displays dropdown below the button
stopPropagation: false alignment: 'left', // Displays dropdown with edge aligned to the left of button
}); stopPropagation: false // Stops event propagation
$('.dropdown-trigger').dropdown({ }
inDuration: 300,
outDuration: 225,
constrainWidth: false, // Does not change width of dropdown to that of the activator
hover: false, // Activate on hover
gutter: 0, // Spacing from edge
belowOrigin: false, // Displays dropdown below the button
alignment: 'left', // Displays dropdown with edge aligned to the left of button
stopPropagation: false // Stops event propagation
}
); );
$('.collapsible').collapsible();
}); });

View File

@@ -1,96 +1,33 @@
var sha256 = function sha256(ascii) { /*
function rightRotate(value, amount) { A JavaScript implementation of the SHA family of hashes, as
return (value >>> amount) | (value << (32 - amount)); defined in FIPS PUB 180-4 and FIPS PUB 202, as well as the corresponding
}; HMAC implementation as defined in FIPS PUB 198a
var mathPow = Math.pow; Copyright 2008-2018 Brian Turek, 1998-2009 Paul Johnston & Contributors
var maxWord = mathPow(2, 32); Distributed under the BSD License
var lengthProperty = 'length' See http://caligatio.github.com/jsSHA/ for more information
var i, j; // Used as a counter across the whole file */
var result = '' 'use strict';(function(I){function w(c,a,d){var l=0,b=[],g=0,f,n,k,e,h,q,y,p,m=!1,t=[],r=[],u,z=!1;d=d||{};f=d.encoding||"UTF8";u=d.numRounds||1;if(u!==parseInt(u,10)||1>u)throw Error("numRounds must a integer >= 1");if(0===c.lastIndexOf("SHA-",0))if(q=function(b,a){return A(b,a,c)},y=function(b,a,l,f){var g,e;if("SHA-224"===c||"SHA-256"===c)g=(a+65>>>9<<4)+15,e=16;else throw Error("Unexpected error in SHA-2 implementation");for(;b.length<=g;)b.push(0);b[a>>>5]|=128<<24-a%32;a=a+l;b[g]=a&4294967295;
b[g-1]=a/4294967296|0;l=b.length;for(a=0;a<l;a+=e)f=A(b.slice(a,a+e),f,c);if("SHA-224"===c)b=[f[0],f[1],f[2],f[3],f[4],f[5],f[6]];else if("SHA-256"===c)b=f;else throw Error("Unexpected error in SHA-2 implementation");return b},p=function(b){return b.slice()},"SHA-224"===c)h=512,e=224;else if("SHA-256"===c)h=512,e=256;else throw Error("Chosen SHA variant is not supported");else throw Error("Chosen SHA variant is not supported");k=B(a,f);n=x(c);this.setHMACKey=function(b,a,g){var e;if(!0===m)throw Error("HMAC key already set");
var words = []; if(!0===z)throw Error("Cannot set HMAC key after calling update");f=(g||{}).encoding||"UTF8";a=B(a,f)(b);b=a.binLen;a=a.value;e=h>>>3;g=e/4-1;if(e<b/8){for(a=y(a,b,0,x(c));a.length<=g;)a.push(0);a[g]&=4294967040}else if(e>b/8){for(;a.length<=g;)a.push(0);a[g]&=4294967040}for(b=0;b<=g;b+=1)t[b]=a[b]^909522486,r[b]=a[b]^1549556828;n=q(t,n);l=h;m=!0};this.update=function(a){var c,f,e,d=0,p=h>>>5;c=k(a,b,g);a=c.binLen;f=c.value;c=a>>>5;for(e=0;e<c;e+=p)d+h<=a&&(n=q(f.slice(e,e+p),n),d+=h);l+=d;b=f.slice(d>>>
var asciiBitLength = ascii[lengthProperty] * 8; 5);g=a%h;z=!0};this.getHash=function(a,f){var d,h,k,q;if(!0===m)throw Error("Cannot call getHash after setting HMAC key");k=C(f);switch(a){case "HEX":d=function(a){return D(a,e,k)};break;case "B64":d=function(a){return E(a,e,k)};break;case "BYTES":d=function(a){return F(a,e)};break;case "ARRAYBUFFER":try{h=new ArrayBuffer(0)}catch(v){throw Error("ARRAYBUFFER not supported by this environment");}d=function(a){return G(a,e)};break;default:throw Error("format must be HEX, B64, BYTES, or ARRAYBUFFER");
}q=y(b.slice(),g,l,p(n));for(h=1;h<u;h+=1)q=y(q,e,0,x(c));return d(q)};this.getHMAC=function(a,f){var d,k,t,u;if(!1===m)throw Error("Cannot call getHMAC without first setting HMAC key");t=C(f);switch(a){case "HEX":d=function(a){return D(a,e,t)};break;case "B64":d=function(a){return E(a,e,t)};break;case "BYTES":d=function(a){return F(a,e)};break;case "ARRAYBUFFER":try{d=new ArrayBuffer(0)}catch(v){throw Error("ARRAYBUFFER not supported by this environment");}d=function(a){return G(a,e)};break;default:throw Error("outputFormat must be HEX, B64, BYTES, or ARRAYBUFFER");
//* caching results is optional - remove/add slash from front of this line to toggle }k=y(b.slice(),g,l,p(n));u=q(r,x(c));u=y(k,e,h,u);return d(u)}}function m(){}function D(c,a,d){var l="";a/=8;var b,g;for(b=0;b<a;b+=1)g=c[b>>>2]>>>8*(3+b%4*-1),l+="0123456789abcdef".charAt(g>>>4&15)+"0123456789abcdef".charAt(g&15);return d.outputUpper?l.toUpperCase():l}function E(c,a,d){var l="",b=a/8,g,f,n;for(g=0;g<b;g+=3)for(f=g+1<b?c[g+1>>>2]:0,n=g+2<b?c[g+2>>>2]:0,n=(c[g>>>2]>>>8*(3+g%4*-1)&255)<<16|(f>>>8*(3+(g+1)%4*-1)&255)<<8|n>>>8*(3+(g+2)%4*-1)&255,f=0;4>f;f+=1)8*g+6*f<=a?l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(n>>>
// Initial hash value: first 32 bits of the fractional parts of the square roots of the first 8 primes 6*(3-f)&63):l+=d.b64Pad;return l}function F(c,a){var d="",l=a/8,b,g;for(b=0;b<l;b+=1)g=c[b>>>2]>>>8*(3+b%4*-1)&255,d+=String.fromCharCode(g);return d}function G(c,a){var d=a/8,l,b=new ArrayBuffer(d),g;g=new Uint8Array(b);for(l=0;l<d;l+=1)g[l]=c[l>>>2]>>>8*(3+l%4*-1)&255;return b}function C(c){var a={outputUpper:!1,b64Pad:"=",shakeLen:-1};c=c||{};a.outputUpper=c.outputUpper||!1;!0===c.hasOwnProperty("b64Pad")&&(a.b64Pad=c.b64Pad);if("boolean"!==typeof a.outputUpper)throw Error("Invalid outputUpper formatting option");
// (we actually calculate the first 64, but extra values are just ignored) if("string"!==typeof a.b64Pad)throw Error("Invalid b64Pad formatting option");return a}function B(c,a){var d;switch(a){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch(c){case "HEX":d=function(a,b,c){var f=a.length,d,k,e,h,q;if(0!==f%2)throw Error("String of HEX type must be in byte increments");b=b||[0];c=c||0;q=c>>>3;for(d=0;d<f;d+=2){k=parseInt(a.substr(d,2),16);if(isNaN(k))throw Error("String of HEX type contains invalid characters");
var hash = sha256.h = sha256.h || []; h=(d>>>1)+q;for(e=h>>>2;b.length<=e;)b.push(0);b[e]|=k<<8*(3+h%4*-1)}return{value:b,binLen:4*f+c}};break;case "TEXT":d=function(c,b,d){var f,n,k=0,e,h,q,m,p,r;b=b||[0];d=d||0;q=d>>>3;if("UTF8"===a)for(r=3,e=0;e<c.length;e+=1)for(f=c.charCodeAt(e),n=[],128>f?n.push(f):2048>f?(n.push(192|f>>>6),n.push(128|f&63)):55296>f||57344<=f?n.push(224|f>>>12,128|f>>>6&63,128|f&63):(e+=1,f=65536+((f&1023)<<10|c.charCodeAt(e)&1023),n.push(240|f>>>18,128|f>>>12&63,128|f>>>6&63,128|f&63)),h=0;h<n.length;h+=1){p=k+
// Round constants: first 32 bits of the fractional parts of the cube roots of the first 64 primes q;for(m=p>>>2;b.length<=m;)b.push(0);b[m]|=n[h]<<8*(r+p%4*-1);k+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(r=2,n="UTF16LE"===a&&!0||"UTF16LE"!==a&&!1,e=0;e<c.length;e+=1){f=c.charCodeAt(e);!0===n&&(h=f&255,f=h<<8|f>>>8);p=k+q;for(m=p>>>2;b.length<=m;)b.push(0);b[m]|=f<<8*(r+p%4*-1);k+=2}return{value:b,binLen:8*k+d}};break;case "B64":d=function(a,b,c){var f=0,d,k,e,h,q,m,p;if(-1===a.search(/^[a-zA-Z0-9=+\/]+$/))throw Error("Invalid character in base-64 string");k=a.indexOf("=");a=a.replace(/\=/g,
var k = sha256.k = sha256.k || []; "");if(-1!==k&&k<a.length)throw Error("Invalid '=' found in base-64 string");b=b||[0];c=c||0;m=c>>>3;for(k=0;k<a.length;k+=4){q=a.substr(k,4);for(e=h=0;e<q.length;e+=1)d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(q[e]),h|=d<<18-6*e;for(e=0;e<q.length-1;e+=1){p=f+m;for(d=p>>>2;b.length<=d;)b.push(0);b[d]|=(h>>>16-8*e&255)<<8*(3+p%4*-1);f+=1}}return{value:b,binLen:8*f+c}};break;case "BYTES":d=function(a,b,c){var d,n,k,e,h;b=b||[0];c=c||0;k=c>>>3;for(n=0;n<a.length;n+=
var primeCounter = k[lengthProperty]; 1)d=a.charCodeAt(n),h=n+k,e=h>>>2,b.length<=e&&b.push(0),b[e]|=d<<8*(3+h%4*-1);return{value:b,binLen:8*a.length+c}};break;case "ARRAYBUFFER":try{d=new ArrayBuffer(0)}catch(l){throw Error("ARRAYBUFFER not supported by this environment");}d=function(a,b,c){var d,n,k,e,h;b=b||[0];c=c||0;n=c>>>3;h=new Uint8Array(a);for(d=0;d<a.byteLength;d+=1)e=d+n,k=e>>>2,b.length<=k&&b.push(0),b[k]|=h[d]<<8*(3+e%4*-1);return{value:b,binLen:8*a.byteLength+c}};break;default:throw Error("format must be HEX, TEXT, B64, BYTES, or ARRAYBUFFER");
/*/ }return d}function r(c,a){return c>>>a|c<<32-a}function J(c,a,d){return c&a^~c&d}function K(c,a,d){return c&a^c&d^a&d}function L(c){return r(c,2)^r(c,13)^r(c,22)}function M(c){return r(c,6)^r(c,11)^r(c,25)}function N(c){return r(c,7)^r(c,18)^c>>>3}function O(c){return r(c,17)^r(c,19)^c>>>10}function P(c,a){var d=(c&65535)+(a&65535);return((c>>>16)+(a>>>16)+(d>>>16)&65535)<<16|d&65535}function Q(c,a,d,l){var b=(c&65535)+(a&65535)+(d&65535)+(l&65535);return((c>>>16)+(a>>>16)+(d>>>16)+(l>>>16)+(b>>>
var hash = [], k = []; 16)&65535)<<16|b&65535}function R(c,a,d,l,b){var g=(c&65535)+(a&65535)+(d&65535)+(l&65535)+(b&65535);return((c>>>16)+(a>>>16)+(d>>>16)+(l>>>16)+(b>>>16)+(g>>>16)&65535)<<16|g&65535}function x(c){var a=[],d;if(0===c.lastIndexOf("SHA-",0))switch(a=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428],d=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],c){case "SHA-224":break;case "SHA-256":a=d;break;case "SHA-384":a=[new m,new m,
var primeCounter = 0; new m,new m,new m,new m,new m,new m];break;case "SHA-512":a=[new m,new m,new m,new m,new m,new m,new m,new m];break;default:throw Error("Unknown SHA variant");}else throw Error("No SHA variants supported");return a}function A(c,a,d){var l,b,g,f,n,k,e,h,m,r,p,w,t,x,u,z,A,B,C,D,E,F,v=[],G;if("SHA-224"===d||"SHA-256"===d)r=64,w=1,F=Number,t=P,x=Q,u=R,z=N,A=O,B=L,C=M,E=K,D=J,G=H;else throw Error("Unexpected error in SHA-2 implementation");d=a[0];l=a[1];b=a[2];g=a[3];f=a[4];n=a[5];k=a[6];e=a[7];for(p=
//*/ 0;p<r;p+=1)16>p?(m=p*w,h=c.length<=m?0:c[m],m=c.length<=m+1?0:c[m+1],v[p]=new F(h,m)):v[p]=x(A(v[p-2]),v[p-7],z(v[p-15]),v[p-16]),h=u(e,C(f),D(f,n,k),G[p],v[p]),m=t(B(d),E(d,l,b)),e=k,k=n,n=f,f=t(g,h),g=b,b=l,l=d,d=t(h,m);a[0]=t(d,a[0]);a[1]=t(l,a[1]);a[2]=t(b,a[2]);a[3]=t(g,a[3]);a[4]=t(f,a[4]);a[5]=t(n,a[5]);a[6]=t(k,a[6]);a[7]=t(e,a[7]);return a}var H;H=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,
2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,
var isComposite = {}; 2756734187,3204031479,3329325298];"function"===typeof define&&define.amd?define(function(){return w}):"undefined"!==typeof exports?("undefined"!==typeof module&&module.exports&&(module.exports=w),exports=w):I.jsSHA=w})(this);
for (var candidate = 2; primeCounter < 64; candidate++) { function sha256(token){
if (!isComposite[candidate]) { var shaObj = new jsSHA("SHA-256", "TEXT");
for (i = 0; i < 313; i += candidate) { shaObj.update(token);
isComposite[i] = candidate; var hash = shaObj.getHash("HEX");
} return hash;
hash[primeCounter] = (mathPow(candidate, .5) * maxWord) | 0; }
k[primeCounter++] = (mathPow(candidate, 1 / 3) * maxWord) | 0;
}
}
ascii += '\x80' // Append Ƈ' bit (plus zero padding)
while (ascii[lengthProperty] % 64 - 56) ascii += '\x00' // More zero padding
for (i = 0; i < ascii[lengthProperty]; i++) {
j = ascii.charCodeAt(i);
if (j >> 8) return; // ASCII check: only accept characters in range 0-255
words[i >> 2] |= j << ((3 - i) % 4) * 8;
}
words[words[lengthProperty]] = ((asciiBitLength / maxWord) | 0);
words[words[lengthProperty]] = (asciiBitLength)
// process each chunk
for (j = 0; j < words[lengthProperty];) {
var w = words.slice(j, j += 16); // The message is expanded into 64 words as part of the iteration
var oldHash = hash;
// This is now the undefinedworking hash", often labelled as variables a...g
// (we have to truncate as well, otherwise extra entries at the end accumulate
hash = hash.slice(0, 8);
for (i = 0; i < 64; i++) {
var i2 = i + j;
// Expand the message into 64 words
// Used below if
var w15 = w[i - 15], w2 = w[i - 2];
// Iterate
var a = hash[0], e = hash[4];
var temp1 = hash[7]
+ (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25)) // S1
+ ((e & hash[5]) ^ ((~e) & hash[6])) // ch
+ k[i]
// Expand the message schedule if needed
+ (w[i] = (i < 16) ? w[i] : (
w[i - 16]
+ (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15 >>> 3)) // s0
+ w[i - 7]
+ (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2 >>> 10)) // s1
) | 0
);
// This is only used once, so *could* be moved below, but it only saves 4 bytes and makes things unreadble
var temp2 = (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22)) // S0
+ ((a & hash[1]) ^ (a & hash[2]) ^ (hash[1] & hash[2])); // maj
hash = [(temp1 + temp2) | 0].concat(hash); // We don't bother trimming off the extra ones, they're harmless as long as we're truncating when we do the slice()
hash[4] = (hash[4] + temp1) | 0;
}
for (i = 0; i < 8; i++) {
hash[i] = (hash[i] + oldHash[i]) | 0;
}
}
for (i = 0; i < 8; i++) {
for (j = 3; j + 1; j--) {
var b = (hash[i] >> (j * 8)) & 255;
result += ((b < 16) ? 0 : '') + b.toString(16);
}
}
return result;
};

View File

@@ -25,7 +25,7 @@
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") {
@@ -37,6 +37,7 @@
} }
}; };
var $t = $.timeago; var $t = $.timeago;
$.extend($.timeago, { $.extend($.timeago, {
settings: { settings: {
refreshMillis: 60000, refreshMillis: 60000,
@@ -46,30 +47,30 @@
cutoff: 0, cutoff: 0,
autoDispose: true, autoDispose: true,
strings: { strings: {
prefixAgo: lang.lang_time_prefixAgo, prefixAgo: null,
prefixFromNow: lang.lang_time_prefixFromNow, prefixFromNow: "今から",
suffixAgo: lang.lang_time_suffixAgo, suffixAgo: "",
suffixFromNow: lang.lang_time_suffixFromNow, suffixFromNow: "",
inPast: lang.lang_time_inPast, inPast: '',
seconds: lang.lang_time_seconds, seconds: "%d秒前",
minute: lang.lang_time_minute, minute: "1分前",
minutes: lang.lang_time_minutes, minutes: "%d分前",
hour: lang.lang_time_hour, hour: "1時間前",
hours: lang.lang_time_hours, hours: "%d時間前",
day: lang.lang_time_day, day: "昨日",
days: lang.lang_time_days, days: "%d日前",
month: lang.lang_time_month, month: "昨月",
months: lang.lang_time_months, months: "%dヶ月前",
year: lang.lang_time_year, year: "去年",
years: lang.lang_time_years, years: "%d年前",
wordSeparator: " ", wordSeparator: " ",
numbers: [] numbers: []
} }
}, },
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;
@@ -115,20 +116,20 @@
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");
} }
@@ -138,7 +139,7 @@
// 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();
@@ -147,7 +148,7 @@
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) {
@@ -155,8 +156,8 @@
} }
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 () {
@@ -167,13 +168,13 @@
} }
}; };
$.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;
@@ -183,7 +184,7 @@
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;
@@ -192,11 +193,11 @@
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'));
} }
} }
} }

View File

@@ -1,312 +1,264 @@
//バージョンチェッカー //バージョンチェッカー
function verck(ver) { function verck(ver) {
console.log("%c Welcome😊", "color: red;font-size:200%;") console.log("Welcome")
var date = new Date(); if(localStorage.getItem("ver")!=ver){
var show = false
if (localStorage.getItem("ver") != ver && localStorage.getItem("winstore")) {
//ちょっと削除とリンク解析の都合上アレ(s)
//対象外のアプデ:storageが20の最初まで"Usamin (18.6.5)"
if (!localStorage.getItem("usamin_18_6_5_flag")) {
localStorage.setItem("usamin_18_6_5_flag", true)
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
for (var i = 0; i < obj.length; i++) {
localStorage.removeItem("card_" + i);
}
}
//ちょっと削除とリンク解析の都合上アレ(e)
localStorage.setItem("ver", ver); localStorage.setItem("ver", ver);
show = true console.log("Thank you for your update");
console.log("%c Thank you for your update🎉", "color: red;font-size:200%;"); $(document).ready(function(){
$(document).ready(function () {
$('#releasenote').modal('open'); $('#releasenote').modal('open');
verp = ver.replace('(', ''); verp=ver.replace( '(', '');
verp = verp.replace('.', '-'); verp=verp.replace( '.', '-');
verp = verp.replace('.', '-'); verp=verp.replace( '.', '-');
verp = verp.replace('[', '-'); verp=verp.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%;"); console.log(verp);
if (lang.language == "ja") { if(lang.language=="ja"){
$("#release-" + verp).show(); $("#release-"+verp).show();
} else { }else{
$("#release-en").show(); $("#release-en").show();
} }
});
});
} }
if (!show) { var electron = require("electron");
console.log(show) var remote=electron.remote;
if (date.getMonth() + 1 >= localStorage.getItem("showSupportMe") || !localStorage.getItem("showSupportMe")) { var dialog=remote.dialog;
if (date.getMonth() == 11) { var platform=remote.process.platform;
var nextmonth = 1 if(platform=="win32"){
} else { const options = {
var nextmonth = date.getMonth() + 2 type: 'info',
} title: "Select your platform",
if (lang.language != "ja") { message: lang.lang_version_platform,
$("#support-btm-ja").addClass("hide"); buttons: [lang.lang_no,lang.lang_yesno]
$("#support-btm-en").removeClass("hide"); }
} if(!localStorage.getItem("winstore")){
localStorage.setItem("showSupportMe", nextmonth)
$("#support-btm").removeClass("hide") dialog.showMessageBox(options, function(arg) {
$("#support-btm").animate({ if(arg==1){
'bottom': '0' localStorage.setItem("winstore","winstore")
}, { }else{
'duration': 300 localStorage.setItem("winstore","localinstall")
}); }
});
}
}else if(platform=="linux"){
if(localStorage.getItem("winstore")=="unix"){
localStorage.removeItem("winstore")
} }
} if(!localStorage.getItem("winstore")){
var platform = localStorage.getItem("platform"); const options = {
console.log("Your platform:" + platform) type: 'info',
if (!localStorage.getItem("winstore")) { title: "Select your platform",
storeDialog(platform, ver) message: lang.lang_version_platform_linux,
} buttons: [lang.lang_no,lang.lang_yesno]
if (localStorage.getItem("winstore") == "brewcask" || localStorage.getItem("winstore") == "snapcraft" || localStorage.getItem("winstore") == "winstore") { }
var winstore = true; dialog.showMessageBox(options, function(arg) {
} else { if(arg==1){
var winstore = false; localStorage.setItem("winstore","snapcraft")
} }else{
localStorage.setItem("winstore","localinstall")
}
});
}
}else if(platform=="darwin"){
if(localStorage.getItem("winstore")=="unix"){
localStorage.removeItem("winstore")
}
if(!localStorage.getItem("winstore")){
const options = {
type: 'info',
title: "Select your platform",
message: lang.lang_version_platform_mac,
buttons: [lang.lang_no,lang.lang_yesno]
}
dialog.showMessageBox(options, function(arg) {
if(arg==1){
localStorage.setItem("winstore","brewcask")
}else{
localStorage.setItem("winstore","localinstall")
}
});
}
}else{
localStorage.setItem("winstore","unix")
}
if(localStorage.getItem("winstore")=="brewcask" || localStorage.getItem("winstore")=="snapcraft" || localStorage.getItem("winstore")=="winstore"){
var winstore=true;
}else{
var winstore=false;
}
var l = 5; var l = 5;
// 生成する文字列に含める文字セット // 生成する文字列に含める文字セット
var c = "abcdefghijklmnopqrstuvwxyz0123456789"; var c = "abcdefghijklmnopqrstuvwxyz0123456789";
var cl = c.length; var cl = c.length;
var r = ""; var r = "";
for (var i = 0; i < l; i++) { for(var i=0; i<l; i++){
r += c[Math.floor(Math.random() * cl)]; r += c[Math.floor(Math.random()*cl)];
} }
var start = "https://thedesk.top/ver.json"; var start = "https://thedesk.top/ver.json";
fetch(start, { fetch(start, {
method: 'GET' method: 'GET'
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (mess) { }).then(function(mess) {
console.table(mess); console.log(mess);
if (mess) { if (mess) {
var platform = localStorage.getItem("platform"); var electron = require("electron");
if (platform == "darwin") { var remote=electron.remote;
var newest = mess.desk_mac; var platform=remote.process.platform;
} else { if(platform=="darwin"){
var newest = mess.desk; var newest=mess.desk_mac;
}else{
var newest=mess.desk;
} }
if (newest == ver) { if (newest == ver) {
todo(lang.lang_version_usever.replace("{{ver}}", mess.desk)); todo(lang.lang_version_usever.replace("{{ver}}" ,mess.desk));
//betaかWinstoreならアプデチェックしない //betaかWinstoreならアプデチェックしない
} else if (ver.indexOf("beta") != -1 || winstore) { } else if (ver.indexOf("beta")!=-1 || winstore) {
} else { }else{
localStorage.removeItem("instance") localStorage.removeItem("instance")
if (localStorage.getItem("new-ver-skip")) { if(localStorage.getItem("new-ver-skip")){
if (localStorage.getItem("next-ver") != newest) { if(localStorage.getItem("next-ver")!=newest){
postMessage(["sendSinmpleIpc", "update"], "*") var ipc = electron.ipcRenderer;
} else { ipc.send('update', "true");
console.warn(lang.lang_version_skipver); }else{
console.log(lang.lang_version_skipver);
todo(lang.lang_version_skipver); todo(lang.lang_version_skipver);
} }
} else { }else{
postMessage(["sendSinmpleIpc", "update"], "*") var ipc = electron.ipcRenderer;
ipc.send('update', "true");
} }
} }
} }
}); });
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?since_id=" + localStorage.getItem("last-notice-id"); console.log(localStorage.getItem("last-notice-id"))
var start = "https://thedesk.top/notice?since_id="+localStorage.getItem("last-notice-id");
console.log(start);
fetch(start, { fetch(start, {
method: 'GET' method: 'GET'
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (mess) { }).then(function(mess) {
if (mess.length < 1) { console.log(mess.length);
if(mess.length<1){
return false; return false;
} else { }else{
var last = localStorage.getItem("last-notice-id") var last=localStorage.getItem("last-notice-id")
localStorage.setItem("last-notice-id", mess[0].ID) localStorage.setItem("last-notice-id",mess[0].ID)
for (i = 0; i < mess.length; i++) { for(i=0;i<mess.length;i++){
var obj = mess[i]; var obj=mess[i];
if (obj.ID * 1 <= last) { if(obj.ID*1<=last){
break; break;
} else { }else{
if (obj.type == "textv2") { var show=true;
if (~obj.languages.indexOf(lang.language)) { if(obj.Toot!=""){
var show = true; var toot='<button class="btn-flat toast-action" onclick="detEx(\''+obj.Toot+'\',\'main\')">Show</button>';
if (obj.toot != "") { }else{
var toot = '<button class="btn-flat toast-action" onclick="detEx(\'' + obj.toot + '\',\'main\')">Show</button>'; var toot="";
} else { }
var toot = ""; if(obj.Ver!=""){
} if(obj.Ver==ver){
if (obj.ver != "") { show=true;
if (obj.ver == ver) { }else{
show = true; show=false;
} else {
show = false;
}
}
if (obj.domain != "") {
var multi = localStorage.getItem("multi");
if (multi) {
show = false;
var accts = JSON.parse(multi);
Object.keys(accts).forEach(function (key) {
var acct = accts[key];
if (acct.domain == obj.domain) {
show = true;
}
});
}
}
if (show) {
M.toast({ html: escapeHTML(obj.text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', displayLength: 86400 })
}
}
} }
} }
if(obj.Domain!=""){
var multi = localStorage.getItem("multi");
if (multi) {
show=false;
var accts = JSON.parse(multi);
Object.keys(accts).forEach(function(key) {
var acct = accts[key];
if(acct.domain==obj.Domain){
show=true;
}
});
}
}
if(show){
Materialize.toast(escapeHTML(obj.Text)+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400);
}
} }
} }
}
}); });
} }
var infostreaming = false; var infostreaming=false;
function infowebsocket() { function infowebsocket(){
infows = new WebSocket("wss://thedesk.top/ws/"); infows = new WebSocket("wss://thedesk.top/ws/");
infows.onopen = function (mess) { infows.onopen = function(mess) {
console.log([tlid, ":Connect Streaming Info:", mess]); console.log(tlid + ":Connect Streaming Info:");
infostreaming = true; console.log(mess);
infostreaming=true;
} }
infows.onmessage = function (mess) { infows.onmessage = function(mess) {
console.log([tlid, ":Receive Streaming:", JSON.parse(mess.data)]); console.log(":Receive Streaming:");
var obj = JSON.parse(mess.data); console.log(JSON.parse(mess.data));
if (obj.type != "counter") { var obj=JSON.parse(mess.data);
if (obj.type == "textv2") { if(obj.type!="counter"){
if (~obj.languages.indexOf(lang.language)) { localStorage.setItem("last-notice-id",obj.id)
localStorage.setItem("last-notice-id", obj.id) var show=true;
var show = true; if(obj.toot!=""){
if (obj.toot != "") { var toot='<button class="btn-flat toast-action" onclick="detEx(\''+obj.toot+'\',\'main\')">Show</button>';
var toot = '<button class="btn-flat toast-action" onclick="detEx(\'' + obj.toot + '\',\'main\')">Show</button>'; }else{
} else { var toot="";
var toot = ""; }
} if(obj.ver!=""){
if (obj.ver != "") { if(obj.ver==ver){
if (obj.ver == ver) { show=true;
show = true; }else{
} else { show=false;
show = false;
}
}
if (obj.domain != "") {
var multi = localStorage.getItem("multi");
if (multi) {
show = false;
var accts = JSON.parse(multi);
Object.keys(accts).forEach(function (key) {
var acct = accts[key];
if (acct.domain == obj.domain) {
show = true;
}
});
}
}
if (show) {
console.log(obj.text)
console.log(escapeHTML(obj.text))
M.toast({ html: escapeHTML(obj.text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', displayLength: 86400 })
}
} }
} }
} else { if(obj.domain!=""){
$("#persons").text(obj.text); var multi = localStorage.getItem("multi");
} if (multi) {
show=false;
var accts = JSON.parse(multi);
Object.keys(accts).forEach(function(key) {
var acct = accts[key];
if(acct.domain==obj.domain){
show=true;
}
});
}
}
if(show){
Materialize.toast(escapeHTML(obj.Text)+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400);
}
}else{
$("#persons").text(obj.text);
} }
infows.onerror = function (error) { }
infostreaming = false; infows.onerror = function(error) {
infostreaming=false;
console.error("Error closing:info"); console.error("Error closing:info");
console.error(error); console.error(error);
return false; return false;
}; };
infows.onclose = function () { infows.onclose = function() {
infostreaming = false; infostreaming=false;
console.error("Closing:info"); console.error("Closing:info");
}; };
} }
setInterval(function () { setInterval(function(){
if (!infostreaming) { if(!infostreaming){
console.log("try to connect to base-streaming") console.log("try to connect")
infowebsocket(); infowebsocket();
} }
}, 10000); }, 10000);
function openRN() {
$('#releasenote').modal('open');
if (lang.language == "ja") {
verp = ver.replace('(', '');
verp = verp.replace('.', '-');
verp = verp.replace('.', '-');
verp = verp.replace('[', '-');
verp = verp.replace(']', '');
verp = verp.replace(')', '');
verp = verp.replace(' ', '_');
$("#release-" + verp).show();
} else {
$("#release-en").show();
}
}
function closeSupport() {
$("#support-btm").animate({
'bottom': '-300px'
}, {
'duration': 300,
'complete': function () {
$("#support-btm").addClass("hide")
}
});
}
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();
}
});
})
}

View File

@@ -1,82 +1,87 @@
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 json = defaultemoji[target]; var json=defaultemoji[target];
var emojis = ""; var emojis="";
Object.keys(json).forEach(function (key) { Object.keys(json).forEach(function(key) {
var emoji = json[key]; var emoji = json[key];
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>'; 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>';
}); });
$("#emoji-list").html(emojis); $("#emoji-list").html(emojis);
$("#now-emoji").text(lang.lang_defaultemojis_text.replace("{{cat}}", defaultemojiname[target])); $("#now-emoji").text(lang.lang_defaultemojis_text.replace("{{cat}}" ,defaultemojiname[target]));
console.log(target);
$(".emoji-control").addClass("hide"); $(".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 emojiraw = newpack.filter(function(item, index){
if (!selin) { if (item.short_name == target) return true;
selin = 0;
}
var emojiraw = newpack.filter(function (item, index) {
if (item.short_name == target) return true;
}); });
var hex = emojiraw[0].unified.split("-"); emoji=twemoji.convert.fromCodePoint(emojiraw[0].unified);
if (hex.length === 2) {
emoji = twemoji.convert.fromCodePoint(hex[0]) + twemoji.convert.fromCodePoint(hex[1]);
} else {
emoji = twemoji.convert.fromCodePoint(hex[0]);
}
var now = $("#textarea").val(); var now = $("#textarea").val();
var before = now.substr(0, selin); var selin = localStorage.getItem("cursor");
var after = now.substr(selin, now.length); var now = $("#textarea").val();
newt = before + emoji + after; if(selin>0){
$("#textarea").val(newt); var before = now.substr(0, selin);
$("#textarea").focus(); var after = now.substr(selin, now.length);
newt = before+ emoji + after;
}else{
newt = emoji+now;
}
console.log(emoji);
$("#textarea").val(newt);
$("#textarea").focus();
var selin = $("#textarea").prop('selectionStart');
if(!selin){
selin=0;
}
localStorage.setItem("cursor", selin);
} }
function faicon() { function faicon(){
var json = faicons; var json=faicons;
var emojis = ""; console.log(json);
Object.keys(json).forEach(function (key) { var emojis="";
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 + '<a onclick="emojiInsert(\'[faicon]' + eje + '[/faicon]\')" class="pointer white-text" style="font-size:24px"><i class="fa ' + emoji + '"></i></a>'; emojis = emojis + '<a onclick="emojiInsert(\'[faicon]'+eje+'[/faicon]\')" class="pointer white-text" style="font-size:24px"><i class="fa '+emoji+'"></i></a>';
}); });
$("#emoji-list").html(emojis); $("#emoji-list").html(emojis);
$("#now-emoji").text("faicon"); $("#now-emoji").text("faicon");

View File

@@ -1,3 +0,0 @@
const JSON5 = require('json5')
const fs = require("fs")
fs.writeFileSync("main.json", JSON.stringify(JSON5.parse(fs.readFileSync("lang." + process.argv[2] + ".js", 'utf8').replace("var lang = ", ""))))

View File

@@ -1,246 +0,0 @@
var lang={
"language": "en",
"lang_toot": "Раздумай",
"lang_there": "Да",
"lang_nothing": "Няма",
"lang_yesno": "Да",
"lang_no": "Не",
"lang_progress": "Изчакайте...",
"lang_edit": "Редактиране",
"lang_del": "Изтрий",
"lang_add": "Добави",
"lang_fatalerroroccured": "Възникнаха някои грешки, моля рестартирайте Desk.",
"lang_speech": "Google US English",
"lang_lang": "Език",
"lang_langlocale": "Английски",
"lang_back": "Назад",
"lang_set": "Задай",
"lang_langadd": "Преведете TheDesk на други езици или проверете TheDesk на <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\"> GitHub </a>. TheDesk се нуждае от вашата помощ.",
"lang_time_prefixAgo": null,
"lang_time_prefixFromNow": null,
"lang_time_suffixAgo": null,
"lang_time_suffixFromNow": null,
"lang_time_inPast": null,
"lang_time_seconds": "%d s",
"lang_time_minute": "1 m",
"lang_time_minutes": "%d m",
"lang_time_hour": "1 h",
"lang_time_hours": "%d h",
"lang_time_day": "1 d",
"lang_time_days": "%d d",
"lang_time_month": "1 month",
"lang_time_months": "%d months",
"lang_time_year": "y",
"lang_time_years": "%d y",
"lang_version_usever": "Не е намерена актуализация({{ver}})",
"lang_version_skipver": "Актуализацията бе игнорирана.",
"lang_version_platform": "Искате ли автоматични актуализации? (За потребителите инсталирали от Microsoft Store, изберете „Не“)",
"lang_version_platform_linux": "Искате ли автоматични актуализации? (За потребителите инсталирали от Snapcraft, изберете „Не“)",
"lang_version_platform_mac": "Искате ли автоматични актуализации? (За потребителите на Homebrew Cask изберете „Не“)",
"lang_login_noauth": "Показване на TL на нерегистрирани профили",
"lang_manager_info": "За тази инстанция",
"lang_manager_refresh": "Обнови",
"lang_manager_delete": "Излизане",
"lang_manager_color": "Цвят на профила",
"lang_manager_confirm": "е на път да излезе. Продължаване?",
"lang_manager_mainAcct": "Готово: изберете основния профил",
"lang_manager_def": "По подразбиране",
"lang_manager_none": "Няма",
"lang_manager_godev": "Отворете DevCenter на Misskey. Ние показваме официални документи, на които се позоваваме.",
"lang_manager_logout": "Излизане",
"lang_bbmd_misskey": "TheDesk разглежда \"@\" като отговор, но поставя друг параметър. Ако не е включено в Mastodon това означава, че е в Home на Misskey.",
"lang_emoji_get": "Вземи емотикони",
"lang_emoji_custom": "Персонализирани емотикони",
"lang_defaultemojis_text": "Още емотикони {{cat}}",
"lang_postimg_previewdis": "не може да се визуализира",
"lang_postimg_aftupload": "Не можете да променяте профилите след качването.",
"lang_postimg_delete": "Изтрийте това изображение.",
"lang_post_tagTL": "Тази раздумка не съдържа маркер по подразбиране. Тази раздумка няма да се показва в локалния TL. Продължавате?",
"lang_post_tagVis": "Тази раздумка (не е \"публична\") не е показана с този етикет в ТЛ.",
"lang_post_cwtitle": "Авто CW Сигнал",
"lang_post_cwtxt": "На път сте да публикувате по-дълга раздумка, отколкото е зададена.\nТекст на предупреждението:",
"lang_post_btn1": "Отказ (няма да се публикува)",
"lang_post_btn2": "Текстът да се скрива автоматично",
"lang_post_btn3": "Продължете към публикуването",
"lang_status_favWarn": "Ще отнеме минута раздумката отдалечено да стане любима.",
"lang_status_btWarn": "Ще отнеме минута раздумката отдалечено да бъде подсилена.",
"lang_status_follow": "Следване",
"lang_status_unfollow": "Спри следенето",
"lang_status_block": "Блокирай",
"lang_status_unblock": "Отблокирай",
"lang_status_mute": "Без звук",
"lang_status_unmute": "Със звук",
"lang_status_redraftTitle": "Изтрий & върни",
"lang_status_redraft": "Продължете да изтривате & преработвате? Ще изгубите статуса на тази раздумка. В тази функция може да се съдържат някои грешки. Снимките от тази раздумка ще бъдат изтрити на по-стари от Mastodon 2.4.1.",
"lang_status_emphas": "'s toots are emphasized. Please reload after this action.",
"lang_status_unemphas": "'s toots are not emphasized. Please reload after this action.",
"lang_status_unendorse": "Not feature on profile",
"lang_status_endorse": "Feature on profile",
"lang_status_followers": "Followers",
"lang_status_active": "Last status",
"lang_suggest_nodata": "Please get emojis list in order to show suggestion.",
"lang_usetxtbox_reply": "Reply Mode. Ctrl+Shift+C to clear.",
"lang_cards_check": " check",
"lang_cards_pip": "PiP mode",
"lang_details_nodata": "No data",
"lang_details_filtered": "Filtered toot",
"lang_details_embed": "Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.",
"lang_filter_nodata": "No data",
"lang_filter_errordegree": "Please check a context",
"lang_list_nodata": "No data",
"lang_list_show": "Show",
"lang_list_users": "Users list",
"lang_list_nouser": "No users in this list.",
"lang_list_add": "Add to the list",
"lang_list_add_misskey": "(perhaps this user has been listed)",
"lang_list_remove": "Remove from the list",
"lang_notf_new": " new notifications",
"lang_speech_refresh": "Save value about TTS config",
"lang_src_ts": "chronological order",
"lang_src_people": " people toot",
"lang_tags_always": "Always toots with ",
"lang_tags_realtime": "Tag-stream toot",
"lang_tags_tagunpin": "Unpin {{tag}}",
"lang_tags_unrealtime": "Disable TsT",
"lang_tags_tagwarn": "Автоматично попълване на {{tag}}, ако раздумката няма {{tag}}",
"lang_tl_media": "Media",
"lang_tl_reconnect": "Reconnect to streaming API",
"lang_img_DLDone": "Downloaded:",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account",
"lang_layout_delthis": "Remove this column",
"lang_layout_setthis": "Preferences of this column",
"lang_layout_mediafil": "Media filtering",
"lang_layout_linkana": "Auto Link Analyzer",
"lang_layout_linkanades": "Auto link analyzer",
"lang_layout_tts": "Text to speech ",
"lang_layout_reconnect": "Reconnect to streaming API",
"lang_layout_headercolor": "Header color of this column",
"lang_layout_nodata": "[No data]<br>F5/⌘+R to reload",
"lang_layout_dm": "Direct Message",
"lang_layout_webviewmode": "Prefer WebView",
"lang_excluded": "Excluded type of notification",
"lang_layout_excludingbt": "Показване в BT режим (ИЗКЛ./Изключване BT/ Само в BT)",
"lang_layout_leftFold": "Стъпка наляво",
"lang_layout_leftUnfold": "Док отдясно",
"lang_layout_deleteColumn": "Премахване на тази колона",
"lang_layout_deleteColumnDesc": "Премахване на тази колона",
"lang_sort_gothis": "Отидете в тази колона",
"lang_sort_remthis": "Премахване на тази колона",
"lang_spotify_img": "Attach an album artwork",
"lang_spotify_imgno": "Not attach an album artwork",
"lang_spotify_acct": "Connect TheDesk to Spotify",
"lang_spotify_np": "Готово:шаблон на NowPlaying",
"lang_setting_npprovide": "NowPlaying provider:{{set}}",
"lang_hisdata_frcreq": "Required Mastodon 2.4.3 and above",
"lang_hisdata_frcwarn": "Unfollow accounts will be shown.",
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_movetxt": "This account was moved",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Following you",
"lang_showontl_notf": "Notification ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_parse_mentioned": " replied to you",
"lang_parse_faved": " favourited your toot",
"lang_parse_bted": " boosted your toot",
"lang_parse_btedsimple": " boosted",
"lang_parse_polled": "'s poll",
"lang_parse_notftime": "Actioned at",
"lang_parse_cwshow": "Show",
"lang_parse_fulltext": "Full size text:",
"lang_parse_autofold": "Auto folded",
"lang_parse_more": "More",
"lang_parse_url": "URL Analyzer",
"lang_parse_tagTL": "Timeline of {{tag}}",
"lang_parse_tagtoot": "Toot with {{tag}}",
"lang_parse_tagpin": "Pin {{tag}}",
"lang_parse_public": "Public",
"lang_parse_unlisted": "Unlisted",
"lang_parse_private": "Private",
"lang_parse_direct": "Direct",
"lang_parse_clickcopy": "Click to copy text of this toot",
"lang_parse_clickcopyurl": "Click to copy URL of this toot",
"lang_parse_trans": "Translate to Japanese",
"lang_parse_replyto": "Reply to this toot",
"lang_parse_bt": "Boost this toot",
"lang_parse_fav": "Favourite this toot",
"lang_parse_quote": "Quote this toot",
"lang_parse_del": "Изтрийте тази раздумка",
"lang_parse_pin": "Pin this toot",
"lang_parse_det": "Details via your main account.",
"lang_parse_redraft": "Изтрий & върни",
"lang_parse_followed": "Followed you",
"lang_parse_clientop": "Operation of this client",
"lang_parse_clienttxt": " will be",
"lang_parse_clientno": "done nothing",
"lang_parse_clientemp": "emphasized(/not emphasized)",
"lang_parse_clientmute": "muted",
"lang_parse_mute": " will be muted. You can remove on preferences.",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "NSFW media",
"lang_parse_notffilter": "Show this user's notifications",
"lang_misskeyparse_renote": "Repost",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaction",
"lang_misskeyparse_tagnostr": "No streaming API on Tag TLs",
"lang_misskeyparse_listnostr": "No streaming API on List TLs",
"lang_misskeyparse_home": "Home",
"lang_misskeyparse_followers": "Follower",
"lang_misskeyparse_specified": "Specified User",
"lang_misskeyparse_qt": "Misskey renote(quote) mode:Ctrl+Shift+Enter to clear",
"lang_misskeyparse_renoted": " renoted your following post.",
"lang_misskeyparse_quoted": " quoted your following post.",
"lang_misskeyparse_reacted": " reacted your following post.",
"lang_setting_time": "Time format:{{set}}",
"lang_setting_theme": "Theme:{{set}}",
"lang_setting_nsfw": "NSFW:{{set}}",
"lang_setting_cw": "CW:{{set}}",
"lang_setting_cwtext": "Default CW text:{{set}}",
"lang_setting_cws": "Always CW on:{{set}}",
"lang_setting_rp": "Reply counter:{{set}}",
"lang_setting_vis": "Default visibility:{{set}}",
"lang_setting_popup": "Popup notification:{{set}}",
"lang_setting_off": "Off",
"lang_setting_s": "s",
"lang_setting_box": "Default toot box action:{{set}}",
"lang_setting_gif": "GIF:{{set}}",
"lang_setting_selt": "Автоматично сгъване:{{set1}} линии по-нагоре,{{set2}} букви по-нагоре",
"lang_setting_autocw": "Автоматично CW:{{set1}} линии по-нагоре, {{set2}} букви по-нагоре",
"lang_setting_width": "Minimam width:{{set}}",
"lang_setting_fixwidth": "TweetDeck fixed width:{{set}}px",
"lang_setting_img": "After posting an image:{{set}}",
"lang_setting_font": "Fonts:{{set}}",
"lang_setting_default": "default font",
"lang_setting_size": "Font size:{{set}}px",
"lang_setting_imgheight": "Image height:{{set}}px",
"lang_setting_ticker": "#InstanceTicker:{{set}}px",
"lang_setting_animation": "Animation: {{set}}",
"lang_setting_tag": "Tag TL:{{set}}",
"lang_setting_boxConfirm": "Post box:{{set}}",
"lang_setting_ul": "Native locale:{{set}}",
"lang_setting_notf": "Native notification:{{set}}",
"lang_setting_quote": "Quote format:{{set}}",
"lang_setting_via": "Via:{{set}}",
"lang_setting_mov": "Action buttons hiding:{{set}}",
"lang_setting_setasread": "Notification markers:{{set}}",
"lang_setting_main": "Default account:{{set}}",
"lang_setting_sec": "Secondary toot button:{{set}}",
"lang_setting_ksref": "Keyboard shortcuts are refreshed.",
"lang_setting_nomuting": "No client is muted.",
"lang_setting_notftest": " Notification test ",
"lang_setting_notftestprof": "Your icon is shown.",
"lang_setting_exportwarn": "Only important data will be exported. You must keep this data secure.",
"lang_setting_importwarn": "Всички данни ще бъдат изтрити."
}

View File

@@ -1,246 +0,0 @@
var lang={
"language": "cs",
"lang_toot": "Toot",
"lang_there": "Ano",
"lang_nothing": "Nic",
"lang_yesno": "Ano",
"lang_no": "Ne",
"lang_progress": "Čekejte...",
"lang_edit": "Upravit",
"lang_del": "Smazat",
"lang_add": "Přidat",
"lang_fatalerroroccured": "Vyskytly se nějaké chyby, prosím restartujte TheDesk.",
"lang_speech": "Google Čeština",
"lang_lang": "Jazyk",
"lang_langlocale": "Čeština",
"lang_back": "Zpět",
"lang_set": "Nastavit",
"lang_langadd": "Přeložte TheDesk do jiných jazyků nebo opravte existující překlad na <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHubu</a> nebo <a href=\"https://translate.thedesk.top/\" target=\"_blank\">Crowdinu</a>. TheDesk potřebuje vaši pomoc.",
"lang_time_prefixAgo": null,
"lang_time_prefixFromNow": null,
"lang_time_suffixAgo": null,
"lang_time_suffixFromNow": null,
"lang_time_inPast": null,
"lang_time_seconds": "%d s",
"lang_time_minute": "1 m",
"lang_time_minutes": "%d m",
"lang_time_hour": "1 h",
"lang_time_hours": "%d h",
"lang_time_day": "1 d",
"lang_time_days": "%d d",
"lang_time_month": "1 month",
"lang_time_months": "%d months",
"lang_time_year": "y",
"lang_time_years": "%d y",
"lang_version_usever": "Nebyla nalezena žádná aktualizace ({{ver}})",
"lang_version_skipver": "Aktualizace byla ignorována.",
"lang_version_platform": "Do you want auto-updates?(users installed on Microsoft Store select 'No')",
"lang_version_platform_linux": "Do you want auto-updates?(users installed on Snapcraft select 'No')",
"lang_version_platform_mac": "Do you want auto-updates?(Homebrew Cask users select 'No')",
"lang_login_noauth": "Zobrazit časové osy nepřihlášených účtů",
"lang_manager_info": "O tomto serveru",
"lang_manager_refresh": "Obnovit",
"lang_manager_delete": "Odhlásit",
"lang_manager_color": "Barva účtu",
"lang_manager_confirm": "se chce odhlásit. Pokračovat?",
"lang_manager_mainAcct": "Hotovo: vyberte hlavní účet",
"lang_manager_def": "Výchozí",
"lang_manager_none": "Žádný",
"lang_manager_godev": "Otevřené vývojářské centrum softwaru Misskey. Zobrazujeme také oficiální dokumentaci.",
"lang_manager_logout": "Logout",
"lang_bbmd_misskey": "TheDesk považuje „@“ za odpověď, ale vkládá ho do jiných parametrů. „Neuvedeno“ na Mastodonu znamená „Domů“ na Misskey.",
"lang_emoji_get": "Získat emoji",
"lang_emoji_custom": "Vlastní emoji",
"lang_defaultemojis_text": "Emojis about {{cat}}",
"lang_postimg_previewdis": "nelze vytvořit náhled",
"lang_postimg_aftupload": "Po nahrání nemůžete změnit účty.",
"lang_postimg_delete": "Delete this image.",
"lang_post_tagTL": "Tento toot neobsahuje výchozí hashtag. Tento toot nebude zobrazen na výchozí časové ose. Pokračovat?",
"lang_post_tagVis": "Tento toot (ne „veřejný“ toot) není zobrazen na časové ose tohoto hashtagu.",
"lang_post_cwtitle": "Automatické varování o obsahu",
"lang_post_cwtxt": "Chcete napsat delší toot, než jste nastavil/a.\nText varování:",
"lang_post_btn1": "Zrušit (příspěvek nebude publikován)",
"lang_post_btn2": "Skrýt text automaticky",
"lang_post_btn3": "Pokračovat k přispívání",
"lang_status_favWarn": "Oblíbení vzdáleného tootu bude chvíli trvat.",
"lang_status_btWarn": "Boostnutí vzdáleného tootu bude chvíli trvat.",
"lang_status_follow": "Sledovat",
"lang_status_unfollow": "Přestat sledovat",
"lang_status_block": "Blokovat",
"lang_status_unblock": "Odblokovat",
"lang_status_mute": "Ignorovat",
"lang_status_unmute": "Přestat ignorovat",
"lang_status_redraftTitle": "Delete & redraft",
"lang_status_redraft": "Chcete pokračovat k vymazání a přepsání? Ztratíte odpovědi na tento toot. Tato funkce může obashovat několik chyb. Obrázky v tomto tootu budou na verzi Mastodonu starší než 2.4.1 smazány.",
"lang_status_emphas": ": tooty tohoto uživatele jsou zdůrazněny. Po této akci prosím obnovte stránku.",
"lang_status_unemphas": ": tooty tohoto uživatele nejsou zdůrazněny. Po této akci prosím obnovte stránku.",
"lang_status_unendorse": "Nepředstavit na profilu",
"lang_status_endorse": "Představit na profilu",
"lang_status_followers": "Followers",
"lang_status_active": "Last status",
"lang_suggest_nodata": "Pro zobrazení návrhu prosím získejte seznam emoji.",
"lang_usetxtbox_reply": "Režim odpovězení. Pro vymazání stiskněte Ctrl+Shift+C.",
"lang_cards_check": " kontrolovat",
"lang_cards_pip": "Režim PiP",
"lang_details_nodata": "Žádná data",
"lang_details_filtered": "Filtrovaný toot",
"lang_details_embed": "HTML pro vložení je zkopírován.",
"lang_details_url": "URL adresa tohoto tootu je zkopírována.",
"lang_details_txt": "Obsah tohoto tootu je zkopírován.",
"lang_filter_nodata": "Žádná data",
"lang_filter_errordegree": "Prosím zkontrolujte kontext",
"lang_list_nodata": "Žádná data",
"lang_list_show": "Zobrazit",
"lang_list_users": "Seznam uživatelů",
"lang_list_nouser": "Žádní uživatelé na tomto seznamu.",
"lang_list_add": "Přidat na seznam",
"lang_list_add_misskey": "(perhaps this user has been listed)",
"lang_list_remove": "Odstranit ze seznamu",
"lang_notf_new": " nových oznámení",
"lang_speech_refresh": "Uložit hodnotu nastavení TTS",
"lang_src_ts": "chronologické pořadí",
"lang_src_people": " lidí tootují",
"lang_tags_always": "Vždy tootnout s ",
"lang_tags_realtime": "Tag-stream toot",
"lang_tags_tagunpin": "Odepnout {{tag}}",
"lang_tags_unrealtime": "Disable TsT",
"lang_tags_tagwarn": "Auto complete {{tag}}, if toot without {{tag}}",
"lang_tl_media": "Média",
"lang_tl_reconnect": "Reconnect to streaming API",
"lang_img_DLDone": "Downloaded:",
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} tohoto účtu",
"lang_layout_delthis": "Odstranit tento sloupec",
"lang_layout_setthis": "Nastavení tohoto sloupce",
"lang_layout_mediafil": "Filtrování médií",
"lang_layout_linkana": "Automatický analyzátor odkazů",
"lang_layout_linkanades": "Automatický analyzátor odkazů",
"lang_layout_tts": "Převod textu na řeč ",
"lang_layout_reconnect": "Reconnect to streaming API",
"lang_layout_headercolor": "Header color of this column",
"lang_layout_nodata": "[Žádná data]<br>Obnovte stránku klávesami F5/⌘+R",
"lang_layout_dm": "Přímá zpráva",
"lang_layout_webviewmode": "Preferovat WebView",
"lang_excluded": "Excluded type of notification",
"lang_layout_excludingbt": "Show BT mode(OFF/Exclude BT/Only BT)",
"lang_layout_leftFold": "Stack to the left",
"lang_layout_leftUnfold": "Dock on the right",
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
"lang_sort_gothis": "Go to this column",
"lang_sort_remthis": "Delete this column",
"lang_spotify_img": "Attach an album artwork",
"lang_spotify_imgno": "Not attach an album artwork",
"lang_spotify_acct": "Spojit TheDesk se Spotify",
"lang_spotify_np": "Hotovo: šablona NowPlaying",
"lang_setting_npprovide": "NowPlaying provider:{{set}}",
"lang_hisdata_frcreq": "Vyžaduje Mastodon 2.4.3 nebo vyšší verzi",
"lang_hisdata_frcwarn": "Budou zobrazeny již nesledované účty.",
"lang_hisdata_taketime": "It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}",
"lang_showontl_movetxt": "Tento účet byl přesunut",
"lang_showontl_movebtn": "Continue on the new account",
"lang_showontl_botacct": "[robot]",
"lang_showontl_followed": "Sledují vás",
"lang_showontl_notf": "Oznámení ",
"lang_showontl_domain": "Doména ",
"lang_showontl_listwarn": "Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_parse_mentioned": " vám odpověděl/a",
"lang_parse_faved": " si oblíbil/a váš toot",
"lang_parse_bted": " boostnul/a váš toot",
"lang_parse_btedsimple": " boostnul/a",
"lang_parse_polled": "'s poll",
"lang_parse_notftime": "Provedeno",
"lang_parse_cwshow": "Zobrazit",
"lang_parse_fulltext": "Celý text:",
"lang_parse_autofold": "Auto folded",
"lang_parse_more": "Více",
"lang_parse_url": "Analyzátor URL",
"lang_parse_tagTL": "Časová osa {{tag}}",
"lang_parse_tagtoot": "Tootnout s hashtagem {{tag}}",
"lang_parse_tagpin": "Připnout {{tag}}",
"lang_parse_public": "Veřejný",
"lang_parse_unlisted": "Neuvedený",
"lang_parse_private": "Soukromý",
"lang_parse_direct": "Přímý",
"lang_parse_clickcopy": "Klikněte pro zkopírování textu tohoto tootu",
"lang_parse_clickcopyurl": "Klikněte pro zkopírování URL adresy tohoto tootu",
"lang_parse_trans": "Přeložit do japonštiny",
"lang_parse_replyto": "Odpovědět na tento toot",
"lang_parse_bt": "Boostnout tento toot",
"lang_parse_fav": "Oblíbit si tento toot",
"lang_parse_quote": "Citovat tento toot",
"lang_parse_del": "Smazat tento toot",
"lang_parse_pin": "Připnout tento toot",
"lang_parse_det": "Details via your main account.",
"lang_parse_redraft": "Vymazat a přepsat",
"lang_parse_followed": "vás nyní sleduje",
"lang_parse_clientop": "Operace tohoto klienta",
"lang_parse_clienttxt": " bude",
"lang_parse_clientno": "nic nedělat",
"lang_parse_clientemp": "zdůrazněna (nebo nezdůrazněna)",
"lang_parse_clientmute": "ztlumena",
"lang_parse_mute": " bude ztlumena. To můžete odstranit v nastavení.",
"lang_parse_voted": "Voted",
"lang_parse_vote": "Vote",
"lang_parse_unvoted": "Show the result without voting",
"lang_parse_endedvote": "Expired",
"lang_parse_thread": "Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "NSFW media",
"lang_parse_notffilter": "Show this user's notifications",
"lang_misskeyparse_renote": "Znovusdílení",
"lang_misskeyparse_renoteqt": "Renotování",
"lang_misskeyparse_reaction": "Reakce",
"lang_misskeyparse_tagnostr": "Žádné streamovací API na časových osách hashtagů",
"lang_misskeyparse_listnostr": "Žádné streamovací API na časových osách seznamů",
"lang_misskeyparse_home": "Domů",
"lang_misskeyparse_followers": "Sledující",
"lang_misskeyparse_specified": "Určený uživatel",
"lang_misskeyparse_qt": "Režim renotování (citace) Misskey: pro vymazání stiskněte Ctrl+Shift+Enter",
"lang_misskeyparse_renoted": " renotoval/a váš následující příspěvek.",
"lang_misskeyparse_quoted": " citoval/a váš následující příspěvek.",
"lang_misskeyparse_reacted": " reagoval/a na váš následující příspěvek.",
"lang_setting_time": "Časový formát: {{set}}",
"lang_setting_theme": "Motiv: {{set}}",
"lang_setting_nsfw": "Citlivý obsah: {{set}}",
"lang_setting_cw": "Varování: {{set}}",
"lang_setting_cwtext": "Výchozí text varování: {{set}}",
"lang_setting_cws": "Vždy zapnout varování na: {{set}}",
"lang_setting_rp": "Počitadlo odpovědí: {{set}}",
"lang_setting_vis": "Výchozí viditelnost: {{set}}",
"lang_setting_popup": "Popupové oznámení: {{set}}",
"lang_setting_off": "Vyl",
"lang_setting_s": "s",
"lang_setting_box": "Výchozí akce tootového pole: {{set}}",
"lang_setting_gif": "GIF: {{set}}",
"lang_setting_selt": "Auto fold:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_autocw": "Auto CW:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_width": "Minimam width:{{set}}",
"lang_setting_fixwidth": "TweetDeck fixed width:{{set}}px",
"lang_setting_img": "After posting an image:{{set}}",
"lang_setting_font": "Písma: {{set}}",
"lang_setting_default": "výchozí písmo",
"lang_setting_size": "Velikost písma: {{set}} px",
"lang_setting_imgheight": "Výška obrázků: {{set}} px",
"lang_setting_ticker": "#InstanceTicker: {{set}} px",
"lang_setting_animation": "Animation: {{set}}",
"lang_setting_tag": "Časová osa hashtagu: {{set}}",
"lang_setting_boxConfirm": "Post box:{{set}}",
"lang_setting_ul": "Native locale:{{set}}",
"lang_setting_notf": "Native notification:{{set}}",
"lang_setting_quote": "Formát citace: {{set}}",
"lang_setting_via": "Přes: {{set}}",
"lang_setting_mov": "Action buttons hiding:{{set}}",
"lang_setting_setasread": "Notification markers:{{set}}",
"lang_setting_main": "Default account:{{set}}",
"lang_setting_sec": "Secondary toot button:{{set}}",
"lang_setting_ksref": "Keyboard shortcuts are refreshed.",
"lang_setting_nomuting": "Žádný klient není ztlumen.",
"lang_setting_notftest": " Test oznámení ",
"lang_setting_notftestprof": "Vaše ikona je zobrazena.",
"lang_setting_exportwarn": "Budou exportována pouze důležitá data. Tato data musíte udržet v bezpečí.",
"lang_setting_importwarn": "Všechna data budou smazána."
}

View File

@@ -1,246 +0,0 @@
var lang={
"language": "en",
"lang_toot": "Tröt",
"lang_there": "Ja",
"lang_nothing": "Ohne",
"lang_yesno": "Ja",
"lang_no": "Nein",
"lang_progress": "Warten...",
"lang_edit": "Bearbeiten",
"lang_del": "Löschen",
"lang_add": "Hinzufügen",
"lang_fatalerroroccured": "Ein Fehler ist aufgetreten, bitte starten Sie TheDesk neu.",
"lang_speech": "Google US Englisch",
"lang_lang": "Sprache",
"lang_langlocale": "Englisch",
"lang_back": "Zurück",
"lang_set": "Setzen",
"lang_langadd": "Übersetzen oder korrigieren Sie TheDesk in andere Sprachen auf <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>. TheDesk benötigt Ihre Hilfe.",
"lang_time_prefixAgo": null,
"lang_time_prefixFromNow": null,
"lang_time_suffixAgo": null,
"lang_time_suffixFromNow": null,
"lang_time_inPast": null,
"lang_time_seconds": "%d s",
"lang_time_minute": "1 m",
"lang_time_minutes": "%d m",
"lang_time_hour": "1 h",
"lang_time_hours": "%d h",
"lang_time_day": "1 d",
"lang_time_days": "%d d",
"lang_time_month": "1 month",
"lang_time_months": "%d months",
"lang_time_year": "y",
"lang_time_years": "%d y",
"lang_version_usever": "Keine Aktualisierung gefunden({{ver}})",
"lang_version_skipver": "Update wurde ignoriert.",
"lang_version_platform": "Möchten Sie automatische Updates?(Benutzer im Microsoft Store wählen 'Nein')",
"lang_version_platform_linux": "Möchten Sie automatische Updates?(Benutzer auf Snapcraft wählen 'Nein')",
"lang_version_platform_mac": "Möchten Sie automatische Updates?(Homebrew Cask Benutzer wählen 'Nein')",
"lang_login_noauth": "Verläufe von nicht angemeldeten Konten anzeigen",
"lang_manager_info": "Über diese Instanz",
"lang_manager_refresh": "Aktualisieren",
"lang_manager_delete": "Abmelden",
"lang_manager_color": "Kontofarbe",
"lang_manager_confirm": "ist im Begriff, sich auszuloggen. Fortfahren?",
"lang_manager_mainAcct": "Fertig:Hauptkonto wählen",
"lang_manager_def": "Standard",
"lang_manager_none": "Ohne",
"lang_manager_godev": "Öffnen Sie das DevCenter von Misskey. Wir zeigen auch ein offizielles Dokument als Referenz.",
"lang_manager_logout": "Abmelden",
"lang_bbmd_misskey": "TheDesk betrachtet \"@\" als Antwort, setzt aber einen anderen Parameter. Nicht auf Mastodon gelistet bedeutet Home on Misskey.",
"lang_emoji_get": "Hole Emojis",
"lang_emoji_custom": "Eigene Emojis",
"lang_defaultemojis_text": "Emojis über {{cat}}",
"lang_postimg_previewdis": "keine Vorschau",
"lang_postimg_aftupload": "Sie können die Konten nach dem Hochladen nicht mehr ändern.",
"lang_postimg_delete": "Dieses Bild löschen.",
"lang_post_tagTL": "Dieses Tröt enthält keinen Standard-Tag. Er wird in dem lokalen Verlauf nicht angezeigt. Fortfahren?",
"lang_post_tagVis": "Dieser Tröt (nicht 'öffentlicher' Tröt) wird nicht in diesem Tag-Verlauf angezeigt.",
"lang_post_cwtitle": "Auto CW Alert",
"lang_post_cwtxt": "Du bist dabei, länger zu posten, als du eingestellt hast.\nWarntext:",
"lang_post_btn1": "Abbrechen (wird nicht gesendet)",
"lang_post_btn2": "Text automatisch ausblenden",
"lang_post_btn3": "Weiter mit Senden",
"lang_status_favWarn": "Es braucht einen Moment, um ein entferntes Tröt zu favorisieren.",
"lang_status_btWarn": "Es braucht einen Moment, um ein entferntes Tröt zu verstärken.",
"lang_status_follow": "Folgen",
"lang_status_unfollow": "Nicht mehr folgen",
"lang_status_block": "Blockieren",
"lang_status_unblock": "Freigeben",
"lang_status_mute": "Stummschalten",
"lang_status_unmute": "Stummschalten aufheben",
"lang_status_redraftTitle": "Löschen & Neuentwerfen",
"lang_status_redraft": "Weiter mit löschen & neu entwerfen? Du verlierst den Status dieses Tröts. Diese Aktion kann einige Fehler enthalten. Bilder dieses Tröts werden auf älteren Versionen als Mastodon 2.4.1 gelöscht.",
"lang_status_emphas": "'s Tröts werden hervorgehoben. Bitte laden Sie nach dieser Aktion neu.",
"lang_status_unemphas": "'s Tröts werden nicht hervorgehoben. Bitte laden Sie nach dieser Aktion neu.",
"lang_status_unendorse": "Nicht auf dem Profil zeigen",
"lang_status_endorse": "Auf dem Profil zeigen",
"lang_status_followers": "Followers",
"lang_status_active": "Last status",
"lang_suggest_nodata": "Please get emojis list in order to show suggestion.",
"lang_usetxtbox_reply": "Antwortmodus. Strg+Umschalt+C zum Löschen.",
"lang_cards_check": " überprüfen",
"lang_cards_pip": "PiP mode",
"lang_details_nodata": "Keine Daten",
"lang_details_filtered": "Gefilterter Tröt",
"lang_details_embed": "Eingefügtes HTML wurde entfernt.",
"lang_details_url": "URL dieses Tröts wurde entfernt.",
"lang_details_txt": "Inhalt dieses Tröts wurde entfernt.",
"lang_filter_nodata": "Keine Daten",
"lang_filter_errordegree": "Bitte überprüfen Sie den Kontext",
"lang_list_nodata": "Keine Daten",
"lang_list_show": "Anzeigen",
"lang_list_users": "Benutzerliste",
"lang_list_nouser": "Keine Benutzer in dieser Liste.",
"lang_list_add": "Zur Liste hinzufügen",
"lang_list_add_misskey": "(vielleicht wurde dieser Benutzer aufgelistet)",
"lang_list_remove": "Aus Liste entfernen",
"lang_notf_new": " neue Benachrichtigungen",
"lang_speech_refresh": "Sichern der Vorlesefunktionseinstellungen",
"lang_src_ts": "chronologische Reihenfolge",
"lang_src_people": " Leute Tröt",
"lang_tags_always": "Immer Tröten mit ",
"lang_tags_realtime": "Tag-Stream Tröt",
"lang_tags_tagunpin": "{{tag}} entsperren",
"lang_tags_unrealtime": "Disable TsT",
"lang_tags_tagwarn": "Automatisch {{tag}} anfügen, wenn Tröt ohne {{tag}} ist",
"lang_tl_media": "Medien",
"lang_tl_reconnect": "Mit Streaming API erneut verbinden",
"lang_img_DLDone": "Heruntergeladen:",
"lang_layout_gotop": "Gehen Sie zum Anfang dieser Spalte. Wenn das Symbol rot ist, kann diese Spalte keine Verbindung zur Streaming-API herstellen. Bitte neu laden.",
"lang_layout_thisacct": "{{notf}} dieses Kontos",
"lang_layout_delthis": "Diese Spalte löschen",
"lang_layout_setthis": "Einstellungen dieser Spalte",
"lang_layout_mediafil": "Medien filtern",
"lang_layout_linkana": "Automatische Link-Analyse",
"lang_layout_linkanades": "Automatische Link-Analyse",
"lang_layout_tts": "Sprachausgabe ",
"lang_layout_reconnect": "Mit Streaming API erneut verbinden",
"lang_layout_headercolor": "Kopfzeilenfarbe dieser Spalte",
"lang_layout_nodata": "[Keine Daten]<br>F5/⌘+R zum Neu laden",
"lang_layout_dm": "Direkte Nachricht",
"lang_layout_webviewmode": "Web-Ansicht bevorzugen",
"lang_excluded": "Ausgeschlossene Benachrichtigungsart",
"lang_layout_excludingbt": "Show BT mode(OFF/Exclude BT/Only BT)",
"lang_layout_leftFold": "Nach links Stapeln",
"lang_layout_leftUnfold": "Rechts Anheften",
"lang_layout_deleteColumn": "Diese Spalte löschen",
"lang_layout_deleteColumnDesc": "Diese Spalte löschen",
"lang_sort_gothis": "Gehe zu dieser Spalte",
"lang_sort_remthis": "Diese Spalte löschen",
"lang_spotify_img": "Albumcover anhängen",
"lang_spotify_imgno": "Kein Albumcover anhängen",
"lang_spotify_acct": "TheDesk mit Spotify verbinden",
"lang_spotify_np": "Done:Vorlage für NowPlaying",
"lang_setting_npprovide": "NowPlaying Provider:{{set}}",
"lang_hisdata_frcreq": "Benötigte Mastodon 2.4.3 und höher",
"lang_hisdata_frcwarn": "Unfollow accounts will be shown.",
"lang_hisdata_taketime": "Es dauert 30s bis mehrere Minuten",
"lang_hisdata_notonmisskey": "Misskey kann nicht angefordert werden.",
"lang_hisdata_key": "Dieser Benutzer ist von {{set}} überprüft",
"lang_showontl_movetxt": "Dieses Konto wurde verschoben",
"lang_showontl_movebtn": "Auf dem neuen Konto fortfahren",
"lang_showontl_botacct": "[bot]",
"lang_showontl_followed": "Folgt dir",
"lang_showontl_notf": "Benachrichtigung ",
"lang_showontl_domain": "Domain ",
"lang_showontl_listwarn": "Folgen, um diesen Benutzer zu Listen hinzuzufügen.",
"lang_showontl_verified": "This website is verified by owner at ",
"lang_parse_mentioned": " hat dir geantwortet",
"lang_parse_faved": " favorisierte deinen Tröt",
"lang_parse_bted": " hat deinen Tröt verstärkt",
"lang_parse_btedsimple": " verstärkt",
"lang_parse_polled": "'s Umfrage",
"lang_parse_notftime": "Bearbeitet am",
"lang_parse_cwshow": "Anzeigen",
"lang_parse_fulltext": "Full size text:",
"lang_parse_autofold": "Automatisches Zusammenfalten",
"lang_parse_more": "Mehr",
"lang_parse_url": "URL-Analyse",
"lang_parse_tagTL": "Verlauf von {{tag}}",
"lang_parse_tagtoot": "Tröt mit {{tag}}",
"lang_parse_tagpin": "Pin {{tag}}",
"lang_parse_public": "Öffentlich",
"lang_parse_unlisted": "Nicht aufgeführt",
"lang_parse_private": "Privat",
"lang_parse_direct": "Direkt",
"lang_parse_clickcopy": "Klicken, um den Text dieses Tröts zu kopieren",
"lang_parse_clickcopyurl": "Klicken, um die URL dieses Tröts zu kopieren",
"lang_parse_trans": "Übersetzen nach Japanisch",
"lang_parse_replyto": "Auf diesen Tröt antworten",
"lang_parse_bt": "Diesen Tröt verstärken",
"lang_parse_fav": "Diesen Tröt favorisieren",
"lang_parse_quote": "Diesen Tröt zitieren",
"lang_parse_del": "Diesen Tröt löschen",
"lang_parse_pin": "Dieses Tröt fixieren",
"lang_parse_det": "Details über Ihr Hauptkonto.",
"lang_parse_redraft": "Löschen & Neuentwerfen",
"lang_parse_followed": "Folgt dir",
"lang_parse_clientop": "Aktion dieses Clients",
"lang_parse_clienttxt": " wird",
"lang_parse_clientno": "Nichts unternehmen",
"lang_parse_clientemp": "Hervorgehoben(/nicht hervorgehoben)",
"lang_parse_clientmute": "Stumm",
"lang_parse_mute": " wird stumm gemacht. Kann in den Einstellungen wieder entfernt werden.",
"lang_parse_voted": "Abgestimmt",
"lang_parse_vote": "Abstimmen",
"lang_parse_unvoted": "Ergebnis ohne Abstimmung anzeigen",
"lang_parse_endedvote": "Abgelaufen",
"lang_parse_thread": "Konversation anzeigen",
"lang_parse_unknown": "Angehängte Datei",
"lang_parse_nsfw": "NSFW Medien",
"lang_parse_notffilter": "Benachrichtigungen dieses Benutzers anzeigen",
"lang_misskeyparse_renote": "Weiterleiten",
"lang_misskeyparse_renoteqt": "Renote",
"lang_misskeyparse_reaction": "Reaktion",
"lang_misskeyparse_tagnostr": "Keine Streaming-API für Tag-Verläufe",
"lang_misskeyparse_listnostr": "Keine Streaming-API fpr Listen-Verläufe",
"lang_misskeyparse_home": "Startseite",
"lang_misskeyparse_followers": "Abonnent",
"lang_misskeyparse_specified": "Ausgewählte Benutzer",
"lang_misskeyparse_qt": "Misskey renote(quote) mode:Ctrl+Shift+Enter to clear",
"lang_misskeyparse_renoted": " hat deinen folgenden Beitrag zurückgewiesen.",
"lang_misskeyparse_quoted": " zitierte deinen folgenden Beitrag.",
"lang_misskeyparse_reacted": " hat auf Ihren folgenden Beitrag reagiert.",
"lang_setting_time": "Zeitformat:{{set}}",
"lang_setting_theme": "Design:{{set}}",
"lang_setting_nsfw": "NSFW:{{set}}",
"lang_setting_cw": "CW:{{set}}",
"lang_setting_cwtext": "Default CW text:{{set}}",
"lang_setting_cws": "Always CW on:{{set}}",
"lang_setting_rp": "Antwortzähler:{{set}}",
"lang_setting_vis": "Standardsichtbarkeit:{{set}}",
"lang_setting_popup": "Popup-Benachrichtigung:{{set}}",
"lang_setting_off": "Aus",
"lang_setting_s": "s",
"lang_setting_box": "Standard-Tröt-Box-Aktion:{{set}}",
"lang_setting_gif": "GIF:{{set}}",
"lang_setting_selt": "Auto-Falten:{{set1}} Zeilen und höher, {{set2}} Buchstaben und höher",
"lang_setting_autocw": "Auto CW:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_width": "Minimale Breite:{{set}}",
"lang_setting_fixwidth": "TweetDeck feste Breite:{{set}}px",
"lang_setting_img": "Nach dem Posten eines Bildes:{{set}}",
"lang_setting_font": "Schriftart:{{set}}",
"lang_setting_default": "Standard-Schriftart",
"lang_setting_size": "Schriftgröße:{{set}}px",
"lang_setting_imgheight": "Bildhöhe:{{set}}px",
"lang_setting_ticker": "#InstanceTicker:{{set}}px",
"lang_setting_animation": "Animation: {{set}}",
"lang_setting_tag": "Tag-Verlauf:{{set}}",
"lang_setting_boxConfirm": "Postfach:{{set}}",
"lang_setting_ul": "Muttersprache:{{set}}",
"lang_setting_notf": "System Benachrichtigungen:{{set}}",
"lang_setting_quote": "Zitierformat:{{set}}",
"lang_setting_via": "Via:{{set}}",
"lang_setting_mov": "Aktionstasten verstecken:{{set}}",
"lang_setting_setasread": "Benachrichtigungs-Markierungen:{{set}}",
"lang_setting_main": "Standard-Konto:{{set}}",
"lang_setting_sec": "Zweite Tröt-Taste:{{set}}",
"lang_setting_ksref": "Tastaturkürzel werden aktualisiert.",
"lang_setting_nomuting": "Kein Client ist stumm.",
"lang_setting_notftest": " Benachrichtigungen testen ",
"lang_setting_notftestprof": "Ihr Symbol wird angezeigt.",
"lang_setting_exportwarn": "Nur wichtige Daten werden exportiert. Sie müssen diese Daten sichern.",
"lang_setting_importwarn": "Alle Daten werden gelöscht."
}

View File

@@ -1,279 +1,250 @@
//commonError //commonError
var lang = { var lang={
"language": "en", "language":"en",
"lang_toot": "Toot", "lang_toot":"Toot",
"lang_there": "Yes", "lang_there":"Yes",
"lang_nothing": "None", "lang_nothing":"None",
"lang_yesno": "Yes", "lang_yesno":"Yes",
"lang_no": "No", "lang_no":"No",
"lang_progress": "Wait...", "lang_progress":"Wait...",
"lang_edit": "Edit", "lang_edit":"Edit",
"lang_del": "Delete", "lang_del":"Delete",
"lang_add": "Add", "lang_add":"Add",
"lang_fatalerroroccured": "Some errors are occured, please restart TheDesk.", "lang_fatalerroroccured":"Some errors are occured, please restart TheDesk.",
"lang_speech": "Google US English", "lang_speech":"Google US English",
//language.html //language.html
"lang_lang": "Language", "lang_lang":"Language",
"lang_langlocale": "English", "lang_langlocale":"English",
"lang_back": "Back", "lang_back":"Back",
"lang_set": "Set", "lang_set":"Set",
"lang_langadd": "Translate TheDesk to other languages or proofread TheDesk on <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>. TheDesk needs your help.", "lang_langadd":"Translate TheDesk to other languages or proofread TheDesk on <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>. TheDesk needs your help.",
//common/time.js
"lang_time_prefixAgo": null,
"lang_time_prefixFromNow": null,
"lang_time_suffixAgo": null,
"lang_time_suffixFromNow": null,
"lang_time_inPast": null,
"lang_time_seconds": "%d s",
"lang_time_minute": "1 m",
"lang_time_minutes": "%d m",
"lang_time_hour": "1 h",
"lang_time_hours": "%d h",
"lang_time_day": "1 d",
"lang_time_days": "%d d",
"lang_time_month": "1 month",
"lang_time_months": "%d months",
"lang_time_year": "y",
"lang_time_years": "%d y",
//common/version.js //common/version.js
"lang_version_usever": "No update is found({{ver}})", "lang_version_usever":"No update is found({{ver}})",
"lang_version_skipver": "Update was ignored.", "lang_version_skipver":"Update was ignored.",
"lang_version_platform": "Do you want auto-updates?(users installed on Microsoft Store select 'No')", "lang_version_platform":"Was this software installed at Microsoft Store? When select 'yes', any update was ignored.",
"lang_version_platform_linux": "Do you want auto-updates?(users installed on Snapcraft select 'No')", "lang_version_platform_linux":"Was this software installed at Snapcraft(snapd)? When select 'yes', any update was ignored.",
"lang_version_platform_mac": "Do you want auto-updates?(Homebrew Cask users select 'No')", "lang_version_platform_mac":"Was this software installed at Homebrew Cask? When select 'yes', any update was ignored.",
//login //login
//login/login.js //login/login.js
"lang_login_noauth": "Show TL of unlogined accounts", "lang_login_noauth":"Show TL of unlogined accounts",
//login/manager.js //login/manager.js
"lang_manager_info": "About this instance", "lang_manager_info":"About this instance",
"lang_manager_refresh": "Refresh", "lang_manager_refresh":"Refresh",
"lang_manager_delete": "Logout", "lang_manager_delete":"Logout",
"lang_manager_color": "Account Color", "lang_manager_color":"Account Color",
"lang_manager_confirm": "is about to logout. Continue?", "lang_manager_confirm":"is about to logout. Continue?",
"lang_manager_mainAcct": "Done:choose main account", "lang_manager_mainAcct":"Done:choose main account",
"lang_manager_def": "Default", "lang_manager_def":"Default",
"lang_manager_none": "None", "lang_manager_none":"None",
"lang_manager_godev": "Open DevCenter of Misskey. We show also an official documents to refer.", "lang_manager_godev":"Open DevCenter of Misskey. We show also an official documents to refer.",
"lang_manager_logout": "Logout",
//post/bb-md.js //post/bb-md.js
"lang_bbmd_misskey": "TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.", "lang_bbmd_misskey":"TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
//post/emoji.js //post/emoji.js
"lang_emoji_get": "Get emojis", "lang_emoji_get":"Get emojis",
"lang_emoji_custom": "Custom emojis", "lang_emoji_custom":"Custom emojis",
"lang_defaultemojis_text": "Emojis about {{cat}}", "lang_defaultemojis_text":"Emojis about {{cat}}",
//post/img.js //post/img.js
"lang_postimg_previewdis": "cannot preview", "lang_postimg_previewdis":"cannot preview",
"lang_postimg_aftupload": "You cannot change accounts after uploading.", "lang_postimg_aftupload":"You cannot change accounts after uploading.",
"lang_postimg_failupload": "Failed", "lang_postimg_delete":"Delete this image.",
"lang_postimg_delete": "Delete this image.",
//post/post.js //post/post.js
"lang_post_tagTL": "This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?", "lang_post_tagTL":"This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?",
"lang_post_tagVis": "This toot(not 'public' toot) is not shown on this tag's TL.", "lang_post_tagVis":"This toot(not 'public' toot) is not shown on this tag's TL.",
"lang_post_cwtitle": "Auto CW Alert", "lang_post_cwtitle":"Auto CW Alert",
"lang_post_cwtxt": "You are about to post longer toot than you set.\nWarning text:", "lang_post_cwtxt":"You are about to post longer toot than you set.\nWarning text:",
"lang_post_btn1": "Cancel (will not post)", "lang_post_btn1":"Cancel (will not post)",
"lang_post_btn2": "Make text hidden automatically", "lang_post_btn2":"Make text hidden automatically",
"lang_post_btn3": "Continue to post", "lang_post_btn3":"Continue to post",
//post/status.js //post/status.js
"lang_status_favWarn": "It will take a miunte to favourite a remote toot.", "lang_status_favWarn":"It will take a miunte to favourite a remote toot.",
"lang_status_btWarn": "It will take a miunte to boost a remote toot.", "lang_status_btWarn":"It will take a miunte to boost a remote toot.",
"lang_status_follow": "Follow", "lang_status_follow":"Follow",
"lang_status_unfollow": "Unfollow", "lang_status_unfollow":"Unfollow",
"lang_status_block": "Block", "lang_status_block":"Block",
"lang_status_unblock": "Unblock", "lang_status_unblock":"Unblock",
"lang_status_mute": "Mute", "lang_status_mute":"Mute",
"lang_status_unmute": "Unmute", "lang_status_unmute":"Unmute",
"lang_status_redraftTitle": "Delete & redraft", "lang_status_redraft":"Continue to delete & redraft? You lose statuses of this toot. This fanction may contain some bugs. Images of this toot will be deleted on older than Mastodon 2.4.1.",
"lang_status_redraft": "Continue to delete & redraft? You lose statuses of this toot. This fanction may contain some bugs. Images of this toot will be deleted on older than Mastodon 2.4.1.", "lang_status_emphas":"'s toots are emphasized. Please reload after this action.",
"lang_status_emphas": "'s toots are emphasized. Please reload after this action.", "lang_status_unemphas":"'s toots are not emphasized. Please reload after this action.",
"lang_status_unemphas": "'s toots are not emphasized. Please reload after this action.", "lang_status_unendorse":"Not feature on profile",
"lang_status_unendorse": "Not feature on profile", "lang_status_endorse":"Feature on profile",
"lang_status_endorse": "Feature on profile",
"lang_status_followers": "Followers",
"lang_status_active": "Last status",
//post/suggest.js //post/suggest.js
"lang_suggest_nodata": "Please get emojis list in order to show suggestion.", "lang_suggest_nodata":"Please get emojis list in order to show suggestion.",
//post/use-txtbox.js //post/use-txtbox.js
"lang_usetxtbox_reply": "Reply Mode. Ctrl+Shift+C to clear.", "lang_usetxtbox_reply":"Reply Mode. Ctrl+Shift+C to clear.",
//tl/card.js //tl/card.js
"lang_cards_check": " check", "lang_cards_check":" check",
"lang_cards_pip": "PiP mode", "lang_cards_pip":"PiP mode",
//tl/details.js //tl/details.js
"lang_details_nodata": "No data", "lang_details_nodata":"No data",
"lang_details_filtered": "Filtered toot", "lang_details_filtered":"Filtered toot",
"lang_details_embed": "Embed HTML is cliped.", "lang_details_embed":"Embed HTML is cliped.",
"lang_details_url": "URL of this toot is cliped.", "lang_details_url":"URL of this toot is cliped.",
"lang_details_txt": "Content of this toot is cliped.", "lang_details_txt":"Content of this toot is cliped.",
//tl/filter.js //tl/filter.js
"lang_filter_nodata": "No data", "lang_filter_nodata":"No data",
"lang_filter_errordegree": "Please check a context", "lang_filter_errordegree":"Please check a context",
//tl/list.js //tl/list.js
"lang_list_nodata": "No data", "lang_list_nodata":"No data",
"lang_list_show": "Show", "lang_list_show":"Show",
"lang_list_users": "Users list", "lang_list_users":"Users list",
"lang_list_nouser": "No users in this list.", "lang_list_nouser":"No users in this list.",
"lang_list_add": "Add to the list", "lang_list_add":"Add to the list",
"lang_list_add_misskey": "(perhaps this user has been listed)", "lang_list_add_misskey":"(perhaps this user has been listed)",
"lang_list_remove": "Remove from the list", "lang_list_remove":"Remove from the list",
//tl/notification.js //tl/notification.js
"lang_notf_new": " new notifications", "lang_notf_new":" new notifications",
//tl/speech.js //tl/speech.js
"lang_speech_refresh": "Save value about TTS config", "lang_speech_refresh":"Save value about TTS config",
//tl/src.js //tl/src.js
"lang_src_ts": "chronological order", "lang_src_ts":"chronological order",
"lang_src_people": " people toot", "lang_src_people":" people toot",
//tl/tag.js //tl/tag.js
"lang_tags_always": "Always toots with ", "lang_tags_always":"Always toots with ",
"lang_tags_realtime": "Tag-stream toot", "lang_tags_realtime":"Tag-stream toot",
"lang_tags_tagunpin": "Unpin {{tag}}", "lang_tags_tagunpin":"Unpin {{tag}}",
"lang_tags_unrealtime": "Disable TsT", "lang_tags_unrealtime":"Disable TsT",
"lang_tags_tagwarn": "Auto complete {{tag}}, if toot without {{tag}}", "lang_tags_tagwarn":"Auto complete {{tag}}, if toot without {{tag}}",
//tl/tl.js //tl/tl.js
"lang_tl_media": "Media", "lang_tl_media":"Media",
"lang_tl_reconnect": "Reconnect to streaming API", "lang_tl_reconnect":"Reconnect to streaming API",
//ui/img.js
"lang_img_DLDone": "Downloaded:",
//ui/layout.js //ui/layout.js
"lang_layout_gotop": "Go top of this column. When icon is red, this column cannot connect straming API. Please reload.", "lang_layout_gotop":"Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
"lang_layout_thisacct": "{{notf}} of this account", "lang_layout_thisacct":"{{notf}} of this account",
"lang_layout_delthis": "Remove this column", "lang_layout_delthis":"Remove this column",
"lang_layout_setthis": "Preferences of this column", "lang_layout_setthis":"Preferences of this column",
"lang_layout_mediafil": "Media filtering", "lang_layout_mediafil":"Media filtering",
"lang_layout_linkana": "Auto Link Analyzer", "lang_layout_linkana":"Auto Link Analyzer",
"lang_layout_linkanades": "Auto link analyzer", "lang_layout_linkanades":"Auto link analyzer",
"lang_layout_tts": "Text to speech ", "lang_layout_tts":"Text to speech ",
"lang_layout_reconnect": "Reload this column", "lang_layout_reconnect":"Reconnect to streaming API",
"lang_layout_headercolor": "Header color of this column", "lang_layout_headercolor":"Header color of this column",
"lang_layout_nodata": "[No data]<br>F5/⌘+R to reload", "lang_layout_nodata":"[No data]<br>F5/⌘+R to reload",
"lang_layout_dm": "Direct Message", "lang_layout_dm":"Direct Message",
"lang_layout_webviewmode": "Prefer WebView", "lang_layout_webviewmode":"Prefer WebView",
"lang_excluded": "Excluded type of notification", "lang_excluded":"Excluded type of notification",
"lang_layout_excludingbt": "Show BT mode(OFF/Exclude BT/Only BT)", "lang_layout_excludingbt":"Show BT mode(OFF/Exclude BT/Only BT)",
"lang_layout_leftFold": "Stack to the left", "lang_layout_leftFold":"Stack to the left",
"lang_layout_leftUnfold": "Dock on the right", "lang_layout_leftUnfold":"Dock on the right",
"lang_layout_deleteColumn": "Delete this column",
"lang_layout_deleteColumnDesc": "Delete this column",
//ui/sort.js //ui/sort.js
"lang_sort_gothis": "Go to this column", "lang_sort_gothis":"Go to this column",
"lang_sort_remthis": "Delete this column", "lang_sort_remthis":"Delete this column",
//ui/spotify.js //ui/spotify.js
"lang_spotify_img": "Attach an album artwork", "lang_spotify_img":"Attach an album artwork",
"lang_spotify_imgno": "Not attach an album artwork", "lang_spotify_imgno":"Not attach an album artwork",
"lang_spotify_acct": "Connect TheDesk to Spotify", "lang_spotify_acct":"Connect TheDesk to Spotify",
"lang_spotify_np": "Done:templete of NowPlaying", "lang_spotify_np":"Done:templete of NowPlaying",
"lang_setting_npprovide": "NowPlaying provider:{{set}}", "lang_setting_npprovide":"NowPlaying provider:{{set}}",
//userdata/his-data.js //userdata/his-data.js
"lang_hisdata_frcreq": "Required Mastodon 2.4.3 and above", "lang_hisdata_frcreq":"Required Mastodon 2.4.3 and above",
"lang_hisdata_frcwarn": "Unfollow accounts will be shown.", "lang_hisdata_frcwarn":"Unfollow accounts will be shown.",
"lang_hisdata_taketime": "It will take 30s ~ several minutes", "lang_hisdata_taketime":"It will take 30s ~ several minutes",
"lang_hisdata_notonmisskey": "Misskey is unable to request.", "lang_hisdata_notonmisskey":"Misskey is unable to request.",
"lang_hisdata_key": "This user is proofed by {{set}}", "lang_hisdata_key":"This user is proofed by {{set}}",
//userdata/showOnTL.js //userdata/showOnTL.js
"lang_showontl_movetxt": "This account was moved", "lang_showontl_movetxt":"This account was moved",
"lang_showontl_movebtn": "Continue on the new account", "lang_showontl_movebtn":"Continue on the new account",
"lang_showontl_botacct": "[bot]", "lang_showontl_botacct":"[bot]",
"lang_showontl_followed": "Following you", "lang_showontl_followed":"Following you",
"lang_showontl_notf": "Notification ", "lang_showontl_notf":"Notification ",
"lang_showontl_domain": "Domain ", "lang_showontl_domain":"Domain ",
"lang_showontl_listwarn": "Follow to add this user to lists.", "lang_showontl_listwarn":"Follow to add this user to lists.",
"lang_showontl_verified": "This website is verified by owner at ", "lang_showontl_verified":"This website is verified by owner at ",
//parse //parse
"lang_parse_mentioned": " replied to you", "lang_parse_mentioned":" replied to you",
"lang_parse_faved": " favourited your toot", "lang_parse_faved":" favourited your toot",
"lang_parse_bted": " boosted your toot", "lang_parse_bted":" boosted your toot",
"lang_parse_btedsimple": " boosted", "lang_parse_btedsimple":" boosted",
"lang_parse_polled": "'s poll", "lang_parse_polled":"'s poll",
"lang_parse_notftime": "Actioned at", "lang_parse_notftime":"Actioned at",
"lang_parse_cwshow": "Show", "lang_parse_cwshow":"Show",
"lang_parse_fulltext": "Full size text:", "lang_parse_fulltext":"Full size text:",
"lang_parse_autofold": "Auto folded", "lang_parse_autofold":"Auto folded",
"lang_parse_more": "More", "lang_parse_more":"More",
"lang_parse_url": "URL Analyzer", "lang_parse_url":"URL Analyzer",
"lang_parse_tagTL": "Timeline of {{tag}}", "lang_parse_tagTL":"Timeline of {{tag}}",
"lang_parse_tagtoot": "Toot with {{tag}}", "lang_parse_tagtoot":"Toot with {{tag}}",
"lang_parse_tagpin": "Pin {{tag}}", "lang_parse_tagpin":"Pin {{tag}}",
"lang_parse_public": "Public", "lang_parse_public":"Public",
"lang_parse_unlisted": "Unlisted", "lang_parse_unlisted":"Unlisted",
"lang_parse_private": "Private", "lang_parse_private":"Private",
"lang_parse_direct": "Direct", "lang_parse_direct":"Direct",
"lang_parse_clickcopy": "Click to copy text of this toot", "lang_parse_clickcopy":"Click to copy text of this toot",
"lang_parse_clickcopyurl": "Click to copy URL of this toot", "lang_parse_clickcopyurl":"Click to copy URL of this toot",
"lang_parse_trans": "Translate to Japanese", "lang_parse_trans":"Translate to Japanese",
"lang_parse_replyto": "Reply to this toot", "lang_parse_replyto":"Reply to this toot",
"lang_parse_bt": "Boost this toot", "lang_parse_bt":"Boost this toot",
"lang_parse_fav": "Favourite this toot", "lang_parse_fav":"Favourite this toot",
"lang_parse_quote": "Quote this toot", "lang_parse_quote":"Quote this toot",
"lang_parse_del": "Delete this toot", "lang_parse_del":"Delete this toot",
"lang_parse_pin": "Pin this toot", "lang_parse_pin":"Pin this toot",
"lang_parse_det": "Details via your main account.", "lang_parse_det":"Details via your main account.",
"lang_parse_redraft": "Delete & re-draft", "lang_parse_redraft":"Delete & re-draft",
"lang_parse_followed": "Followed you", "lang_parse_followed":"Followed you",
"lang_parse_clientop": "Operation of this client", "lang_parse_clientop":"Operation of this client",
"lang_parse_clienttxt": " will be", "lang_parse_clienttxt":" will be",
"lang_parse_clientno": "done nothing", "lang_parse_clientno":"done nothing",
"lang_parse_clientemp": "emphasized(/not emphasized)", "lang_parse_clientemp":"emphasized(/not emphasized)",
"lang_parse_clientmute": "muted", "lang_parse_clientmute":"muted",
"lang_parse_mute": " will be muted. You can remove on preferences.", "lang_parse_mute":" will be muted. You can remove on preferences.",
"lang_parse_voted": "Voted", "lang_parse_voted":"Voted",
"lang_parse_vote": "Vote", "lang_parse_vote":"Vote",
"lang_parse_unvoted": "Show the result without voting", "lang_parse_unvoted":"Show the result without voting",
"lang_parse_endedvote": "Expired", "lang_parse_endedvote":"Expired",
"lang_parse_thread": "Show thread", "lang_parse_thread":"Show thread",
"lang_parse_unknown": "Attached file",
"lang_parse_nsfw": "sensitive media",
"lang_parse_notffilter": "Show this user's notifications",
//misskey //misskey
"lang_misskeyparse_renote": "Repost", "lang_misskeyparse_renote":"Repost",
"lang_misskeyparse_renoteqt": "Renote", "lang_misskeyparse_renoteqt":"Renote",
"lang_misskeyparse_reaction": "Reaction", "lang_misskeyparse_reaction":"Reaction",
"lang_misskeyparse_tagnostr": "No streaming API on Tag TLs", "lang_misskeyparse_tagnostr":"No streaming API on Tag TLs",
"lang_misskeyparse_listnostr": "No streaming API on List TLs", "lang_misskeyparse_listnostr":"No streaming API on List TLs",
"lang_misskeyparse_home": "Home", "lang_misskeyparse_home":"Home",
"lang_misskeyparse_followers": "Follower", "lang_misskeyparse_followers":"Follower",
"lang_misskeyparse_specified": "Specified User", "lang_misskeyparse_specified":"Specified User",
"lang_misskeyparse_qt": "Misskey renote(quote) mode:Ctrl+Shift+Enter to clear", "lang_misskeyparse_qt":"Misskey renote(quote) mode:Ctrl+Shift+Enter to clear",
"lang_misskeyparse_renoted": " renoted your following post.", "lang_misskeyparse_renoted":" renoted your following post.",
"lang_misskeyparse_quoted": " quoted your following post.", "lang_misskeyparse_quoted":" quoted your following post.",
"lang_misskeyparse_reacted": " reacted your following post.", "lang_misskeyparse_reacted":" reacted your following post.",
//setting //setting
"lang_setting_time": "Time format:{{set}}", "lang_setting_time":"Time format:{{set}}",
"lang_setting_theme": "Theme:{{set}}", "lang_setting_theme":"Theme:{{set}}",
"lang_setting_nsfw": "Sensitive media:{{set}}", "lang_setting_nsfw":"NSFW:{{set}}",
"lang_setting_cw": "CW:{{set}}", "lang_setting_cw":"CW:{{set}}",
"lang_setting_cwtext": "Default CW text:{{set}}", "lang_setting_cwtext":"Default CW text:{{set}}",
"lang_setting_cws": "Always CW on:{{set}}", "lang_setting_cws":"Always CW on:{{set}}",
"lang_setting_rp": "Reply counter:{{set}}", "lang_setting_rp":"Reply counter:{{set}}",
"lang_setting_vis": "Default visibility:{{set}}", "lang_setting_vis":"Default visibility:{{set}}",
"lang_setting_popup": "Popup notification:{{set}}", "lang_setting_popup":"Popup notification:{{set}}",
"lang_setting_off": "Off", "lang_setting_off":"Off",
"lang_setting_s": "s", "lang_setting_s":"s",
"lang_setting_box": "Default toot box action:{{set}}", "lang_setting_box":"Default toot box action:{{set}}",
"lang_setting_gif": "GIF:{{set}}", "lang_setting_gif":"GIF:{{set}}",
"lang_setting_selt": "Auto fold:{{set1}} lines and above, {{set2}} letters and above", "lang_setting_selt":"Auto fold:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_autocw": "Auto CW:{{set1}} lines and above, {{set2}} letters and above", "lang_setting_autocw":"Auto CW:{{set1}} lines and above, {{set2}} letters and above",
"lang_setting_width": "Minimam width:{{set}}", "lang_setting_width":"Minimam width:{{set}}",
"lang_setting_fixwidth": "TweetDeck fixed width:{{set}}px", "lang_setting_fixwidth":"TweetDeck fixed width:{{set}}px",
"lang_setting_img": "After posting an image:{{set}}", "lang_setting_img":"After posting an image:{{set}}",
"lang_setting_font": "Fonts:{{set}}", "lang_setting_font":"Fonts:{{set}}",
"lang_setting_default": "default font", "lang_setting_default":"default font",
"lang_setting_size": "Font size:{{set}}px", "lang_setting_size":"Font size:{{set}}px",
"lang_setting_imgheight": "Image height:{{set}}px", "lang_setting_imgheight":"Image height:{{set}}px",
"lang_setting_ticker": "#InstanceTicker:{{set}}px", "lang_setting_ticker":"#InstanceTicker:{{set}}px",
"lang_setting_animation": "Animation: {{set}}", "lang_setting_animation":"Animation: {{set}}",
"lang_setting_tag": "Tag TL:{{set}}", "lang_setting_tag":"Tag TL:{{set}}",
"lang_setting_boxConfirm": "Post box:{{set}}", "lang_setting_boxConfirm":"Post box:{{set}}",
"lang_setting_ul": "Native locale:{{set}}", "lang_setting_ul":"Native locale:{{set}}",
"lang_setting_notf": "Native notification:{{set}}", "lang_setting_notf":"Native notification:{{set}}",
"lang_setting_quote": "Quote format:{{set}}", "lang_setting_quote":"Quote format:{{set}}",
"lang_setting_via": "Via:{{set}}", "lang_setting_via":"Via:{{set}}",
"lang_setting_mov": "Action buttons hiding:{{set}}", "lang_setting_mov":"Action buttons hiding:{{set}}",
"lang_setting_setasread": "Notification markers:{{set}}", "lang_setting_setasread":"Notification markers:{{set}}",
"lang_setting_main": "Default account:{{set}}", "lang_setting_main":"Default account:{{set}}",
"lang_setting_sec": "Secondary toot button:{{set}}", "lang_setting_sec":"Secondary toot button:{{set}}",
"lang_setting_ksref": "Keyboard shortcuts are refreshed.", "lang_setting_ksref":"Keyboard shortcuts are refreshed.",
"lang_setting_nomuting": "No client is muted.", "lang_setting_nomuting":"No client is muted.",
"lang_setting_notftest": " Notification test ", "lang_setting_notftest":" Notification test ",
"lang_setting_notftestprof": "Your icon is shown.", "lang_setting_notftestprof":"Your icon is shown.",
"lang_setting_exportwarn": "Only important data will be exported. You must keep this data secure.", "lang_setting_exportwarn":"Only important data will be exported. You must keep this data secure.",
"lang_setting_importwarn": "All data will be deleted.", "lang_setting_importwarn":"All data will be deleted.",
} }

View File

@@ -1,279 +1,252 @@
//commonError //commonError
var lang = { var lang={
"language": "ja", "language":"ja",
"lang_toot": "トゥート", "lang_toot":"トゥート",
"lang_there": "あり", "lang_there":"あり",
"lang_nothing": "なし", "lang_nothing":"なし",
"lang_yesno": "はい", "lang_yesno":"はい",
"lang_no": "いいえ", "lang_no":"いいえ",
"lang_progress": "処理中", "lang_progress":"処理中",
"lang_edit": "編集", "lang_edit":"編集",
"lang_del": "削除", "lang_del":"削除",
"lang_add": "追加", "lang_add":"追加",
"lang_fatalerroroccured": "エラーが発生しました。しばらく待ってから再起動してください。", "lang_fatalerroroccured":"エラーが発生しました。しばらく待ってから再起動してください。",
"lang_speech": "Google 日本語", "lang_speech":"Google 日本語",
//language.html //language.html
"lang_lang": "言語", "lang_lang":"言語",
"lang_langlocale": "日本語", "lang_langlocale":"日本語",
"lang_back": "戻る", "lang_back":"戻る",
"lang_set": "設定", "lang_set":"設定",
"lang_langadd": "<a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>から翻訳に参加できます。英語の校正(緊急)や他言語に翻訳していただける方を募集しております。", "lang_langadd":"<a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>から翻訳に参加できます。英語の校正(緊急)や他言語に翻訳していただける方を募集しております。",
//common/time.js //common/version.js
"lang_time_prefixAgo": null, "lang_version_usever":"お使いのバージョン{{ver}}は最新です。",
"lang_time_prefixFromNow": "今から", "lang_version_skipver":"アップデートはスキップされました。",
"lang_time_suffixAgo": "", "lang_version_platform":"このソフトウェアはMicrosoft Storeからダウンロードされましたか(「はい」を選択すると次回からアップデート通知を無視します。)",
"lang_time_suffixFromNow": "", "lang_version_platform_linux":"このソフトウェアはSnapcraft(snapd)からインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
"lang_time_inPast": '', "lang_version_platform_mac":"このソフトウェアはHomebrew Caskからインストールしましたか(「はい」を選択すると次回からアップデート通知を無視します。)",
"lang_time_seconds": "%d秒前", //login
"lang_time_minute": "1分前", //login/login.js
"lang_time_minutes": "%d分前", "lang_login_noauth":"認証せずに見る",
"lang_time_hour": "1時間前", //login/manager.js
"lang_time_hours": "%d時間前", "lang_manager_info":"インスタンス情報",
"lang_time_day": "昨日", "lang_manager_refresh":"情報更新",
"lang_time_days": "%d日前", "lang_manager_delete":"削除",
"lang_time_month": "昨月", "lang_manager_color":"アカウントカラーを選択",
"lang_time_months": "%dヶ月前", "lang_manager_confirm":"を削除します。",
"lang_time_year": "去年", "lang_manager_mainAcct":"メインアカウントを設定しました。",
"lang_time_years": "%d年前", "lang_manager_def":"既定",
//common/version.js "lang_manager_none":"なし",
"lang_version_usever": "お使いのバージョン{{ver}}は最新です。", "lang_manager_godev":"MisskeyのDevセンターに移動します。同時に開かれるドキュメントを参考にログインしてください。",
"lang_version_skipver": "アップデートはスキップされました。", //post/bb-md.js
"lang_version_platform": "このソフトウェアはMicrosoft Storeからダウンロードされましたか通常はホームページからインストールするため「いいえ」を選んでください。「はい」を選ぶとMicrosoft Storeからアップデートが提供され、アップデートの通知を出しません。", "lang_bbmd_misskey":"TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。",
"lang_version_platform_linux": "このソフトウェアはSnapcraft(snapd)からインストールしましたか通常はホームページからインストールするため「いいえ」を選んでください。「はい」を選ぶとSnapcraftからアップデートが提供され、アップデートの通知を出しません。", //post/emoji.js
"lang_version_platform_mac": "このソフトウェアはHomebrew Caskからインストールしましたか通常はホームページからインストールするため「いいえ」を選んでください。「はい」を選ぶとアップデートの通知を出しません。", "lang_emoji_get":"絵文字リストを取得",
//login "lang_emoji_custom":"カスタム絵文字",
//login/login.js "lang_defaultemojis_text":"{{cat}}の絵文字",
"lang_login_noauth": "認証せずに見る", //post/img.js
//login/manager.js "lang_postimg_previewdis":"プレビューできません。",
"lang_manager_info": "インスタンス情報", "lang_postimg_aftupload":"アップロード後はアカウントを切り替えられません。",
"lang_manager_refresh": "情報更新", "lang_postimg_delete":"この画像を削除します",
"lang_manager_delete": "削除", //post/post.js
"lang_manager_color": "アカウントカラーを選択", "lang_post_tagTL":"デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
"lang_manager_confirm": "を削除します。", "lang_post_tagVis":"公開範囲が「公開」以外だと、タグTLに表示されません。(一部インスタンスを除く)",
"lang_manager_mainAcct": "メインアカウントを設定しました。", "lang_post_cwtitle":"長文投稿の警告",
"lang_manager_def": "既定", "lang_post_cwtxt":"指定文字数、行数を超えるトゥートを行おうとしています。\n自動CWのタイトル:",
"lang_manager_none": "なし", "lang_post_btn1":"キャンセル(投稿しない)",
"lang_manager_godev": "MisskeyのDevセンターに移動します。同時に開かれるドキュメントを参考にログインしてください。", "lang_post_btn2":"自動でCWを付ける",
"lang_manager_logout": "ログアウト", "lang_post_btn3":"そのまま投稿",
//post/bb-md.js //post/status.js
"lang_bbmd_misskey": "TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。", "lang_status_favWarn":"お気に入り登録しました。インスタンスが違うときは時間がかかる場合があります。",
//post/emoji.js "lang_status_btWarn":"ブーストしました。インスタンスが違うときは時間がかかる場合があります。",
"lang_emoji_get": "絵文字リストを取得", "lang_status_follow":"フォロー",
"lang_emoji_custom": "カスタム絵文字", "lang_status_unfollow":"フォロー解除",
"lang_defaultemojis_text": "{{cat}}の絵文字", "lang_status_block":"ブロック",
//post/img.js "lang_status_unblock":"ブロック解除",
"lang_postimg_previewdis": "プレビューできません。", "lang_status_mute":"ミュート",
"lang_postimg_aftupload": "アップロード後はアカウントを切り替えられません。", "lang_status_unmute":"ミュート解除",
"lang_postimg_failupload": "アップロードに失敗しました。", "lang_status_redraft":"削除して再編集しますか?そのトゥートの全てのデータがリセットされます。この機能はベータ版です。画像は~v2.4.1で破棄されます。",
"lang_postimg_delete": "この画像を削除します", "lang_status_emphas":"を強調します。リロードしてください。",
//post/post.js "lang_status_unemphas":"を強調解除します。リロードしてください。",
"lang_post_tagTL": "デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。", "lang_status_unendorse":"紹介解除",
"lang_post_tagVis": "公開範囲が「公開」以外だと、タグTLに表示されません。(一部インスタンスを除く)", "lang_status_endorse":"プロフで紹介する",
"lang_post_cwtitle": "長文投稿の警告", //post/suggest.js
"lang_post_cwtxt": "指定文字数、行数を超えるトゥートを行おうとしています。\n自動CWのタイトル:", "lang_suggest_nodata":"サジェストのために絵文字リストを取得してください。",
"lang_post_btn1": "キャンセル(投稿しない)", //post/use-txtbox.js
"lang_post_btn2": "自動でCWを付ける", "lang_usetxtbox_reply":"返信モードです。クリアするときはCtrl+Shift+Cを押してください。",
"lang_post_btn3": "そのまま投稿", //tl/card.js
//post/status.js "lang_cards_check":"チェック",
"lang_status_favWarn": "お気に入り登録しました。インスタンスが違うときは時間がかかる場合があります。", "lang_cards_pip":"ながら観モード",
"lang_status_btWarn": "ブーストしました。インスタンスが違うときは時間がかかる場合があります。", //tl/details.js
"lang_status_follow": "フォロー", "lang_details_nodata":"データなし",
"lang_status_unfollow": "フォロー解除", "lang_details_filtered":"フィルターされました。",
"lang_status_block": "ブロック", "lang_details_embed":"埋め込みHTMLがコピーされました。",
"lang_status_unblock": "ブロック解除", "lang_details_url":"トゥートURLがコピーされました。",
"lang_status_mute": "ミュート", "lang_details_txt":"トゥート本文がコピーされました。",
"lang_status_unmute": "ミュート解除", //tl/filter.js
"lang_status_redraftTitle": "削除して再編集", "lang_filter_nodata":"フィルターはありません",
"lang_status_redraft": "削除して再編集しますか?そのトゥートの全てのデータがリセットされます。この機能はベータ版です。画像は~v2.4.1で破棄されます。", "lang_filter_errordegree":"適応範囲を最低一つ以上チェックしてください。",
"lang_status_emphas": "を強調します。リロードしてください。", //tl/list.js
"lang_status_unemphas": "を強調解除します。リロードしてください。", "lang_list_nodata":"リストはありません",
"lang_status_unendorse": "紹介解除", "lang_list_show":"表示",
"lang_status_endorse": "プロフで紹介する", "lang_list_users":"ユーザー一覧",
"lang_status_followers": "フォロワー", "lang_list_nouser":"ユーザーはいません",
"lang_status_active": "最新トゥート", "lang_list_add":"リストに追加",
//post/suggest.js "lang_list_add_misskey":"(重複追加の可能性があります)",
"lang_suggest_nodata": "サジェストのために絵文字リストを取得してください。", "lang_list_remove":"リストから削除",
//post/use-txtbox.js //tl/notification.js
"lang_usetxtbox_reply": "返信モードです。クリアするときはCtrl+Shift+Cを押してください。", "lang_notf_new":"件の新しい通知",
//tl/card.js //tl/speech.js
"lang_cards_check": "チェック", "lang_speech_refresh":"音声読み上げ設定を更新しました。",
"lang_cards_pip": "ながら観モード", //tl/src.js
//tl/details.js "lang_src_ts":"時系列",
"lang_details_nodata": "データなし", "lang_src_people":"人がトゥート",
"lang_details_filtered": "フィルターされました。", //tl/tag.js
"lang_details_embed": "埋め込みHTMLがコピーされました。", "lang_tags_always":"常に",
"lang_details_url": "トゥートURLがコピーされました。", "lang_tags_realtime":"実況",
"lang_details_txt": "トゥート本文がコピーされました。", "lang_tags_tagunpin":"{{tag}}をよく使うタグから削除",
//tl/filter.js "lang_tags_unrealtime":"実況解除",
"lang_filter_nodata": "フィルターはありません", "lang_tags_tagwarn":"{{tag}}がない場合自動で補完されます。",
"lang_filter_errordegree": "適応範囲を最低一つ以上チェックしてください。", //tl/tl.js
//tl/list.js "lang_tl_media":"メディア",
"lang_list_nodata": "リストはありません", "lang_tl_reconnect":"Streamingに再接続しました",
"lang_list_show": "表示", //ui/img.js
"lang_list_users": "ユーザー一覧", "lang_img_DLDone":"ダウンロード先:",
"lang_list_nouser": "ユーザーはいません", //ui/layout.js
"lang_list_add": "リストに追加", "lang_layout_gotop":"一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。",
"lang_list_add_misskey": "(重複追加の可能性があります)", "lang_layout_thisacct":"このアカウントの{{notf}}",
"lang_list_remove": "リストから削除", "lang_layout_delthis":"このカラムを削除",
//tl/notification.js "lang_layout_setthis":"このカラムの設定",
"lang_notf_new": "件の新しい通知", "lang_layout_mediafil":"メディアフィルター",
//tl/speech.js "lang_layout_linkana":"リンク解析",
"lang_speech_refresh": "音声読み上げ設定を更新しました。", "lang_layout_linkanades":"リンクの解析を切り替え",
//tl/src.js "lang_layout_tts":"読み上げ",
"lang_src_ts": "時系列", "lang_layout_reconnect":"ストリーミング再接続",
"lang_src_people": "人がトゥート", "lang_layout_headercolor":"TLヘッダーカラー",
//tl/tag.js "lang_layout_nodata":"[ここにトゥートはありません。]<br>F5/⌘+Rで再読込できます。",
"lang_tags_always": "常に", "lang_layout_dm":"ダイレクトメッセージ",
"lang_tags_realtime": "実況", "lang_layout_webviewmode":"WebView優先",
"lang_tags_tagunpin": "{{tag}}をよく使うタグから削除", "lang_excluded":"除外する通知",
"lang_tags_unrealtime": "実況解除", "lang_layout_excludingbt":"BT表示(OFF/BT除外/BTのみ)",
"lang_tags_tagwarn": "{{tag}}がない場合自動で補完されます。", "lang_layout_leftFold":"左へ重ねる",
//tl/tl.js "lang_layout_leftUnfold":"右へ出す",
"lang_tl_media": "メディア", //ui/sort.js
"lang_tl_reconnect": "Streamingに再接続しました", "lang_sort_gothis":"このカラムへ",
//ui/img.js "lang_sort_remthis":"このカラムを削除",
"lang_img_DLDone": "ダウンロード先:", //ui/spotify.js
//ui/layout.js "lang_spotify_img":"アルバムアートワークを添付します。",
"lang_layout_gotop": "一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。", "lang_spotify_imgno":"アルバムアートワークを添付しません。",
"lang_layout_thisacct": "このアカウントの{{notf}}", "lang_spotify_acct":"アカウント連携をしてください。",
"lang_layout_delthis": "このカラムを削除", "lang_spotify_np":"NowPlaying文書を更新しました。",
"lang_layout_setthis": "このカラムの設定", "lang_setting_npprovide":"NowPlayingのソースを{{set}}に設定しました。",
"lang_layout_mediafil": "メディアフィルター", //userdata/his-data.js
"lang_layout_linkana": "リンク解析", "lang_hisdata_frcreq":"Mastodon 2.4.3~が必要です",
"lang_layout_linkanades": "リンクの解析を切り替え", "lang_hisdata_frcwarn":"非フォローだけど絡みがある時に表示されます。",
"lang_layout_tts": "読み上げ", "lang_hisdata_taketime":"30秒から数分かかります",
"lang_layout_reconnect": "カラム再読込", "lang_hisdata_notonmisskey":"このシステムはMisskeyにはありません。",
"lang_layout_headercolor": "TLヘッダーカラー", "lang_hisdata_key":"このユーザーの信頼性は{{set}}によって示されています",
"lang_layout_nodata": "[ここにトゥートはありません。]<br>F5/⌘+Rで再読込できます。", //userdata/showOnTL.js
"lang_layout_dm": "ダイレクトメッセージ", "lang_showontl_movetxt":"このアカウントは移行しています",
"lang_layout_webviewmode": "WebView優先", "lang_showontl_movebtn":"移行先を見る",
"lang_excluded": "除外する通知", "lang_showontl_botacct":"botアカウント",
"lang_layout_excludingbt": "BT表示(OFF/BT除外/BTのみ)", "lang_showontl_followed":"フォローされています",
"lang_layout_leftFold": "左へ重ねる", "lang_showontl_notf":"通知",
"lang_layout_leftUnfold": "右へ出す", "lang_showontl_domain":"ドメイン",
"lang_layout_deleteColumn": "カラム削除", "lang_showontl_listwarn":"リストに追加するためにはフォローが必要です。",
"lang_layout_deleteColumnDesc": "カラムを削除しますか?", "lang_showontl_verified":"このユーザーの所持するWebサイトであると証明されています。",
//ui/sort.js //parse
"lang_sort_gothis": "このカラムへ", "lang_parse_mentioned":"が返信しました",
"lang_sort_remthis": "このカラムを削除", "lang_parse_faved":"がお気に入り登録しました",
//ui/spotify.js "lang_parse_bted":"がブーストしました",
"lang_spotify_img": "アルバムアートワークを添付します。", "lang_parse_btedsimple":"がブースト",
"lang_spotify_imgno": "アルバムアートワークを添付しません。", "lang_parse_polled":"のアンケート",
"lang_spotify_acct": "アカウント連携をしてください。", "lang_parse_notftime":"通知された時間",
"lang_spotify_np": "NowPlaying文書を更新しました。", "lang_parse_cwshow":"見る",
"lang_setting_npprovide": "NowPlayingのソースを{{set}}に設定しました。", "lang_parse_fulltext":"以下全文",
//userdata/his-data.js "lang_parse_autofold":"自動折り畳み",
"lang_hisdata_frcreq": "Mastodon 2.4.3~が必要です", "lang_parse_more":"続き...",
"lang_hisdata_frcwarn": "非フォローだけど絡みがある時に表示されます。", "lang_parse_url":"URL解析",
"lang_hisdata_taketime": "30秒から数分かかります", "lang_parse_tagTL":"{{tag}}のタイムライン",
"lang_hisdata_notonmisskey": "このシステムはMisskeyにはありません。", "lang_parse_tagtoot":"{{tag}}でトゥート",
"lang_hisdata_key": "このユーザーの信頼性は{{set}}によって示されています", "lang_parse_tagpin":"{{tag}}をよく使うタグへ",
//userdata/showOnTL.js "lang_parse_public":"公開",
"lang_showontl_movetxt": "このアカウントは移行しています", "lang_parse_unlisted":"未収載",
"lang_showontl_movebtn": "移行先を見る", "lang_parse_private":"非公開",
"lang_showontl_botacct": "botアカウント", "lang_parse_direct":"ダイレクト",
"lang_showontl_followed": "フォローされています", "lang_parse_clickcopy":"クリックして本文をコピー",
"lang_showontl_notf": "通知", "lang_parse_clickcopyurl":"クリックしてトゥートURLをコピー",
"lang_showontl_domain": "ドメイン", "lang_parse_trans":"このトゥートを日本語に翻訳",
"lang_showontl_listwarn": "リストに追加するためにはフォローが必要です。", "lang_parse_replyto":"このトゥートに返信",
"lang_showontl_verified": "このユーザーの所持するWebサイトであると証明されています。", "lang_parse_bt":"このトゥートをブースト",
//parse "lang_parse_fav":"このトゥートをお気に入り登録",
"lang_parse_mentioned": "が返信しました", "lang_parse_quote":"このトゥートを引用",
"lang_parse_faved": "がお気に入り登録しました", "lang_parse_del":"このトゥートを削除",
"lang_parse_bted": "がブーストしました", "lang_parse_pin":"このトゥートをピン留め",
"lang_parse_btedsimple": "がブースト", "lang_parse_det":"詳細(メインアカウント経由)",
"lang_parse_polled": "のアンケート", "lang_parse_redraft":"このトゥートを削除して再編集",
"lang_parse_notftime": "通知された時間", "lang_parse_followed":"フォローされました。",
"lang_parse_cwshow": "見る", "lang_parse_clientop":"クライアント処理",
"lang_parse_fulltext": "以下全文", "lang_parse_clienttxt":"に対する処理を選択してください。",
"lang_parse_autofold": "自動折り畳み", "lang_parse_clientno":"何もしない",
"lang_parse_more": "続き...", "lang_parse_clientemp":"強調表示/解除",
"lang_parse_url": "URL解析", "lang_parse_clientmute":"ミュート",
"lang_parse_tagTL": "{{tag}}のタイムライン", "lang_parse_mute":"ミュートします。設定から解除できます。",
"lang_parse_tagtoot": "{{tag}}でトゥート", "lang_parse_voted":"投票済みです",
"lang_parse_tagpin": "{{tag}}をよく使うタグへ", "lang_parse_vote":"投票",
"lang_parse_public": "公開", "lang_parse_unvoted":"結果だけ見る",
"lang_parse_unlisted": "未収載", "lang_parse_endedvote":"終了済み",
"lang_parse_private": "非公開", "lang_parse_thread":"会話を表示",
"lang_parse_direct": "ダイレクト",
"lang_parse_clickcopy": "クリックして本文をコピー",
"lang_parse_clickcopyurl": "クリックしてトゥートURLをコピー",
"lang_parse_trans": "このトゥートを日本語に翻訳",
"lang_parse_replyto": "このトゥートに返信",
"lang_parse_bt": "このトゥートをブースト",
"lang_parse_fav": "このトゥートをお気に入り登録",
"lang_parse_quote": "このトゥートを引用",
"lang_parse_del": "このトゥートを削除",
"lang_parse_pin": "このトゥートをピン留め",
"lang_parse_det": "詳細(メインアカウント経由)",
"lang_parse_redraft": "このトゥートを削除して再編集",
"lang_parse_followed": "フォローされました。",
"lang_parse_clientop": "クライアント操作",
"lang_parse_clienttxt": " に対する処理を選択してください。",
"lang_parse_clientno": "何もしない",
"lang_parse_clientemp": "強調表示/解除",
"lang_parse_clientmute": "ミュート",
"lang_parse_mute": "ミュートします。設定から解除できます。",
"lang_parse_voted": "投票済みです",
"lang_parse_vote": "投票",
"lang_parse_unvoted": "結果だけ見る",
"lang_parse_endedvote": "終了済み",
"lang_parse_thread": "会話を表示",
"lang_parse_unknown": "添付ファイル",
"lang_parse_nsfw": "閲覧注意",
"lang_parse_notffilter": "このユーザーの通知のみを表示",
//misskey //misskey
"lang_misskeyparse_renote": "再投稿", "lang_misskeyparse_renote":"再投稿",
"lang_misskeyparse_renoteqt": "引用", "lang_misskeyparse_renoteqt":"引用",
"lang_misskeyparse_reaction": "リアクション", "lang_misskeyparse_reaction":"リアクション",
"lang_misskeyparse_tagnostr": "タグTLはストリーミング非対応です。", "lang_misskeyparse_tagnostr":"タグTLはストリーミング非対応です。",
"lang_misskeyparse_listnostr": "リストTLはストリーミング非対応です。", "lang_misskeyparse_listnostr":"リストTLはストリーミング非対応です。",
"lang_misskeyparse_home": "ホーム", "lang_misskeyparse_home":"ホーム",
"lang_misskeyparse_followers": "フォロワー", "lang_misskeyparse_followers":"フォロワー",
"lang_misskeyparse_specified": "ユーザー指定", "lang_misskeyparse_specified":"ユーザー指定",
"lang_misskeyparse_qt": "MisskeyのRenote(引用モード)中:Ctrl+Shift+Cでクリア", "lang_misskeyparse_qt":"MisskeyのRenote(引用モード)中:Ctrl+Shift+Cでクリア",
"lang_misskeyparse_renoted": "がRepost", "lang_misskeyparse_renoted":"がRepost",
"lang_misskeyparse_quoted": "が引用", "lang_misskeyparse_quoted":"が引用",
"lang_misskeyparse_reacted": "がリアクション", "lang_misskeyparse_reacted":"がリアクション",
//setting //setting
"lang_setting_time": "時間設定を{{set}}に設定しました。", "lang_setting_time":"時間設定を{{set}}に設定しました。",
"lang_setting_theme": "テーマ設定を{{set}}に設定しました。", "lang_setting_theme":"テーマ設定を{{set}}に設定しました。",
"lang_setting_nsfw": "画像表示設定を{{set}}に設定しました。", "lang_setting_nsfw":"画像表示設定を{{set}}に設定しました。",
"lang_setting_cw": "テキスト表示設定を{{set}}に設定しました。", "lang_setting_cw":"テキスト表示設定を{{set}}に設定しました。",
"lang_setting_cwtext": "デフォルトの警告文を「{{set}}」に設定しました。", "lang_setting_cwtext":"デフォルトの警告文を「{{set}}」に設定しました。",
"lang_setting_cws": "標準でCW:{{set}}", "lang_setting_cws":"標準でCW:{{set}}",
"lang_setting_rp": "リプライ数表示:{{set}}", "lang_setting_rp":"リプライ数表示:{{set}}",
"lang_setting_vis": "デフォルトの公開設定を{{set}}に設定しました。", "lang_setting_vis":"デフォルトの公開設定を{{set}}に設定しました。",
"lang_setting_popup": "ポップアップお知らせを{{set}}に設定しました。", "lang_setting_popup":"ポップアップお知らせを{{set}}に設定しました。",
"lang_setting_off": "オフ", "lang_setting_off":"オフ",
"lang_setting_s": "秒", "lang_setting_s":"秒",
"lang_setting_box": "デフォルトでのボックスの挙動を{{set}}に設定しました。", "lang_setting_box":"デフォルトでのボックスの挙動を{{set}}に設定しました。",
"lang_setting_gif": "アイコンアニメーション再生を{{set}}に設定しました。", "lang_setting_gif":"アイコンアニメーション再生を{{set}}に設定しました。",
"lang_setting_selt": "{{set1}}行以上または{{set2}}文字以上でテキストを隠します。", "lang_setting_selt":"{{set1}}行以上または{{set2}}文字以上でテキストを隠します。",
"lang_setting_autocw": "{{set1}}行以上または{{set2}}文字以上で警告を表示します。", "lang_setting_autocw":"{{set1}}行以上または{{set2}}文字以上で警告を表示します。",
"lang_setting_width": "横幅最低を{{set}}pxに設定しました。", "lang_setting_width":"横幅最低を{{set}}pxに設定しました。",
"lang_setting_fixwidth": "TweetDeckの横幅を{{set}}pxに設定しました。", "lang_setting_fixwidth":"TweetDeckの横幅を{{set}}pxに設定しました。",
"lang_setting_img": "画像投稿後の設定を「{{set}}」に設定しました。", "lang_setting_img":"画像投稿後の設定を「{{set}}」に設定しました。",
"lang_setting_font": "フォントを{{set}}に設定しました。", "lang_setting_font":"フォントを{{set}}に設定しました。",
"lang_setting_default": "デフォルト", "lang_setting_default":"デフォルト",
"lang_setting_size": "フォントサイズを{{set}}pxに設定しました。", "lang_setting_size":"フォントサイズを{{set}}pxに設定しました。",
"lang_setting_imgheight": "画像高さを{{set}}pxに設定しました。", "lang_setting_imgheight":"画像高さを{{set}}pxに設定しました。",
"lang_setting_ticker": "#InstanceTicker使用を{{set}}に設定しました。", "lang_setting_ticker":"#InstanceTicker使用を{{set}}に設定しました。",
"lang_setting_animation": "アニメーションを{{set}}に設定しました。", "lang_setting_animation":"アニメーションを{{set}}に設定しました。",
"lang_setting_tag": "タグの取得範囲を「{{set}}」に設定しました。", "lang_setting_tag":"タグの取得範囲を「{{set}}」に設定しました。",
"lang_setting_boxConfirm": "投稿ボックスを{{set}}", "lang_setting_boxConfirm":"投稿ボックスを{{set}}",
"lang_setting_ul": "独自ロケール設定を{{set}}に設定しました。", "lang_setting_ul":"独自ロケール設定を{{set}}に設定しました。",
"lang_setting_notf": "ネイティブ通知を{{set}}に設定しました。", "lang_setting_notf":"ネイティブ通知を{{set}}に設定しました。",
"lang_setting_quote": "引用形式を{{set}}に設定しました。", "lang_setting_quote":"引用形式を{{set}}に設定しました。",
"lang_setting_via": "via表示を{{set}}に設定しました。", "lang_setting_via":"via表示を{{set}}に設定しました。",
"lang_setting_mov": "アクションボタン非表示を{{set}}に設定しました。", "lang_setting_mov":"アクションボタン非表示を{{set}}に設定しました。",
"lang_setting_setasread": "通知カラム存在時新着非表示を{{set}}に設定しました。", "lang_setting_setasread":"通知カラム存在時新着非表示を{{set}}に設定しました。",
"lang_setting_main": "起動時・投稿時のアカウントを{{set}}に設定しました。", "lang_setting_main":"起動時・投稿時のアカウントを{{set}}に設定しました。",
"lang_setting_sec": "セカンダリートゥートボタン:{{set}}", "lang_setting_sec":"セカンダリートゥートボタン:{{set}}",
"lang_setting_ksref": "キーボードショートカットが更新されました。", "lang_setting_ksref":"キーボードショートカットが更新されました。",
"lang_setting_nomuting": "ミュートしているクライアントはありません。", "lang_setting_nomuting":"ミュートしているクライアントはありません。",
"lang_setting_notftest": "通知テスト", "lang_setting_notftest":"通知テスト",
"lang_setting_notftestprof": "アイコンはあなたのアカウントのものです。", "lang_setting_notftestprof":"アイコンはあなたのアカウントのものです。",
"lang_setting_exportwarn": "重要なデータのみエクスポートされます。エクスポートされたデータは外部に公開しないでください。全ての認証データが含まれています。", "lang_setting_exportwarn":"重要なデータのみエクスポートされます。エクスポートされたデータは外部に公開しないでください。全ての認証データが含まれています。",
"lang_setting_importwarn": "全てのデータがリセットされます。" "lang_setting_importwarn":"全てのデータがリセットされます。"
} }

View File

@@ -1,4 +1,4 @@
var lang = { var lang={
"language": "crwdns1960:0crwdne1960:0", "language": "crwdns1960:0crwdne1960:0",
"lang_toot": "crwdns1962:0crwdne1962:0", "lang_toot": "crwdns1962:0crwdne1962:0",
"lang_there": "crwdns1964:0crwdne1964:0", "lang_there": "crwdns1964:0crwdne1964:0",

View File

@@ -1,114 +1,126 @@
//インスタンスリスト //インスタンスリスト
var idata = { var idata={
"kirishima.cloud": "instance", "kirishima.cloud":"instance",
"kirishima.cloud_name": "アスタルテ", "kirishima.cloud_name":"アスタルテ",
"kirishima.cloud_letters": "6229", "kirishima.cloud_letters":"6229",
"kirishima.cloud_bbcode": "enabled", "kirishima.cloud_bbcode":"enabled",
"kirishima.cloud_markdown": "enabled", "kirishima.cloud_markdown":"enabled",
"kirishima.cloud_glitch": "enabled", "kirishima.cloud_glitch":"enabled",
"kirishima.cloud_public": "パブリックタイムライン", "kirishima.cloud_public":"パブリックタイムライン",
"minohdon.jp": "instance", "minohdon.jp":"instance",
"minohdon.jp_name": "箕面どん", "minohdon.jp_name":"箕面どん",
"minohdon.jp_letters": "500", "minohdon.jp_letters":"500",
"minohdon.jp_bbcode": "disabled", "minohdon.jp_bbcode":"disabled",
"minohdon.jp_markdown": "disabled", "minohdon.jp_markdown":"disabled",
"minohdon.jp_glitch": "disabled", "minohdon.jp_glitch":"disabled",
"mastodos.com": "instance", "knzk.me":"instance",
"mastodos.com_name": "マストどす", "knzk.me_name":"Knzk",
"mastodos.com_letters": "500", "knzk.me_letters":"5000",
"mastodos.com_bbcode": "disabled", "knzk.me_bbcode":"disabled",
"mastodos.com_markdown": "disabled", "knzk.me_markdown":"disabled",
"mastodos.com_glitch": "disabled", "knzk.me_glitch":"disabled",
"dev.kirishima.cloud": "hidden", "mastodos.com":"instance",
"dev.kirishima.cloud_name": "アスタルテ(Dev)", "mastodos.com_name":"マストどす",
"dev.kirishima.cloud_letters": "6229", "mastodos.com_letters":"500",
"dev.kirishima.cloud_bbcode": "enabled", "mastodos.com_bbcode":"disabled",
"dev.kirishima.cloud_markdown": "enabled", "mastodos.com_markdown":"disabled",
"dev.kirishima.cloud_glitch": "enabled", "mastodos.com_glitch":"disabled",
"mstdn.y-zu.org": "instance", "dev.kirishima.cloud":"hidden",
"mstdn.y-zu.org_name": "Yづドン(Y-zuDon)", "dev.kirishima.cloud_name":"アスタルテ(Dev)",
"mstdn.y-zu.org_letters": "500", "dev.kirishima.cloud_letters":"6229",
"mstdn.y-zu.org_bbcode": "disabled", "dev.kirishima.cloud_bbcode":"enabled",
"mstdn.y-zu.org_markdown": "enabled", "dev.kirishima.cloud_markdown":"enabled",
"mstdn.y-zu.org_glitch": "disabled", "dev.kirishima.cloud_glitch":"enabled",
"imastodon.net": "instance", "mstdn.y-zu.org":"instance",
"imastodon.net_name": "im@stodon", "mstdn.y-zu.org_name":"Yづドン(Y-zuDon)",
"imastodon.net_letters": "500", "mstdn.y-zu.org_letters":"500",
"imastodon.net_bbcode": "disabled", "mstdn.y-zu.org_bbcode":"disabled",
"imastodon.net_markdown": "disabled", "mstdn.y-zu.org_markdown":"enabled",
"imastodon.net_home": "オフィス", "mstdn.y-zu.org_glitch":"disabled",
"imastodon.net_local": "楽屋", "imastodon.net":"instance",
"imastodon.net_notification": "ホワイトボード", "imastodon.net_name":"im@stodon",
"imastodon.net_public": "ライブステージ", "imastodon.net_letters":"500",
"imastodon.net_post": "あふぅ", "imastodon.net_bbcode":"disabled",
"imastodon.net_fav": "の頭にティンときたようです", "imastodon.net_markdown":"disabled",
"imastodon.net_bt": ":「わかるわ」", "imastodon.net_home":"オフィス",
"imastodon.net_follow": "名刺をいただきました", "imastodon.net_local":"楽屋",
"imastodon.net_glitch": "disabled", "imastodon.net_notification":"ホワイトボード",
"mstdn.osaka": "instance", "imastodon.net_public":"ライブステージ",
"mstdn.osaka_name": "大阪丼", "imastodon.net_post":"あふぅ",
"mstdn.osaka_letters": "500", "imastodon.net_fav":"の頭にティンときたようです",
"mstdn.osaka_bbcode": "disabled", "imastodon.net_bt":":「わかるわ」",
"mstdn.osaka_markdown": "disabled", "imastodon.net_follow":"名刺をいただきました",
"mstdn.osaka_home": "ウチ", "imastodon.net_glitch":"disabled",
"mstdn.osaka_local": "近所", "mstdn.osaka":"instance",
"mstdn.osaka_notification": "あめちゃん", "mstdn.osaka_name":"大阪丼",
"mstdn.osaka_public": "新世界", "mstdn.osaka_letters":"500",
"mstdn.osaka_post": "なんや!", "mstdn.osaka_bbcode":"disabled",
"mstdn.osaka_fav": "がええやん言いました", "mstdn.osaka_markdown":"disabled",
"mstdn.osaka_bt": "がしばいた", "mstdn.osaka_home":"ウチ",
"mstdn.osaka_follow": "ツルまれました", "mstdn.osaka_local":"近所",
"mstdn.osaka_glitch": "disabled", "mstdn.osaka_notification":"あめちゃん",
"mstdn.kemono-friends.info": "instance", "mstdn.osaka_public":"新世界",
"mstdn.kemono-friends.info_name": "ますとどんちほー", "mstdn.osaka_post":"なんや!",
"mstdn.kemono-friends.info_letters": "1024", "mstdn.osaka_fav":"がええやん言いました",
"mstdn.kemono-friends.info_bbcode": "disabled", "mstdn.osaka_bt":"がしばいた",
"mstdn.kemono-friends.info_markdown": "disabled", "mstdn.osaka_follow":"ツルまれました",
"mstdn.kemono-friends.info_home": "なわばり", "mstdn.osaka_glitch":"disabled",
"mstdn.kemono-friends.info_local": "ますとどんちほー", "mstdn.kemono-friends.info":"instance",
"mstdn.kemono-friends.info_notification": "ねえねえ!", "mstdn.kemono-friends.info_name":"ますとどんちほー",
"mstdn.kemono-friends.info_public": "ジャパリパーク", "mstdn.kemono-friends.info_letters":"1024",
"mstdn.kemono-friends.info_post": "がおー!", "mstdn.kemono-friends.info_bbcode":"disabled",
"mstdn.kemono-friends.info_fav": ":「すごーい」", "mstdn.kemono-friends.info_markdown":"disabled",
"mstdn.kemono-friends.info_bt": ":「たーのしー」", "mstdn.kemono-friends.info_home":"なわばり",
"mstdn.kemono-friends.info_glitch": "disabled", "mstdn.kemono-friends.info_local":"ますとどんちほー",
"itabashi.0j0.jp": "instance", "mstdn.kemono-friends.info_notification":"ねえねえ!",
"itabashi.0j0.jp_name": "板橋丼", "mstdn.kemono-friends.info_public":"ジャパリパーク",
"itabashi.0j0.jp_letters": "1024", "mstdn.kemono-friends.info_post":"がおー!",
"itabashi.0j0.jp_bbcode": "disabled", "mstdn.kemono-friends.info_fav":":「すごーい」",
"itabashi.0j0.jp_markdown": "disabled", "mstdn.kemono-friends.info_bt":":「たーのしー」",
"itabashi.0j0.jp_glitch": "disabled", "mstdn.kemono-friends.info_glitch":"disabled",
"dtp-mstdn.jp": "instance", "itabashi.0j0.jp":"instance",
"dtp-mstdn.jp_name": "DTP鯖", "itabashi.0j0.jp_name":"板橋丼",
"dtp-mstdn.jp_letters": "500", "itabashi.0j0.jp_letters":"1024",
"dtp-mstdn.jp_bbcode": "disabled", "itabashi.0j0.jp_bbcode":"disabled",
"dtp-mstdn.jp_markdown": "disabled", "itabashi.0j0.jp_markdown":"disabled",
"dtp-mstdn.jp_glitch": "disabled", "itabashi.0j0.jp_glitch":"disabled",
"misskey.io": "misskey", "dtp-mstdn.jp":"instance",
"misskey.io_name": "misskey.io", "dtp-mstdn.jp_name":"DTP鯖",
"misskey.io_letters": "1000", "dtp-mstdn.jp_letters":"500",
"misskey.io_bbcode": "disabled", "dtp-mstdn.jp_bbcode":"disabled",
"misskey.io_markdown": "enabled", "dtp-mstdn.jp_markdown":"disabled",
"misskey.io_public": "Global", "dtp-mstdn.jp_glitch":"disabled",
"misskey.io_post": "Post", "misskey.xyz":"misskey",
"misskey.io_fav": " reacted your post.", "misskey.xyz_name":"misskey.xyz",
"misskey.io_bt": " reposted your post.", "misskey.xyz_letters":"1000",
"misskey.dev": "misskey.dev", "misskey.xyz_bbcode":"disabled",
"misskey.dev_name": "misskey.dev", "misskey.xyz_markdown":"enabled",
"misskey.dev_letters": "1024", "misskey.xyz_public":"Global",
"misskey.dev_bbcode": "disabled", "misskey.xyz_post":"Post",
"misskey.dev_markdown": "enabled", "misskey.xyz_fav":" reacted your post.",
"misskey.dev_public": "Global", "misskey.xyz_bt":" reposted your post.",
"misskey.dev_post": "Post", "misskey.dev":"misskey",
"misskey.dev_fav": " reacted your post.", "misskey.dev_name":"misskey.dev",
"misskey.dev_bt": " reposted your post.", "misskey.dev_letters":"1024",
"precure.ml": "instance", "misskey.dev_bbcode":"disabled",
"precure.ml_name": "キュアスタ!", "misskey.dev_markdown":"enabled",
"precure.ml_letters": "1024", "misskey.dev_public":"Global",
"precure.ml_bbcode": "disabled", "misskey.dev_post":"Post",
"precure.ml_markdown": "disabled", "misskey.dev_fav":" reacted your post.",
"precure.ml_post": "キュア!", "misskey.dev_bt":" reposted your post.",
"precure.ml_glitch": "disabled" "precure.ml":"instance",
"precure.ml_name":"キュアスタ!",
"precure.ml_letters":"1024",
"precure.ml_bbcode":"disabled",
"precure.ml_markdown":"disabled",
"precure.ml_post":"キュア!",
"precure.ml_glitch":"disabled",
"best-friends.chat":"instance",
"best-friends.chat_name":"Best Friends",
"best-friends.chat_letters":"500",
"best-friends.chat_bbcode":"disabled",
"best-friends.chat_markdown":"disabled",
"best-friends.chat_glitch":"disabled",
}; };
localStorage.setItem("instance", JSON.stringify(idata)); localStorage.setItem("instance", JSON.stringify(idata));

View File

@@ -6,55 +6,66 @@ localStorage.removeItem("kirishima")
localStorage.removeItem("imas") localStorage.removeItem("imas")
localStorage.removeItem("image"); localStorage.removeItem("image");
localStorage.removeItem("stable") localStorage.removeItem("stable")
localStorage.setItem("mode_misskey.xyz", "misskey") localStorage.setItem("mode_misskey.xyz","misskey")
function ck() { function ck() {
var main = localStorage.getItem("main"); var main = localStorage.getItem("main");
if (!main) { if(!main){
localStorage.setItem("main", 0) localStorage.setItem("main",0)
} }
var domainz = localStorage.getItem("domain_0"); var domainz = localStorage.getItem("domain_0");
var at = localStorage.getItem("acct_0_at"); var at = localStorage.getItem("acct_0_at");
//コード受信 var oldat = localStorage.getItem(domainz + "_at");
if (location.search) { if(oldat){
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/); console.log("Move to New Account Management System")
var mode = m[1]; var multi = localStorage.getItem("multi");
var codex = m[2]; if (!multi) {
if (mode == "manager" || mode == "login") { var acctlen=1;
code(codex, mode);
} else { } else {
var obj = JSON.parse(multi);
var acctlen=obj.length;
}
for(i=0;acctlen>i;i++){
var domain = localStorage.getItem("domain_"+i);
var oldat = localStorage.getItem(domain + "_at");
var newat = localStorage.setItem("acct_"+ i + "_at",oldat);
localStorage.removeItem(domain + "_at");
}
}
//コード受信
if(location.search){
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
var mode=m[1];
var codex=m[2];
if(mode=="manager" || mode=="login"){
code(codex,mode);
}else{
} }
} }
var multi = localStorage.getItem("multi"); var multi = localStorage.getItem("multi");
if (!multi || multi == "[]") { if(!multi || multi=="[]"){
var date = new Date(); location.href="acct.html?mode=first&code=true"
localStorage.setItem("showSupportMe", date.getMonth() + 2) }else{
location.href = "acct.html?mode=first&code=true"
} else {
var obj = JSON.parse(multi); var obj = JSON.parse(multi);
Object.keys(obj).forEach(function (key) { Object.keys(obj).forEach(function(key) {
var acct = obj[key]; var acct=obj[key];
if (acct.domain) { if(acct.domain){
refresh(key, true) refresh(key,true)
}
});
if (obj[0].domain) {
$("#tl").show();
ticker();
multiSelector(false);
verck(ver);
$(".stw").show()
$("#something-wrong img").attr("src", "../../img/thinking.svg")
} }
});
if (obj[0].domain) {
$("#tl").show();
ticker();
multiSelector();
verck(ver);
} }
} }
}
ck(); ck();
//ログインポップアップ //ログインポップアップ
function login(url) { function login(url) {
if ($('#linux:checked').val() == "on") { if($('#linux:checked').val()=="on"){
var red = "urn:ietf:wg:oauth:2.0:oob" var red = "urn:ietf:wg:oauth:2.0:oob"
} else { }else{
var red = 'thedesk://login'; var red = 'thedesk://login';
} }
localStorage.setItem("redirect", red); localStorage.setItem("redirect", red);
@@ -69,23 +80,28 @@ function login(url) {
redirect_uris: red, redirect_uris: red,
website: "https://thedesk.top" website: "https://thedesk.top"
})); }));
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
console.log(json);
var auth = "https://" + url + "/oauth/authorize?client_id=" + json[ var auth = "https://" + url + "/oauth/authorize?client_id=" + json[
"client_id"] + "&client_secret=" + json["client_secret"] + "client_id"] + "&client_secret=" + json["client_secret"] +
"&response_type=code&redirect_uri=" + red + "&scope=read+write+follow"; "&response_type=code&redirect_uri="+red+"&scope=read+write+follow";
localStorage.setItem("domain_" + acct_id, url); localStorage.setItem("domain_" + acct_id, url);
localStorage.setItem("client_id", json["client_id"]); localStorage.setItem("client_id", json["client_id"]);
localStorage.setItem("client_secret", json["client_secret"]); localStorage.setItem("client_secret", json["client_secret"]);
$("#auth").show(); $("#auth").show();
$("#masara").hide(); $("#masara").hide();
postMessage(["openUrl", auth], "*") const { shell } = require('electron');
if ($('#linux:checked').val() == "on") { shell.openExternal(auth);
} else {
postMessage(["sendSinmpleIpc", "quit"], "*") if($('#linux:checked').val()=="on"){
} }else{
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('quit', 'go');
}
} }
} }
} }
@@ -98,15 +114,15 @@ function instance() {
//コードを入れた後認証 //コードを入れた後認証
function code(code, mode) { function code(code,mode) {
var red = localStorage.getItem("redirect"); var red = localStorage.getItem("redirect");
localStorage.removeItem("redirect") localStorage.removeItem("redirect")
if (!code) { if(!code){
var code = $("#code").val(); var code = $("#code").val();
} }
if (localStorage.getItem("domain_tmp")) { if(localStorage.getItem("domain_tmp")){
var url = localStorage.getItem("domain_tmp"); var url = localStorage.getItem("domain_tmp");
} else { }else{
var url = localStorage.getItem("domain_" + acct_id); var url = localStorage.getItem("domain_" + acct_id);
} }
var start = "https://" + url + "/oauth/token"; var start = "https://" + url + "/oauth/token";
@@ -124,18 +140,18 @@ function code(code, mode) {
client_secret: secret, client_secret: secret,
code: code code: code
}) })
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
todo(json); todo(json);
if (json["access_token"]) { if (json["access_token"]) {
localStorage.setItem(url + "_at", json["access_token"]); localStorage.setItem(url + "_at", json["access_token"]);
if (mode == "manager") { if(mode=="manager"){
getdataAdv(url, json["access_token"]); getdataAdv(url, json["access_token"]);
} else { }else{
getdata(); getdata();
} }
@@ -147,7 +163,7 @@ function code(code, mode) {
function getdata() { function getdata() {
var acct_id = 0; var acct_id = 0;
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/verify_credentials"; var start = "https://" + domain + "/api/v1/accounts/verify_credentials";
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
@@ -155,21 +171,23 @@ function getdata() {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
console.log(json);
if (json.error) { if (json.error) {
console.error("Error:" + json.error); console.error("Error:" + json.error);
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 }) Materialize.toast(lang.lang_fatalerroroccured+"Error:" + json.error,
5000);
return; return;
} }
var avatar = json["avatar"]; var avatar=json["avatar"];
//missingがmissingなやつ //missingがmissingなやつ
if (avatar == "/avatars/original/missing.png") { if(avatar=="/avatars/original/missing.png"){
avatar = "./img/missing.svg"; avatar="./img/missing.svg";
} }
var obj = [{ var obj = [{
at: at, at: at,
@@ -181,6 +199,7 @@ function getdata() {
vis: json["source"]["privacy"] vis: json["source"]["privacy"]
}]; }];
var json = JSON.stringify(obj); var json = JSON.stringify(obj);
console.log(obj);
localStorage.setItem("multi", json); localStorage.setItem("multi", json);
localStorage.setItem("name_" + acct_id, json["display_name"]); localStorage.setItem("name_" + acct_id, json["display_name"]);
localStorage.setItem("user_" + acct_id, json["acct"]); localStorage.setItem("user_" + acct_id, json["acct"]);
@@ -202,26 +221,28 @@ function getdataAdv(domain, at) {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
console.log(json);
if (json.error) { if (json.error) {
console.error("Error:" + json.error); console.error("Error:" + json.error);
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 }) Materialize.toast(lang.lang_fatalerroroccured+"Error:" + json.error,
5000);
return; return;
} }
var avatar = json["avatar"]; var avatar=json["avatar"];
//missingがmissingなやつ //missingがmissingなやつ
if (avatar == "/avatars/original/missing.png") { if(avatar=="/avatars/original/missing.png"){
avatar = "../../img/missing.svg"; avatar="../../img/missing.svg";
} }
if (json["source"]["privacy"]) { if(json["source"]["privacy"]){
var priv = json["source"]["privacy"]; var priv=json["source"]["privacy"];
} else { }else{
var priv = "public"; var priv="public";
} }
var add = { var add = {
at: at, at: at,
@@ -240,41 +261,45 @@ function getdataAdv(domain, at) {
localStorage.setItem("user_" + target, json["acct"]); localStorage.setItem("user_" + target, json["acct"]);
localStorage.setItem("user-id_" + target, json["id"]); localStorage.setItem("user-id_" + target, json["id"]);
localStorage.setItem("prof_" + target, avatar); localStorage.setItem("prof_" + target, avatar);
console.log(obj);
var json = JSON.stringify(obj); var json = JSON.stringify(obj);
localStorage.setItem("multi", json); localStorage.setItem("multi", json);
location.href = "index.html"; location.href="index.html";
}); });
} }
//ユーザーデータ更新 //ユーザーデータ更新
function refresh(target, loadskip) { function refresh(target,loadskip) {
var multi = localStorage.getItem("multi"); var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi); var obj = JSON.parse(multi);
if (obj[target].mode == "misskey") { if(obj[target].mode=="misskey"){
return return
} }
var start = "https://" + obj[target].domain + var start = "https://" + obj[target].domain +
"/api/v1/accounts/verify_credentials"; "/api/v1/accounts/verify_credentials";
console.log(start);
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + obj[target].at 'Authorization': 'Bearer ' + obj[target].at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
console.log(json);
if (json.error) { if (json.error) {
console.error("Error:" + json.error); console.error("Error:" + json.error);
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 }) Materialize.toast(lang.lang_fatalerroroccured+"Error:" + json.error,
5000);
return; return;
} }
var avatar = json["avatar"]; var avatar=json["avatar"];
//missingがmissingなやつ //missingがmissingなやつ
if (avatar == "/avatars/original/missing.png" || !avatar) { if(avatar=="/avatars/original/missing.png" || !avatar){
avatar = "./img/missing.svg"; avatar="./img/missing.svg";
} }
var ref = { var ref = {
at: obj[target].at, at: obj[target].at,
@@ -288,12 +313,14 @@ function refresh(target, loadskip) {
localStorage.setItem("name_" + target, json["display_name"]); localStorage.setItem("name_" + target, json["display_name"]);
localStorage.setItem("user_" + target, json["acct"]); localStorage.setItem("user_" + target, json["acct"]);
localStorage.setItem("user-id_" + target, json["id"]); localStorage.setItem("user-id_" + target, json["id"]);
console.log("user-id_" + target+":"+json["id"])
console.log(localStorage.getItem("user-id_"+target));
localStorage.setItem("prof_" + target, avatar); localStorage.setItem("prof_" + target, avatar);
localStorage.setItem("follow_" + target, json["following_count"]); localStorage.setItem("follow_" + target, json["following_count"]);
console.log(obj) obj[target] = ref;
var json = JSON.stringify(obj); var json = JSON.stringify(obj);
localStorage.setItem("multi", json); localStorage.setItem("multi", json);
if (!loadskip) { if(!loadskip){
load(); load();
} }
}); });
@@ -312,99 +339,100 @@ function ckdb(acct_id) {
localStorage.removeItem("fav_" + acct_id); localStorage.removeItem("fav_" + acct_id);
localStorage.removeItem("bt_" + acct_id); localStorage.removeItem("bt_" + acct_id);
localStorage.removeItem("followlocale_" + acct_id); localStorage.removeItem("followlocale_" + acct_id);
if (domain == "kirishima.cloud") { if(domain=="kirishima.cloud"){
localStorage.setItem("kirishima", "true"); localStorage.setItem("kirishima", "true");
$("#ranking-btn").show(); $("#ranking-btn").show();
} else if (domain == "imastodon.net") { }else if(domain=="imastodon.net"){
localStorage.setItem("imas", "true"); localStorage.setItem("imas", "true");
$(".imasonly").show(); $(".imasonly").show();
} }
var at = localStorage.getItem("acct_" + acct_id + "_at"); var at = localStorage.getItem("acct_"+ acct_id + "_at");
var bbcode = domain + "_bbcode"; var bbcode = domain + "_bbcode";
var letters = domain + "_letters"; var letters = domain + "_letters";
if (localStorage.getItem("instance")) { if(localStorage.getItem("instance")){
var json = JSON.parse(localStorage.getItem("instance")); var json=JSON.parse(localStorage.getItem("instance"));
if (json[bbcode]) { if (json[bbcode]) {
if (json[bbcode] == "enabled") { if (json[bbcode] == "enabled") {
localStorage.setItem("bb_" + acct_id, "true"); localStorage.setItem("bb_" + acct_id, "true");
} else {
localStorage.removeItem("bb_" + acct_id);
$("[data-activates='bbcode']").addClass("disabled");
$("[data-activates='bbcode']").prop("disabled", true);
}
} else { } else {
localStorage.removeItem("bb_" + acct_id); localStorage.removeItem("bb_" + acct_id);
$("[data-activates='bbcode']").addClass("disabled"); $("[data-activates='bbcode']").addClass("disabled");
$("[data-activates='bbcode']").prop("disabled", true); $("[data-activates='bbcode']").addClass("disabled", true);
} }
} else {
localStorage.removeItem("bb_" + acct_id);
$("[data-activates='bbcode']").addClass("disabled");
$("[data-activates='bbcode']").addClass("disabled", true);
}
if (json[domain + "_markdown"] == "enabled") { if (json[domain + "_markdown"] == "enabled") {
localStorage.setItem("md_" + acct_id, "true"); localStorage.setItem("md_" + acct_id, "true");
$(".markdown").show(); $(".markdown").show();
} else { }else{
$(".anti-markdown").hide(); $(".anti-markdown").hide();
$(".markdown").hide(); $(".markdown").hide();
localStorage.removeItem("bb_" + acct_id); localStorage.removeItem("bb_" + acct_id);
} }
if (json[domain + "_home"]) { if(json[domain + "_home"]){
localStorage.setItem("home_" + acct_id, json[domain + "_home"]); console.log("unique name:"+json[domain + "_home"]);
} localStorage.setItem("home_" + acct_id, json[domain + "_home"]);
if (json[domain + "_local"]) { }
localStorage.setItem("local_" + acct_id, json[domain + "_local"]); if(json[domain + "_local"]){
} localStorage.setItem("local_" + acct_id, json[domain + "_local"]);
if (json[domain + "_public"]) { }
localStorage.setItem("public_" + acct_id, json[domain + "_public"]); if(json[domain + "_public"]){
} localStorage.setItem("public_" + acct_id, json[domain + "_public"]);
if (json[domain + "_notification"]) { }
localStorage.setItem("notification_" + acct_id, json[domain + "_notification"]); if(json[domain + "_notification"]){
} localStorage.setItem("notification_" + acct_id, json[domain + "_notification"]);
if (json[domain + "_post"]) { }
localStorage.setItem("post_" + acct_id, json[domain + "_post"]); if(json[domain + "_post"]){
} localStorage.setItem("post_" + acct_id, json[domain + "_post"]);
if (json[domain + "_fav"]) { }
localStorage.setItem("fav_" + acct_id, json[domain + "_fav"]); if(json[domain + "_fav"]){
} localStorage.setItem("fav_" + acct_id, json[domain + "_fav"]);
if (json[domain + "_bt"]) { }
localStorage.setItem("bt_" + acct_id, json[domain + "_bt"]); if(json[domain + "_bt"]){
} localStorage.setItem("bt_" + acct_id, json[domain + "_bt"]);
if (json[domain + "_follow"]) { }
localStorage.setItem("followlocale_" + acct_id, json[domain + "_follow"]); if(json[domain + "_follow"]){
} localStorage.setItem("followlocale_" + acct_id, json[domain + "_follow"]);
}
} }
if (localStorage.getItem("mode_" + domain) != "misskey") { if(localStorage.getItem("mode_" + domain)!="misskey"){
var start = "https://" + domain + "/api/v1/instance"; var start = "https://" + domain + "/api/v1/instance";
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json' 'content-type': 'application/json'
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
console.log(json);
if (json.error) { if (json.error) {
console.error(json.error);
return; return;
} }
if (json) { if(json){
if (json["max_toot_chars"]) { if(json["max_toot_chars"]){
localStorage.setItem("letters_" + acct_id, json["max_toot_chars"]); localStorage.setItem("letters_" + acct_id, json["max_toot_chars"]);
} }
if (json["urls"]["streaming_api"]) { if(json["urls"]["streaming_api"]){
localStorage.setItem("streaming_" + acct_id, json["urls"]["streaming_api"]); localStorage.setItem("streaming_" + acct_id, json["urls"]["streaming_api"]);
} }
} }
}); });
} else { }else{
} }
} }
//アカウントを選択…を実装 //アカウントを選択…を実装
function multiSelector(parseC) { function multiSelector() {
var multi = localStorage.getItem("multi"); var multi = localStorage.getItem("multi");
if (!multi) { if (!multi) {
var obj = []; var obj = [];
@@ -414,97 +442,92 @@ function multiSelector(parseC) {
var obj = JSON.parse(multi); var obj = JSON.parse(multi);
} }
var templete; var templete;
if (localStorage.getItem("mainuse") == "main") { if(localStorage.getItem("mainuse")=="main"){
var last = localStorage.getItem("main"); var last = localStorage.getItem("main");
} else if (localStorage.getItem("last-use")) { }else if(localStorage.getItem("last-use")){
var last = localStorage.getItem("last-use"); var last = localStorage.getItem("last-use");
if (last == "webview" || last == "noauth") { }else{
last = "0"; var last=0;
}
} else {
var last = "0";
} }
last = last + "";
var sel; var sel;
if (obj.length < 1) { if(obj.length<1){
$("#src-acct-sel").html('<option value="tootsearch">Tootsearch</option>'); $("#src-acct-sel").html('<option value="tootsearch">Tootsearch</option>');
$("#add-acct-sel").html('<option value="noauth">' + lang.lang_login_noauth + '</option>'); $("#add-acct-sel").html('<option value="noauth">'+lang.lang_login_noauth+'</option>');
} else { }else{
Object.keys(obj).forEach(function (key) { Object.keys(obj).forEach(function(key) {
var acct = obj[key]; var acct = obj[key];
var list = key * 1 + 1; var list = key * 1 + 1;
if (key+"" === last) { if (key == last) {
sel = "selected"; sel = "selected";
var domain = acct.domain; var domain = acct.domain;
localStorage.setItem("domain_" + key, domain); localStorage.setItem("domain_" + key, domain);
if (idata[domain + "_letters"]) { if(idata[domain+"_letters"]){
$("#textarea").attr("data-length", idata[domain + "_letters"]) $("#textarea").attr("data-length", idata[domain+"_letters"])
} else { }else{
var maxletters = localStorage.getItem("letters_" + key); var maxletters = localStorage.getItem("letters_" + key);
if (maxletters > 0) { if(maxletters>0){
$("#textarea").attr("data-length", maxletters) $("#textarea").attr("data-length", maxletters)
} else { }else{
$("#textarea").attr("data-length", 500) $("#textarea").attr("data-length", 500)
}
} }
if (idata[domain + "_glitch"]) {
$("#local-button").removeClass("hide")
}
var profimg = acct.prof;
//localStorage.setItem("prof_" + key, profimg);
if (!profimg) {
profimg = "../../img/missing.svg";
}
$("#acct-sel-prof").attr("src", profimg);
if (domain) {
var cc = "(" + domain + ")";
} else {
var cc = "";
}
$("#toot-post-btn").text(lang.lang_toot + cc);
if (acct.background && acct.background != "def" && acct.text && acct.text != "def") {
$("#toot-post-btn").removeClass("indigo");
$("#toot-post-btn").css("background-color", "#" + acct.background);
$("#toot-post-btn").css("color", acct.text);
} else {
}
if (domain == "kirishima.cloud") {
$("#faicon-btn").show();
} else {
$("#faicon-btn").hide();
}
if (domain == "imastodon.net") {
trendTag();
} else {
$("#trendtag").html("");
}
} else {
sel = "";
} }
templete = '<option value="' + key + '" data-icon="' + acct.prof + if(idata[domain+"_glitch"]){
'" class="left circle" ' + sel + '>' + acct.user + '@' + acct.domain + $("#local-button").removeClass("hide")
'</option>'; }
$(".acct-sel").append(templete); var profimg = acct.prof;
localStorage.setItem("prof_" + key, profimg);
console.log(profimg);
if(!profimg){
profimg="../../img/missing.svg";
}
$("#acct-sel-prof").attr("src",profimg);
console.log(domain);
if(domain){
var cc="("+domain+")";
}else{
var cc="";
}
$("#toot-post-btn").text(lang.lang_toot+cc);
if(acct.background && acct.background!="def" && acct.text && acct.text!="def"){
$("#toot-post-btn").removeClass("indigo");
$("#toot-post-btn").css("background-color","#"+acct.background);
$("#toot-post-btn").css("color",acct.text);
}else{
}
if(domain=="kirishima.cloud"){
$("#faicon-btn").show();
}else{
$("#faicon-btn").hide();
}
if(domain=="imastodon.net"){
trendTag();
}else{
$("#trendtag").html("");
}
} else {
sel = "";
}
templete = '<option value="' + key + '" data-icon="' + acct.prof +
'" class="left circle" ' + sel + '>' + acct.user + '@' + acct.domain +
'</option>';
$(".acct-sel").append(templete);
}); });
$("#src-acct-sel").append('<option value="tootsearch">Tootsearch</option>'); $("#src-acct-sel").append('<option value="tootsearch">Tootsearch</option>');
$("#add-acct-sel").append('<option value="noauth">' + lang.lang_login_noauth + '</option><option value="webview">Twitter</option>'); $("#add-acct-sel").append('<option value="noauth">'+lang.lang_login_noauth+'</option><option value="webview">Twitter</option>');
$("#dir-acct-sel").append('<option value="noauth">' + lang.lang_login_noauth + '</option>');
}
$('select').formSelect();
if(!parseC){
parseColumn(null, true);
} }
$('select').material_select('update');
parseColumn();
} }
//バージョンエンコ //バージョンエンコ
function enc(ver) { function enc(ver){
var ver = ver.replace(/\s/g, ""); var ver = ver.replace( /\s/g , "" );
var ver = ver.replace(/\(/g, "-"); var ver = ver.replace( /\(/g , "-" );
var ver = ver.replace(/\)/g, ""); var ver = ver.replace( /\)/g , "" );
var ver = ver.replace(/\[/g, "_"); var ver = ver.replace( /\[/g , "_" );
var ver = ver.replace(/\]/g, ""); var ver = ver.replace( /\]/g , "" );
return ver; return ver;
} }
//インスタンスティッカー //インスタンスティッカー
function ticker() { function ticker() {
@@ -514,15 +537,15 @@ function ticker() {
headers: { headers: {
'content-type': 'application/json' 'content-type': 'application/json'
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
if (json.error) { if (json.error) {
return; return;
} }
if (json) { if(json){
localStorage.setItem("ticker", JSON.stringify(json)); localStorage.setItem("ticker", 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();
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,105 +1,171 @@
//プラットフォーム別 最後に読むやつ //プラットフォーム別 最後に読むやつ
//リンクを外部で開くか内部で出すか //リンクを外部で開くか内部で出すか
$(document).on('click', 'a', e => { $(document).on('click', 'a', e => {
var $a = $(e.target); var $a = $(e.target);
var url = $a.attr('href'); var url = $a.attr('href');
if (!url) { if (!url) {
var url = $a.parent().attr('href'); var url = $a.parent().attr('href');
} }
var urls = []; var urls=[];
if (url) { if(url){
urls = url.match(/https?:\/\/(.+)/); urls = url.match(/https?:\/\/(.+)/);
//トゥートのURLぽかったら //トゥートのURLぽかったら
toot = url.match(/https:\/\/([^+_]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/); toot = url.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
if(!toot){
//Pleroma対策
toot = url.match(/https:\/\/([^+_]+)\/users\/([a-zA-Z0-9_]+)\/statuses\/([0-9]+)/);
}
//タグのURLぽかったら //タグのURLぽかったら
var tags = []; var tags=[];
tags = url.match( tags = url.match(
/https:\/\/([^+_]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/ /https:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
); );
//メンションっぽかったら //メンションっぽかったら
var ats = []; var ats=[];
ats = url.match( ats = url.match(
/https:\/\/([^+_]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/ /https:\/\/([-a-zA-Z0-9.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/
); );
if (toot) { console.log(toot);
if (toot[1]) { if(toot){
var acct_id = $a.parent().attr("data-acct"); if(toot[1]){
if (!acct_id) { var acct_id=$a.parent().attr("data-acct");
acct_id = 0; if(!acct_id){
acct_id=0;
} }
$a.parent().addClass("loadp") $a.parent().addClass("loadp")
$a.parent().text("Loading...") $a.parent().text("Loading...")
detEx(url, acct_id); detEx(url,acct_id);
} }
} else if (tags) { }else if(tags){
if (tags[2]) { if(tags[2]){
var acct_id = $a.parent().attr("data-acct"); var acct_id=$a.parent().attr("data-acct");
if (!acct_id) { if(!acct_id){
acct_id = 0; acct_id=0;
} }
tl('tag', decodeURI(tags[2]), acct_id, 'add') tl('tag',decodeURI(tags[2]),acct_id,'add')
} }
} else if (ats) { }else if(ats){
if (ats[2]) { console.log(ats);
if(ats[2]){
//Quesdon判定 //Quesdon判定
if (!~ats[2].indexOf("@")) { if(!~ats[2].indexOf("@")){
udgEx(ats[2] + "@" + ats[1], "main"); udgEx(ats[2]+"@"+ats[1],"main");
return false return false
} else { }else{
postMessage(["openUrl", url], "*") const {
shell
} = require('electron');
shell.openExternal(url);
} }
} }
}else{
//hrefがhttp/httpsならブラウザで
if(urls){
if (urls[0]) {
const {shell} = require('electron');
if(~url.indexOf("thedeks.top")){
//alert("If you recieve this alert, let the developer(Cutls@kirishima.cloud) know it with a screenshot.");
url="https://thedesk.top";
}
shell.openExternal(url);
} else { } else {
//hrefがhttp/httpsならブラウザで
if (urls) {
if (urls[0]) {
if (~url.indexOf("thedeks.top")) {
//alert("If you recieve this alert, let the developer(Cutls@kirishima.cloud) know it with a screenshot.");
url = "https://thedesk.top";
}
postMessage(["openUrl", url], "*")
} else {
location.href = url; location.href = url;
}
} else {
location.href = url;
}
} }
}else{
location.href = url;
} }
return false; }
}); }
return false;
});
//よく使うライブラリ //よく使うライブラリ
/*マルチバイト用切り出し*/
$.isSurrogatePear = function(upper, lower) {
return 0xD800 <= upper && upper <= 0xDBFF && 0xDC00 <= lower && lower <= 0xDFFF;
};
$.mb_strlen = function(str) {
var ret = 0;
for (var i = 0; i < str.length; i++, ret++) {
var upper = str.charCodeAt(i);
var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0;
if ($.isSurrogatePear(upper, lower)) {
i++;
}
}
return ret;
};
$.mb_substr = function(str, begin, end) {
var ret = '';
for (var i = 0, len = 0; i < str.length; i++, len++) {
var upper = str.charCodeAt(i);
var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0;
var s = '';
if ($.isSurrogatePear(upper, lower)) {
i++;
s = String.fromCharCode(upper, lower);
} else {
s = String.fromCharCode(upper);
}
if (begin <= len && len < end) {
ret += s;
}
}
return ret;
};
//コピー //コピー
function execCopy(string) { function execCopy(string){
var temp = $("#copy"); var temp = $("#copy");
temp.val(string); temp.val(string);
temp.select(); temp.select();
var result = document.execCommand('copy'); var result = document.execCommand('copy');
return result; return result;
}
//Nano
function nano(){
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.send('nano', "");
} }
function progshow(e) { function progshow(e) {
if (e.lengthComputable) { if (e.lengthComputable) {
var percent = e.loaded / e.total; var percent = e.loaded / e.total;
console.log("Progress: " + percent * 100); console.log(percent * 100);
$("#imgsel").hide(); $("#imgsel").hide();
if (percent < 1) { if(percent<1){
$("#imgup").text(Math.floor(percent * 100) + "%"); $("#imgup").text(Math.floor(percent*100)+"%");
} else { }else{
$("#imgup").text(lang.lang_progress); $("#imgup").text(lang.lang_progress);
} }
} }
} }
function opendev() {
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.on('reload', function (event, arg) {
location.reload();
})
ipc.on('mess', function (event, arg) {
if(arg=="unzip"){
if(lang=="ja"){
$("body").text("アップデートを展開中です。");
}else{
$("body").text("Unzipping...");
}
}
})
//Native Notf
ipc.on('shownotf', function (event, args) {
if(args["type"]=="toot"){
details(id, acct_id)
}else if(args["type"]=="userdata"){
udg(user, acct_id)
}
})
function opendev(){
var webview = document.getElementById("webview"); var webview = document.getElementById("webview");
webview.openDevTools(); webview.openDevTools();
/*webview.sendInputEvent({ /*webview.sendInputEvent({
@@ -108,12 +174,20 @@ function opendev() {
}); });
*/ */
} }
var webviewDom = document.getElementById('webview');
const {
shell
} = require('electron');
webviewDom.addEventListener('new-window', function(e) {
shell.openExternal(e.url);
});
function playSound() { function playSound() {
window.AudioContext = window.AudioContext || window.webkitAudioContext; window.AudioContext = window.AudioContext || window.webkitAudioContext;
context = new AudioContext(); context = new AudioContext();
context.createBufferSource().start(0); context.createBufferSource().start(0);
context.decodeAudioData(request.response, function (buf) { context.decodeAudioData(request.response, function (buf) {
console.log("Playing:" + source) console.log(source)
source.buffer = buf; source.buffer = buf;
source.loop = false; source.loop = false;
}); });
@@ -121,56 +195,7 @@ function playSound() {
volumeControl = context.createGain(); volumeControl = context.createGain();
source.connect(volumeControl); source.connect(volumeControl);
volumeControl.connect(context.destination); volumeControl.connect(context.destination);
volumeControl.gain.value = 0.8 volumeControl.gain.value=0.8
console.log(volumeControl)
source.start(0); source.start(0);
} }
function nano() {
postMessage(["nano", null], "*")
}
onmessage = function (e) {
if (e.data[0] == "details") {
details(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "udg") {
udg(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "media") {
media(e.data[1][0], e.data[1][1], e.data[1][2])
} else if (e.data[0] == "post") {
post("pass")
} else if (e.data[0] == "toastSaved") {
M.toast({ html: lang.lang_img_DLDone + e.data[1][0] + '<button class="btn-flat toast-action" onclick="openFinder(\'' + e.data[1][1] + '\')">Show</button>', displayLength: 5000 })
} else if (e.data[0] == "parseColumn") {
parseColumn(e.data[1])
} else if (e.data[0] == "exportSettingsCore") {
var exp = exportSettingsCore()
postMessage(["exportSettingsCoreComplete", [e.data[1], exp]], "*")
} else if (e.data[0] == "importSettingsCore") {
importSettingsCore(e.data[1])
}else if (e.data[0] == "fontList") {
fontList(e.data[1])
} else if (e.data[0] == "customSoundSave") {
customSoundSave(e.data[1][0], e.data[1][1])
} else if (e.data[0] == "ctLoadCore") {
ctLoadCore(e.data[1])
} else if (e.data[0] == "ctLoad") {
ctLoad()
} else if (e.data[0] == "customConnect") {
customConnect(e.data[1])
} else if (e.data[0] == "clearCustomImport") {
clearCustomImport()
} else if (e.data[0] == "npCore") {
npCore(e.data[1]);
} else if (e.data[0] == "renderMem") {
renderMem(e.data[1][0], e.data[1][1], e.data[1][2])
} else if (e.data[0] == "updateProg") {
updateProg(e.data[1]);
} else if (e.data[0] == "updateMess") {
updateMess(e.data[1]);
} else if (e.data[0] == "renderAbout") {
renderAbout(e.data[1]);
} else if (e.data[0] == "alert") {
Swal.fire({
type: 'info',
title: e.data[1]
})
}
}

View File

@@ -1 +1,3 @@
//jQuery読む //jQuery読む
window.jQuery = window.$ = require('./js/common/jquery.js');
var Hammer = require('./js/common/hammer.min.js');

View File

@@ -1,199 +1,167 @@
document.title="TheDesk" //jQuery読む
$.strip_tags = function (str, allowed) { window.jQuery = window.$ = require('../../js/common/jquery.js');
if (!str) { var Hammer = require('../../js/common/hammer.min.js');
return ""; $.strip_tags = function(str, allowed) {
} if(!str){
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || [])
.join('');
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
return str.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
};
function escapeHTML(str) {
if (!str) {
return ""; return "";
} }
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || [])
.join('');
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
};
function escapeHTML(str) {
if(!str){
return "";
}
return str.replace(/&/g, '&amp;') return str.replace(/&/g, '&amp;')
.replace(/</g, '&lt;') .replace(/</g, '&lt;')
.replace(/>/g, '&gt;') .replace(/>/g, '&gt;')
.replace(/"/g, '&quot;') .replace(/"/g, '&quot;')
.replace(/'/g, '&#039;'); .replace(/'/g, '&#039;');
} }
//PHPのnl2brと同様 //PHPのnl2brと同様
function nl2br(str) { function nl2br(str) {
if (!str) { if(!str){
return ""; return "";
} }
str = str.replace(/\r\n/g, "<br />"); str = str.replace(/\r\n/g, "<br />");
str = str.replace(/(\n|\r)/g, "<br />"); str = str.replace(/(\n|\r)/g, "<br />");
return str; return str;
} }
function br2nl(str) { function br2nl(str) {
if (!str) { if(!str){
return ""; return "";
} }
str = str.replace(/<br \/>/g, "\r\n"); str = str.replace(/<br \/>/g, "\r\n");
return str; return str;
} }
function formattime(date) { function formattime(date){
var str = date.getFullYear() + "-"; var str=date.getFullYear()+"-";
if (date.getMonth() + 1 < 10) { if(date.getMonth()+1<10){
str = str + "0" + (date.getMonth() + 1) + "-"; str=str+"0"+(date.getMonth()+1)+"-";
} else { }else{
str = str + (date.getMonth() + 1) + "-"; str=str+(date.getMonth()+1)+"-";
} }
if (date.getDate() < 10) { if(date.getDate()<10){
str = str + "0" + date.getDate() str=str+"0"+date.getDate()
} else { }else{
str = str + date.getDate() str=str+date.getDate()
} }
str = str + "T"; str=str+"T";
if (date.getHours() < 10) { if(date.getHours()<10){
str = str + "0" + date.getHours() + ":" str=str+"0"+date.getHours()+":"
} else { }else{
str = str + date.getHours() + ":" str=str+date.getHours()+":"
} }
if (date.getMinutes() < 10) { if(date.getMinutes()<10){
str = str + "0" + date.getMinutes() str=str+"0"+date.getMinutes()
} else { }else{
str = str + date.getMinutes() str=str+date.getMinutes()
} }
return escapeHTML(str); return escapeHTML(str);
} }
function formattimeutc(date) { function formattimeutc(date){
var str = date.getUTCFullYear() + "-"; var str=date.getUTCFullYear()+"-";
if (date.getUTCMonth() + 1 < 10) { if(date.getUTCMonth()+1<10){
str = str + "0" + (date.getUTCMonth() + 1) + "-"; str=str+"0"+(date.getUTCMonth()+1)+"-";
} else { }else{
str = str + (date.getUTCMonth() + 1) + "-"; str=str+(date.getUTCMonth()+1)+"-";
} }
if (date.getUTCDate() < 10) { if(date.getUTCDate()<10){
str = str + "0" + date.getUTCDate() str=str+"0"+date.getUTCDate()
} else { }else{
str = str + date.getUTCDate() str=str+date.getUTCDate()
} }
str = str + "T"; str=str+"T";
if (date.getUTCHours() < 10) { if(date.getUTCHours()<10){
str = str + "0" + date.getUTCHours() + ":" str=str+"0"+date.getUTCHours()+":"
} else { }else{
str = str + date.getUTCHours() + ":" str=str+date.getUTCHours()+":"
} }
if (date.getUTCMinutes() < 10) { if(date.getUTCMinutes()<10){
str = str + "0" + date.getUTCMinutes() str=str+"0"+date.getUTCMinutes()
} else { }else{
str = str + date.getUTCMinutes() str=str+date.getUTCMinutes()
} }
return escapeHTML(str); return escapeHTML(str);
} }
postMessage(["sendSinmpleIpc", "custom-css-request"], "*") var electron = require("electron");
function makeCID() { var ipc = electron.ipcRenderer;
return randomStr(8) + "-" + randomStr(4) + "-" + randomStr(4) + "-" + randomStr(4) + "-" + randomStr(12); ipc.send('custom-css-request', "");
ipc.on('custom-css-response', function (event, arg) {
if(arg==""){ return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type","text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
ipc.on('theme-css-response', function (event, arg) {
if(arg==""){ return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type","text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
function makeCID(){
return randomStr(8)+"-"+randomStr(4)+"-"+randomStr(4)+"-"+randomStr(4)+"-"+randomStr(12);
} }
function randomStr(l) { function randomStr(l){
// 生成する文字列に含める文字セット // 生成する文字列に含める文字セット
var c = "abcdefghijklmnopqrstuvwxyz0123456789"; var c = "abcdefghijklmnopqrstuvwxyz0123456789";
var cl = c.length; var cl = c.length;
var r = ""; var r = "";
for (var i = 0; i < l; i++) { for(var i=0; i<l; i++){
r += c[Math.floor(Math.random() * cl)]; r += c[Math.floor(Math.random()*cl)];
} }
return r; return r;
} }
function rgbToHex(color) { function rgbToHex(color)
// HEXに変換したものを代入する変数 {
var hex = ''; // HEXに変換したものを代入する変数
var hex = '';
// 第1引数がHEXのとき変換処理は必要ないのでそのままreturn // 第1引数がHEXのとき変換処理は必要ないのでそのままreturn
// IE8の場合はjQueryのcss()関数でHEXを返すので除外 // IE8の場合はjQueryのcss()関数でHEXを返すので除外
if (color.match(/^#[a-f\d]{3}$|^#[a-f\d]{6}$/i)) { if (color.match(/^#[a-f\d]{3}$|^#[a-f\d]{6}$/i))
return color; {
} return color;
}
// 正規表現 // 正規表現
var regex = color.match(/^rgb\(([0-9.]+),\s*([0-9.]+),\s*([0-9.]+)\)$/); var regex = color.match(/^rgb\(([0-9.]+),\s*([0-9.]+),\s*([0-9.]+)\)$/);
// 正規表現でマッチしたとき // 正規表現でマッチしたとき
if (regex) { if (regex)
var rgb = {
[ var rgb =
// RGBからHEXへ変換 [
parseInt(regex[1]).toString(16), // RGBからHEXへ変換
parseInt(regex[2]).toString(16), parseInt(regex[1]).toString(16),
parseInt(regex[3]).toString(16) parseInt(regex[2]).toString(16),
]; parseInt(regex[3]).toString(16)
];
for (var i = 0; i < rgb.length; ++i) { for (var i = 0; i < rgb.length; ++i)
// rgb(1,1,1)のようなときHEXに変換すると1桁になる {
// 1桁のときは前に0を足す // rgb(1,1,1)のようなときHEXに変換すると1桁になる
if (rgb[i].length == 1) { // 1桁のときは前に0を足す
rgb[i] = '0' + rgb[i]; if (rgb[i].length == 1)
} {
hex += rgb[i]; rgb[i] = '0' + rgb[i];
} }
hex += rgb[i];
}
return hex; return hex;
} }
console.error(color + ':第1引数はRGB形式で入力'); console.error(color+':第1引数はRGB形式で入力');
} }
/*マルチバイト用切り出し*/
$.isSurrogatePear = function (upper, lower) {
return 0xD800 <= upper && upper <= 0xDBFF && 0xDC00 <= lower && lower <= 0xDFFF;
};
$.mb_strlen = function (str) {
var ret = 0;
for (var i = 0; i < str.length; i++ , ret++) {
var upper = str.charCodeAt(i);
var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0;
if ($.isSurrogatePear(upper, lower)) {
i++;
}
}
return ret;
};
$.mb_substr = function (str, begin, end) {
var ret = '';
for (var i = 0, len = 0; i < str.length; i++ , len++) {
var upper = str.charCodeAt(i);
var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0;
var s = '';
if ($.isSurrogatePear(upper, lower)) {
i++;
s = String.fromCharCode(upper, lower);
} else {
s = String.fromCharCode(upper);
}
if (begin <= len && len < end) {
ret += s;
}
}
return ret;
};
//ソートするやつ
function object_array_sort(data, key, order, fn) {
var num_a = -1;
var num_b = 1;
if (order === 'asc') {
num_a = 1;
num_b = -1;
}
data = data.sort(function (a, b) {
var x = a[key];
var y = b[key];
if (x > y) return num_a;
if (x < y) return num_b;
return 0;
});
var arrObj = {};
for (var i = 0; i < data.length; i++) {
arrObj[data[i]['family']] = data[i];
}
data = [];
for (var key in arrObj) {
data.push(arrObj[key]);
}
fn(data);
}
localStorage.removeItem("errors");

View File

@@ -1,37 +1,38 @@
//TL取得 //TL取得
function tl(data) { function tl(data) {
var tlid = 0; var tlid=0;
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();
var type = $("#type-sel").val(); var type = $("#type-sel").val();
var domain = localStorage.getItem("domain_" + acct_id); var domain = localStorage.getItem("domain_" + acct_id);
//タグの場合はカラム追加して描画 //タグの場合はカラム追加して描画
if (!type) { if (!type) {
//デフォルト //デフォルト
var type = "local"; var type = "local";
} }
var at = localStorage.getItem("acct_" + acct_id + "_at"); var at = localStorage.getItem("acct_"+ acct_id + "_at");
$("#notice_nano").text(cap(type, data) + " TL(" + localStorage.getItem( $("#notice_nano").text(cap(type, data) + " TL(" + localStorage.getItem(
"user_" + acct_id) + "@" + domain + ")"); "user_" + acct_id) + "@" + domain + ")");
var start = "https://" + domain + "/api/v1/timelines/" + com(type, data); var start = "https://" + domain + "/api/v1/timelines/" + com(type, data);
console.log(start);
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
var templete = parse([json[0]], '', acct_id, tlid); var templete = parse([json[0]], '', acct_id, tlid);
$("#timeline_nano").html(templete); $("#timeline_nano").html(templete);
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
}); });
//Streaming接続 //Streaming接続
var websocket = []; var websocket=[];
var tlid = 0; var tlid=0;
if (type == "home") { if (type == "home") {
var start = "wss://" + domain + var start = "wss://" + domain +
"/api/v1/streaming/?stream=user&access_token=" + at; "/api/v1/streaming/?stream=user&access_token=" + at;
@@ -43,14 +44,19 @@ function tl(data) {
"/api/v1/streaming/?stream=public:local&access_token=" + at; "/api/v1/streaming/?stream=public:local&access_token=" + at;
} else if (type == "tag") { } else if (type == "tag") {
var start = "wss://" + domain + var start = "wss://" + domain +
"/api/v1/streaming/?stream=hashtag&tag=" + data + "&access_token=" + at; "/api/v1/streaming/?stream=hashtag&tag=" + data +"&access_token=" + at;
} }
console.log(start);
var wsid = websocket.length; var wsid = websocket.length;
websocket[wsid] = new WebSocket(start); websocket[wsid] = new WebSocket(start);
websocket[wsid].onopen = function (mess) { websocket[wsid].onopen = function(mess) {
console.log(tlid + ":Connect Streaming API:" + type);
console.log(mess);
$("#notice_icon_" + tlid).removeClass("red-text"); $("#notice_icon_" + tlid).removeClass("red-text");
} }
websocket[wsid].onmessage = function (mess) { websocket[wsid].onmessage = function(mess) {
console.log(tlid + ":Receive Streaming API:");
console.log(websocket[wsid]);
var typeA = JSON.parse(mess.data).event; var typeA = JSON.parse(mess.data).event;
if (typeA == "delete") { if (typeA == "delete") {
var obj = JSON.parse(mess.data).payload; var obj = JSON.parse(mess.data).payload;
@@ -58,14 +64,15 @@ function tl(data) {
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove(); $("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
} else if (typeA == "update") { } else if (typeA == "update") {
var obj = JSON.parse(JSON.parse(mess.data).payload); var obj = JSON.parse(JSON.parse(mess.data).payload);
var templete = parse([obj], '', acct_id, tlid); console.log(obj);
$("#timeline_nano").html(templete); var templete = parse([obj], '', acct_id, tlid);
$("#timeline_nano").html(templete);
} }
websocket[wsid].onclose = function (mess) { websocket[wsid].onclose = function(mess) {
console.error("Close Streaming API:" + type); console.log("Close Streaming API:" + type);
} }
} }
websocket[wsid].onerror = function (error) { websocket[wsid].onerror = function(error) {
console.error('WebSocket Error ' + error); console.error('WebSocket Error ' + error);
}; };
} }
@@ -117,12 +124,12 @@ function icon(type) {
return "subject" return "subject"
} }
} }
function todo() { } function todo(){}
function todc() { } function todc(){}
function hide() { } function hide(){}
$(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');
//Ctrl+Enter:投稿 //Ctrl+Enter:投稿

View File

@@ -1,172 +0,0 @@
var electron = require("electron");
const shell = electron.shell;
var ipc = electron.ipcRenderer;
onmessage = function (e) {
if (e.data[0] == "openUrl") {
urls = e.data[1].match(/https?:\/\/(.+)/);
if (urls) {
shell.openExternal(e.data[1]);
}
} else if (e.data[0] == "sendSinmpleIpc") {
ipc.send(e.data[1], "")
} else if (e.data[0] == "dialogStore") {
ipc.send("dialogStore", e.data[1])
} else if (e.data[0] == "bmpImage") {
ipc.send('bmp-image', e.data[1]);
} else if (e.data[0] == "dialogCW") {
ipc.send("dialogCW", e.data[1])
} else if (e.data[0] == "nativeNotf") {
console.log(e.data[1])
ipc.send('native-notf', e.data[1]);
} else if (e.data[0] == "dialogClient") {
ipc.send("dialogClient", e.data[1])
} else if (e.data[0] == "generalDL") {
ipc.send('general-dl', e.data[1]);
} else if (e.data[0] == "openFinder") {
ipc.send('open-finder', e.data[1]);
} else if (e.data[0] == "columnDel") {
ipc.send('column-del', e.data[1]);
} else if (e.data[0] == "lang") {
ipc.send('lang', e.data[1]);
} else if (e.data[0] == "exportSettings") {
ipc.send('exportSettings', e.data[1]);
} else if (e.data[0] == "exportSettingsCoreComplete") {
ipc.send('export', e.data[1]);
} else if (e.data[0] == "importSettings") {
ipc.send('importSettings', e.data[1]);
} else if (e.data[0] == "customSound") {
ipc.send('customSound', e.data[1]);
} else if (e.data[0] == "themeJsonDelete") {
ipc.send('theme-json-delete', e.data[1]);
} else if (e.data[0] == "themeJsonCreate") {
ipc.send('theme-json-create', e.data[1]);
} else if (e.data[0] == "themeJsonRequest") {
ipc.send('theme-json-request', e.data[1]);
} else if (e.data[0] == "ha") {
ipc.send('ha', e.data[1]);
} else if (e.data[0] == "aboutData") {
ipc.send('aboutData', "");
} else if (e.data[0] == "itunes") {
console.log("NowPlaying")
ipc.send("itunes", e.data[1])
} else if (e.data[0] == "themeCSSRequest") {
ipc.send('theme-css-request', e.data[1]);
} else if (e.data[0] == "customCSSRequest") {
ipc.send('custom-css-request', e.data[1]);
} else if (e.data[0] == "downloadButton") {
ipc.send('download-btn', e.data[1]);
} else if (e.data[0] == "nano") {
ipc.send('nano', null);
}
}
//version.js
ipc.send("getPlatform", "")
ipc.on('platform', function (event, args) {
localStorage.setItem("platform", args[0])
localStorage.setItem("bit", args[1])
localStorage.setItem("about", JSON.stringify([args[2], args[3], args[4], args[5]]))
})
ipc.on('reload', function (event, arg) {
location.reload();
})
//Native Notf
ipc.on('shownotf', function (event, args) {
if (args["type"] == "toot") {
postMessage(["details", [id, acct_id]], "*")
} else if (args["type"] == "userdata") {
postMessage(["udg", [user, acct_id]], "*")
}
})
//first.js
ipc.on('custom-css-response', function (event, arg) {
if (arg == "") { return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type", "text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
ipc.on('theme-css-response', function (event, arg) {
if (arg == "") { return false; }
var styleNode = document.createElement("style");
styleNode.setAttribute("type", "text/css")
var content = document.createTextNode(arg)
styleNode.append(content)
document.getElementsByTagName("head")[0].append(styleNode)
})
//img.js
ipc.on('bmp-img-comp', function (event, b64) {
postMessage(["media", [b64[0], "image/png", b64[1]]], "*")
});
//ui,img.js
ipc.on('general-dl-prog', function (event, arg) {
console.log("Progress: " + arg);
})
ipc.on('general-dl-message', function (event, arg) {
var argC = arg.replace(/\\/g, "\\\\") + "\\\\.";
console.log("saved")
postMessage(["toastSaved", [arg, argC]], "*")
})
//setting.js
ipc.on('langres', function (event, arg) {
location.href = "../" + arg + "/setting.html"
});
ipc.on('exportSettingsFile', function (event, arg) {
postMessage(["exportSettingsCore", arg], "*")
});
ipc.on('exportAllComplete', function (event, arg) {
postMessage(["alert", "Complete"], "*")
});
ipc.on('config', function (event, arg) {
postMessage(["importSettingsCore", arg], "*")
});
ipc.on('savefolder', function (event, arg) {
localStorage.setItem("savefolder", arg);
});
ipc.on('font-list', function (event, arg) {
postMessage(["fontList", arg], "*")
});
ipc.on('customSoundRender', function (event, args) {
postMessage(["customSoundSave", [args[0], args[1]]], "*")
});
ipc.on('theme-json-list-response', function (event, args) {
postMessage(["ctLoadCore", args], "*")
});
ipc.on('theme-json-delete-complete', function (event, args) {
postMessage(["ctLoad", ""], "*")
});
ipc.on('theme-json-response', function (event, args) {
postMessage(["customConnect", args], "*")
});
ipc.on('theme-json-create-complete', function (event, args) {
postMessage(["clearCustomImport", ""], "*")
postMessage(["ctLoad", ""], "*")
});
//spotify.js
ipc.on('itunes-np', function (event, arg) {
postMessage(["npCore", arg], "*")
})
//tips.js
ipc.on('memory', function (event, arg) {
var use = arg[0];
var cpu = arg[1];
var total = arg[2]
postMessage(["renderMem", [use, cpu, total]], "*")
})
//update.html
ipc.on('prog', function (event, arg) {
postMessage(["updateProg", arg], "*")
})
ipc.on('mess', function (event, arg) {
postMessage(["updateMess", arg], "*")
})
var webviewDom = document.getElementById('webview');
if (webviewDom) {
webviewDom.addEventListener('new-window', function (e) {
shell.openExternal(e.url);
});
}

View File

@@ -1,533 +0,0 @@
/*! https://mths.be/punycode v1.4.1 by @mathias */
;(function(root) {
/** Detect free variables */
var freeExports = typeof exports == 'object' && exports &&
!exports.nodeType && exports;
var freeModule = typeof module == 'object' && module &&
!module.nodeType && module;
var freeGlobal = typeof global == 'object' && global;
if (
freeGlobal.global === freeGlobal ||
freeGlobal.window === freeGlobal ||
freeGlobal.self === freeGlobal
) {
root = freeGlobal;
}
/**
* The `punycode` object.
* @name punycode
* @type Object
*/
var punycode,
/** Highest positive signed 32-bit float value */
maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
/** Bootstring parameters */
base = 36,
tMin = 1,
tMax = 26,
skew = 38,
damp = 700,
initialBias = 72,
initialN = 128, // 0x80
delimiter = '-', // '\x2D'
/** Regular expressions */
regexPunycode = /^xn--/,
regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
/** Error messages */
errors = {
'overflow': 'Overflow: input needs wider integers to process',
'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
'invalid-input': 'Invalid input'
},
/** Convenience shortcuts */
baseMinusTMin = base - tMin,
floor = Math.floor,
stringFromCharCode = String.fromCharCode,
/** Temporary variable */
key;
/*--------------------------------------------------------------------------*/
/**
* A generic error utility function.
* @private
* @param {String} type The error type.
* @returns {Error} Throws a `RangeError` with the applicable error message.
*/
function error(type) {
throw new RangeError(errors[type]);
}
/**
* A generic `Array#map` utility function.
* @private
* @param {Array} array The array to iterate over.
* @param {Function} callback The function that gets called for every array
* item.
* @returns {Array} A new array of values returned by the callback function.
*/
function map(array, fn) {
var length = array.length;
var result = [];
while (length--) {
result[length] = fn(array[length]);
}
return result;
}
/**
* A simple `Array#map`-like wrapper to work with domain name strings or email
* addresses.
* @private
* @param {String} domain The domain name or email address.
* @param {Function} callback The function that gets called for every
* character.
* @returns {Array} A new string of characters returned by the callback
* function.
*/
function mapDomain(string, fn) {
var parts = string.split('@');
var result = '';
if (parts.length > 1) {
// In email addresses, only the domain name should be punycoded. Leave
// the local part (i.e. everything up to `@`) intact.
result = parts[0] + '@';
string = parts[1];
}
// Avoid `split(regex)` for IE8 compatibility. See #17.
string = string.replace(regexSeparators, '\x2E');
var labels = string.split('.');
var encoded = map(labels, fn).join('.');
return result + encoded;
}
/**
* Creates an array containing the numeric code points of each Unicode
* character in the string. While JavaScript uses UCS-2 internally,
* this function will convert a pair of surrogate halves (each of which
* UCS-2 exposes as separate characters) into a single code point,
* matching UTF-16.
* @see `punycode.ucs2.encode`
* @see <https://mathiasbynens.be/notes/javascript-encoding>
* @memberOf punycode.ucs2
* @name decode
* @param {String} string The Unicode input string (UCS-2).
* @returns {Array} The new array of code points.
*/
function ucs2decode(string) {
var output = [],
counter = 0,
length = string.length,
value,
extra;
while (counter < length) {
value = string.charCodeAt(counter++);
if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
// high surrogate, and there is a next character
extra = string.charCodeAt(counter++);
if ((extra & 0xFC00) == 0xDC00) { // low surrogate
output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
} else {
// unmatched surrogate; only append this code unit, in case the next
// code unit is the high surrogate of a surrogate pair
output.push(value);
counter--;
}
} else {
output.push(value);
}
}
return output;
}
/**
* Creates a string based on an array of numeric code points.
* @see `punycode.ucs2.decode`
* @memberOf punycode.ucs2
* @name encode
* @param {Array} codePoints The array of numeric code points.
* @returns {String} The new Unicode string (UCS-2).
*/
function ucs2encode(array) {
return map(array, function(value) {
var output = '';
if (value > 0xFFFF) {
value -= 0x10000;
output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
value = 0xDC00 | value & 0x3FF;
}
output += stringFromCharCode(value);
return output;
}).join('');
}
/**
* Converts a basic code point into a digit/integer.
* @see `digitToBasic()`
* @private
* @param {Number} codePoint The basic numeric code point value.
* @returns {Number} The numeric value of a basic code point (for use in
* representing integers) in the range `0` to `base - 1`, or `base` if
* the code point does not represent a value.
*/
function basicToDigit(codePoint) {
if (codePoint - 48 < 10) {
return codePoint - 22;
}
if (codePoint - 65 < 26) {
return codePoint - 65;
}
if (codePoint - 97 < 26) {
return codePoint - 97;
}
return base;
}
/**
* Converts a digit/integer into a basic code point.
* @see `basicToDigit()`
* @private
* @param {Number} digit The numeric value of a basic code point.
* @returns {Number} The basic code point whose value (when used for
* representing integers) is `digit`, which needs to be in the range
* `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
* used; else, the lowercase form is used. The behavior is undefined
* if `flag` is non-zero and `digit` has no uppercase form.
*/
function digitToBasic(digit, flag) {
// 0..25 map to ASCII a..z or A..Z
// 26..35 map to ASCII 0..9
return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
}
/**
* Bias adaptation function as per section 3.4 of RFC 3492.
* https://tools.ietf.org/html/rfc3492#section-3.4
* @private
*/
function adapt(delta, numPoints, firstTime) {
var k = 0;
delta = firstTime ? floor(delta / damp) : delta >> 1;
delta += floor(delta / numPoints);
for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
delta = floor(delta / baseMinusTMin);
}
return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
}
/**
* Converts a Punycode string of ASCII-only symbols to a string of Unicode
* symbols.
* @memberOf punycode
* @param {String} input The Punycode string of ASCII-only symbols.
* @returns {String} The resulting string of Unicode symbols.
*/
function decode(input) {
// Don't use UCS-2
var output = [],
inputLength = input.length,
out,
i = 0,
n = initialN,
bias = initialBias,
basic,
j,
index,
oldi,
w,
k,
digit,
t,
/** Cached calculation results */
baseMinusT;
// Handle the basic code points: let `basic` be the number of input code
// points before the last delimiter, or `0` if there is none, then copy
// the first basic code points to the output.
basic = input.lastIndexOf(delimiter);
if (basic < 0) {
basic = 0;
}
for (j = 0; j < basic; ++j) {
// if it's not a basic code point
if (input.charCodeAt(j) >= 0x80) {
error('not-basic');
}
output.push(input.charCodeAt(j));
}
// Main decoding loop: start just after the last delimiter if any basic code
// points were copied; start at the beginning otherwise.
for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
// `index` is the index of the next character to be consumed.
// Decode a generalized variable-length integer into `delta`,
// which gets added to `i`. The overflow checking is easier
// if we increase `i` as we go, then subtract off its starting
// value at the end to obtain `delta`.
for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
if (index >= inputLength) {
error('invalid-input');
}
digit = basicToDigit(input.charCodeAt(index++));
if (digit >= base || digit > floor((maxInt - i) / w)) {
error('overflow');
}
i += digit * w;
t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
if (digit < t) {
break;
}
baseMinusT = base - t;
if (w > floor(maxInt / baseMinusT)) {
error('overflow');
}
w *= baseMinusT;
}
out = output.length + 1;
bias = adapt(i - oldi, out, oldi == 0);
// `i` was supposed to wrap around from `out` to `0`,
// incrementing `n` each time, so we'll fix that now:
if (floor(i / out) > maxInt - n) {
error('overflow');
}
n += floor(i / out);
i %= out;
// Insert `n` at position `i` of the output
output.splice(i++, 0, n);
}
return ucs2encode(output);
}
/**
* Converts a string of Unicode symbols (e.g. a domain name label) to a
* Punycode string of ASCII-only symbols.
* @memberOf punycode
* @param {String} input The string of Unicode symbols.
* @returns {String} The resulting Punycode string of ASCII-only symbols.
*/
function encode(input) {
var n,
delta,
handledCPCount,
basicLength,
bias,
j,
m,
q,
k,
t,
currentValue,
output = [],
/** `inputLength` will hold the number of code points in `input`. */
inputLength,
/** Cached calculation results */
handledCPCountPlusOne,
baseMinusT,
qMinusT;
// Convert the input in UCS-2 to Unicode
input = ucs2decode(input);
// Cache the length
inputLength = input.length;
// Initialize the state
n = initialN;
delta = 0;
bias = initialBias;
// Handle the basic code points
for (j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue < 0x80) {
output.push(stringFromCharCode(currentValue));
}
}
handledCPCount = basicLength = output.length;
// `handledCPCount` is the number of code points that have been handled;
// `basicLength` is the number of basic code points.
// Finish the basic string - if it is not empty - with a delimiter
if (basicLength) {
output.push(delimiter);
}
// Main encoding loop:
while (handledCPCount < inputLength) {
// All non-basic code points < n have been handled already. Find the next
// larger one:
for (m = maxInt, j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue >= n && currentValue < m) {
m = currentValue;
}
}
// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
// but guard against overflow
handledCPCountPlusOne = handledCPCount + 1;
if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
error('overflow');
}
delta += (m - n) * handledCPCountPlusOne;
n = m;
for (j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue < n && ++delta > maxInt) {
error('overflow');
}
if (currentValue == n) {
// Represent delta as a generalized variable-length integer
for (q = delta, k = base; /* no condition */; k += base) {
t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
if (q < t) {
break;
}
qMinusT = q - t;
baseMinusT = base - t;
output.push(
stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
);
q = floor(qMinusT / baseMinusT);
}
output.push(stringFromCharCode(digitToBasic(q, 0)));
bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
delta = 0;
++handledCPCount;
}
}
++delta;
++n;
}
return output.join('');
}
/**
* Converts a Punycode string representing a domain name or an email address
* to Unicode. Only the Punycoded parts of the input will be converted, i.e.
* it doesn't matter if you call it on a string that has already been
* converted to Unicode.
* @memberOf punycode
* @param {String} input The Punycoded domain name or email address to
* convert to Unicode.
* @returns {String} The Unicode representation of the given Punycode
* string.
*/
function toUnicode(input) {
return mapDomain(input, function(string) {
return regexPunycode.test(string)
? decode(string.slice(4).toLowerCase())
: string;
});
}
/**
* Converts a Unicode string representing a domain name or an email address to
* Punycode. Only the non-ASCII parts of the domain name will be converted,
* i.e. it doesn't matter if you call it with a domain that's already in
* ASCII.
* @memberOf punycode
* @param {String} input The domain name or email address to convert, as a
* Unicode string.
* @returns {String} The Punycode representation of the given domain name or
* email address.
*/
function toASCII(input) {
return mapDomain(input, function(string) {
return regexNonASCII.test(string)
? 'xn--' + encode(string)
: string;
});
}
/*--------------------------------------------------------------------------*/
/** Define the public API */
punycode = {
/**
* A string representing the current Punycode.js version number.
* @memberOf punycode
* @type String
*/
'version': '1.4.1',
/**
* An object of methods to convert from JavaScript's internal character
* representation (UCS-2) to Unicode code points, and back.
* @see <https://mathiasbynens.be/notes/javascript-encoding>
* @memberOf punycode
* @type Object
*/
'ucs2': {
'decode': ucs2decode,
'encode': ucs2encode
},
'decode': decode,
'encode': encode,
'toASCII': toASCII,
'toUnicode': toUnicode
};
/** Expose `punycode` */
// Some AMD build optimizers, like r.js, check for specific condition patterns
// like the following:
if (
typeof define == 'function' &&
typeof define.amd == 'object' &&
define.amd
) {
define('punycode', function() {
return punycode;
});
} else if (freeExports && freeModule) {
if (module.exports == freeExports) {
// in Node.js, io.js, or RingoJS v0.8.0+
freeModule.exports = punycode;
} else {
// in Narwhal or RingoJS v0.7.0-
for (key in punycode) {
punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);
}
}
} else {
// in Rhino or a web browser
root.punycode = punycode;
}
}(this));

View File

@@ -0,0 +1,51 @@
var electron = require("electron");
const fs = require("fs");
const os = require('os')
const shell = electron.shell;
const path = require('path')
function shot(){
//screenshotMsg.textContent = 'Gathering screens...'
$(window).height
let options = {
types: ['screen'],
thumbnailSize: {
width: window.parent.screen.width,
height: window.parent.screen.height
}
}
const desktopCapturer = electron.desktopCapturer;
desktopCapturer.getSources(options, function(error, sources) {
if (error) return console.log(error)
sources.forEach(function(source) {
if(location.search){
var m = location.search.match(/\?id=([a-zA-Z-0-9]+)/);
var title=m[1];
}else{
var title="screenshot";
}
if (source.name === 'Screen 1' || source.name === 'TheDesk') {
var durl=source.thumbnail.toDataURL();
var b64 = durl.match(
/data:image\/png;base64,(.+)/
);
const screenshotPath = path.join(os.tmpdir(), 'screenshot.png');
const savePath = path.join(os.tmpdir(), 'screenshot.png');
var ipc = electron.ipcRenderer;
var h = $(window).height()-150;
var w = $(window).width();
ipc.send('shot', ['file://' + screenshotPath,w,h,b64[1],title]);
if($(".img-parsed").length>0){
for(i=0;i<$(".img-parsed").length;i++){
var url=$(".img-parsed").eq(i).attr("data-url");
ipc.send('shot-img-dl', [url,title+"_img"+i+".png"]);
}
}
window.close();
return;
const message = `Saved screenshot to: ${screenshotPath}`
//screenshotMsg.textContent = message
}
})
})
}

View File

@@ -12,33 +12,33 @@ function _classCallCheck(a, e) {
if (!(a instanceof e)) throw new TypeError("Cannot call a class as a function") if (!(a instanceof e)) throw new TypeError("Cannot call a class as a function")
} }
var TJScrollTask = function () { var TJScrollTask = function () {
function a(e, f, g) { function a(e, f, g) {
_classCallCheck(this, a), this.tjDeck = e, this.$t = e.$wrap, this.x = f, this.d = g, this.sl = e.wrapL, this.sTime = Date.now(), this.ended = !1, this._bindAnim = this._anim.bind(this); _classCallCheck(this, a), this.tjDeck = e, this.$t = e.$wrap, this.x = f, this.d = g, this.sl = e.wrapL, this.sTime = Date.now(), this.ended = !1, this._bindAnim = this._anim.bind(this);
var h = e.getClms(); var h = e.getClms();
0 > f || f > h[0].offsetWidth * (h.length - 1) ? this.ended = !0 : requestAnimationFrame(this._bindAnim) 0 > f || f > h[0].offsetWidth * (h.length - 1) ? this.ended = !0 : requestAnimationFrame(this._bindAnim)
}
return _createClass(a, [{
key: "stop",
value: function stop() {
this.ended || (this.ended = !0, cancelAnimationFrame(this._bindAnim))
} }
}, { return _createClass(a, [{
key: "_anim", key: "stop",
value: function _anim() { value: function stop() {
if (!this.ended) { this.ended || (this.ended = !0, cancelAnimationFrame(this._bindAnim))
var e = (Date.now() - this.sTime) / this.d,
f = this.sl,
g = this.x - this.sl;
1 < e && !this.ended && (this.stop(), e = 1), this.tjDeck.scrollWrap(this._easeOut(e, f, g, 1)), 1 > e && requestAnimationFrame(this._bindAnim)
} }
} }, {
}, { key: "_anim",
key: "_easeOut", value: function _anim() {
value: function _easeOut(e, f, g, h) { if (!this.ended) {
return e /= h, --e, g * (e * e * e + 1) + f var e = (Date.now() - this.sTime) / this.d,
} f = this.sl,
}]), a g = this.x - this.sl;
}(), 1 < e && !this.ended && (this.stop(), e = 1), this.tjDeck.scrollWrap(this._easeOut(e, f, g, 1)), 1 > e && requestAnimationFrame(this._bindAnim)
}
}
}, {
key: "_easeOut",
value: function _easeOut(e, f, g, h) {
return e /= h, --e, g * (e * e * e + 1) + f
}
}]), a
}(),
TJDeck = function () { TJDeck = function () {
function a() { function a() {
_classCallCheck(this, a), this.version = "0.0.9", this.$wrap = document.querySelector(".js-app-columns"), this.wrapL = 0, this.scrollTask = null, this.options = this.getOptionObj(), this.setOptionFromObj(this.options), this.$options = this.createOptionPanel(), document.body.appendChild(this.$options), this.updateBlur(), this.updateLight() _classCallCheck(this, a), this.version = "0.0.9", this.$wrap = document.querySelector(".js-app-columns"), this.wrapL = 0, this.scrollTask = null, this.options = this.getOptionObj(), this.setOptionFromObj(this.options), this.$options = this.createOptionPanel(), document.body.appendChild(this.$options), this.updateBlur(), this.updateLight()
@@ -117,22 +117,22 @@ var TJScrollTask = function () {
key: "observeModals", key: "observeModals",
value: function observeModals() { value: function observeModals() {
for (var e = new MutationObserver(function (j) { for (var e = new MutationObserver(function (j) {
for (var k, l, m = 0; m < j.length; m++) { for (var k, l, m = 0; m < j.length; m++) {
k = j[m]; k = j[m];
for (var o = 0; o < k.addedNodes.length; o++) l = k.addedNodes[m], this.stopAnkerFromModal(l) for (var o = 0; o < k.addedNodes.length; o++) l = k.addedNodes[m], this.stopAnkerFromModal(l)
} }
}.bind(this)), f = { }.bind(this)), f = {
attributes: !1, attributes: !1,
characterData: !0, characterData: !0,
childList: !0 childList: !0
}, g = document.querySelectorAll(".js-modals-container, .js-modal"), h = 0; h < g.length; h++) e.observe(g[h], f) }, g = document.querySelectorAll(".js-modals-container, .js-modal"), h = 0; h < g.length; h++) e.observe(g[h], f)
} }
}, { }, {
key: "stopAnkerFromModal", key: "stopAnkerFromModal",
value: function stopAnkerFromModal(e) { value: function stopAnkerFromModal(e) {
for (var g, f = e.querySelectorAll("a"), h = function (k) { for (var g, f = e.querySelectorAll("a"), h = function (k) {
return k.preventDefault(), k.target.removeEventListener("click", h), !1 return k.preventDefault(), k.target.removeEventListener("click", h), !1
}, j = 0; j < f.length; j++) g = f[j], g.href && g.href.match(/#$/) && g.addEventListener("click", h) }, j = 0; j < f.length; j++) g = f[j], g.href && g.href.match(/#$/) && g.addEventListener("click", h)
} }
}, { }, {
key: "observeClms", key: "observeClms",
@@ -160,7 +160,7 @@ var TJScrollTask = function () {
if (j) { if (j) {
if (0 > j) { if (0 > j) {
var l = this._getPosObj(k); var l = this._getPosObj(k);
if (Math.abs(l.x - e.x) < Math.abs(l.y - e.y)) return void (j = 0); if (Math.abs(l.x - e.x) < Math.abs(l.y - e.y)) return void(j = 0);
j = 1 j = 1
} }
if (1 == j) { if (1 == j) {
@@ -217,7 +217,7 @@ var TJScrollTask = function () {
} }
}, { }, {
key: "showTJSetting", key: "showTJSetting",
value: function showTJSetting() { } value: function showTJSetting() {}
}, { }, {
key: "addTJNav", key: "addTJNav",
value: function addTJNav() { value: function addTJNav() {
@@ -298,7 +298,7 @@ var TJScrollTask = function () {
} }
}, { }, {
key: "refreshStyle", key: "refreshStyle",
value: function refreshStyle() { } value: function refreshStyle() {}
}, { }, {
key: "addStyle", key: "addStyle",
value: function addStyle() { value: function addStyle() {

View File

@@ -1,67 +1,67 @@
//BBCodeとMarkdownの入力・パーサー //BBCodeとMarkdownの入力・パーサー
//アカウント変えた時にBBとかMDとか //アカウント変えた時にBBとかMDとか
function mdCheck() { function mdCheck(){
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();
var profimg = localStorage.getItem("prof_" + acct_id); var profimg=localStorage.getItem("prof_"+acct_id);
if (!profimg) { if(!profimg){
profimg = "../../img/missing.svg"; profimg="../../img/missing.svg";
} }
$("#acct-sel-prof").attr("src", profimg); $("#acct-sel-prof").attr("src",profimg);
if (localStorage.getItem("post_" + acct_id)) { if(localStorage.getItem("post_" + acct_id)){
$("#toot-post-btn").text(localStorage.getItem("post_" + acct_id) + "(" + localStorage.getItem("domain_" + acct_id) + ")"); $("#toot-post-btn").text(localStorage.getItem("post_" + acct_id)+"("+localStorage.getItem("domain_"+acct_id)+")");
} else { }else{
$("#toot-post-btn").text(lang.lang_toot + "(" + localStorage.getItem("domain_" + acct_id) + ")"); $("#toot-post-btn").text(lang.lang_toot+"("+localStorage.getItem("domain_"+acct_id)+")");
} }
if (!localStorage.getItem("bb_" + acct_id) && !localStorage.getItem("md_" + acct_id)) { if(!localStorage.getItem("bb_"+acct_id) && !localStorage.getItem("md_"+acct_id)){
$(".markdown").addClass("hide"); $(".markdown").addClass("hide");
$(".anti-markdown").addClass("hide"); $(".anti-markdown").addClass("hide");
} else { }else{
$(".anti-markdown").removeClass("hide"); $(".anti-markdown").removeClass("hide");
} }
if ($(".markdown").hasClass("hide")) { if($(".markdown").hasClass("hide")){
localStorage.setItem("md", "hide"); localStorage.setItem("md","hide");
} else { }else{
localStorage.removeItem("md"); localStorage.removeItem("md");
} }
var domain = localStorage.getItem("domain_" + acct_id); var domain = localStorage.getItem("domain_" + acct_id);
if (domain == "itabashi.0j0.jp") { if(domain=="itabashi.0j0.jp"){
$("#limited-button").removeClass("hide"); $("#limited-button").removeClass("hide");
} else { }else{
$("#limited-button").addClass("hide"); $("#limited-button").addClass("hide");
} }
if (domain == "kirishima.cloud") { if(domain=="kirishima.cloud"){
$("#faicon-btn").show(); $("#faicon-btn").show();
} else { }else{
$("#faicon-btn").hide(); $("#faicon-btn").hide();
} }
if (domain == "imastodon.net") { if(domain=="imastodon.net"){
trendTag(); trendTag();
} else { }else{
$("#trendtag").html(""); $("#trendtag").html("");
} }
if (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
M.toast({ html: lang.lang_bbmd_misskey, displayLength: 5000 }) Materialize.toast(lang.lang_bbmd_misskey, 5000);
} }
if (idata[domain + "_letters"]) { if(idata[domain+"_letters"]){
$("#textarea").attr("data-length", idata[domain + "_letters"]) $("#textarea").attr("data-length", idata[domain+"_letters"])
} else { }else{
$("#textarea").attr("data-length", 500) $("#textarea").attr("data-length", 500)
} }
if (idata[domain + "_glitch"] === "true") { if(idata[domain+"_glitch"]==="true"){
$("#local-button").removeClass("hide"); $("#local-button").removeClass("hide");
} else { }else{
$("#local-button").addClass("hide"); $("#local-button").addClass("hide");
} }
var multi = localStorage.getItem("multi"); var multi = localStorage.getItem("multi");
if (multi) { if (multi) {
var obj = JSON.parse(multi); var obj = JSON.parse(multi);
if (obj[acct_id].background && obj[acct_id].background != "def" && obj[acct_id].text && obj[acct_id].text != "def") { if(obj[acct_id].background && obj[acct_id].background!="def" && obj[acct_id].text && obj[acct_id].text!="def"){
$("#toot-post-btn").removeClass("indigo"); $("#toot-post-btn").removeClass("indigo");
$("#toot-post-btn").css("background-color", "#" + obj[acct_id].background); $("#toot-post-btn").css("background-color","#"+obj[acct_id].background);
$("#toot-post-btn").css("color", obj[acct_id].text); $("#toot-post-btn").css("color",obj[acct_id].text);
} else { }else{
$("#toot-post-btn").css("background-color", ""); $("#toot-post-btn").css("background-color","");
$("#toot-post-btn").css("color", ""); $("#toot-post-btn").css("color","");
$("#toot-post-btn").addClass("indigo"); $("#toot-post-btn").addClass("indigo");
} }
@@ -69,248 +69,248 @@ function mdCheck() {
loadVis(); loadVis();
} }
//BOXのトグルボタン //BOXのトグルボタン
function mdToggle() { function mdToggle(){
$(".markdown").toggleClass("hide"); $(".markdown").toggleClass("hide");
$(".anti-markdown").toggleClass("hide"); $(".anti-markdown").toggleClass("hide");
if ($(".markdown").hasClass("hide")) { if($(".markdown").hasClass("hide")){
localStorage.setItem("md", "hide"); localStorage.setItem("md","hide");
} else { }else{
localStorage.removeItem("md"); localStorage.removeItem("md");
} }
} }
//最初に読み込みます(MD対応インスタンスかチェック) //最初に読み込みます(MD対応インスタンスかチェック)
if (localStorage.getItem("md") == "hide") { if(localStorage.getItem("md")=="hide"){
$(".markdown").addClass("hide"); $(".markdown").addClass("hide");
$(".anti-markdown").removeClass("hide"); $(".anti-markdown").removeClass("hide");
} }
//タグを選んだ時に(BB版) //タグを選んだ時に(BB版)
function tagsel(tag) { function tagsel(tag){
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();
if (!localStorage.getItem("bb_" + acct_id)) { if(!localStorage.getItem("bb_"+acct_id)){
return false; return false;
} }
if (tag == "large" || tag == "size" || tag == "color" || tag == "colorhex") { if(tag=="large" || tag=="size" || tag=="color" || tag=="colorhex"){
var sub = $("#" + tag).val(); var sub=$("#"+tag).val();
var sub = sub.replace(/#/g, ""); var sub = sub.replace( /#/g , "" ) ;
surroundHTML(tag + "=" + sub, tag); surroundHTML(tag+"="+sub,tag);
} else if (tag == "flip=vertical" || tag == "flip=horizontal") { }else if(tag=="flip=vertical" || tag=="flip=horizontal"){
surroundHTML(tag, "flip"); surroundHTML(tag,"flip");
} else { }else{
surroundHTML(tag, tag); surroundHTML(tag,tag);
} }
$("#textarea").focus(); $("#textarea").focus();
} }
//HTMLをエスケープしてXSSを防ぐ //HTMLをエスケープしてXSSを防ぐ
function escape_html(string) { function escape_html (string) {
if (typeof string !== 'string') { if(typeof string !== 'string') {
return string; return string;
} }
return string.replace(/[&'`"<>]/g, function (match) { return string.replace(/[&'`"<>]/g, function(match) {
return { return {
'&': '&amp;', '&': '&amp;',
"'": '&#x27;', "'": '&#x27;',
'`': '&#x60;', '`': '&#x60;',
'"': '&quot;', '"': '&quot;',
'<': '&lt;', '<': '&lt;',
'>': '&gt;', '>': '&gt;',
}[match] }[match]
}); });
} }
//テキストボックスで選択したやつをタグで囲む(BB版) //テキストボックスで選択したやつをタグで囲む(BB版)
function surroundHTML(tagS, tagE) { function surroundHTML(tagS,tagE) {
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();
if (!localStorage.getItem("bb_" + acct_id)) { if(!localStorage.getItem("bb_"+acct_id)){
return false; return false;
} }
var target = document.getElementById("textarea"); var target = document.getElementById("textarea");
var pos = getAreaRange(target); var pos = getAreaRange(target);
var val = target.value; var val = target.value;
var range = val.slice(pos.start, pos.end); var range = val.slice(pos.start, pos.end);
var beforeNode = val.slice(0, pos.start); var beforeNode = val.slice(0, pos.start);
var afterNode = val.slice(pos.end); var afterNode = val.slice(pos.end);
var insertNode; var insertNode;
if (range || pos.start != pos.end) { if (range || pos.start != pos.end) {
insertNode = '[' + tagS + ']' + range + '[/' + tagE + ']'; insertNode = '[' + tagS + ']' + range + '[/' + tagE + ']';
target.value = beforeNode + insertNode + afterNode; target.value = beforeNode + insertNode + afterNode;
} }
else if (pos.start == pos.end) { else if (pos.start == pos.end) {
insertNode = '[' + tagS + ']' + '[/' + tagE + ']'; insertNode = '[' + tagS + ']' + '[/' + tagE + ']';
target.value = beforeNode + insertNode + afterNode; target.value = beforeNode + insertNode + afterNode;
} }
} }
function markdown(tag, ck, br, space) { function markdown(tag,ck,br,space){
if (space == "before") { if(space=="before"){
tagE = tag; tagE=tag;
tag = " " + tag; tag=" "+tag;
} else { }else{
tagE = tag; tagE=tag;
} }
surroundMD(tag, tagE, ck, br); surroundMD(tag,tagE,ck,br);
$("#textarea").focus(); $("#textarea").focus();
} }
function surroundMD(tagS, tagE, ck, br) { function surroundMD(tagS,tagE,ck,br) {
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();
if (!localStorage.getItem("md_" + acct_id)) { if(!localStorage.getItem("md_"+acct_id)){
return false; return false;
} }
var target = document.getElementById("textarea"); var target = document.getElementById("textarea");
var pos = getAreaRange(target); var pos = getAreaRange(target);
var val = target.value; var val = target.value;
var range = val.slice(pos.start, pos.end); var range = val.slice(pos.start, pos.end);
var beforeNode = val.slice(0, pos.start); var beforeNode = val.slice(0, pos.start);
var afterNode = val.slice(pos.end); var afterNode = val.slice(pos.end);
var insertNode; var insertNode;
if (br == "yes") { if(br=="yes"){
var br = "\n"; var br="\n";
} else { }else{
var br = ""; var br="";
} }
if ((range || pos.start != pos.end) && ck == "yes") { if ((range || pos.start != pos.end )&& ck=="yes") {
insertNode = tagS + range + tagE; insertNode = tagS + range + tagE ;
target.value = beforeNode + insertNode + br + afterNode; target.value = beforeNode + insertNode + br + afterNode;
} }
else if (pos.start == pos.end || ck == "no") { else if (pos.start == pos.end || ck=="no") {
insertNode = tagS + range; insertNode = tagS + range;
target.value = beforeNode + insertNode + br + afterNode; target.value = beforeNode + insertNode + br + afterNode;
} }
} }
//テキストボックスの前後チェック //テキストボックスの前後チェック
function getAreaRange(obj) { function getAreaRange(obj) {
var pos = new Object(); var pos = new Object();
if (window.getSelection()) { if(window.getSelection()) {
pos.start = obj.selectionStart; pos.start = obj.selectionStart;
pos.end = obj.selectionEnd; pos.end = obj.selectionEnd;
} }
return pos; return pos;
} }
//Markdownのリンク挿入 //Markdownのリンク挿入
function markdownLink() { function markdownLink(){
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();
if (!localStorage.getItem("md_" + acct_id)) { if(!localStorage.getItem("md_"+acct_id)){
return false; return false;
} }
var linkIns = "[" + $("#linkt").val() + "]" + "(" + $("#link2").val() + ")"; var linkIns="["+$("#linkt").val()+"]"+"("+$("#link2").val()+")";
if (linkIns != "[]()") { if(linkIns!="[]()"){
$("#textarea").val($("#textarea").val() + linkIns); $("#textarea").val($("#textarea").val()+linkIns);
$("#linkt").val(""); $("#linkt").val("");
$("#link2").val(""); $("#link2").val("");
$("#textarea").focus(); $("#textarea").focus();
} }
} }
//Markdownのimg挿入 //Markdownのimg挿入
function markdownImage() { function markdownImage(){
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();
if (!localStorage.getItem("md_" + acct_id)) { if(!localStorage.getItem("md_"+acct_id)){
return false; return false;
} }
var imgIns = "![" + $("#image").val() + "]" + "(" + $("#image2").val() + ")"; var imgIns="!["+$("#image").val()+"]"+"("+$("#image2").val()+")";
if (imgIns != "![]()") { if(imgIns!="![]()"){
$("#textarea").val($("#textarea").val() + imgIns); $("#textarea").val($("#textarea").val()+imgIns);
$("#image").val(""); $("#image").val("");
$("#image2").val(""); $("#image2").val("");
$("#textarea").focus(); $("#textarea").focus();
} }
} }
//文字数をチェック(hタグ用) //文字数をチェック(hタグ用)
function str_count(all, part) { function str_count(all, part) {
return (all.match(new RegExp(part, "g")) || []).length; return (all.match(new RegExp(part, "g")) || []).length;
} }
//プレビュー //プレビュー
function preview() { function preview(){
$("#preview-field").show(); $("#preview-field").show();
$("#toot-field").hide(); $("#toot-field").hide();
$("#preview-btn").hide(); $("#preview-btn").hide();
var bb = escape_html($("#textarea").val()); var bb=escape_html($("#textarea").val());
//quote //quote
var bb = bb.replace(/>(.+)$/g, '<blockquote>$1<\/blockquote>'); var bb=bb.replace(/>(.+)$/g,'<blockquote>$1<\/blockquote>');
//spin //spin
var bb = bb.replace(/\[spin\](.+)\[\/spin\]/g, '<span class="fa fa-spin">$1<\/span>'); var bb=bb.replace(/\[spin\](.+)\[\/spin\]/g,'<span class="fa fa-spin">$1<\/span>');
//pulse //pulse
var bb = bb.replace(/\[pulse\](.+)\[\/pulse\]/g, '<span class="bbcode-pulse-loading">$1<\/span>'); var bb=bb.replace(/\[pulse\](.+)\[\/pulse\]/g,'<span class="bbcode-pulse-loading">$1<\/span>');
//large //large
var bb = bb.replace(/\[large=([0-9]{1,2})x\](.+)\[\/large\]/g, '<span class="fa fa-$1x">$2<\/span>'); var bb=bb.replace(/\[large=([0-9]{1,2})x\](.+)\[\/large\]/g,'<span class="fa fa-$1x">$2<\/span>');
//vertical //vertical
var bb = bb.replace(/\[flip=vertical\](.+)\[\/flip\]/g, '<span class="fa fa-flip-vertical">$1<\/span>'); var bb=bb.replace(/\[flip=vertical\](.+)\[\/flip\]/g,'<span class="fa fa-flip-vertical">$1<\/span>');
//horizontal //horizontal
var bb = bb.replace(/\[flip=horizontal\](.+)\[\/flip\]/g, '<span class="fa fa-flip-horizontal">$1<\/span>'); var bb=bb.replace(/\[flip=horizontal\](.+)\[\/flip\]/g,'<span class="fa fa-flip-horizontal">$1<\/span>');
//b //b
var bb = bb.replace(/\[b\](.+)\[\/b\]/g, '<b>$1<\/b>'); var bb=bb.replace(/\[b\](.+)\[\/b\]/g,'<b>$1<\/b>');
//i //i
var bb = bb.replace(/\[i\](.+)\[\/i\]/g, '<i>$1<\/i>'); var bb=bb.replace(/\[i\](.+)\[\/i\]/g,'<i>$1<\/i>');
//u //u
var bb = bb.replace(/\[u\](.+)\[\/u\]/g, '<u>$1<\/u>'); var bb=bb.replace(/\[u\](.+)\[\/u\]/g,'<u>$1<\/u>');
//s //s
var bb = bb.replace(/\[s\](.+)\[\/s\]/g, '<s>$1<\/s>'); var bb=bb.replace(/\[s\](.+)\[\/s\]/g,'<s>$1<\/s>');
//size //size
var bb = bb.replace(/\[size=([0-9]{1,2})\](.+)\[\/size\]/g, '<span style="font-size:$1px">$2<\/span>'); var bb=bb.replace(/\[size=([0-9]{1,2})\](.+)\[\/size\]/g,'<span style="font-size:$1px">$2<\/span>');
//colorhex //colorhex
var bb = bb.replace(/\[colorhex=([A-Fa-f0-9]+)\](.+)\[\/colorhex\]/g, '<span style="color:#$1">$2<\/span>'); var bb=bb.replace(/\[colorhex=([A-Fa-f0-9]+)\](.+)\[\/colorhex\]/g,'<span style="color:#$1">$2<\/span>');
//code //code
var bb = bb.replace(/`(.+)`/g, '<code>$1<\/code>'); var bb=bb.replace(/`(.+)`/g,'<code>$1<\/code>');
//head //head
var m; var m;
m = bb.match(/^#{1,6}(.+)$/gm); m=bb.match(/^#{1,6}(.+)$/gm);
if (m) { if(m){
for (let i = 0; i < m.length; i++) { for(let i = 0; i < m.length; i++) {
var t = m[i].match(/^#{1,6}(.+)$/); var t=m[i].match(/^#{1,6}(.+)$/);
var indexct = '<h' + str_count(m[i], "#") + '>' + t[1] + '</h' + str_count(m[i], "#") + '>'; var indexct='<h'+str_count(m[i],"#")+'>'+t[1]+'</h'+str_count(m[i],"#")+'>';
var bb = bb.replace(new RegExp(m[i], ""), indexct); var bb=bb.replace(new RegExp(m[i], ""),indexct);
} }
} }
//list(ul) //list(ul)
var li; var li;
li = bb.match(/^\- (.+)$/gm); li=bb.match(/^\- (.+)$/gm);
if (li) { if(li){
for (let l = 0; l < li.length; l++) { for(let l = 0; l < li.length; l++) {
var u = li[l].match(/^\- (.+)$/); var u=li[l].match(/^\- (.+)$/);
var listUl = '<li>' + u[1] + '</li>'; var listUl='<li>'+u[1]+'</li>';
if (l == 0) { if(l == 0){
listUl = '<ul>' + listUl; listUl='<ul>'+listUl;
}
if (l == li.length - 1) {
listUl = listUl + '</ul>';
}
var bb = bb.replace(new RegExp(li[l], ""), listUl);
} }
if(l==li.length-1){
listUl=listUl+'</ul>';
}
var bb=bb.replace(new RegExp(li[l], ""),listUl);
}
} }
//list(ol) //list(ol)
var li; var li;
li = bb.match(/^1\. (.+)$/gm); li=bb.match(/^1\. (.+)$/gm);
if (li) { if(li){
for (let l = 0; l < li.length; l++) { for(let l = 0; l < li.length; l++) {
var u = li[l].match(/^1\. (.+)$/); var u=li[l].match(/^1\. (.+)$/);
var listUl = '<li>' + u[1] + '</li>'; var listUl='<li>'+u[1]+'</li>';
if (l === 0) { if(l === 0){
listUl = '<ol>' + listUl; listUl='<ol>'+listUl;
}
if (l === li.length - 1) {
listUl = listUl + '</ol>';
}
var bb = bb.replace(new RegExp(li[l], ""), listUl);
} }
if(l===li.length-1){
listUl=listUl+'</ol>';
}
var bb=bb.replace(new RegExp(li[l], ""),listUl);
}
} }
//img //img
var bb = bb.replace(/!\[(.+)\]\((https:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g, '<img src="$2" text="$1" style="width:100%">'); var bb=bb.replace(/!\[(.+)\]\((https:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g,'<img src="$2" text="$1" style="width:100%">');
//link //link
var bb = bb.replace(/\[(.+)\]\((https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g, '<a href="$2" target="_blank">$1<\/a>'); var bb=bb.replace(/\[(.+)\]\((https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g,'<a href="$2" target="_blank">$1<\/a>');
bb = nl2br(bb); bb=nl2br(bb);
bb = bb.replace(new RegExp("</li><br />", "g"), ""); bb=bb.replace(new RegExp("</li><br />", "g"),"");
$("#md-preview").html(bb); $("#md-preview").html(bb);
} }
//Editで戻る //Editで戻る
function previewEdit() { function previewEdit(){
$("#preview-field").hide(); $("#preview-field").hide();
$("#toot-field").show(); $("#toot-field").show();
$("#preview-btn").show(); $("#preview-btn").show();
$("#md-preview").html(""); $("#md-preview").html("");
} }

View File

@@ -10,16 +10,11 @@ function emojiToggle(reaction) {
if (!selin) { if (!selin) {
selin = 0; selin = 0;
} }
localStorage.setItem("cursor", selin);
if ($("#emoji").hasClass("hide")) { if ($("#emoji").hasClass("hide")) {
$("#emoji").removeClass("hide") $("#emoji").removeClass("hide")
$("#right-side").show() $("#right-side").show()
$("#right-side").css("width", "300px")
$("#left-side").css("width","calc(100% - 300px)")
var width = localStorage.getItem("postbox-width").replace("px", "") * 1 + 300;
if (!width) {
width = 600
}
$("#post-box").css("width", width + "px")
$("#suggest").html(""); $("#suggest").html("");
if (!localStorage.getItem("emoji_" + acct_id)) { if (!localStorage.getItem("emoji_" + acct_id)) {
var html = var html =
@@ -30,16 +25,9 @@ function emojiToggle(reaction) {
} }
} else { } else {
$("#poll").addClass("hide") $("#poll").addClass("hide")
$("#right-side").hide()
$("#right-side").css("width", "300px")
$("#emoji").addClass("hide") $("#emoji").addClass("hide")
$("#suggest").html(""); $("#suggest").html("");
$("#left-side").css("width","100%") $("#right-side").hide()
var width = localStorage.getItem("postbox-width").replace("px", "") * 1;
if (!width) {
width = 300
}
$("#post-box").css("width", width + "px")
} }
@@ -185,31 +173,36 @@ function emojiList(target, reaction) {
//絵文字など様々なものをテキストボックスに挿入 //絵文字など様々なものをテキストボックスに挿入
function emojiInsert(code, del) { function emojiInsert(code, del) {
var now = $("#textarea").val(); var now = $("#textarea").val();
var selin = $("#textarea").prop('selectionStart'); var selin = localStorage.getItem("cursor");
if (localStorage.getItem("emoji-zero-width") == "yes") { if (localStorage.getItem("emoji-zero-width") == "yes") {
var blank = ""; var brank = "";
} else { } else {
var blank = " "; var brank = " ";
} }
var before = now.substr(0, selin); console.log(selin);
if (before.slice(-1) != " ") { var now = $("#textarea").val();
before = before + blank if (selin > 0) {
var before = now.substr(0, selin);
var after = now.substr(selin, now.length);
newt = before + brank + code + brank + after;
} else {
newt = code + brank;
} }
var after = now.substr(selin, now.length);
if (after.slice(-1) != " ") {
after = blank + after
}
newt = before + code + after;
if (!del) { if (!del) {
$("#textarea").val(newt); $("#textarea").val(newt);
//emoji(); //emoji();
} else { } else {
var regExp = new RegExp(del.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g"); var regExp = new RegExp(del, "g");
var now = now.replace(regExp, ""); var now = now.replace(regExp, "");
$("#textarea").val(now + blank + code); $("#textarea").val(now + brank + code);
} }
$("#textarea").focus(); $("#textarea").focus();
var selin = $("#textarea").prop('selectionStart');
if (!selin) {
selin = 0;
}
localStorage.setItem("cursor", selin);
} }
//改行挿入 //改行挿入
function brInsert(code) { function brInsert(code) {

View File

@@ -2,26 +2,26 @@
var obj = $("body"); var obj = $("body");
var system; var system;
//ドラッグスタート //ドラッグスタート
obj.on('dragstart', function (e) { obj.on('dragstart', function(e) {
system = "locked" system = "locked"
}); });
//何もなくファイルが通過 //何もなくファイルが通過
obj.on('dragend', function (e) { obj.on('dragend', function(e) {
system = ""; system = "";
}); });
//ドラッグファイルが画面上に //ドラッグファイルが画面上に
obj.on('dragenter', function (e) { obj.on('dragenter', function(e) {
if (system != "locked") { if (system != "locked") {
$("#drag").css('display', 'flex'); $("#drag").css('display', 'flex');
} }
}); });
$("body").on('dragover', function (e) { $("body").on('dragover', function(e) {
e.stopPropagation(); e.stopPropagation();
e.preventDefault(); e.preventDefault();
}); });
//ドロップした //ドロップした
$("body").on('drop', function (e) { $("body").on('drop', function(e) {
if (system != "locked") { if (system != "locked") {
$("#drag").css('display', 'none'); $("#drag").css('display', 'none');
e.preventDefault(); e.preventDefault();
@@ -30,37 +30,44 @@ $("body").on('drop', function (e) {
} }
}); });
//何もなくファイルが通過 //何もなくファイルが通過
$("#drag").on('dragleave', function (e) { $("#drag").on('dragleave', function(e) {
$("#drag").css('display', 'none'); $("#drag").css('display', 'none');
}); });
//複数アップ //複数アップ
function pimg(files) { function pimg(files) {
console.table(files); console.log(files);
for (i = 0; i < files.length; i++) { for (i = 0; i < files.length; i++) {
var dot = files[i].path.match(/\.(.+)$/)[1]; var dot=files[i].path.match(/\.(.+)$/)[1];
if (dot == "bmp" || dot == "BMP") { if(dot=="bmp" || dot=="BMP"){
postMessage(["bmpImage", [files[i].path, i]], "*") var electron = require("electron");
todo(lang.lang_progress); var ipc = electron.ipcRenderer;
ipc.send('bmp-image', [files[i].path,i]);
todo(lang.lang_progress);
} else { }else{
handleFileUpload(files[i], obj, i); handleFileUpload(files[i], obj,i);
} }
} }
} }
var electron = require("electron");
var ipc = electron.ipcRenderer;
ipc.on('bmp-img-comp', function (event, b64) {
media(b64[0],"image/png",b64[1]);
});
//ドラッグ・アンド・ドロップを終了 //ドラッグ・アンド・ドロップを終了
function closedrop() { function closedrop() {
$("#drag").css('display', 'none'); $("#drag").css('display', 'none');
} }
//ファイル選択 //ファイル選択
function fileselect() { function fileselect() {
postMessage(["sendSinmpleIpc", "file-select"], "*") ipc.send('file-select', "");
} }
//ファイル読み込み //ファイル読み込み
function handleFileUpload(files, obj, no) { function handleFileUpload(files, obj, no) {
var fr = new FileReader(); var fr = new FileReader();
fr.onload = function (evt) { fr.onload = function(evt) {
var b64 = evt.target.result; var b64 = evt.target.result;
$('#b64-box').val(b64); $('#b64-box').val(b64);
var ret = media(b64, files["type"], no) var ret = media(b64, files["type"], no)
@@ -75,26 +82,27 @@ function media(b64, type, no) {
var c = "abcdefghijklmnopqrstuvwxyz0123456789"; var c = "abcdefghijklmnopqrstuvwxyz0123456789";
var cl = c.length; var cl = c.length;
var r = ""; var r = "";
for (var i = 0; i < l; i++) { for(var i=0; i<l; i++){
r += c[Math.floor(Math.random() * cl)]; r += c[Math.floor(Math.random()*cl)];
} }
if ($("#media").val()) { if ($("#media").val()) {
$("#media").val($("#media").val() + ',' + "tmp_" + r); $("#media").val($("#media").val() + ',' + "tmp_"+r);
} else { } else {
$("#media").val("tmp_" + r); $("#media").val("tmp_"+r);
} }
$(".toot-btn-group").prop("disabled", true); $(".toot-btn-group").prop("disabled", true);
$("#post-acct-sel").prop("disabled", true); $("#post-acct-sel").prop("disabled", true);
localStorage.setItem("image", "busy"); localStorage.setItem("image","busy");
todo("Image Upload..."); todo("Image Upload...");
var media = toBlob(b64, type); var media = toBlob(b64, type);
console.log(media);
var fd = new FormData(); var fd = new FormData();
fd.append('file', media); fd.append('file', media);
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 at = localStorage.getItem("acct_" + acct_id + "_at"); var at = localStorage.getItem("acct_"+ acct_id + "_at");
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
if (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/drive/files/create"; var start = "https://" + domain + "/api/drive/files/create";
httpreq.open('POST', start, true); httpreq.open('POST', start, true);
httpreq.upload.addEventListener("progress", progshow, false); httpreq.upload.addEventListener("progress", progshow, false);
@@ -104,12 +112,12 @@ function media(b64, type, no) {
} else { } else {
var nsfw = false; var nsfw = false;
} }
var previewer = "url" var previewer="url"
fd.append('i', at); fd.append('i', at);
//fd.append('isSensitive', nsfw); //fd.append('isSensitive', nsfw);
httpreq.send(fd); httpreq.send(fd);
} else { }else{
var previewer = "preview_url" var previewer="preview_url"
var start = "https://" + domain + "/api/v1/media"; var start = "https://" + domain + "/api/v1/media";
httpreq.open('POST', start, true); httpreq.open('POST', start, true);
httpreq.upload.addEventListener("progress", progshow, false); httpreq.upload.addEventListener("progress", progshow, false);
@@ -117,22 +125,13 @@ function media(b64, type, no) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
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 (!json.id) { console.log(json);
todc();
$("#imgup").text("");
$(".toot-btn-group").prop("disabled", false);
$("#post-acct-sel").prop("disabled", false);
$('select').formSelect();
$("#imgsel").show();
M.toast({ html: lang.lang_postimg_failupload, displayLength: 5000 })
return false
}
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"] + '" onclick="deleteImage(\'' + json["id"] + '\')" title="' + lang.lang_postimg_delete + '">'; var html = '<img src="' + json[previewer] + '" class="preview-img pointer" data-media="'+json["id"]+'" onclick="deleteImage(\''+json["id"]+'\')" title="'+lang.lang_postimg_delete+'">';
$('#preview').append(html); $('#preview').append(html);
} else { } else {
$('#preview').append(lang.lang_postimg_previewdis); $('#preview').append(lang.lang_postimg_previewdis);
@@ -141,8 +140,8 @@ function media(b64, type, no) {
var img = "no-act"; var img = "no-act";
} }
if (img != "inline") { if (img != "inline") {
var mediav = $("#media").val(); var mediav=$("#media").val();
var regExp = new RegExp("tmp_" + r, "g"); var regExp = new RegExp("tmp_"+r, "g");
mediav = mediav.replace(regExp, json["id"]); mediav = mediav.replace(regExp, json["id"]);
$("#media").val(mediav); $("#media").val(mediav);
@@ -152,9 +151,9 @@ function media(b64, type, no) {
} }
todc(); todc();
$(".toot-btn-group").prop("disabled", false); $(".toot-btn-group").prop("disabled", false);
$('select').formSelect(); $('select').material_select();
$("#mec").text(lang.lang_there); $("#mec").text(lang.lang_there);
M.toast({ html: lang.lang_postimg_aftupload, displayLength: 1000 }) Materialize.toast(lang.lang_postimg_aftupload, 1000);
$("#imgup").text(""); $("#imgup").text("");
$("#imgsel").show(); $("#imgsel").show();
localStorage.removeItem("image"); localStorage.removeItem("image");
@@ -181,61 +180,61 @@ function toBlob(base64, type) {
return blob; return blob;
} }
//画像を貼り付けたら… //画像を貼り付けたら…
var element = document.querySelector("#textarea"); var element = document.querySelector("#textarea");
element.addEventListener("paste", function (e) { element.addEventListener("paste", function(e){
if (!e.clipboardData || !e.clipboardData.items) { console.log(e)
return true; if (!e.clipboardData || !e.clipboardData.items) {
} return true;
// DataTransferItemList に画像が含まれいない場合は終了する }
// DataTransferItemList に画像が含まれいない場合は終了する
var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith('image')); var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith('image'));
if (imageItems.length == 0) { if (imageItems.length == 0) {
console.warn("it is not image") console.log("not image")
return true; return true;
} }
// ファイルとして得る // ファイルとして得る
// DataTransferItem の kind は file なので getAsString ではなく getAsFile を呼ぶ // DataTransferItem の kind は file なので getAsString ではなく getAsFile を呼ぶ
var imageFile = imageItems[0].getAsFile(); var imageFile = imageItems[0].getAsFile();
var imageType = imageItems[0].type; var imageType = imageItems[0].type;
// FileReaderで読み込む // FileReaderで読み込む
var fr = new FileReader(); var fr = new FileReader();
fr.onload = function (e) { fr.onload = function(e) {
// onload内ではe.target.resultにbase64が入っているのであとは煮るなり焼くなり // onload内ではe.target.resultにbase64が入っているのであとは煮るなり焼くなり
var base64 = e.target.result; var base64 = e.target.result;
var mediav = $("#media").val(); var mediav = $("#media").val();
if (mediav) { if(mediav){
var i = mediav.split(",").length; var i=mediav.split(",").length;
} }
// DataTransferItem の type に mime tipes があるのでそれを使う // DataTransferItem の type に mime tipes があるのでそれを使う
media(base64, imageType, i) media(base64, imageType, i)
}; };
fr.readAsDataURL(imageFile); fr.readAsDataURL(imageFile);
// 画像以外がペーストされたときのために、元に戻しておく // 画像以外がペーストされたときのために、元に戻しておく
}); });
function deleteImage(key) { //Adobeフォトエディタ
Swal.fire({ function adobe(){
title: lang.lang_postimg_delete, var agree = localStorage.getItem("adobeagree");
type: 'warning', ipc.send('adobe', agree);
showCancelButton: true, }
confirmButtonColor: '#3085d6', ipc.on('adobeagree', function (event, arg) {
cancelButtonColor: '#d33', localStorage.setItem("adobeagree",arg);
confirmButtonText: lang.lang_yesno, });
cancelButtonText: lang.lang_no function deleteImage(key){
}).then((result) => { console.log(key);
if (result.value) { if(!confirm(lang.lang_postimg_delete)){
var media = $("#media").val(); return false;
var arr = media.split(","); }
for (var i = 0; i < media.length; i++) { var media = $("#media").val();
if (arr[i] == key) { var arr=media.split(",");
arr.splice(i, 1); for(var i=0;i<media.length;i++){
break; if(arr[i]==key){
} arr.splice(i, 1);
} break;
$("#media").val(arr.join(",")); }
$('#preview [data-media=' + key + ']').remove(); }
} $("#media").val(arr.join(","));
}) $('#preview [data-media='+key+']').remove();
} }

View File

@@ -1,241 +1,243 @@
//Renpost //Renpost
function renote(id, acct_id, remote) { function renote(id, acct_id, remote) {
if ($("#pub_" + id).hasClass("rted")) { if ($("#pub_" + id).hasClass("rted")) {
return false; return false;
} }
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/notes/create"; var start = "https://" + domain + "/api/notes/create";
if (localStorage.getItem("mode_" + domain) != "misskey") { if(localStorage.getItem("mode_" + domain)!="misskey"){
return false; return false;
} }
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');
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(JSON.stringify({ i: at, renoteId: id })); httpreq.send(JSON.stringify({i:at,renoteId:id}));
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
console.log(["Success: renote", json]); console.log(json);
$("[toot-id=" + id + "]").addClass("rted"); $("[toot-id=" + id + "]").addClass("rted");
$(".rt_" + id).toggleClass("teal-text"); $(".rt_"+id).toggleClass("teal-text");
} }
} }
} }
//Renote //Renote
function renoteqt(id, acct_id) { function renoteqt(id, acct_id) {
localStorage.setItem("nohide", true); localStorage.setItem("nohide",true);
show(); show();
$("#reply").val("renote_" + id); $("#reply").val("renote_"+id);
$("#rec").text("Renote"); $("#rec").text("Renote");
$("#post-acct-sel").val(acct_id); $("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true); $("#post-acct-sel").prop("disabled", true);
$('select').formSelect(); $('select').material_select();
$("#textarea").attr("placeholder", lang.lang_misskeyparse_qt); $("#textarea").attr("placeholder",lang.lang_misskeyparse_qt);
$("#textarea").focus(); $("#textarea").focus();
} }
//Reply //Reply
function misskeyreply(id, acct_id) { function misskeyreply(id, acct_id) {
localStorage.setItem("nohide", true); localStorage.setItem("nohide",true);
show(); show();
$("#reply").val(id); $("#reply").val(id);
$("#rec").text("Renote"); $("#rec").text("Renote");
$("#post-acct-sel").val(acct_id); $("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true); $("#post-acct-sel").prop("disabled", true);
$('select').formSelect(); $('select').material_select();
$("#textarea").attr("placeholder", lang.lang_misskeyparse_qt); $("#textarea").attr("placeholder",lang.lang_misskeyparse_qt);
$("#textarea").focus(); $("#textarea").focus();
} }
//Reaction //Reaction
function reactiontoggle(id, acct_id, tlid) { function reactiontoggle(id,acct_id,tlid){
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/notes/show"; var start = "https://" + domain + "/api/notes/show";
if (localStorage.getItem("mode_" + domain) != "misskey") { if(localStorage.getItem("mode_" + domain)!="misskey"){
return false; return false;
} }
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');
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(JSON.stringify({ i: at, noteId: id })); httpreq.send(JSON.stringify({i:at,noteId:id}));
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
console.log(["Success: reaction", json]); console.log(json);
if (json.reactions) { if(json.reactionCounts){
var reactions = ["like", "love", "laugh", "hmm", "surprise", "congrats", "angry", "confused", "pudding", "rip"]; var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding","star"];
for (var i = 0; i < reactions.length; i++) { for(var i=0;i<reactions.length;i++){
if (json.reactions[reactions[i]]) { if(json.reactionCounts[reactions[i]]){
$("#pub_" + id + " .re-" + reactions[i] + "ct").text(json.reactions[reactions[i]]) $("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
$("#pub_" + id + " .re-" + reactions[i]).removeClass("hide") $("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
} else { }else{
$("#pub_" + id + " .re-" + reactions[i] + "ct").text(0) $("#pub_" + id +" .re-"+reactions[i]+"ct").text(0)
if ($("#pub_" + id + " .reactions").hasClass("fullreact")) { if($("#pub_" + id +" .reactions").hasClass("fullreact")){
$("#pub_" + id + " .re-" + reactions[i]).addClass("hide") $("#pub_" + id +" .re-"+reactions[i]).addClass("hide")
} else { }else{
$("#pub_" + id + " .re-" + reactions[i]).removeClass("hide") $("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
} }
$("#pub_" + id + " .re-" + reactions[i] + "ct").text(json.reactions[reactions[i]]) $("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
} }
} }
$("#pub_" + id + " .reactions").removeClass("hide"); $("#pub_" + id +" .reactions").removeClass("hide");
$("#pub_" + id + " .reactions").toggleClass("fullreact") $("#pub_" + id +" .reactions").toggleClass("fullreact")
} else { }else{
if ($("#pub_" + id + " .reactions").hasClass("fullreact")) { if($("#pub_" + id +" .reactions").hasClass("fullreact")){
$("#pub_" + id + " .reactions").addClass("hide") $("#pub_" + id +" .reactions").addClass("hide")
$("#pub_" + id + " .reactions").removeClass("fullreact") $("#pub_" + id +" .reactions").removeClass("fullreact")
} else { }else{
$("#pub_" + id + " .reactions").removeClass("hide"); $("#pub_" + id +" .reactions").removeClass("hide");
$("#pub_" + id + " .reaction").removeClass("hide"); $("#pub_" + id +" .reaction").removeClass("hide");
$("#pub_" + id + " .reactions").addClass("fullreact"); $("#pub_" + id +" .reactions").addClass("fullreact");
} }
} }
} }
} }
$("#pub_" + id + " .freeReact").toggleClass("hide"); $("#pub_" + id +" .freeReact").toggleClass("hide");
} }
//reactioncustom //reactioncustom
function reactioncustom(acct_id, id) { function reactioncustom(acct_id,id){
$("#reply").val(id); $("#reply").val(id);
$("#unreact").hide(); $("#unreact").hide();
$("#addreact").removeClass("hide"); $("#addreact").removeClass("hide");
$("#post-acct-sel").val(acct_id); $("#post-acct-sel").val(acct_id);
$('select').formSelect(); $('select').material_select();
localStorage.setItem("nohide", true); localStorage.setItem("nohide",true);
show() show()
emojiToggle(true) emojiToggle(true)
$("#left-side").hide(); $("#left-side").hide();
$("#default-emoji").hide(); $("#default-emoji").hide();
} }
function reactRefresh(acct_id, id) { function reactRefresh(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/notes/show"; var start = "https://" + domain + "/api/notes/show";
var req = {}; var req={};
req.i = at; req.i=at;
req.noteId = id; req.noteId=id;
var i = { var i={
method: "POST", method: "POST",
body: JSON.stringify(req), body: JSON.stringify(req),
} }
console.log(req)
fetch(start, i, fetch(start, i,
).then(function (response) { ).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
if (!json) { if(!json){
return false; return false;
} }
var poll = ""; var poll="";
if (json.error) { if(json.error){
$("[toot-id=" + id + "]").hide(); $("[toot-id=" + id + "]").hide();
$("[toot-id=" + id + "]").remove(); $("[toot-id=" + id + "]").remove();
} else { }else{
reactRefreshCore(json) reactRefreshCore(json)
} }
}); });
} }
function reactRefreshCore(json) { function reactRefreshCore(json){
var id = json.id; var id=json.id;
if (json.reactions) { if(json.reactionCounts){
$("#pub_" + id + " .reactions").removeClass("hide") $("#pub_" + id +" .reactions").removeClass("hide")
var regExp = new RegExp(":", "g"); var regExp = new RegExp( ":", "g" ) ;
Object.keys(json.reactions).forEach(function (keye) { Object.keys(json.reactionCounts).forEach(function(keye) {
keyeClass = keye.replace(regExp, ''); keyeClass=keye.replace(regExp,'');
if (json.reactions[keye]) { if(json.reactionCounts[keye]){
$("#pub_" + id + " .re-" + keyeClass + "ct").text(json.reactions[keye]) console.log(json.reactionCounts[keye])
$("#pub_" + id + " .re-" + keyeClass).removeClass("hide") $("#pub_" + id +" .re-"+keyeClass+"ct").text(json.reactionCounts[keye])
} else { $("#pub_" + id +" .re-"+keyeClass).removeClass("hide")
$("#pub_" + id + " .re-" + keyeClass + "ct").text(0) }else{
if ($("#pub_" + id + " .reactions").hasClass("fullreact")) { $("#pub_" + id +" .re-"+keyeClass+"ct").text(0)
$("#pub_" + id + " .re-" + keyeClass).addClass("hide") if($("#pub_" + id +" .reactions").hasClass("fullreact")){
$("#pub_" + id +" .re-"+keyeClass).addClass("hide")
} }
$("#pub_" + id + " .re-" + keyeClass + "ct").text(json.reactions[keye]) $("#pub_" + id +" .re-"+keyeClass+"ct").text(json.reactionCounts[keye])
} }
}); });
} }
} }
function emojiReaction(emoji) { function emojiReaction(emoji){
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();
var id = $("#reply").val(); var id = $("#reply").val();
reaction(emoji, id, acct_id, null) reaction(emoji,id,acct_id,null)
clear(); clear();
hide(); hide();
} }
function reaction(mode, id, acct_id, tlid) { function reaction(mode,id,acct_id,tlid){
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 ($(".fav_" + id).hasClass("yellow-text")) { if($(".fav_"+id).hasClass("yellow-text")){
var flag = "delete"; var flag="delete";
} else { }else{
var flag = "create"; var flag="create";
} }
var start = "https://" + domain + "/api/notes/reactions/" + flag; var start = "https://" + domain + "/api/notes/reactions/"+flag;
if (localStorage.getItem("mode_" + domain) != "misskey") { if(localStorage.getItem("mode_" + domain)!="misskey"){
return false; return false;
} }
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');
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(JSON.stringify({ i: at, noteId: id, reaction: mode })); httpreq.send(JSON.stringify({i:at,noteId:id,reaction:mode}));
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
$(".fav_" + id).toggleClass("yellow-text"); $(".fav_"+id).toggleClass("yellow-text");
} }
} }
} }
//Vote //Vote
function vote(acct_id, id, to) { function vote(acct_id,id,to){
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/notes/polls/vote"; var start = "https://" + domain + "/api/notes/polls/vote";
if (localStorage.getItem("mode_" + domain) != "misskey") { if(localStorage.getItem("mode_" + domain)!="misskey"){
return false; return false;
} }
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');
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(JSON.stringify({ i: at, noteId: id, choice: to })); httpreq.send(JSON.stringify({i:at,noteId:id,choice:to}));
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
voterefresh(acct_id, id) voterefresh(acct_id,id)
} }
} }
function voterefresh(acct_id, id) { function voterefresh(acct_id,id){
var httpreqd = new XMLHttpRequest(); var httpreqd = new XMLHttpRequest();
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/notes/show"; var start = "https://" + domain + "/api/notes/show";
httpreqd.open('POST', start, true); httpreqd.open('POST', start, true);
httpreqd.setRequestHeader('Content-Type', 'application/json'); httpreqd.setRequestHeader('Content-Type', 'application/json');
httpreqd.responseType = 'json'; httpreqd.responseType = 'json';
httpreqd.send(JSON.stringify({ i: at, noteId: id })); httpreqd.send(JSON.stringify({i:at,noteId:id}));
httpreqd.onreadystatechange = function () { httpreqd.onreadystatechange = function() {
if (httpreqd.readyState == 4) { if (httpreqd.readyState == 4) {
var json = httpreqd.response; var json = httpreqd.response;
if (!json) { if(!json){
return false; return false;
} }
var poll = ""; var poll="";
if (json.poll) { if(json.poll){
var choices = json.poll.choices; var choices=json.poll.choices;
Object.keys(choices).forEach(function (keyc) { Object.keys(choices).forEach(function(keyc) {
var choice = choices[keyc]; var choice = choices[keyc];
if (choice.isVoted) { if(choice.isVoted){
var myvote = twemoji.parse("✅"); var myvote=twemoji.parse("✅");
} else { }else{
var myvote = ""; var myvote="";
} }
poll = poll + '<div class="pointer vote" onclick="vote(\'' + acct_id + '\',\'' + json.id + '\',' + choice.id + ')">' + escapeHTML(choice.text) + '(' + choice.votes + '' + myvote + ')</div>'; poll=poll+'<div class="pointer vote" onclick="vote(\''+acct_id+'\',\''+json.id+'\','+choice.id+')">'+escapeHTML(choice.text)+'('+choice.votes+''+myvote+')</div>';
}); });
$(".vote_" + json.id).html(poll) $(".vote_"+json.id).html(poll)
} }
} }
} }
} }

View File

@@ -1,152 +1,177 @@
/*投稿系*/ /*投稿系*/
//投稿 //投稿
function sec() { function sec(){
var mode = localStorage.getItem("sec"); var mode=localStorage.getItem("sec");
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);
if (~domain.indexOf("kirishima.cloud") >= 0 && mode == "local") { if(~domain.indexOf("kirishima.cloud")>=0 && mode=="local"){
mode = "unlisted"; mode="unlisted";
} }
post(null, mode); post(null,mode);
} }
function post(mode, postvis) { function post(mode,postvis) {
if ($("#toot-post-btn").prop("disabled")) { if($("#toot-post-btn").prop("disabled")){
return false; return false;
} }
var str = $("#textarea").val(); var str = $("#textarea").val();
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();
localStorage.setItem("last-use", acct_id); localStorage.setItem("last-use", acct_id);
var domain = localStorage.getItem("domain_" + acct_id); var domain = localStorage.getItem("domain_" + acct_id);
if (!localStorage.getItem("cw_sentence")) { if(domain=="theboss.tech"){
var cw_sent = 500; if(~str.indexOf("#")){
} else { if(str.indexOf("#theboss_tech")=="-1"){
var cw_sent = localStorage.getItem("cw_sentence"); if(!confirm(lang.lang_post_tagTL)){
} return false;
if (!localStorage.getItem("cw_letters")) {
var cw_ltres = 7000;
} else {
var cw_ltres = localStorage.getItem("cw_letters");
}
if (domain != "kirishima.cloud") {
if (mode != "pass" && !$("#cw").hasClass("cw-avail") && (str.length > cw_sent || (str.split("\n").length - 1) > cw_ltres)) {
var plus = str.replace(/\n/g, "").slice(0, 10) + "...";
Swal.fire({
title: lang.lang_post_cwtitle,
text: lang.lang_post_cwtxt + plus,
type: 'info',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#3085d6',
confirmButtonText: lang.lang_post_btn2,
cancelButtonText: lang.lang_post_btn3,
showCloseButton: true,
focusConfirm: false,
}).then((result) => {
if (result.dismiss == "cancel") {
//btn3:sonomama
post("pass")
} else if (result.value) {
//btn2:auto-CW
$("#cw-text").show();
$("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail");
$("#cw-text").val(plus);
post("pass")
} }
}) }
return false;
} }
} }
if (localStorage.getItem("mode_" + domain) == "misskey") { if(domain=="dtp-mstdn.jp"){
if(~str.indexOf("#")){
if(str.indexOf("#dtp")=="-1"){
if(!confirm(lang.lang_post_tagTL)){
return false;
}
}
}
}
if(!localStorage.getItem("cw_sentence")){
var cw_sent=500;
}else{
var cw_sent=localStorage.getItem("cw_sentence");
}
if(!localStorage.getItem("cw_letters")){
var cw_ltres=500;
}else{
var cw_ltres=localStorage.getItem("cw_letters");
}
if(domain!="kirishima.cloud"){
if(mode!="pass" && !$("#cw").hasClass("cw-avail") && (str.length>cw_sent || (str.split("\n").length - 1)>cw_ltres)){
var electron = require("electron");
var remote=electron.remote;
var dialog=remote.dialog;
var plus=str.replace(/\n/g,"").slice(0,10)+"...";
const options = {
type: 'info',
title: lang.lang_post_cwtitle,
message: lang.lang_post_cwtxt+plus,
buttons: [lang.lang_post_btn1,lang.lang_post_btn2, lang.lang_post_btn3]
}
dialog.showMessageBox(options, function(arg) {
if(arg===1){
$("#cw-text").show();
$("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail");
$("#cw-text").val(plus);
post("pass");
}else if(arg===2){
post("pass");
}
})
return false;
}
}
if(localStorage.getItem("mode_" + domain)=="misskey"){
misskeyPost(); misskeyPost();
return; return;
} }
$(".toot-btn-group").prop("disabled", true); $(".toot-btn-group").prop("disabled", true);
todo("Posting"); todo("Posting");
var at = localStorage.getItem("acct_" + acct_id + "_at"); var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/statuses"; var start = "https://" + domain + "/api/v1/statuses";
var reply = $("#reply").val(); var reply = $("#reply").val();
if (str.indexOf(localStorage.getItem("stable")) == -1) { if(str.indexOf(localStorage.getItem("stable"))==-1){
str + " #" + localStorage.getItem("stable"); str+" #"+localStorage.getItem("stable");
} }
var toot = { var toot={
status: str status: str
} }
if (reply) { if(reply){
toot.in_reply_to_id = reply toot.in_reply_to_id=reply
} }
var media = $("#media").val(); var media = $("#media").val();
if (media) { if(media){
toot.media_ids = media.split(","); toot.media_ids=media.split(",");
} }
if ($("#nsfw").hasClass("nsfw-avail")) { if ($("#nsfw").hasClass("nsfw-avail")) {
var nsfw = "true"; var nsfw = "true";
toot.sensitive = nsfw; toot.sensitive=nsfw;
} else { } else {
var nsfw = "false"; var nsfw = "false";
} }
if (postvis) { if(postvis){
var vis = postvis; var vis = postvis;
} else { }else{
var vis = $("#vis").text(); var vis = $("#vis").text();
} }
if (vis != "inherit" && vis != "local") {
toot.visibility = vis; if(vis!="inherit" && vis!="local"){
} else if (vis == "local") { toot.visibility=vis;
toot.status = str + "👁️"; }else if(vis=="local"){
toot.status=str+"👁️";
} }
//ここに非公開・未収載タグについてwarn
if(domain!="kirishima.cloud" && domain!="imastodon.net"){
if(~str.indexOf("#")){
if(vis == "local" || vis=="unlisted" || vis=="direct" || vis=="private"){
if(!confirm(lang.lang_post_tagVis)){
return false;
}
}
}
}
if ($("#cw").hasClass("cw-avail")) { if ($("#cw").hasClass("cw-avail")) {
var spo = $("#cw-text").val(); var spo = $("#cw-text").val();
cw(); cw();
toot.spoiler_text = spo; toot.spoiler_text=spo;
} else { } else {
var spo = ""; var spo = "";
} }
if ($("#sch-box").hasClass("sch-avail")) { if ($("#sch-box").hasClass("sch-avail")) {
var scheduled = formattimeutc(new Date(Date.parse($("#sch-date").val()))) var scheduled=formattimeutc(new Date(Date.parse($("#sch-date").val())))
console.log("This toot will be posted at:" + scheduled) console.log(scheduled)
schedule(); schedule();
toot.scheduled_at = scheduled; toot.scheduled_at=scheduled;
} else { } else {
var scheduled = ""; var scheduled = "";
} }
if (!$("#poll").hasClass("hide")) { if ($("#poll-sel").val()=="mastodon-poll") {
var options = []; var options=[];
$(".mastodon-choice").map(function () { $(".mastodon-choice").map(function() {
var choice = $(this).val(); var choice=$(this).val();
if (choice != "") { if(choice!=""){
options.push(choice); options.push(choice);
} }
}); });
if ($("#poll-multiple:checked").val() == "1") { if($("#poll-multiple:checked").val()=="1"){
var mul = true; var mul=true;
} else { }else{
var mul = false; var mul=false;
} }
if ($("#poll-until:checked").val() == "1") { if($("#poll-until:checked").val()=="1"){
var htt = true; var htt=true;
} else { }else{
var htt = false; var htt=false;
} }
var exin = pollCalc(); var exin=pollCalc();
if (!exin) { if(!exin){
todc("Error: Poll expires_in param") todc("Error: Poll expires_in param")
} }
toot.poll = { toot.poll={
options: options, options: options,
expires_in: exin, expires_in: exin,
multiple: mul, multiple: mul,
hide_totals: htt hide_totals: htt
} }
} }
console.table(toot); console.log(toot);
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');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(JSON.stringify(toot)); httpreq.send(JSON.stringify(toot));
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
var box = localStorage.getItem("box"); var box = localStorage.getItem("box");
@@ -160,71 +185,71 @@ function post(mode, postvis) {
} }
} }
} }
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();
localStorage.setItem("last-use", acct_id); localStorage.setItem("last-use", acct_id);
var domain = localStorage.getItem("domain_" + acct_id); var domain = localStorage.getItem("domain_" + acct_id);
$(".toot-btn-group").prop("disabled", true); $(".toot-btn-group").prop("disabled", true);
todo("Posting"); todo("Posting");
var at = localStorage.getItem("acct_" + acct_id + "_at"); var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/notes/create"; var start = "https://" + domain + "/api/notes/create";
var reply = $("#reply").val(); var reply = $("#reply").val();
var toot = { var toot={
text: str text: str
} }
if (reply) { if(reply){
if (reply.indexOf("renote") !== -1) { if(reply.indexOf("renote")!== -1){
toot.renoteId = reply.replace("renote_", "") toot.renoteId=reply.replace("renote_","")
} else { }else{
toot.replyId = reply toot.replyId=reply
} }
} }
var media = $("#media").val(); var media = $("#media").val();
if (media) { if(media){
toot.mediaIds = media.split(","); toot.mediaIds=media.split(",");
} }
if ($("#nsfw").hasClass("nsfw-avail")) { if ($("#nsfw").hasClass("nsfw-avail")) {
var nsfw = "true"; var nsfw = "true";
toot.sensitive = nsfw; toot.sensitive=nsfw;
} else { } else {
var nsfw = "false"; var nsfw = "false";
} }
var vis = $("#vis").text(); var vis = $("#vis").text();
if (vis == "unlisted") { if(vis=="unlisted"){
vis = "home" vis=="home"
} else if (vis == "direct") { }else if(vis=="direct"){
vis = "specified"; vis=="specified";
toot.visibleUserIds = str.match(/@([a-zA-Z0-9_@.-]+)(\s|$)/g).join('').split("@"); toot.visibleUserIds=str.match(/@([a-zA-Z0-9_@.-]+)(\s|$)/g).join('').split("@");
} }
if (vis != "inherit") { if(vis!="inherit"){
toot.visibility = vis; toot.visibility=vis;
} }
if ($("#cw").hasClass("cw-avail")) { if ($("#cw").hasClass("cw-avail")) {
var spo = $("#cw-text").val(); var spo = $("#cw-text").val();
cw(); cw();
toot.cw = spo; toot.cw=spo;
} else { } else {
var spo = ""; var spo = "";
} }
toot.i = at; toot.i=at;
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');
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(JSON.stringify(toot)); httpreq.send(JSON.stringify(toot));
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
if (str.indexOf(localStorage.getItem("stable")) == -1) { if(str.indexOf(localStorage.getItem("stable"))==-1){
localStorage.removeItem("stable") localStorage.removeItem("stable")
} }
var json = httpreq.response; var json = httpreq.response;
console.log(["Success: toot", json]); console.log(json);
var box = localStorage.getItem("box"); var box = localStorage.getItem("box");
if (box == "yes") { if (box == "yes") {
hide(); hide();
} else if (box == "hide") { }else if (box == "hide"){
$("body").addClass("mini-post"); $("body").addClass("mini-post");
$(".mini-btn").text("expand_less"); $(".mini-btn").text("expand_less");
} }
@@ -238,8 +263,8 @@ function misskeyPost() {
//クリア(Shift+C) //クリア(Shift+C)
function clear() { function clear() {
$("#textarea").val(""); $("#textarea").val("");
if (localStorage.getItem("stable")) { if(localStorage.getItem("stable")){
$("#textarea").val("#" + localStorage.getItem("stable") + " ") $("#textarea").val("#"+localStorage.getItem("stable")+" ")
} }
$("#textarea").attr("placeholder", lang.lang_toot); $("#textarea").attr("placeholder", lang.lang_toot);
$("#reply").val(""); $("#reply").val("");
@@ -255,7 +280,7 @@ function clear() {
$("#cw").removeClass("yellow-text"); $("#cw").removeClass("yellow-text");
$("#cw").removeClass("cw-avail"); $("#cw").removeClass("cw-avail");
$("#cw-text").hide(); $("#cw-text").hide();
} else { }else{
$("#cw").addClass("yellow-text"); $("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail"); $("#cw").addClass("cw-avail");
$("#cw-text").show(); $("#cw-text").show();
@@ -272,18 +297,16 @@ function clear() {
$(".toot-btn-group").prop("disabled", false); $(".toot-btn-group").prop("disabled", false);
$("#post-acct-sel").prop("disabled", false); $("#post-acct-sel").prop("disabled", false);
$("#days_poll").val(0); $("#days_poll").val(0);
$("#hours_poll").val(0); $("#hours_poll").val(0);
$("#mins_poll").val(6); $("#mins_poll").val(6);
$("#poll").addClass("hide") $(".mastodon-choice").map(function() {
$("#pollsta").text(lang.lang_no)
$(".mastodon-choice").map(function () {
$(this).val(""); $(this).val("");
}); });
localStorage.removeItem("image"); localStorage.removeItem("image");
if (localStorage.getItem("mainuse") == "main") { if(localStorage.getItem("mainuse")=="main"){
$("#post-acct-sel").val(localStorage.getItem("main")); $("#post-acct-sel").val(localStorage.getItem("main"));
} }
$('select').formSelect(); $('select').material_select();
$("#left-side").show(); $("#left-side").show();
$("#default-emoji").show(); $("#default-emoji").show();
$("#unreact").show(); $("#unreact").show();

View File

@@ -1,11 +1,11 @@
/*保護系*/ /*保護系*/
//画像保護 //画像保護
function nsfw() { function nsfw(){
if ($("#nsfw").hasClass("nsfw-avail")) { if($("#nsfw").hasClass("nsfw-avail")){
$("#nsfw").removeClass("yellow-text"); $("#nsfw").removeClass("yellow-text");
$("#nsfw").html("visibility_off"); $("#nsfw").html("visibility_off");
$("#nsfw").removeClass("nsfw-avail"); $("#nsfw").removeClass("nsfw-avail");
} else { }else{
$("#nsfw").addClass("yellow-text"); $("#nsfw").addClass("yellow-text");
$("#nsfw").html("visibility"); $("#nsfw").html("visibility");
$("#nsfw").addClass("nsfw-avail"); $("#nsfw").addClass("nsfw-avail");
@@ -13,7 +13,7 @@ function nsfw() {
} }
//投稿公開範囲 //投稿公開範囲
function vis(set) { function vis(set){
$("#vis").text(set); $("#vis").text(set);
$("#vis-icon").removeClass("red-text"); $("#vis-icon").removeClass("red-text");
$("#vis-icon").removeClass("orange-text"); $("#vis-icon").removeClass("orange-text");
@@ -21,110 +21,109 @@ function vis(set) {
$("#vis-icon").removeClass("purple-text"); $("#vis-icon").removeClass("purple-text");
$("#vis-icon").removeClass("light-blue-text"); $("#vis-icon").removeClass("light-blue-text");
$("#vis-icon").removeClass("teal-text"); $("#vis-icon").removeClass("teal-text");
if (set == "public") { if(set=="public"){
$("#vis-icon").text("public"); $("#vis-icon").text("public");
$("#vis-icon").addClass("purple-text"); $("#vis-icon").addClass("purple-text");
} else if (set == "unlisted") { }else if(set=="unlisted"){
$("#vis-icon").text("lock_open"); $("#vis-icon").text("lock_open");
$("#vis-icon").addClass("blue-text"); $("#vis-icon").addClass("blue-text");
} else if (set == "private") { }else if(set=="private"){
$("#vis-icon").text("lock"); $("#vis-icon").text("lock");
$("#vis-icon").addClass("orange-text"); $("#vis-icon").addClass("orange-text");
} else if (set == "direct") { }else if(set=="direct"){
$("#vis-icon").text("mail"); $("#vis-icon").text("mail");
$("#vis-icon").addClass("red-text"); $("#vis-icon").addClass("red-text");
} else if (set == "limited") { }else if(set=="limited"){
$("#vis-icon").text("group"); $("#vis-icon").text("group");
$("#vis-icon").addClass("teal-text"); $("#vis-icon").addClass("teal-text");
} else if (set == "local") { }else if(set=="local"){
$("#vis-icon").text("visibility"); $("#vis-icon").text("visibility");
$("#vis-icon").addClass("light-blue-text"); $("#vis-icon").addClass("light-blue-text");
} }
var vis = localStorage.getItem("vis"); var vis=localStorage.getItem("vis");
if (vis == "memory") { if(vis=="memory"){
var acct_id = $("#post-acct-sel").val();
localStorage.setItem("vis-memory-" + acct_id, set);
}
var ins = M.Dropdown.getInstance($('#dropdown1'))
if(ins){
ins.close();
}
}
function loadVis() {
var vist = localStorage.getItem("vis");
if (!vist) {
vis("public");
} else {
if (vist == "memory") {
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();
var memory = localStorage.getItem("vis-memory-" + acct_id); localStorage.setItem("vis-memory-"+acct_id,set);
if (!memory) {
memory = "public";
}
vis(memory);
} else if (vist == "useapi") {
var acct_id = $("#post-acct-sel").val();
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
var memory = obj[acct_id]["vis"];
if (!memory) {
memory = "public";
}
vis(memory);
} else {
vis(vist);
} }
$('.dropdown-button').dropdown('close');
}
function loadVis(){
var vist = localStorage.getItem("vis");
console.log(vist);
if (!vist) {
vis("public");
} else {
if (vist == "memory") {
var acct_id = $("#post-acct-sel").val();
var memory = localStorage.getItem("vis-memory-"+acct_id);
if (!memory) {
memory = "public";
}
vis(memory);
} else if(vist == "useapi") {
var acct_id = $("#post-acct-sel").val();
var multi = localStorage.getItem("multi");
var obj = JSON.parse(multi);
var memory = obj[acct_id]["vis"];
if (!memory) {
memory = "public";
}
vis(memory);
} else {
vis(vist);
}
} }
} }
loadVis(); loadVis();
//コンテントワーニング //コンテントワーニング
function cw() { function cw(){
if ($("#cw").hasClass("cw-avail")) { if($("#cw").hasClass("cw-avail")){
$("#cw-text").val(); $("#cw-text").val();
$("#cw-text").hide(); $("#cw-text").hide();
$("#cw").removeClass("yellow-text"); $("#cw").removeClass("yellow-text");
$("#cw").removeClass("cw-avail"); $("#cw").removeClass("cw-avail");
} else { }else{
$("#cw-text").show(); $("#cw-text").show();
$("#cw").addClass("yellow-text"); $("#cw").addClass("yellow-text");
$("#cw").addClass("cw-avail"); $("#cw").addClass("cw-avail");
var cwt = localStorage.getItem("cw-text"); var cwt=localStorage.getItem("cw-text");
if (cwt) { if(cwt){
$("#cw-text").val(cwt); $("#cw-text").val(cwt);
} }
} }
} }
//TLでコンテントワーニングを表示トグル //TLでコンテントワーニングを表示トグル
function cw_show(id) { function cw_show(id){
$(".cw_hide_" + id).toggleClass("cw"); $(".cw_hide_"+id).toggleClass("cw");
$(".cw-long-" + id).toggleClass("hide"); $(".cw-long-"+id).toggleClass("hide");
} }
$(function () { $(function() {
$('#cw-text').on('change', function (event) { $('#cw-text').on('change', function(event) {
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 cwlen = $('#cw-text').val().length; var cwlen=$('#cw-text').val().length;
if (idata[domain + "_letters"]) { if(idata[domain+"_letters"]){
$("#textarea").attr("data-length", idata[domain + "_letters"] - cwlen) $("#textarea").attr("data-length", idata[domain+"_letters"]-cwlen)
} else { }else{
$("#textarea").attr("data-length", 500 - cwlen) $("#textarea").attr("data-length", 500-cwlen)
} }
}); });
}); });
//スケジュール //スケジュール
function schedule() { function schedule(){
if ($("#sch-box").hasClass("sch-avail")) { if($("#sch-box").hasClass("sch-avail")){
$("#sch-box").hide(); $("#sch-box").hide();
$("#sch-box").removeClass("sch-avail"); $("#sch-box").removeClass("sch-avail");
} else { }else{
var date = new Date(); var date = new Date();
$("#sch-box").show(); $("#sch-box").show();
$("#sch-date").val(formattime(date)); $("#sch-date").val(formattime(date));
console.log(formattime(date));
$("#sch-box").addClass("sch-avail"); $("#sch-box").addClass("sch-avail");
} }
} }

View File

@@ -7,7 +7,7 @@ function fav(id, acct_id, remote) {
var flag = "favourite"; var flag = "favourite";
} }
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/statuses/" + id + "/" + flag; var start = "https://" + domain + "/api/v1/statuses/" + id + "/" + flag;
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true); httpreq.open('POST', start, true);
@@ -15,19 +15,19 @@ function fav(id, acct_id, remote) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(); httpreq.send();
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
if (remote != "remote") { if(remote!="remote"){
//APIのふぁぼカウントがおかしい //APIのふぁぼカウントがおかしい
if ($("[toot-id=" + id + "] .fav_ct").text() == json.favourites_count) { if ($("[toot-id=" + id + "] .fav_ct").text() == json.favourites_count){
if (flag == "unfavourite") { if(flag=="unfavourite"){
var fav = json.favourites_count - 1; var fav=json.favourites_count - 1;
} else { }else{
var fav = json.favourites_count + 1; var fav=json.favourites_count + 1;
//var fav = json.favourites_count; //var fav = json.favourites_count;
} }
} else { }else{
var fav = json.favourites_count; var fav = json.favourites_count;
} }
$("[toot-id=" + id + "] .fav_ct").text(fav); $("[toot-id=" + id + "] .fav_ct").text(fav);
@@ -35,17 +35,17 @@ function fav(id, acct_id, remote) {
} else { } else {
$("[toot-id=" + id + "] .rt_ct").text(fav); $("[toot-id=" + id + "] .rt_ct").text(fav);
} }
if ($("[toot-id=" + id + "]").hasClass("faved")) { if ($("[toot-id=" + id +"]").hasClass("faved")) {
$("[toot-id=" + id + "]").removeClass("faved"); $("[toot-id=" + id +"]").removeClass("faved");
$(".fav_" + id).removeClass("yellow-text"); $(".fav_" + id).removeClass("yellow-text");
} else { } else {
$("[toot-id=" + id + "]").addClass("faved"); $("[toot-id=" + id +"]").addClass("faved");
$(".fav_" + id).addClass("yellow-text"); $(".fav_" + id).addClass("yellow-text");
} }
} else { }else{
M.toast({ html: lang.lang_status_favWarn, displayLength: 1000 }) Materialize.toast(lang.lang_status_favWarn, 1000);
} }
} }
} }
} }
@@ -57,7 +57,7 @@ function rt(id, acct_id, remote) {
var flag = "reblog"; var flag = "reblog";
} }
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/statuses/" + id + "/" + flag; var start = "https://" + domain + "/api/v1/statuses/" + id + "/" + flag;
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true); httpreq.open('POST', start, true);
@@ -65,10 +65,10 @@ function rt(id, acct_id, remote) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(); httpreq.send();
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
console.log(["Success: boost", json]); console.log(json);
if (remote != "remote") { if (remote != "remote") {
$("[toot-id=" + id + "] .fav_ct").text(json.favourites_count); $("[toot-id=" + id + "] .fav_ct").text(json.favourites_count);
if (!json.reblog) { if (!json.reblog) {
@@ -84,23 +84,23 @@ function rt(id, acct_id, remote) {
if ($("[toot-id=" + id + "]").hasClass("rted")) { if ($("[toot-id=" + id + "]").hasClass("rted")) {
$("[toot-id=" + id + "]").removeClass("rted"); $("[toot-id=" + id + "]").removeClass("rted");
$(".rt_" + id).removeClass("light-blue-text"); $(".rt_" + id).removeClass("teal-text");
} else { } else {
$("[toot-id=" + id + "]").addClass("rted"); $("[toot-id=" + id + "]").addClass("rted");
$(".rt_" + id).addClass("light-blue-text"); $(".rt_" + id).addClass("teal-text");
} }
} else { } else {
M.toast({ html: lang.lang_status_btWarn, displayLength: 1000 }) Materialize.toast(lang.lang_status_btWarn, 1000);
} }
} }
} }
} }
//フォロー //フォロー
function follow(acct_id, remote) { function follow(acct_id,remote) {
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();
} }
if (!remote && $("#his-data").hasClass("following")) { if (!remote && $("#his-data").hasClass("following")) {
@@ -111,29 +111,34 @@ function follow(acct_id, remote) {
var flagm = "create"; var flagm = "create";
} }
var id = $("#his-data").attr("user-id"); var id = $("#his-data").attr("user-id");
if (!remote) { if(!remote){
var remote = $("#his-data").attr("remote"); var remote = $("#his-data").attr("remote");
} }
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 user = $("#his-acct").text(); if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag; var start = "https://" + domain + "/api/following/"+flagm;
if (localStorage.getItem("mode_" + domain) == "misskey") { var user=$("#his-acct").text();
var start = "https://" + domain + "/api/following/" + flagm; var ent={"i":at,"userId":id}
var ent = { "i": at, "userId": id } }else if(remote=="true" && flag=="follow"){
} else if (remote == "true" && flag == "follow") { var start = "https://" + domain + "/api/v1/follows";
var ent = {} var user=$("#his-acct").text();
var ent={"uri":user}
}else{
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
var ent={}
} }
console.log(ent);
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');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(JSON.stringify(ent)); httpreq.send(JSON.stringify(ent));
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
console.log(["Success: folllow", json]); console.log(json);
if ($("#his-data").hasClass("following")) { if ($("#his-data").hasClass("following")) {
$("#his-data").removeClass("following"); $("#his-data").removeClass("following");
$("#his-follow-btn").text(lang.lang_status_follow); $("#his-follow-btn").text(lang.lang_status_follow);
@@ -147,125 +152,93 @@ function follow(acct_id, remote) {
//ブロック //ブロック
function block(acct_id) { function block(acct_id) {
if (!acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var id = $("#his-data").attr("user-id");
if ($("#his-data").hasClass("blocking")) { if ($("#his-data").hasClass("blocking")) {
var flag = "unblock"; var flag = "unblock";
var txt = lang.lang_status_unmute
} else { } else {
var flag = "block"; var flag = "block";
var txt = lang.lang_status_block
} }
Swal.fire({ var domain = localStorage.getItem("domain_" + acct_id);
title: txt, var at = localStorage.getItem("acct_"+ acct_id + "_at");
text: "", var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
type: 'warning', var httpreq = new XMLHttpRequest();
showCancelButton: true, httpreq.open('POST', start, true);
confirmButtonColor: '#3085d6', httpreq.setRequestHeader('Content-Type', 'application/json');
cancelButtonColor: '#d33', httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
confirmButtonText: lang.lang_yesno, httpreq.responseType = "json";
cancelButtonText: lang.lang_no httpreq.send();
}).then((result) => { httpreq.onreadystatechange = function() {
if (result.value) { if (httpreq.readyState === 4) {
if (!acct_id) { if ($("#his-data").hasClass("blocking")) {
var acct_id = $('#his-data').attr("use-acct"); $("#his-data").removeClass("blocking");
} $("#his-block-btn").text(lang.lang_status_block);
var id = $("#his-data").attr("user-id"); } else {
var domain = localStorage.getItem("domain_" + acct_id); $("#his-data").addClass("blocking");
var at = localStorage.getItem("acct_" + acct_id + "_at"); $("#his-block-btn").text(lang.lang_status_unblock);
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send();
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if ($("#his-data").hasClass("blocking")) {
$("#his-data").removeClass("blocking");
$("#his-block-btn").text(lang.lang_status_block);
} else {
$("#his-data").addClass("blocking");
$("#his-block-btn").text(lang.lang_status_unblock);
}
}
} }
} }
}); }
} }
//ミュート //ミュート
function muteDo(acct_id) { function mute(acct_id) {
if (!acct_id) {
var acct_id = $('#his-data').attr("use-acct");
}
var id = $("#his-data").attr("user-id");
if ($("#his-data").hasClass("muting")) { if ($("#his-data").hasClass("muting")) {
var flag = "unmute"; var flag = "unmute";
var flagm = "delete"; var flagm = "delete";
var txt = lang.lang_status_unmute
} else { } else {
var flag = "mute"; var flag = "mute";
var flagm = "create"; var flagm = "create";
var txt = lang.lang_status_mute
} }
Swal.fire({ var domain = localStorage.getItem("domain_" + acct_id);
title: txt, var at = localStorage.getItem("acct_"+ acct_id + "_at");
text: "", if(localStorage.getItem("mode_" + domain)=="misskey"){
type: 'warning', var start = "https://" + domain + "/api/mute/"+flagm;
showCancelButton: true, var ent={"i":at,"userId":id}
confirmButtonColor: '#3085d6', var rq=JSON.stringify(ent);
cancelButtonColor: '#d33', }else{
confirmButtonText: lang.lang_yesno, var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
cancelButtonText: lang.lang_no var rq="";
}).then((result) => { }
if (result.value) { var httpreq = new XMLHttpRequest();
if (!acct_id) { httpreq.open('POST', start, true);
var acct_id = $('#his-data').attr("use-acct"); httpreq.setRequestHeader('Content-Type', 'application/json');
} httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
var id = $("#his-data").attr("user-id"); httpreq.responseType = "json";
var domain = localStorage.getItem("domain_" + acct_id); httpreq.send(rq);
var at = localStorage.getItem("acct_" + acct_id + "_at"); httpreq.onreadystatechange = function() {
if (localStorage.getItem("mode_" + domain) == "misskey") { if (httpreq.readyState === 4) {
var start = "https://" + domain + "/api/mute/" + flagm; if ($("#his-data").hasClass("muting")) {
var ent = { "i": at, "userId": id } $("#his-data").removeClass("muting");
var rq = JSON.stringify(ent); $("#his-mute-btn").text(lang.lang_status_mute);
} else { } else {
var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag; $("#his-data").addClass("muting");
var rq = ""; $("#his-mute-btn").text(lang.lang_status_unmute);
}
var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json";
httpreq.send(rq);
httpreq.onreadystatechange = function () {
if (httpreq.readyState === 4) {
if ($("#his-data").hasClass("muting")) {
$("#his-data").removeClass("muting");
$("#his-mute-btn").text(lang.lang_status_mute);
} else {
$("#his-data").addClass("muting");
$("#his-mute-btn").text(lang.lang_status_unmute);
}
}
} }
} }
}); }
} }
//投稿削除 //投稿削除
function del(id, acct_id) { function del(id, 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");
if (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/notes/delete"; var start = "https://" + domain + "/api/notes/delete";
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');
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(JSON.stringify({ i: at, noteId: id })); httpreq.send(JSON.stringify({i:at,noteId:id}));
$("[toot-id=" + id + "]").hide(); $("[toot-id=" + id+ "]").hide();
$("[toot-id=" + id + "]").remove(); $("[toot-id=" + id + "]").remove();
} else { }else{
var start = "https://" + domain + "/api/v1/statuses/" + id; var start = "https://" + domain + "/api/v1/statuses/" + id;
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
httpreq.open('DELETE', start, true); httpreq.open('DELETE', start, true);
@@ -274,57 +247,46 @@ function del(id, acct_id) {
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(); httpreq.send();
} }
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
} }
} }
} }
//redraft //redraft
function redraft(id, acct_id) { function redraft(id, acct_id){
Swal.fire({ if(confirm(lang.lang_status_redraft)){
title: lang.lang_status_redraftTitle, show();
text: lang.lang_status_redraft, del(id, acct_id);
type: 'warning', $("#post-acct-sel").prop("disabled", true);
showCancelButton: true, var medias=$("[toot-id="+id+"]").attr("data-medias");
confirmButtonColor: '#3085d6', var vismode=$("[toot-id="+id+"] .vis-data").attr("data-vis");
cancelButtonColor: '#d33', vis(vismode);
confirmButtonText: lang.lang_yesno, $("#media").val(medias);
cancelButtonText: lang.lang_no var ct=medias.split(",").length;
}).then((result) => { $("[toot-id="+id+"] img.toot-img").each(function(i, elem) {
if (result.value) { if(i<ct){
show(); var url=$(elem).attr("src");
del(id, acct_id); console.log(url);
$("#post-acct-sel").prop("disabled", true); $('#preview').append('<img src="' + url + '" style="width:50px; max-height:100px;">');
var medias = $("[toot-id=" + id + "]").attr("data-medias");
var vismode = $("[toot-id=" + id + "] .vis-data").attr("data-vis");
vis(vismode);
$("#media").val(medias);
var ct = medias.split(",").length;
$("[toot-id=" + id + "] img.toot-img").each(function (i, elem) {
if (i < ct) {
var url = $(elem).attr("src");
console.log("Play back image data:" + url);
$('#preview').append('<img src="' + url + '" style="width:50px; max-height:100px;">');
}
});
var html = $("[toot-id=" + id + "] .toot").html();
html = html.replace(/^<p>(.+)<\/p>$/, "$1");
html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n");
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
html = $.strip_tags(html);
localStorage.setItem("nohide", true);
show();
$("#textarea").val(html);
var cwtxt = $("[toot-id=" + id + "] .cw_text").html();
if (cwtxt != "") {
cwtxt = $.strip_tags(cwtxt);
cw();
$("#cw-text").val(cwtxt);
} }
});
var html=$("[toot-id="+id+"] .toot").html();
html = html.replace(/^<p>(.+)<\/p>$/,"$1");
html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n");
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
html=$.strip_tags(html);
localStorage.setItem("nohide",true);
show();
$("#textarea").val(html);
var cwtxt=$("[toot-id="+id+"] .cw_text").html();
if(cwtxt!=""){
cwtxt=$.strip_tags(cwtxt);
cw();
$("#cw-text").val(cwtxt);
} }
}) }
} }
//ピン留め //ピン留め
function pin(id, acct_id) { function pin(id, acct_id) {
@@ -334,7 +296,7 @@ function pin(id, acct_id) {
var flag = "pin"; var flag = "pin";
} }
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/statuses/" + id + "/" + flag; var start = "https://" + domain + "/api/v1/statuses/" + id + "/" + flag;
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true); httpreq.open('POST', start, true);
@@ -342,10 +304,10 @@ function pin(id, acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(); httpreq.send();
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
console.log(["Success: pinned", json]); console.log(json);
if ($("[toot-id=" + id + "]").hasClass("pined")) { if ($("[toot-id=" + id + "]").hasClass("pined")) {
$("[toot-id=" + id + "]").removeClass("pined"); $("[toot-id=" + id + "]").removeClass("pined");
$(".pin_" + id).removeClass("blue-text"); $(".pin_" + id).removeClass("blue-text");
@@ -360,7 +322,7 @@ function pin(id, acct_id) {
//フォロリク //フォロリク
function request(id, flag, acct_id) { function request(id, flag, 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/follow_requests/" + id + "/" + flag; var start = "https://" + domain + "/api/v1/follow_requests/" + id + "/" + flag;
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true); httpreq.open('POST', start, true);
@@ -368,10 +330,10 @@ function request(id, flag, acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(); httpreq.send();
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
console.log(["Success: request", "type:" + flag, json]); console.log(json);
showReq(); showReq();
} }
} }
@@ -383,7 +345,7 @@ function domainblock(add, flag, acct_id) {
var acct_id = $('#his-data').attr("use-acct"); var acct_id = $('#his-data').attr("use-acct");
} }
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/domain_blocks" var start = "https://" + domain + "/api/v1/domain_blocks"
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true); httpreq.open('POST', start, true);
@@ -391,10 +353,10 @@ function domainblock(add, flag, acct_id) {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(); httpreq.send();
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
console.log(["Success: domain block", json]); console.log(json);
showDom(); showDom();
} }
} }
@@ -405,24 +367,25 @@ function addDomainblock() {
domainblock(domain, 'POST'); domainblock(domain, 'POST');
} }
//ユーザー強調 //ユーザー強調
function empUser() { function empUser(){
var usr = localStorage.getItem("user_emp"); var usr = localStorage.getItem("user_emp");
var obj = JSON.parse(usr); var obj = JSON.parse(usr);
var id = $("#his-acct").attr("fullname"); var id=$("#his-acct").attr("fullname");
if (!obj) { console.log(id);
var obj = []; if(!obj){
var obj=[];
obj.push(id); obj.push(id);
M.toast({ html: id + lang.lang_status_emphas, displayLength: 4000 }) Materialize.toast(id+lang.lang_status_emphas, 4000);
} else { }else{
var can; var can;
Object.keys(obj).forEach(function (key) { Object.keys(obj).forEach(function(key) {
var usT = obj[key]; var usT = obj[key];
if (usT != id && !can) { if(usT!=id && !can){
can = false; can=false;
} else { }else{
can = true; can=true;
obj.splice(key, 1); obj.splice(key, 1);
M.toast({ html: id + lang.lang_status_unemphas, displayLength: 4000 }) Materialize.toast(id+lang.lang_status_unemphas, 4000);
} }
}); });
} }
@@ -430,16 +393,16 @@ function empUser() {
localStorage.setItem("user_emp", json); localStorage.setItem("user_emp", json);
} }
//Endorse //Endorse
function pinUser() { function pinUser(){
var id = $("#his-data").attr("user-id"); var id=$("#his-data").attr("user-id");
var acct_id = $("#his-data").attr("use-acct"); var acct_id=$("#his-data").attr("use-acct");
if ($("#his-end-btn").hasClass("endorsed")) { if ($("#his-end-btn").hasClass("endorsed")) {
var flag = "unpin"; var flag = "unpin";
} else { } else {
var flag = "pin"; var flag = "pin";
} }
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/" + id + "/" + flag; var start = "https://" + domain + "/api/v1/accounts/" + id + "/" + flag;
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
httpreq.open('POST', start, true); httpreq.open('POST', start, true);
@@ -447,9 +410,10 @@ function pinUser() {
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(); httpreq.send();
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
console.log(json);
if ($("#his-end-btn").hasClass("endorsed")) { if ($("#his-end-btn").hasClass("endorsed")) {
$("#his-end-btn").removeClass("endorsed") $("#his-end-btn").removeClass("endorsed")
$("#his-end-btn").text(lang.lang_status_endorse) $("#his-end-btn").text(lang.lang_status_endorse)
@@ -462,59 +426,57 @@ function pinUser() {
} }
} }
//URLコピー //URLコピー
function tootUriCopy(url) { function tootUriCopy(url){
execCopy(url); execCopy(url);
M.toast({ html: lang.lang_details_url, displayLength: 1500 }) Materialize.toast(lang.lang_details_url, 1500);
} }
//他のアカウントで… //他のアカウントで…
function staEx(mode) { function staEx(mode){
var url = $("#tootmodal").attr("data-url"); var url=$("#tootmodal").attr("data-url");
var acct_id = $("#status-acct-sel").val(); var acct_id = $("#status-acct-sel").val();
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/search?resolve=true&q=" + url var start = "https://" + domain + "/api/v1/search?resolve=true&q="+url
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
} }
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
var id = json.statuses[0].id; var id=json.statuses[0].id;
if (mode == "rt") { if(mode=="rt"){
rt(id, acct_id, 'remote') rt(id, acct_id, 'remote')
} else if (mode == "fav") { }else if(mode=="fav"){
fav(id, acct_id, 'remote') fav(id, acct_id, 'remote')
} else if (mode == "reply") { }else if(mode=="reply"){
reEx(id) reEx(id)
} }
}); });
return; return;
} }
function toggleAction(id, tlid, acct_id) { function toggleAction(id,tlid,acct_id){
if (tlid == "notf") { if(tlid=="notf"){
var tlide = "[data-acct=" + acct_id + "] .notf-timeline"; var tlide="[data-notf="+acct_id+"]";
} else if (tlid == "user") { }else{
var tlide = "#his-tl-contents"; var tlide="[tlid="+tlid+"]";
} else {
var tlide = "[tlid=" + tlid + "]";
} }
if (!$(tlide + " [toot-id=" + id + "]").hasClass("ext-mode")) { if(!$(tlide+" [toot-id="+id+"]").hasClass("ext-mode")){
$(tlide + " [toot-id=" + id + "] .type-a").hide(); $(tlide+" [toot-id="+id+"] .type-a").hide();
$(tlide + " [toot-id=" + id + "] .type-b").show(); $(tlide+" [toot-id="+id+"] .type-b").show();
$(tlide + " [toot-id=" + id + "]").addClass("ext-mode") $(tlide+" [toot-id="+id+"]").addClass("ext-mode")
$(tlide + " [toot-id=" + id + "] .act-icon").text("expand_less"); $(tlide+" [toot-id="+id+"] .act-icon").text("expand_less");
} else { }else{
$(tlide + " [toot-id=" + id + "] .type-b").hide(); $(tlide+" [toot-id="+id+"] .type-b").hide();
$(tlide + " [toot-id=" + id + "] .type-a").show(); $(tlide+" [toot-id="+id+"] .type-a").show();
$(tlide + " [toot-id=" + id + "]").removeClass("ext-mode") $(tlide+" [toot-id="+id+"]").removeClass("ext-mode")
$(tlide + " [toot-id=" + id + "] .act-icon").text("expand_more"); $(tlide+" [toot-id="+id+"] .act-icon").text("expand_more");
} }
} }

View File

@@ -7,67 +7,45 @@ var prev_val = input.value;
var oldSuggest; var oldSuggest;
var suggest; var suggest;
input.addEventListener("focus", function () { input.addEventListener("focus", function() {
localStorage.removeItem("cursor");
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();
$("#suggest").html(""); $("#suggest").html("");
window.clearInterval(timer); window.clearInterval(timer);
timer = window.setInterval(function () { timer = window.setInterval(function() {
var new_val = input.value; var new_val = input.value;
if (new_val == "") { if(new_val==""){
$("#suggest").html(""); $("#suggest").html("");
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) { if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
$("#right-side").hide() $("#right-side").hide()
$("#right-side").css("width", "300px")
$("#left-side").css("width", "100%")
var width = localStorage.getItem("postbox-width").replace("px", "") * 1;
if (!width) {
width = 300
}
$("#post-box").css("width", width + "px")
} }
return; return;
} }
if (prev_val != new_val) { if (prev_val != new_val) {
var semoji = new_val.match(/:(\S{3,})/); var semoji = new_val.match(/:(\S{3,})/);
if (semoji) { if(semoji){
var obj = JSON.parse(localStorage.getItem("emoji_" + acct_id)); var obj = JSON.parse(localStorage.getItem("emoji_" + acct_id));
if (!obj) { if(!obj){
var ehtml = lang.lang_suggest_nodata; var ehtml=lang.lang_suggest_nodata;
} else { }else{
var num = obj.length; var num = obj.length;
var ehtml = ""; var ehtml="";
for (i = 0; i < num; i++) { for (i = 0; i < num; i++) {
var emoji = obj[i]; var emoji = obj[i];
if (~emoji.shortcode.indexOf(semoji[1])) { if ( ~emoji.shortcode.indexOf(semoji[1])) {
if (emoji) { if (emoji) {
ehtml = ehtml + '<a onclick="emojiInsert(\':' + emoji.shortcode + ehtml = ehtml+'<a onclick="emojiInsert(\':' + emoji.shortcode +
': \',\':' + semoji[1] + '\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>'; ': \',\':'+semoji[1]+'\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
} }
} }
} }
} }
if (ehtml != "") { if(ehtml!=""){
$("#right-side").show() $("#right-side").show()
$("#right-side").css("width", "200px")
$("#left-side").css("width", "calc(100% - 200px)")
var width = localStorage.getItem("postbox-width").replace("px", "") * 1 + 200;
if (!width) {
width = 600
}
$("#post-box").css("width", width + "px")
$("#poll").addClass("hide") $("#poll").addClass("hide")
$("#emoji").addClass("hide") $("#emoji").addClass("hide")
} else { }else{
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) { if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
$("#right-side").hide() $("#right-side").hide()
$("#right-side").css("width", "300px")
$("#left-side").css("width", "100%")
var width = localStorage.getItem("postbox-width").replace("px", "") * 1;
if (!width) {
width = 300
}
$("#post-box").css("width", width + "px")
} }
} }
$("#suggest").html(ehtml); $("#suggest").html(ehtml);
@@ -79,117 +57,61 @@ input.addEventListener("focus", function () {
var q = tag[1]; var q = tag[1];
} else if (acct && acct[1]) { } else if (acct && acct[1]) {
var q = acct[1]; var q = acct[1];
} else { }else {
$("#suggest").html(""); $("#suggest").html("");
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) { if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
$("#right-side").hide() $("#right-side").hide()
$("#right-side").css("width", "300px")
$("#left-side").css("width", "100%")
var width = localStorage.getItem("postbox-width").replace("px", "") * 1;
if (!width) {
width = 300
}
$("#post-box").css("width", width + "px")
} }
return; return;
} }
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");
suggest = "https://" + domain + "/api/v2/search?q=" + q suggest = "https://" + domain + "/api/v1/search?q=" + q
if (suggest != oldSuggest) { if (suggest != oldSuggest) {
console.log("Try to get suggest at " + suggest) console.log(suggest)
fetch(suggest, { fetch(suggest, {
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) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
console.log(["Search", json]);
//ハッシュタグ
if (json.hashtags[0] && tag) { if (json.hashtags[0] && tag) {
if (tag[1]) { if(tag[1]){
var tags = []; var tags = "";
Object.keys(json.hashtags).forEach(function (key4) { Object.keys(json.hashtags).forEach(function(key4) {
var tag = json.hashtags[key4]; var tag = json.hashtags[key4];
var his = tag.history; if(tag!=q){
var uses = his[0].uses * 1 + his[1].uses * 1 + his[2].uses * 1 + his[3].uses * 1 + his[4].uses * 1 + his[5].uses * 1 + his[6].uses * 1; tags = tags + '<a onclick="tagInsert(\'#' + tag + '\',\'#' + q +
tagHTML = '<br><a onclick="tagInsert(\'#' + escapeHTML(tag.name) + '\',\'#' + q + '\')" class="pointer">#' + '\')" class="pointer">#' + tag + '</a><br>';
escapeHTML(tag.name) + '</a>&nbsp;' + uses + 'toot(s)'
var item = {
"uses": uses,
"html": tagHTML
}
tags.push(item)
});
var num_a = -1;
var num_b = 1;
tags = tags.sort(function (a, b) {
var x = a["uses"];
var y = b["uses"];
if (x > y) return num_a;
if (x < y) return num_b;
return 0;
});
var ins = ""
var nev = false
Object.keys(tags).forEach(function (key7) {
ins = ins + tags[key7].html
if (key7 <= 0 && !nev) {
ins = ins + '<br>'
nev = true
}
});
$("#suggest").html(ins);
$("#right-side").show()
$("#right-side").css("width", "200px")
$("#left-side").css("width", "calc(100% - 200px)")
var width = localStorage.getItem("postbox-width").replace("px", "") * 1 + 200;
if (!width) {
width = 600
}
$("#post-box").css("width", width + "px")
$("#poll").addClass("hide")
$("#emoji").addClass("hide")
}
} else if (json.accounts[0] && acct[1]) {
var accts = "";
Object.keys(json.accounts).forEach(function (key3) {
var acct = json.accounts[key3];
if (acct.acct != q) {
//Instance Actorって…
if (acct.username.indexOf(".") < 0) {
accts = accts + '<a onclick="tagInsert(\'@' + acct.acct +
'\',\'@' + q + '\')" class="pointer">@' + acct.acct + '</a><br>';
}
} }
}); });
$("#right-side").show() $("#right-side").show()
$("#right-side").css("width", "200px") $("#suggest").html("Tags:<br>" + tags);
$("#left-side").css("width", "calc(100% - 200px)") $("#poll").addClass("hide")
var width = localStorage.getItem("postbox-width").replace("px", "") * 1 + 200; $("#emoji").addClass("hide")
if (!width) {
width = 600
} }
$("#post-box").css("width", width + "px") } else if (json.accounts[0] && acct[1]) {
var accts = "";
Object.keys(json.accounts).forEach(function(key3) {
var acct = json.accounts[key3];
if(acct.acct!=q){
accts = accts + '<a onclick="tagInsert(\'@' + acct.acct +
'\',\'@' + q + '\')" class="pointer">@' + acct.acct + '</a><br>';
}
});
$("#right-side").show()
$("#suggest").html(accts); $("#suggest").html(accts);
$("#poll").addClass("hide") $("#poll").addClass("hide")
$("#emoji").addClass("hide") $("#emoji").addClass("hide")
} else { } else {
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) { if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
$("#right-side").hide() $("#right-side").hide()
$("#right-side").css("width", "300px")
$("#left-side").css("width", "100%")
var width = localStorage.getItem("postbox-width").replace("px", "") * 1;
if (!width) {
width = 300
}
$("#post-box").css("width", width + "px")
} }
} }
}); });
@@ -200,7 +122,7 @@ input.addEventListener("focus", function () {
}, 1000); }, 1000);
}, false); }, false);
input.addEventListener("blur", function () { input.addEventListener("blur", function() {
window.clearInterval(timer); window.clearInterval(timer);
favTag(); favTag();
}, false); }, false);
@@ -209,56 +131,50 @@ function tagInsert(code, del) {
var selin = $("#textarea").prop('selectionStart'); var selin = $("#textarea").prop('selectionStart');
if (!del) { if (!del) {
} else { } else {
var regExp = new RegExp(del.replace(/[.*+?^=!:${}()|[\]\/\\]/g, "\\$&"), "g"); var regExp = new RegExp(del, "g");
var now = now.replace(regExp, ""); var now = now.replace(regExp, "");
selin = selin - del.length; selin=selin-del.length;
} }
if (selin > 0) { if(selin>0){
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 + " " + code + " " + after; newt = before + " "+ code+" " + after;
} else { }else{
newt = code + " " + now; newt = code+" "+now;
} }
$("#textarea").val(newt); $("#textarea").val(newt);
$("#textarea").focus(); $("#textarea").focus();
if ($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")) { if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
$("#right-side").hide() $("#right-side").hide()
$("#right-side").css("width", "300px")
$("#left-side").css("width", "50%")
var width = localStorage.getItem("postbox-width").replace("px", "") * 1;
if (!width) {
width = 300
}
$("#post-box").css("width", width + "px")
} }
$("#suggest").html(""); $("#suggest").html("");
} }
function cgNPs(q) { function cgNPs(q){
suggest = "https://cg.toot.app/api/v1/search/light?q=" + q suggest = "https://cg.toot.app/api/v1/search/light?q=" + q
if (suggest != oldSuggest) { if (suggest != oldSuggest) {
console.log("Try to get suggest at " + suggest) console.log(suggest)
fetch(suggest, { fetch(suggest, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json' 'content-type': 'application/json'
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
if (json[0]) { console.log(json);
var tags = ""; if (json[0]) {
Object.keys(json).forEach(function (key4) { var tags = "";
var tag = json[key4]; Object.keys(json).forEach(function(key4) {
tags = tags + '<a onclick="cgNP(\'' + json[key4] + '\')" class="pointer">' + escapeHTML(json[key4]) + '</a> '; var tag = json[key4];
tags = tags + '<a onclick="cgNP(\''+json[key4]+'\')" class="pointer">' + escapeHTML(json[key4]) + '</a> ';
});
$("#suggest").html("Cinderella NowPlaying:" + tags);
}else{
$("#suggest").html("Cinderella NowPlaying:Not Found");
}
}); });
$("#suggest").html("Cinderella NowPlaying:" + tags);
} else {
$("#suggest").html("Cinderella NowPlaying:Not Found");
} }
});
}
} }

View File

@@ -1,64 +1,64 @@
/*リプライ*/ /*リプライ*/
function re(id, ats_cm, acct_id, mode) { function re(id,ats_cm,acct_id,mode){
clear(); clear();
var ats = ats_cm.split(','); var ats=ats_cm.split(',');
localStorage.setItem("nohide", true); localStorage.setItem("nohide",true);
show(); show();
$("#reply").val(id); $("#reply").val(id);
for (var i = 0; i < ats.length; i++) { for(var i=0;i<ats.length;i++){
var at = ats[i]; var at=ats[i];
var te = $("#textarea").val(); var te=$("#textarea").val();
if (at != localStorage.getItem("user_" + acct_id)) { if(at!=localStorage.getItem("user_"+acct_id)){
$("#textarea").val("@" + at + " " + te); $("#textarea").val("@"+at+" "+te);
} }
} }
$("#rec").text(lang.lang_yesno); $("#rec").text(lang.lang_yesno);
$("#post-acct-sel").val(acct_id); $("#post-acct-sel").val(acct_id);
$("#post-acct-sel").prop("disabled", true); $("#post-acct-sel").prop("disabled", true);
$('select').formSelect(); $('select').material_select();
$("#textarea").attr("placeholder", lang.lang_usetxtbox_reply); $("#textarea").attr("placeholder",lang.lang_usetxtbox_reply);
$("#textarea").focus(); $("#textarea").focus();
var profimg = localStorage.getItem("prof_" + acct_id); var profimg=localStorage.getItem("prof_"+acct_id);
if (!profimg) { if(!profimg){
profimg = "../../img/missing.svg"; profimg="../../img/missing.svg";
} }
$("#acct-sel-prof").attr("src", profimg); $("#acct-sel-prof").attr("src",profimg);
vis(mode); vis(mode);
} }
function reEx(id) { function reEx(id){
$('#tootmodal').modal('close'); $('#tootmodal').modal('close');
var at = $("#tootmodal").attr("data-user"); var at=$("#tootmodal").attr("data-user");
var acct_id = $("#status-acct-sel").val(); var acct_id = $("#status-acct-sel").val();
var mode = $("#tootmodal .vis-data").attr("data-vis"); var mode=$("#tootmodal .vis-data").attr("data-vis");
re(id, at, acct_id, mode); re(id,at,acct_id,mode);
} }
//引用 //引用
function qt(id, acct_id, at, url) { function qt(id,acct_id,at,url){
localStorage.setItem("nohide", true); localStorage.setItem("nohide",true);
var qt = localStorage.getItem("quote"); var qt = localStorage.getItem("quote");
if (!qt) { if(!qt){
var qt = "simple"; var qt="simple";
} }
if (qt == "nothing") { if(qt=="nothing"){
return false; return false;
} }
if (qt == "simple") { if(qt=="simple"){
show(); show();
$("#textarea").val("\n" + url); $("#textarea").val("\n"+url);
} else if (qt == "mention") { }else if(qt=="mention"){
show(); show();
$("#textarea").val("\n" + url + " From:@" + at); $("#textarea").val("\n"+url+" From:@"+at);
} else if (qt == "full") { }else if(qt=="full"){
show(); show();
var html = $("[toot-id=" + id + "] .toot").html(); var html=$("[toot-id="+id+"] .toot").html();
html = html.match(/^<p>(.+)<\/p>$/)[1]; html = html.match(/^<p>(.+)<\/p>$/)[1];
html = html.replace(/<br\s?\/?>/, "\n"); html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n"); html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n"); html = html.replace(/<\/p>/, "\n");
html = $.strip_tags(html); html=$.strip_tags(html);
$("#textarea").val("\n" + "@" + at + " " + html + "\n" + url); $("#textarea").val("\n"+"@"+at+" "+html+"\n"+url);
} }
$("#post-acct-sel").val(acct_id);
$('select').formSelect();
$("#textarea").focus(); $("#textarea").focus();
$("#post-acct-sel").val(acct_id);
$('select').material_select();
} }

View File

@@ -6,64 +6,64 @@ function additional(acct_id, tlid) {
$("#timeline-container .mention").addClass("parsed"); $("#timeline-container .mention").addClass("parsed");
$("#timeline-container .hashtag").each(function (i, elem) { $("#timeline-container .hashtag").each(function(i, elem) {
var tags = $(this).attr("href").match( var tags = $(this).attr("href").match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/ /https?:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
); );
$(this).attr("href", "#"); $(this).attr("href","#");
if (tags) { if(tags){
if (tags[2]) { if(tags[2]){
$(this).attr("onclick", 'tagShow(\'' + tags[2] + '\')'); $(this).attr("onclick",'tagShow(\'' + tags[2] + '\')');
} }
} }
}); });
//トゥートサムネ //トゥートサムネ
$("#timeline_" + tlid + " .toot a:not(.parsed)").each(function (i, elem) { $("#timeline_" + tlid + " .toot a:not(.parsed)").each(function(i, elem) {
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 card = localStorage.getItem("card_" + tlid); var card = localStorage.getItem("card_" + tlid);
var text = $(this).attr('href'); var text = $(this).attr('href');
if (text) { if(text){
if (text.indexOf("twimg.com") === -1) { if(text.indexOf("twimg.com")=== -1){
var urls = text.match( var urls = text.match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/ /https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
); );
} }
} else { }else{
text = "" text=""
var urls = [] var urls =[]
} }
//トゥートのURLぽかったら //トゥートのURLぽかったら
toot = text.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/); toot = text.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
if (toot) { if(toot){
if (toot[1]) { if(toot[1]){
$(this).attr("data-acct", acct_id); $(this).attr("data-acct",acct_id);
} }
} }
if (urls) { if (urls) {
$(this).remove(); $(this).remove();
} else if (!card) { } else if (!card) {
var id = $(this).parents('.cvo').attr("toot-id"); var id = $(this).parents('.cvo').attr("toot-id");
if (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/url?url=" + text; var start = "https://" + domain + "/url?url="+text;
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json' 'content-type': 'application/json'
}, },
//body: JSON.stringify({}) //body: JSON.stringify({})
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
if (json.title) { if (json.title) {
$("[toot-id=" + id + "] .additional").html( $("[toot-id=" + id + "] .additional").html(
"<span class=\"gray\">URL" + lang.lang_cards_check + ":<br>Title:" + escapeHTML(json.title) + "<br>" + "<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + escapeHTML(json.title) + "<br>" +
escapeHTML(json.description) + "</span>"); escapeHTML(json.description) + "</span>");
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed"); $("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
$("[toot-id=" + id + "]").addClass("parsed"); $("[toot-id=" + id + "]").addClass("parsed");
@@ -71,141 +71,143 @@ function additional(acct_id, tlid) {
}); });
} }
} else { }else{
$(this).attr("title", text); $(this).attr("title",text);
} }
}); });
$("i.unparsed").each(function (i, elem) { $("i.unparsed").each(function(i, elem) {
var dem = $(this).text(); var dem=$(this).text();
var dom = $(this); var dom=$(this);
var start = "./js/emoji/emoji-map.json"; var start = "./js/emoji/emoji-map.json";
var xmlHttpRequest = new XMLHttpRequest(); var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.onreadystatechange = function () { xmlHttpRequest.onreadystatechange = function()
if (this.readyState === 4 && this.status === 200) { {
if (this.response) { if( this.readyState === 4 && this.status === 200 ) {
var json = this.response; if( this.response){
var emojis = json.emojis; var json=this.response;
for (i = 0; i < emojis.length; i++) { var emojis=json.emojis;
var emojie = emojis[i]; for (i = 0; i < emojis.length; i++) {
var regExp = new RegExp(dem, "g"); var emojie = emojis[i];
if (emojie.emoji.match(regExp)) { var regExp = new RegExp(dem, "g");
var sc = emojie.name; if (emojie.emoji.match(regExp)) {
var sc = "twa-" + sc.replace(/_/g, "-"); var sc=emojie.name;
dom.addClass(sc); var sc="twa-"+sc.replace(/_/g,"-");
dom.text(""); dom.addClass(sc);
dom.removeClass("unparsed"); dom.text("");
break; dom.removeClass("unparsed");
} break;
} }
} }
} }
} }
xmlHttpRequest.open('GET', start, true); }
xmlHttpRequest.responseType = 'json'; xmlHttpRequest.open( 'GET', start, true );
xmlHttpRequest.send(null); xmlHttpRequest.responseType = 'json';
xmlHttpRequest.send( null );
}); });
$("#timeline_" + tlid + " .toot:not(:has(a:not(.add-show,.parsed)))").each(function (i, elem) { $("#timeline_" + tlid + " .toot:not(:has(a:not(.add-show,.parsed)))").each(function(i, elem) {
$(this).parent().find(".add-show").hide(); $(this).parent().find(".add-show").hide();
}); });
//Markdownイメージビューワー //Markdownイメージビューワー
$("#timeline_" + tlid + " .toot a:not(.img-parsed):has(img)").each(function (i, elem) { $("#timeline_" + tlid + " .toot a:not(.img-parsed):has(img)").each(function(i, elem) {
var ilink = $(this).attr("href"); var ilink=$(this).attr("href");
var id = $(this).parents('.cvo').attr("toot-id"); var id = $(this).parents('.cvo').attr("toot-id");
$(this).attr("href", "#"); $(this).attr("href","#");
$(this).attr("onclick", "imgv('" + id + "','" + i + "')"); $(this).attr("onclick","imgv('"+id+"','"+i+"')");
$(this).attr("data-type", "image"); $(this).attr("data-type","image");
$(this).attr("id", id + "-image-" + i); $(this).attr("id",id+"-image-"+i);
$(this).attr("data-url", ilink); $(this).attr("data-url",ilink);
$(this).addClass("img-parsed"); $(this).addClass("img-parsed");
}); });
} }
function additionalIndv(tlid, acct_id, id) { function additionalIndv(tlid, 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 text = $("[toot-id=" + id + "] .toot a").attr('href'); var text = $("[toot-id="+id+"] .toot a").attr('href');
var urls = text.match( var urls = text.match(
/https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/ /https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
); );
if (urls) { if (urls) {
$("[toot-id=" + id + "] .toot a").remove(); $("[toot-id="+id+"] .toot a").remove();
} else {
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/url?url=" + text;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
//body: JSON.stringify({})
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (json.title) {
$("[toot-id=" + id + "] .additional").html(
"<span class=\"gray\">URL" + lang.lang_cards_check + ":<br>Title:" + escapeHTML(json.title) + "<br>" +
escapeHTML(json.description) + "</span>");
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
$("[toot-id=" + id + "]").addClass("parsed");
}
});
} else { } else {
var id = $("[toot-id=" + id + "] .toot a").parents('.cvo').attr("toot-id"); if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/v1/statuses/" + id; var start = "https://" + domain + "/url?url="+text;
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json'
'Authorization': 'Bearer ' + at },
}, //body: JSON.stringify({})
//body: JSON.stringify({}) }).then(function(response) {
}).then(function (response) { return response.json();
return response.json(); }).catch(function(error) {
}).catch(function (error) { todo(error);
todo(error); console.error(error);
console.error(error); }).then(function(json) {
}).then(function (json) {
json = json.card;
//このリンク鳥やんけ、ってとき
if (json.provider_name == "Twitter") {
if (json.image) {
var twiImg = '<br><img src="' + json.image + '" style="max-width:100%" onclick="imgv(\'twi_' + id + '\', 0, \'twitter\');" id="twi_' + id + '-image-0" data-url="' + json.image + '" data-type="image">';
} else {
var twiImg = '';
}
$("[toot-id=" + id + "] .additional").html(
'<div class="twitter-tweet"><b>' + escapeHTML(json.author_name) + '</b><br>' + escapeHTML(json.description) + twiImg + '</div>');
} else if (json.provider_name == "pixiv") {
if (json.image) {
var pxvImg = '<br><img src="' + json.image + '" style="max-width:100%" onclick="imgv(\'pixiv_' + id + '\', 0, \'pixiv\');" id="pixiv_' + id + '-image-0" data-url="' + json.embed_url + '" data-type="image">';
} else {
var pxvImg = '';
}
$("[toot-id=" + id + "] .additional").html(
'<div class="pixiv-post"><b><a href="' + json.author_url + '" target="_blank">' + escapeHTML(json.author_name) + '</a></b><br>' + escapeHTML(json.title) + pxvImg + '</div>');
} else {
if (json.title) { if (json.title) {
$("[toot-id=" + id + "] .additional").html( $("[toot-id=" + id + "] .additional").html(
"<span class=\"gray\">URL" + lang.lang_cards_check + ":<br>Title:" + escapeHTML(json.title) + "<br>" + "<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + escapeHTML(json.title) + "<br>" +
escapeHTML(json.description) + "</span>"); escapeHTML(json.description) + "</span>");
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
$("[toot-id=" + id + "]").addClass("parsed");
} }
if (json.html) { });
$("[toot-id=" + id + "] .additional").html(json.html + '<i class="material-icons sml pointer" onclick="pip(\'' + id + '\')" title="' + lang.lang_cards_pip + '">picture_in_picture_alt</i>'); }else{
var id = $("[toot-id="+id+"] .toot a").parents('.cvo').attr("toot-id");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/card";
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
//body: JSON.stringify({})
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
console.log(json);
//このリンク鳥やんけ、ってとき
console.log(json.provider_name);
if (json.provider_name=="Twitter"){
if(json.image){
var twiImg='<br><img src="'+json.image+'" style="max-width:100%" onclick="imgv(\'twi_'+id+'\', 0, \'twitter\');" id="twi_'+id+'-image-0" data-url="'+json.image+'" data-type="image">';
}else{
var twiImg='';
}
$("[toot-id=" + id + "] .additional").html(
'<div class="twitter-tweet"><b>'+escapeHTML(json.author_name)+'</b><br>'+escapeHTML(json.description)+twiImg+'</div>');
}else if (json.provider_name=="pixiv"){
if(json.image){
var pxvImg='<br><img src="'+json.image+'" style="max-width:100%" onclick="imgv(\'pixiv_'+id+'\', 0, \'pixiv\');" id="pixiv_'+id+'-image-0" data-url="'+json.embed_url+'" data-type="image">';
}else{
var pxvImg='';
}
$("[toot-id=" + id + "] .additional").html(
'<div class="pixiv-post"><b><a href="'+json.author_url+'" target="_blank">'+escapeHTML(json.author_name)+'</a></b><br>'+escapeHTML(json.title)+pxvImg+'</div>');
}else{
if (json.title) {
$("[toot-id=" + id + "] .additional").html(
"<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + escapeHTML(json.title) + "<br>" +
escapeHTML(json.description) + "</span>");
}
if (json.html) {
$("[toot-id=" + id + "] .additional").html(json.html+'<i class="material-icons sml pointer" onclick="pip(\''+id+'\')" title="'+lang.lang_cards_pip+'">picture_in_picture_alt</i>');
}
} }
} if (json.title) {
if (json.title) { $("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed"); $("[toot-id=" + id + "]").addClass("parsed");
$("[toot-id=" + id + "]").addClass("parsed"); }
} });
}); }
} }
}
} }
//各TL上方のLink[On/Off] //各TL上方のLink[On/Off]
@@ -214,11 +216,11 @@ function cardToggle(tlid) {
if (!card) { if (!card) {
localStorage.setItem("card_" + tlid, "true"); localStorage.setItem("card_" + tlid, "true");
$("#sta-card-" + tlid).text("Off"); $("#sta-card-" + tlid).text("Off");
$("#sta-card-" + tlid).css("color", 'red'); $("#sta-card-" + tlid).css("color",'red');
} else { } else {
localStorage.removeItem("card_" + tlid); localStorage.removeItem("card_" + tlid);
$("#sta-card-" + tlid).text("On"); $("#sta-card-" + tlid).text("On");
$("#sta-card-" + tlid).css("color", '#009688'); $("#sta-card-" + tlid).css("color",'#009688');
} }
} }
//各TL上方のLink[On/Off]をチェック //各TL上方のLink[On/Off]をチェック
@@ -226,54 +228,55 @@ function cardCheck(tlid) {
var card = localStorage.getItem("card_" + tlid); var card = localStorage.getItem("card_" + tlid);
if (!card) { if (!card) {
$("#sta-card-" + tlid).text("On"); $("#sta-card-" + tlid).text("On");
$("#sta-card-" + tlid).css("color", '#009688'); $("#sta-card-" + tlid).css("color",'#009688');
} else { } else {
$("#sta-card-" + tlid).text("Off"); $("#sta-card-" + tlid).text("Off");
$("#sta-card-" + tlid).css("color", 'red'); $("#sta-card-" + tlid).css("color",'red');
} }
} }
function mov(id, tlid, type) { function mov(id,tlid,type){
if (tlid == "notf") { if(tlid=="notf"){
var tlide = "[data-notf=" + acct_id + "]"; var tlide="[data-notf="+acct_id+"]";
} else if (tlid == "user") { }else if(tlid=="user"){
var tlide = "#his-data"; var tlide="#his-data";
} else { }else{
var tlide = "[tlid=" + tlid + "]"; var tlide="[tlid="+tlid+"]";
} }
var mouseover = localStorage.getItem("mouseover"); console.log(tlid)
if (!mouseover) { var mouseover=localStorage.getItem("mouseover");
mouseover = ""; if(!mouseover){
mouseover="";
} }
if (mouseover == "yes") { if(mouseover=="yes"){
mouseover = "hide"; mouseover="hide";
} else if (mouseover == "click") { }else if(mouseover=="click"){
if (type == "mv") { if(type=="mv"){
mouseover = ""; mouseover="";
} else { }else{
mouseover = "hide"; mouseover="hide";
} }
} else if (mouseover == "no") { }else if(mouseover=="no"){
mouseover = ""; mouseover="";
} }
if (mouseover == "hide") { if(mouseover=="hide"){
$(tlide + " [toot-id=" + id + "] .area-actions").toggleClass("hide") $(tlide+" [toot-id="+id+"] .area-actions").toggleClass("hide")
$(tlide + " [toot-id=" + id + "] .area-side").toggleClass("hide") $(tlide+" [toot-id="+id+"] .area-side").toggleClass("hide")
} }
} }
function resetmv(type) { function resetmv(type){
var mouseover = localStorage.getItem("mouseover"); var mouseover=localStorage.getItem("mouseover");
if (!mouseover) { if(!mouseover){
mouseover = ""; mouseover="";
} else if (mouseover == "yes") { }else if(mouseover=="yes"){
mouseover = "hide"; mouseover="hide";
} else if (mouseover == "no") { }else if(mouseover=="no"){
mouseover = ""; mouseover="";
} else if (mouseover == "click" && type != "mv") { }else if(mouseover=="click" && type!="mv"){
mouseover = "hide"; mouseover="hide";
} }
if (mouseover == "hide") { if(mouseover=="hide"){
$(".area-actions").addClass("hide"); $(".area-actions").addClass("hide");
$(".area-side").addClass("hide"); $(".area-side").addClass("hide");
} }

View File

@@ -1,31 +1,31 @@
//トゥートの詳細 //トゥートの詳細
function details(id, acct_id, tlid, mode) { function details(id, acct_id, tlid, mode) {
if (mode == "dm") { if(mode=="dm"){
$(".dm-hide").hide(); $(".dm-hide").hide();
} else { }else{
$(".dm-hide").show(); $(".dm-hide").show();
} }
$(".toot-reset").html('<span class="no-data">' + lang.lang_details_nodata + '</span>'); $(".toot-reset").html('<span class="no-data">'+lang.lang_details_nodata+'</span>');
var html = $("#timeline_" + tlid + " [toot-id=" + id + "]").html(); var html = $("#timeline_"+tlid+" [toot-id=" + id + "]").html();
$("#toot-this").html(html); $("#toot-this").html(html);
$('#tootmodal').modal('open'); $('#tootmodal').modal('open');
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 (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/notes/show"; var start = "https://" + domain + "/api/notes/show";
var i = { var i={
method: 'POST', method: 'POST',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
}, },
body: JSON.stringify({ body:JSON.stringify({
i: at, i:at,
noteId: id noteId:id
}) })
} }
} else { }else{
var start = "https://" + domain + "/api/v1/statuses/" + id; var start = "https://" + domain + "/api/v1/statuses/" + id;
var i = { var i={
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
@@ -34,77 +34,72 @@ function details(id, acct_id, tlid, mode) {
} }
} }
fetch(start, i).then(function (response) { fetch(start, i).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
console.log(["Toot data:", json]); console.log(json);
if (!$("#timeline_" + tlid + " #pub_" + id).length) { if(!$("#timeline_"+tlid+" #pub_" + id).length){
var html = parse([json], '', acct_id); var html = parse([json], '', acct_id);
$("#toot-this").html(html); $("#toot-this").html(html);
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
} }
if (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
var url = "https://" + domain + "/notes/" + json.id; var url="https://"+domain+"/notes/"+json.id;
var scn = json.user.username; var scn=json.user.username;
if (!json.user.host) { if(!json.user.host){
var local = true; var local=true;
} else { }else{
var local = false; var local=false;
scn = scn + "@" + host; scn=scn+"@"+host;
} }
var rep = ""; var rep="";
var uid = json.user.id; var uid=json.user.id;
if (json._replyIds) { if(json._replyIds){
replyTL(json._replyIds[0], acct_id); replyTL(json._replyIds[0], acct_id);
} }
} else { }else{
var url = json.url var url=json.url
if (json.account.acct == json.account.username) { if(json.account.acct==json.account.username){
var local = true; var local=true;
} else { }else{
var local = false; var local=false;
} }
var scn = json.account.acct; var scn=json.account.acct;
var uid = json.account.id; var uid=json.account.id;
if (json["in_reply_to_id"]) { if (json["in_reply_to_id"]) {
replyTL(json["in_reply_to_id"], acct_id); replyTL(json["in_reply_to_id"], acct_id);
} }
} }
$("#toot-this .fav_ct").text(json.favourites_count); $("#toot-this .fav_ct").text(json.favourites_count);
$("#toot-this .rt_ct").text(json.reblogs_count); $("#toot-this .rt_ct").text(json.reblogs_count);
$("#tootmodal").attr("data-url", url); $("#tootmodal").attr("data-url",url);
$("#tootmodal").attr("data-id", json.id); $("#tootmodal").attr("data-id",json.id);
if (local) { if(local){
$("#tootmodal").attr("data-user", scn + "@" + domain); $("#tootmodal").attr("data-user",scn+"@"+domain);
} else { }else{
$("#tootmodal").attr("data-user", scn); $("#tootmodal").attr("data-user",scn);
} }
getContext(id, acct_id); context(id, acct_id);
var dom = null; var dom=null;
if (!local) { if(!local){
dom = scn.replace(/.+@/g, ''); dom=scn.replace(/.+@/g,'');
} else { }else{
dom = domain; dom=domain;
} }
beforeToot(id, acct_id, dom); beforeToot(id, acct_id, dom);
userToot(id, acct_id, uid); userToot(id, acct_id, uid);
afterToot(id, acct_id, dom);
afterUserToot(id, acct_id, uid);
afterFTLToot(id, acct_id, dom);
faved(id, acct_id); faved(id, acct_id);
rted(id, acct_id); rted(id, acct_id);
if ($("#toot-this div").hasClass("cvo")) { if($("#toot-this div").hasClass("cvo")){
$("#toot-this").removeClass("cvo"); $("#toot-this").removeClass("cvo");
} else { }else{
if(!$("#toot-this .cvo").hasClass("cvo")){ $("#toot-this").addClass("cvo");
$("#toot-this").addClass("cvo");
}
} }
if (!$("#activator").hasClass("active")) { if(!$("#activator").hasClass("active")){
$('#det-col').collapsible('open', 4); $('#det-col').collapsible('open', 1);
} }
}); });
@@ -113,67 +108,22 @@ function details(id, acct_id, tlid, mode) {
//返信タイムライン //返信タイムライン
function replyTL(id, acct_id) { function replyTL(id, 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");
if (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/notes/show"; var start = "https://" + domain + "/api/notes/show";
var i = { var i={
method: 'POST', method: 'POST',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
}, },
body: JSON.stringify({ body:JSON.stringify({
i: at, i:at,
noteId: id noteId:id
}) })
} }
} else { }else{
return false var start = "https://" + domain + "/api/v1/statuses/" + id;
} var i={
fetch(start, i).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "thread");
} else {
var mute = [];
}
if (localStorage.getItem("mode_" + domain) == "misskey") {
var templete = misskeyParse([json], '', acct_id, "", "", mute);
$("#toot-after").prepend(templete);
$("#toot-after .hide").html(lang.lang_details_filtered);
$("#toot-after .by_filter").css("display", "block");
$("#toot-after .by_filter").removeClass("hide");
var rep = "_replyIds";
if (json[rep]) {
replyTL(json[rep][0], acct_id);
}
}
});
}
//コンテクストってなんですか
function getContext(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
if (localStorage.getItem("mode_" + domain) == "misskey") {
var start = "https://" + domain + "/api/notes/conversation";
var i = {
method: 'POST',
headers: {
'content-type': 'application/json',
},
body: JSON.stringify({
i: at,
noteId: id
})
}
} else {
var start = "https://" + domain + "/api/v1/statuses/" + id + "/context";
var i = {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
@@ -181,42 +131,101 @@ function getContext(id, acct_id) {
}, },
} }
} }
fetch(start, i).then(function (response) { fetch(start, i).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
if (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
json.reverse(); var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"thread");
var templete = misskeyParse(json, '', acct_id, "", "", []); }else{
$("#toot-reply").html(templete); var mute=[];
$("#toot-reply .hide").html(lang.lang_details_filtered); }
$("#toot-reply .by_filter").css("display", "block"); if(localStorage.getItem("mode_" + domain)=="misskey"){
$("#toot-reply .by_filter").removeClass("hide"); var templete = misskeyParse([json], '', acct_id,"","",mute);
jQuery("time.timeago").timeago(); $("#toot-after").prepend(templete);
} else {
if (localStorage.getItem("filter_" + acct_id) != "undefined") {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "thread");
} else {
var mute = [];
}
var templete = parse(json.descendants, '', acct_id, "", "", mute);
if (templete != "") {
$("#toot-after .no-data").hide();
}
$("#toot-after").html(templete);
$("#toot-after .hide").html(lang.lang_details_filtered); $("#toot-after .hide").html(lang.lang_details_filtered);
$("#toot-after .by_filter").css("display", "block"); $("#toot-after .by_filter").css("display","block");
$("#toot-after .by_filter").removeClass("hide"); $("#toot-after .by_filter").removeClass("hide");
var templete = parse(json.ancestors, '', acct_id, "", "", mute); var rep="_replyIds";
if (templete != "") { if (json[rep]) {
replyTL(json[rep][0], acct_id);
}
}else{
var templete = parse([json], '', acct_id,"","",mute);
if(templete!=""){
$("#toot-reply .no-data").hide(); $("#toot-reply .no-data").hide();
} }
$("#toot-reply").prepend(templete); $("#toot-reply").prepend(templete);
$("#toot-reply .hide").html(lang.lang_details_filtered); $("#toot-reply .hide").html(lang.lang_details_filtered);
$("#toot-reply .by_filter").css("display", "block"); $("#toot-reply .by_filter").css("display","block");
$("#toot-reply .by_filter").removeClass("hide"); $("#toot-reply .by_filter").removeClass("hide");
jQuery("time.timeago").timeago();
var rep="in_reply_to_id";
if (json[rep]) {
replyTL(json[rep], acct_id);
}
}
});
}
//コンテクストってなんですか
function context(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/notes/conversation";
var i={
method: 'POST',
headers: {
'content-type': 'application/json',
},
body:JSON.stringify({
i:at,
noteId:id
})
}
}else{
var start = "https://" + domain + "/api/v1/statuses/" + id + "/context";
var i={
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}
}
fetch(start, i).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
if(localStorage.getItem("mode_" + domain)=="misskey"){
json.reverse();
console.log(json);
var templete = misskeyParse(json, '', acct_id,"","",[]);
$("#toot-reply").html(templete);
$("#toot-reply .hide").html(lang.lang_details_filtered);
$("#toot-reply .by_filter").css("display","block");
$("#toot-reply .by_filter").removeClass("hide");
jQuery("time.timeago").timeago();
}else{
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"thread");
}else{
var mute=[];
}
var templete = parse(json.descendants, '', acct_id,"","",mute);
if(templete!=""){
$("#toot-after .no-data").hide();
}
$("#toot-after").html(templete);
$("#toot-after .hide").html(lang.lang_details_filtered);
$("#toot-after .by_filter").css("display","block");
$("#toot-after .by_filter").removeClass("hide");
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
} }
@@ -226,45 +235,45 @@ function getContext(id, acct_id) {
//前のトゥート(Back TL) //前のトゥート(Back TL)
function beforeToot(id, acct_id, domain) { function beforeToot(id, acct_id, 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");
if (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + var start = "https://" + domain +
"/api/notes/local-timeline" "/api/notes/local-timeline"
fetch(start, { fetch(start, {
method: 'POST', method: 'POST',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
}, },
body: JSON.stringify({ body:JSON.stringify({
i: at, i:at,
untilID: id untilID:id
}) })
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
var templete = misskeyParse(json, 'noauth', acct_id); var templete = misskeyParse(json, 'noauth', acct_id);
$("#toot-before").html(templete); $("#toot-before").html(templete);
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
}); });
} else { }else{
var start = "https://" + domain + var start = "https://" + domain +
"/api/v1/timelines/public?local=true&max_id=" + id; "/api/v1/timelines/public?local=true&max_id=" + id;
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
var templete = parse(json, 'noauth', acct_id); var templete = parse(json, 'noauth', acct_id);
if (templete != "") { if(templete!=""){
$("#toot-before .no-data").hide(); $("#toot-before .no-data").hide();
} }
$("#toot-before").html(templete); $("#toot-before").html(templete);
@@ -275,31 +284,31 @@ function beforeToot(id, acct_id, domain) {
//前のユーザーのトゥート //前のユーザーのトゥート
function userToot(id, acct_id, user) { function userToot(id, acct_id, user) {
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 (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + var start = "https://" + domain +
"/api/users/notes" "/api/users/notes"
fetch(start, { fetch(start, {
method: 'POST', method: 'POST',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
}, },
body: JSON.stringify({ body:JSON.stringify({
i: at, i:at,
untilID: id, untilID:id,
userId: user userId:user
}) })
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
var templete = misskeyParse(json, 'noauth', acct_id); var templete = misskeyParse(json, 'noauth', acct_id);
$("#user-before").html(templete); $("#user-before").html(templete);
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
}); });
} else { }else{
var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses?max_id=" + id; var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses?max_id=" + id;
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
@@ -307,14 +316,14 @@ function userToot(id, acct_id, user) {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
var templete = parse(json, '', acct_id); var templete = parse(json, '', acct_id);
if (templete != "") { if(templete!=""){
$("#user-before .no-data").hide(); $("#user-before .no-data").hide();
} }
$("#user-before").html(templete); $("#user-before").html(templete);
@@ -323,87 +332,12 @@ function userToot(id, acct_id, user) {
} }
} }
//後のLTL
function afterToot(id, acct_id, domain) {
//var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain +
"/api/v1/timelines/public?local=true&min_id=" + id;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
var templete = parse(json, 'noauth', acct_id);
if (templete != "") {
$("#ltl-after .no-data").hide();
}
$("#ltl-after").html(templete);
jQuery("time.timeago").timeago();
});
}
//後のUTL
function afterUserToot(id, acct_id, user) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/accounts/" + user + "/statuses?min_id=" + id;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
var templete = parse(json, '', acct_id);
if (templete != "") {
$("#user-after .no-data").hide();
}
$("#user-after").html(templete);
jQuery("time.timeago").timeago();
});
}
//後のFTL
function afterFTLToot(id, acct_id, domain) {
//var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain +
"/api/v1/timelines/public?min_id=" + id;
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
var templete = parse(json, 'noauth', acct_id);
if (templete != "") {
$("#ftl-after .no-data").hide();
}
$("#ftl-after").html(templete);
jQuery("time.timeago").timeago();
});
}
//ふぁぼ一覧 //ふぁぼ一覧
function faved(id, acct_id) { function faved(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id); var domain = localStorage.getItem("domain_" + acct_id);
if (localStorage.getItem("mode_" + domain) == "misskey") { return false; } if(localStorage.getItem("mode_" + domain)=="misskey"){ return false; }
var at = localStorage.getItem("acct_" + acct_id + "_at"); var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/favourited_by"; var start = "https://" + domain + "/api/v1/statuses/" + id + "/favourited_by";
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
@@ -411,26 +345,25 @@ function faved(id, acct_id) {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
var templete = userparse(json, '', acct_id); var templete = userparse(json, '', acct_id);
if (templete != "") { if(templete!=""){
$("#toot-fav .no-data").hide(); $("#toot-fav .no-data").hide();
} }
$("#toot-fav").html(templete); $("#toot-fav").html(templete);
jQuery("time.timeago").timeago();
}); });
} }
//ブースト一覧 //ブースト一覧
function rted(id, acct_id) { function rted(id, acct_id) {
var domain = localStorage.getItem("domain_" + acct_id); var domain = localStorage.getItem("domain_" + acct_id);
if (localStorage.getItem("mode_" + domain) == "misskey") { return false; } if(localStorage.getItem("mode_" + domain)=="misskey"){ return false; }
var at = localStorage.getItem("acct_" + acct_id + "_at"); var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/statuses/" + id + "/reblogged_by"; var start = "https://" + domain + "/api/v1/statuses/" + id + "/reblogged_by";
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
@@ -438,104 +371,111 @@ function rted(id, acct_id) {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
var templete = userparse(json, '', acct_id); var templete = userparse(json, '', acct_id);
$("#toot-rt").html(templete); $("#toot-rt").html(templete);
jQuery("time.timeago").timeago();
}); });
} }
//URL等のコピー //URL等のコピー
function cbCopy(mode) { function cbCopy(mode){
var url = $("#tootmodal").attr("data-url"); var url=$("#tootmodal").attr("data-url");
var urls = url.match(/https?:\/\/([-.a-zA-Z0-9]+)/); var urls = url.match(/https?:\/\/([-.a-zA-Z0-9]+)/);
var domain = urls[1]; var domain=urls[1];
if (mode == "emb") { if(mode=="emb"){
var emb = '<iframe src="' + url + '/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"></iframe><script src="https://' + domain + '/embed.js" async="async"></script>'; var emb='<iframe src="'+url+'/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400"></iframe><script src="https://'+domain+'/embed.js" async="async"></script>';
execCopy(emb) execCopy(emb)
M.toast({ html: lang.lang_details_embed, displayLength: 1500 }) Materialize.toast(lang.lang_details_embed, 1500);
} else { }else{
if (execCopy(url)) { if(execCopy(url)){
M.toast({ html: lang.lang_details_url, displayLength: 1500 }) Materialize.toast(lang.lang_details_url, 1500);
} }
} }
} }
//本文のコピー //本文のコピー
function staCopy(id) { function staCopy(id){
var html = $("[toot-id=" + id + "] .toot").html(); var html=$("[toot-id="+id+"] .toot").html();
html = html.replace(/^<p>(.+)<\/p>$/, "$1"); html = html.replace(/^<p>(.+)<\/p>$/,"$1");
html = html.replace(/<br\s?\/?>/, "\n"); html = html.replace(/<br\s?\/?>/, "\n");
html = html.replace(/<p>/, "\n"); html = html.replace(/<p>/, "\n");
html = html.replace(/<\/p>/, "\n"); html = html.replace(/<\/p>/, "\n");
console.log("Copy it:\n" + html); console.log(html);
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1"); html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, "$1");
html = $.strip_tags(html); html=$.strip_tags(html);
if (execCopy(html)) { if(execCopy(html)){
M.toast({ html: lang.lang_details_txt, displayLength: 1500 }) Materialize.toast(lang.lang_details_txt, 1500);
} }
} }
//翻訳 //翻訳
function trans(tar, to) { function trans(tar,to){
var html = $("#toot-this .toot").html(); var html=$("#toot-this .toot").html();
if (html.match(/^<p>(.+)<\/p>$/)) { if(html.match(/^<p>(.+)<\/p>$/)){
html = html.match(/^<p>(.+)<\/p>$/)[1]; html = html.match(/^<p>(.+)<\/p>$/)[1];
} }
html = html.replace(/<br\s?\/?>/g, "\n"); html = html.replace(/<br\s?\/?>/g, "\n");
html = html.replace(/<p>/g, "\n"); html = html.replace(/<p>/g, "\n");
html = html.replace(/<\/p>/g, "\n"); html = html.replace(/<\/p>/g, "\n");
html = $.strip_tags(html); html=$.strip_tags(html);
if (~tar.indexOf("zh")) { if(~tar.indexOf("zh")){
tar = "zh"; tar="zh";
} }
$("#toot-this .additional").text("Loading...(Powered by Google Translate)"); $("#toot-this .additional").text("Loading...(Powered by Google Translate)");
var exec = 'https://script.google.com/macros/s/AKfycbxhwW5tjjop9Irg-y1zr_WsXlCKEzwWG6KuoOt_vVRDfEbRv0c/exec?format=json&text=' + encodeURIComponent(html) + '&source=' + tar + '&target=' + to var exec='https://script.google.com/macros/s/AKfycbxhwW5tjjop9Irg-y1zr_WsXlCKEzwWG6KuoOt_vVRDfEbRv0c/exec?format=json&text='+encodeURIComponent(html)+'&source='+tar+'&target='+to
console.log("Try to translate from " + tar + " to " + to + " at " + exec); console.log(exec);
fetch(exec, { fetch(exec, {
method: 'GET', method: 'GET',
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (text) { }).then(function(text) {
$("#toot-this .additional").html('<span class="gray translate">' + text.text + '</span>'); $("#toot-this .additional").html('<span class="gray">'+text.text+'</span>');
}); });
} }
//ブラウザで開く //ブラウザで開く
function brws() { function brws(){
var url = $("#tootmodal").attr("data-url"); var url=$("#tootmodal").attr("data-url");
postMessage(["openUrl", url], "*") const {
shell
} = require('electron');
shell.openExternal(url);
} }
//外部からトゥート開く //外部からトゥート開く
function detEx(url, acct_id) { function detEx(url,acct_id){
if (acct_id == "main") { if(acct_id=="main"){
acct_id = localStorage.getItem("main"); acct_id=localStorage.getItem("main");
} }
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/search?resolve=true&q=" + url var start = "https://" + domain + "/api/v1/search?resolve=true&q="+url
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
} }
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
if (!json.statuses) { if(!json.statuses){
postMessage(["openUrl", url], "*") const {
} else { shell
var id = json.statuses[0].id; } = require('electron');
shell.openExternal(url);
}else{
var id=json.statuses[0].id;
$(".loadp").text($(".loadp").attr("href")); $(".loadp").text($(".loadp").attr("href"));
$(".loadp").removeClass("loadp"); $(".loadp").removeClass("loadp");
details(id, acct_id, 0) details(id, acct_id, 0)

View File

@@ -15,7 +15,7 @@ function date(str, datetype) {
} 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 {
@@ -57,31 +57,31 @@ function date(str, datetype) {
//特殊フォーマット(インスタンス情報で利用) //特殊フォーマット(インスタンス情報で利用)
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());

View File

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

View File

@@ -1,79 +1,80 @@
//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: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(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").last().attr("unique-id"); var sid = $("#timeline_" + tlid + " .cvo").last().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: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(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) {
console.log(obj);
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");
@@ -84,48 +85,48 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
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);
@@ -156,91 +157,91 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
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 + var emoji_url = '<img src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">'; '" 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 {
@@ -248,25 +249,25 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
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) {
@@ -275,19 +276,19 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
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 + var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
'\')" class="nex parsed">' + lang.lang_parse_cwshow + '</a><br>'; '\')" 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) { var ct = ct1; } else { var ct = ct2; } if(ct1>ct2){ var ct= ct1; }else{ 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( var spoil = '<span class="cw-long-' + toot.id + '">' + $.mb_substr($.strip_tags(
toot.content), 0, 100) + toot.content), 0, 100) +
'</span><span class="gray">' + lang.lang_parse_autofold + '</span>'; '</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 + var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
'\')" class="nex parsed">' + lang.lang_parse_more + '</a><br>'; '\')" 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);
@@ -300,66 +301,66 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
); );
if (urls) { if (urls) {
var analyze = '<a onclick="additionalIndv(\'' + tlid + '\',' + acct_id + var analyze = '<a onclick="additionalIndv(\'' + tlid + '\',' + acct_id +
',\'' + id + '\')" class="add-show pointer">' + lang.lang_parse_url + '</a><br>'; ',\'' + 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 + var emoji_url = '<img src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">'; '" 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 + var emoji_url = '<img src="' + emoji.url +
'" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">'; '" 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"
@@ -370,9 +371,9 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
acct_id + '\')" id="' + id + '-image-' + key2 + '" data-url="' + url + acct_id + '\')" id="' + id + '-image-' + key2 + '" data-url="' + url +
'" data-type="' + media.type + '" class="img-parsed"><img src="' + '" data-type="' + media.type + '" class="img-parsed"><img src="' +
purl + '" class="' + sense + purl + '" class="' + sense +
' toot-img pointer" style="width:' + cwdt + '%; height:' + imh + 'px;"></a></span>'; ' 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";
@@ -382,7 +383,7 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
//メンションであれば //メンションであれば
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 + '\',' + mentions = mentions + '<a onclick="udg(\'' + mention.id + '\',' +
acct_id + ')" class="pointer">@' + mention.acct + '</a> '; acct_id + ')" class="pointer">@' + mention.acct + '</a> ';
@@ -393,11 +394,11 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
var tags = ""; var tags = "";
//タグであれば //タグであれば
if (tagck) { if (tagck) {
Object.keys(toot.tags).forEach(function (key4) { Object.keys(toot.tags).forEach(function(key4) {
var tag = toot.tags[key4]; var tag = toot.tags[key4];
tags = tags + '<span class="hide" data-tag="' + tag.name + '">#' + tag.name + ':<a onclick="tl(\'tag\',\'' + tag.name + '\',' + acct_id + 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> ' + ',\'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> '; '<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>';
} }
@@ -408,38 +409,38 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
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";
@@ -450,72 +451,72 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
} }
//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>';
}
if (cards.title) {
analyze="<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + escapeHTML(cards.title) + "<br>" +
escapeHTML(cards.description) + "</span>";
}
if (cards.html) {
analyze=cards.html+'<i class="material-icons" onclick="pip('+id+')" title="'+lang.lang_cards_pip+'">picture_in_picture_alt</i>';
} }
analyze = '<blockquote class="twitter-tweet"><b>' + escapeHTML(cards.author_name) + '</b><br>' + escapeHTML(cards.description) + twiImg + '</blockquote>';
}
if (cards.title) {
analyze = "<span class=\"gray\">URL" + lang.lang_cards_check + ":<br>Title:" + escapeHTML(cards.title) + "<br>" +
escapeHTML(cards.description) + "</span>";
}
if (cards.html) {
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++) {
var value = tickerdata[i];
if (value.domain == thisdomain) {
var tickerdom = '<div style="background:linear-gradient(to left,transparent, ' + value.bg + ' 96%) !important; color:' + value.text + ';width:100%; height:0.9rem; font-size:0.8rem;"><img src="' + value.image + '" style="height:100%;"><span style="position:relative; top:-0.2rem;"> ' + escapeHTML(value.name) + '</span></div>';
break;
}
}
} }
for( var i=0; i<tickerdata.length; i++) {
var value=tickerdata[i];
if(value.domain==thisdomain){
var tickerdom='<div style="background:linear-gradient(to left,transparent, '+value.bg+' 96%) !important; color:'+value.text+';width:100%; height:0.9rem; font-size:0.8rem;"><img src="'+value.image+'" style="height:100%;"><span style="position:relative; top:-0.2rem;"> '+escapeHTML(value.name)+'</span></div>';
break;
}
}
}
} }
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' + templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
boostback + ' ' + fav_app + boostback + ' ' + fav_app +
' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="' + media_ids + ' " unixtime="' + date(obj[ ' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="'+media_ids+' " unixtime="' + date(obj[
key].created_at, 'unix') + '" ' + if_notf + ' onclick="dmStatus()">' + key].created_at, 'unix') + '" '+if_notf+' onclick="dmStatus()">' +
'<div class="area-notice"><span class="gray sharesta">' + notice + home + '<div class="area-notice"><span class="gray sharesta">' + notice + home +
'</span></div>' + '</span></div>' +
'<div class="area-icon"><a onclick="udg(\'' + toot.account.id + '<div class="area-icon"><a onclick="udg(\'' + toot.account.id +
'\',' + acct_id + ');" user="' + toot.account.acct + '" class="udg">' + '\',' + acct_id + ');" user="' + toot.account.acct + '" class="udg">' +
'<img src="' + avatar + '<img src="' + avatar +
'" width="40" class="prof-img" user="' + toot.account.acct + '" width="40" class="prof-img" user="' + toot.account.acct +
'"></a>' + noticeavatar + '</div>' + '"></a>'+noticeavatar+'</div>' +
'<div class="area-display_name"><div class="flex-name"><span class="user">' + '<div class="area-display_name"><div class="flex-name"><span class="user">' +
dis_name + dis_name +
'</span><span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; cursor:text;"> @' + '</span><span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; cursor:text;"> @' +
toot.account.acct + locked + '</span></div>' + toot.account.acct + locked + '</span></div>' +
'<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' + '<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' +
toot.url + '\');" title="' + date(toot.created_at, 'absolute') + toot.url + '\');" title="' + date(toot.created_at, 'absolute') +
'(' + lang.lang_parse_clickcopyurl + ')"><i class="far fa-clock-o"></i>' + '('+lang.lang_parse_clickcopyurl+')"><i class="far fa-clock-o"></i>' +
date(toot.created_at, datetype) + '</span>' + date(toot.created_at, datetype) + '</span>' +
'</div></div>' + '</div></div>' +
'<div class="area-toot">' + tickerdom + '<span class="' + '<div class="area-toot">'+tickerdom+'<span class="' +
api_spoil + ' cw_text_' + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show + api_spoil + ' cw_text_' + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show +
'</span><span class="toot ' + spoiler + '">' + content + '</span><span class="toot ' + spoiler + '">' + content +
'</span>' + '</span>' +
'' + viewer + '' + '' + viewer + '' +
'<br><a onclick="details(\'' + toot.id + '\',' + acct_id + '<br><a onclick="details(\'' + toot.id + '\',' + acct_id +
',\'' + tlid + '\',\'dm\')" class="pointer waves-effect">' + lang.lang_parse_thread + '</a></div>' + ',\''+tlid+'\',\'dm\')" class="pointer waves-effect">'+lang.lang_parse_thread+'</a></div>'+
'<div class="area-vis"></div>' + '<div class="area-vis"></div>'+
'</div></div>'; '</div></div>';
}); });
return templete; return templete;

View File

@@ -3,38 +3,38 @@
function mediaToggle(tlid) { function mediaToggle(tlid) {
var media = localStorage.getItem("media_" + tlid); var media = localStorage.getItem("media_" + tlid);
if (media) { if (media) {
localStorage.removeItem("media_" + tlid); localStorage.removeItem("media_" + tlid);
$("#sta-media-" + tlid).text("Off"); $("#sta-media-" + tlid).text("Off");
$("#sta-media-" + tlid).css("color", 'red'); $("#sta-media-" + tlid).css("color",'red');
$("#timeline_" + tlid).removeClass("media-filter") $("#timeline_"+tlid).removeClass("media-filter")
} else { } else {
localStorage.setItem("media_" + tlid, "true"); localStorage.setItem("media_" + tlid, "true");
$("#sta-media-" + tlid).text("On"); $("#sta-media-" + tlid).text("On");
$("#sta-media-" + tlid).css("color", '#009688'); $("#sta-media-" + tlid).css("color",'#009688');
$("#timeline_" + tlid).addClass("media-filter") $("#timeline_"+tlid).addClass("media-filter")
} }
} }
//各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);
if (ebt == "true") { if (ebt=="true") {
localStorage.setItem("ebt_" + tlid, "but"); localStorage.setItem("ebt_" + tlid, "but");
$("#sta-bt-" + tlid).text("BT Only"); $("#sta-bt-" + tlid).text("BT Only");
$("#sta-bt-" + tlid).css("color", '#ff9800'); $("#sta-bt-" + tlid).css("color",'#ff9800');
$("#timeline_" + tlid).addClass("except-bt-filter") $("#timeline_"+tlid).addClass("except-bt-filter")
$("#timeline_" + tlid).removeClass("bt-filter") $("#timeline_"+tlid).removeClass("bt-filter")
} else if (ebt == "but") { }else if (ebt=="but") {
localStorage.removeItem("ebt_" + tlid); localStorage.removeItem("ebt_" + tlid);
$("#sta-bt-" + tlid).text("Off"); $("#sta-bt-" + tlid).text("Off");
$("#sta-bt-" + tlid).css("color", 'red'); $("#sta-bt-" + tlid).css("color",'red');
$("#timeline_" + tlid).removeClass("bt-filter") $("#timeline_"+tlid).removeClass("bt-filter")
$("#timeline_" + tlid).removeClass("except-bt-filter") $("#timeline_"+tlid).removeClass("except-bt-filter")
} else { } else {
localStorage.setItem("ebt_" + tlid, "true"); localStorage.setItem("ebt_" + tlid, "true");
$("#sta-bt-" + tlid).text("BT Ex"); $("#sta-bt-" + tlid).text("BT Ex");
$("#sta-bt-" + tlid).css("color", '#009688'); $("#sta-bt-" + tlid).css("color",'#009688');
$("#timeline_" + tlid).addClass("bt-filter") $("#timeline_"+tlid).addClass("bt-filter")
$("#timeline_" + tlid).removeClass("except-bt-filter") $("#timeline_"+tlid).removeClass("except-bt-filter")
} }
} }
//各TL上方のMedia[On/Off]をチェック //各TL上方のMedia[On/Off]をチェック
@@ -42,146 +42,149 @@ function mediaCheck(tlid) {
var media = localStorage.getItem("media_" + tlid); var media = localStorage.getItem("media_" + tlid);
if (media) { if (media) {
$("#sta-media-" + tlid).text("On"); $("#sta-media-" + tlid).text("On");
$("#sta-media-" + tlid).css("color", '#009688'); $("#sta-media-" + tlid).css("color",'#009688');
$("#timeline_" + tlid).addClass("media-filter") $("#timeline_"+tlid).addClass("media-filter")
} else { } else {
$("#sta-media-" + tlid).text("Off"); $("#sta-media-" + tlid).text("Off");
$("#sta-media-" + tlid).css("color", 'red'); $("#sta-media-" + tlid).css("color",'red');
$("#timeline_" + tlid).removeClass("media-filter") $("#timeline_"+tlid).removeClass("media-filter")
} }
} }
//各TL上方のBT[On/Off]をチェック //各TL上方のBT[On/Off]をチェック
function ebtCheck(tlid) { function ebtCheck(tlid) {
var ebt = localStorage.getItem("ebt_" + tlid); var ebt = localStorage.getItem("ebt_" + tlid);
if (ebt == "true") { if (ebt=="true") {
$("#sta-bt-" + tlid).text("BT Ex"); $("#sta-bt-" + tlid).text("BT Ex");
$("#sta-bt-" + tlid).css("color", '#009688'); $("#sta-bt-" + tlid).css("color",'#009688');
$("#timeline_" + tlid).addClass("bt-filter") $("#timeline_"+tlid).addClass("bt-filter")
$("#timeline_" + tlid).removeClass("except-bt-filter") $("#timeline_"+tlid).removeClass("except-bt-filter")
} else if (ebt == "but") { } else if (ebt=="but") {
$("#sta-bt-" + tlid).text("BT Only"); $("#sta-bt-" + tlid).text("BT Only");
$("#sta-bt-" + tlid).css("color", '#ff9800'); $("#sta-bt-" + tlid).css("color",'#ff9800');
$("#timeline_" + tlid).addClass("except-bt-filter") $("#timeline_"+tlid).addClass("except-bt-filter")
$("#timeline_" + tlid).removeClass("bt-filter") $("#timeline_"+tlid).removeClass("bt-filter")
} else { } else{
$("#sta-bt-" + tlid).text("Off"); $("#sta-bt-" + tlid).text("Off");
$("#sta-bt-" + tlid).css("color", 'red'); $("#sta-bt-" + tlid).css("color",'red');
$("#timeline_" + tlid).removeClass("bt-filter") $("#timeline_"+tlid).removeClass("bt-filter")
$("#timeline_" + tlid).removeClass("except-bt-filter") $("#timeline_"+tlid).removeClass("except-bt-filter")
} }
} }
/* 削除追跡*/ /* 削除追跡*/
function catchToggle(tlid) { function catchToggle(tlid) {
var catchck = localStorage.getItem("catch_" + tlid); var catchck = localStorage.getItem("catch_" + tlid);
if (catchck) { if (catchck) {
localStorage.removeItem("catch_" + tlid); localStorage.removeItem("catch_" + tlid);
$("#sta-del-" + tlid).text("Off"); $("#sta-del-" + tlid).text("Off");
$("#sta-del-" + tlid).css("color", 'red'); $("#sta-del-" + tlid).css("color",'red');
parseColumn(tlid); parseColumn();
} else { } else {
localStorage.setItem("catch_" + tlid, "true"); localStorage.setItem("catch_" + tlid, "true");
$("#sta-del-" + tlid).text("On"); $("#sta-del-" + tlid).text("On");
$("#sta-del-" + tlid).css("color", '#009688'); $("#sta-del-" + tlid).css("color",'#009688');
parseColumn(tlid); parseColumn();
} }
} }
function catchCheck(tlid) { function catchCheck(tlid) {
var catchck = localStorage.getItem("catch_" + tlid); var catchck = localStorage.getItem("catch_" + tlid);
if (catchck) { if (catchck) {
$("#sta-del-" + tlid).text("On"); $("#sta-del-" + tlid).text("On");
$("#sta-del-" + tlid).css("color", '#009688'); $("#sta-del-" + tlid).css("color",'#009688');
} else { } else {
$("#sta-del-" + tlid).text("Off"); $("#sta-del-" + tlid).text("Off");
$("#sta-del-" + tlid).css("color", 'red'); $("#sta-del-" + tlid).css("color",'red');
} }
} }
function delreset(tlid) { function delreset(tlid){
$("[tlid=" + tlid + "] .by_delcatch").hide(); $("[tlid=" + tlid + "] .by_delcatch").hide();
$("[tlid=" + tlid + "] .by_delcatch").remove(); $("[tlid=" + tlid + "] .by_delcatch").remove();
} }
/*ワードフィルター機能*/ /*ワードフィルター機能*/
function filterMenu() { function filterMenu(){
$("#left-menu div").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");
} }
function filter() { function filter(){
$("#filtered-words").html(""); $("#filtered-words").html("");
$("#filter-edit-id").val("") $("#filter-edit-id").val("")
var acct_id = $("#filter-acct-sel").val(); var acct_id = $("#filter-acct-sel").val();
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/filters" var start = "https://" + domain + "/api/v1/filters"
console.log(start)
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
console.log(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 + escapeHTML(filterword.phrase) + '<span class="sml">(for ' + context + ')</span>:<a onclick="filterEdit(\'' + filterword.id + '\',\'' + acct_id + filters = filters + escapeHTML(filterword.phrase)+'<span class="sml">(for '+context+')</span>:<a onclick="filterEdit(\'' + filterword.id + '\',\'' + acct_id +
'\')" class="pointer">' + lang.lang_edit + '</a>/<a onclick="filterDel(' + filterword.id + ',' + acct_id + '\')" class="pointer">'+lang.lang_edit+'</a>/<a onclick="filterDel(' + filterword.id + ',' + acct_id +
')" class="pointer">' + lang.lang_del + '</a><br> '; ')" class="pointer">'+lang.lang_del+'</a><br> ';
}); });
if (filters == "") { if(filters==""){
filters = lang.lang_filter_nodata + "<br>"; filters=lang.lang_filter_nodata+"<br>";
} }
$("#filtered-words").html(filters); $("#filtered-words").html(filters);
} else { }else{
$("#filtered-words").html(lang_filter_nodata); $("#filtered-words").html(lang_filter_nodata);
} }
}); });
} }
function filterTime(day, hour, min) { function filterTime(day,hour,min){
$("#days_filter").val(day) $("#days_filter").val(day)
$("#hours_filter").val(hour) $("#hours_filter").val(hour)
$("#mins_filter").val(min) $("#mins_filter").val(min)
} }
function makeNewFilter() { function makeNewFilter(){
var acct_id = $("#filter-acct-sel").val(); var acct_id = $("#filter-acct-sel").val();
var phr = $("#filter-add-word").val(); var phr=$("#filter-add-word").val();
var cont = []; var cont=[];
if ($("#home_filter:checked").val()) { if($("#home_filter:checked").val()){
cont.push("home"); cont.push("home");
} }
if ($("#local_filter:checked").val()) { if($("#local_filter:checked").val()){
cont.push("public"); cont.push("public");
} }
if ($("#notf_filter:checked").val()) { if($("#notf_filter:checked").val()){
cont.push("notifications"); cont.push("notifications");
} }
if ($("#conv_filter:checked").val()) { if($("#conv_filter:checked").val()){
cont.push("thread"); cont.push("thread");
} }
if (!cont.length) { console.log(cont);
$("#filtered-words").html('Error:' + lang.lang_filter_errordegree); if(!cont.length){
$("#filtered-words").html('Error:'+lang.lang_filter_errordegree);
} }
var exc = $("#except_filter:checked").val(); var exc=$("#except_filter:checked").val();
var who = $("#wholeword_filter:checked").val(); var who=$("#wholeword_filter:checked").val();
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()){
var start = "https://" + domain + "/api/v1/filters/" + $("#filter-edit-id").val(); var start = "https://" + domain + "/api/v1/filters/"+$("#filter-edit-id").val();
var method = "PUT" var method="PUT"
} else { }else{
var start = "https://" + domain + "/api/v1/filters" var start = "https://" + domain + "/api/v1/filters"
var method = "POST" var method="POST"
} }
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
@@ -193,21 +196,21 @@ function makeNewFilter() {
phrase: phr, phrase: phr,
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;
filter(); filter();
filterUpdate(acct_id) filterUpdate(acct_id)
$("#filter-add-word").val(""); $("#filter-add-word").val("");
$("#home_filter").prop("checked", false); $("#home_filter").prop("checked",false);
$("#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);
$("#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");
$("#hours_filter").val("0"); $("#hours_filter").val("0");
$("#mins_filter").val("0"); $("#mins_filter").val("0");
@@ -216,70 +219,72 @@ function makeNewFilter() {
} }
} }
} }
function filterEdit(id, acct_id) { function filterEdit(id,acct_id){
$("#filter-add-word").val(""); $("#filter-add-word").val("");
$("#home_filter").prop("checked", false); $("#home_filter").prop("checked",false);
$("#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);
$("#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");
$("#hours_filter").val("0"); $("#hours_filter").val("0");
$("#mins_filter").val("0"); $("#mins_filter").val("0");
$("#add-filter-btn").text(lang.lang_edit); $("#add-filter-btn").text(lang.lang_edit);
$("#filter-edit-id").val(id); $("#filter-edit-id").val(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/filters/" + id var start = "https://" + domain + "/api/v1/filters/"+id
console.log(start)
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
console.log(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);
}); });
if (json.irreversible) { if(json.irreversible){
$("#except_filter").prop("checked", true); $("#except_filter").prop("checked",true);
} }
if (json.whole_word) { if(json.whole_word){
$("#wholeword_filter").prop("checked", true); $("#wholeword_filter").prop("checked",true);
} }
var expires = date(json.expires_at, 'unix') - now; var expires=date(json.expires_at, 'unix')-now;
var mins = Math.floor(expires / 60) % 60; var mins=Math.floor(expires/60)%60;
var hours = Math.floor(expires / 3600) % 24; var hours=Math.floor(expires/3600)%24;
var days = Math.floor(expires / 3600 / 24); var days=Math.floor(expires/3600/24);
$("#days_filter").val(days); $("#days_filter").val(days);
$("#hours_filter").val(hours); $("#hours_filter").val(hours);
$("#mins_filter").val(mins); $("#mins_filter").val(mins);
} }
}); });
} }
function filterDel(id, acct_id) { function filterDel(id,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/filters/" + id; var start = "https://" + domain + "/api/v1/filters/"+id;
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
httpreq.open("DELETE", start, true); httpreq.open("DELETE", 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(); httpreq.send();
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
filter(); filter();
@@ -287,96 +292,98 @@ function filterDel(id, acct_id) {
} }
} }
} }
function getFilter(acct_id) { function getFilter(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");
if (localStorage.getItem("mode_" + domain) != "misskey") { if(localStorage.getItem("mode_" + domain)!="misskey"){
var start = "https://" + domain + "/api/v1/filters" var start = "https://" + domain + "/api/v1/filters"
fetch(start, { console.log(start)
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (json) {
localStorage.setItem("filter_" + acct_id, JSON.stringify(json));
});
} else {
localStorage.setItem("filter_" + acct_id, JSON.stringify({}));
}
}
function getFilterType(json, type) {
if (!json) {
return [];
}
if (type == "local") {
type = "public";
} else if (type == "list") {
type = "home";
} else if (type == "notf") {
type = "notifi";
}
var mutedfilters = [];
Object.keys(json).forEach(function (key) {
var filterword = json[key];
var phrases = filterword.phrase;
if (filterword.context.join(",").indexOf(type) !== -1) {
mutedfilters.push(phrases);
}
});
return mutedfilters;
}
function filterUpdate(acct_id) {
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_" + acct_id + "_at");
var start = "https://" + domain + "/api/v1/filters"
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(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, "local"); }else{
filterUpdateInternal(json, "notf"); localStorage.setItem("filter_"+ acct_id ,JSON.stringify({}));
filterUpdateInternal(json, "pub"); }
}
function getFilterType(json,type){
if(!json){
return [];
}
if(type=="local"){
type="public";
}else if(type=="list"){
type="home";
}else if(type=="notf"){
type="notifi";
}
var mutedfilters=[];
Object.keys(json).forEach(function(key) {
var filterword = json[key];
var phrases = filterword.phrase;
if(filterword.context.join(",").indexOf(type)!== -1){
mutedfilters.push(phrases);
}
});
return mutedfilters;
}
function filterUpdate(acct_id){
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/filters"
console.log(start)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(json) {
localStorage.setItem("filter_"+ acct_id ,JSON.stringify(json));
filterUpdateInternal(json,"home");
filterUpdateInternal(json,"local");
filterUpdateInternal(json,"notf");
filterUpdateInternal(json,"pub");
}); });
} }
function filterUpdateInternal(json, type) { function filterUpdateInternal(json,type){
var home = getFilterType(json, type); var home=getFilterType(json,type);
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);
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).find('.toot').html();
Object.keys(home).forEach(function (key8) { 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, "g" );
if ($.strip_tags(text).match(regExp)) { if($.strip_tags(text).match(regExp)){
$("[toot-id=" + id + "]").addClass("hide"); $("[toot-id="+id+"]").addClass("hide");
} }
});
}); });
}); }
}
} }
/* /*
<a onclick="catchToggle(' + key + <a onclick="catchToggle(' + key +
@@ -385,74 +392,63 @@ function filterUpdateInternal(json, type) {
')" class="pointer">リセット</a><br> ')" class="pointer">リセット</a><br>
*/ */
//通知フィルター //通知フィルター
function exclude(key) { function exclude(key){
localStorage.setItem("exclude-" + key, "") var excludetxt="";
var excludetxt = localStorage.getItem("exclude-" + key); if($('#exc-reply-'+key+':checked').val()){
if ($('#exc-reply-' + key + ':checked').val()) { excludetxt="?exclude_types[]=mention"
excludetxt = "?exclude_types[]=mention" var reply=true
}
if ($('#exc-fav-' + key + ':checked').val()) {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=favourite"
} else {
excludetxt = "?exclude_types[]=favourite"
}
}
if ($('#exc-bt-' + key + ':checked').val()) {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=reblog"
} else {
excludetxt = "?exclude_types[]=reblog"
}
}
if ($('#exc-follow-' + key + ':checked').val()) {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=follow"
} else {
excludetxt = "?exclude_types[]=follow"
}
}
if ($('#exc-poll-' + key + ':checked').val()) {
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&exclude_types[]=poll"
} else {
excludetxt = "?exclude_types[]=poll"
}
} else {
}
localStorage.setItem("exclude-" + key, excludetxt)
parseColumn(key);
}
function excludeCk(key, target) {
var exc = localStorage.getItem("exclude-" + key);
if (!exc) {
return "";
}
if (~exc.indexOf(target)) {
return "checked"
} else {
return "";
}
}
function checkNotfFilter(tlid){
var excludetxt = localStorage.getItem("exclude-" + tlid);
if(!excludetxt || excludetxt != ""){
return true;
}else{ }else{
return false; var reply=false;
}
if($('#exc-fav-'+key+':checked').val()){
if(reply){
excludetxt=excludetxt+"&exclude_types[]=favourite"
}else{
excludetxt="?exclude_types[]=favourite"
}
var fav=true
}else{
var fav=false;
}
if($('#exc-bt-'+key+':checked').val()){
if(reply || fav){
excludetxt=excludetxt+"&exclude_types[]=reblog"
}else{
excludetxt="?exclude_types[]=reblog"
}
var bt=true
}else{
var bt=false;
}
if($('#exc-follow-'+key+':checked').val()){
if(reply || bt || fav){
excludetxt=excludetxt+"&exclude_types[]=follow"
}else{
excludetxt="?exclude_types[]=follow"
}
var follow=true;
}else{
var follow=false;
}
if($('#exc-poll-'+key+':checked').val()){
if(reply || bt || fav || follow){
excludetxt=excludetxt+"&exclude_types[]=poll"
}else{
excludetxt="?exclude_types[]=poll"
}
}else{
}
localStorage.setItem("exclude-"+key,excludetxt)
parseColumn();
}
function excludeCk(key,target){
var exc=localStorage.getItem("exclude-"+key);
if(!exc){
return "";
}
if(~exc.indexOf(target)){
return "checked"
}else{
return "";
} }
} }
function resetNotfFilter(tlid){
localStorage.setItem("exclude-" + tlid, "")
parseColumn(tlid);
}
function notfFilter(id,tlid,acct_id){
var excludetxt = localStorage.getItem("exclude-" + tlid);
if (excludetxt || excludetxt !="") {
excludetxt = excludetxt + "&account_id="+id
} else {
excludetxt = "?account_id="+id
}
localStorage.setItem("exclude-" + tlid, excludetxt)
parseColumn(tlid);
}

View File

@@ -1,286 +1,293 @@
function listMenu() { function listMenu(){
$("#left-menu div").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");
$('ul.tabs').tabs('select_tab', 'src-sta'); $('ul.tabs').tabs('select_tab', 'src-sta');
$("#src-contents").html(""); $("#src-contents").html("");
} }
function list() { function list(){
$("#lists-user").html(""); $("#lists-user").html("");
var acct_id = $("#list-acct-sel").val(); var acct_id = $("#list-acct-sel").val();
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 (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/users/lists/list" var start = "https://" + domain + "/api/users/lists/list"
fetch(start, { fetch(start, {
method: 'POST', method: 'POST',
body: JSON.stringify({ body: JSON.stringify({
i: at i:at
}), }),
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
if (json) { if (json) {
var lists = ""; var lists = "";
Object.keys(json).forEach(function (key) { Object.keys(json).forEach(function(key) {
var list = json[key]; var list = json[key];
lists = lists + escapeHTML(list.title) + ':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id + lists = lists + escapeHTML(list.title)+':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id +
'\')" class="pointer">' + lang.lang_list_show + '</a><br>'; '\')" class="pointer">'+lang.lang_list_show+'</a><br>';
}); });
$("#lists").html(lists); $("#lists").html(lists);
} else { }else{
$("#lists").html(lang.lang_list_nodata); $("#lists").html(lang.lang_list_nodata);
} }
}); });
} else { }else{
var start = "https://" + domain + "/api/v1/lists" var start = "https://" + domain + "/api/v1/lists"
console.log(start)
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
if (json) { if (json) {
var lists = ""; var lists = "";
Object.keys(json).forEach(function (key) { Object.keys(json).forEach(function(key) {
var list = json[key]; var list = json[key];
lists = lists + escapeHTML(list.title) + ':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id + lists = lists + escapeHTML(list.title)+':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id +
'\')" class="pointer">' + lang.lang_list_show + '</a>/<a onclick="listUser(\'' + list.id + '\',' + acct_id + '\')" class="pointer">'+lang.lang_list_show+'</a>/<a onclick="listUser(\'' + list.id + '\',' + acct_id +
')" class="pointer">' + lang.lang_list_users + '</a><br>'; ')" class="pointer">'+lang.lang_list_users+'</a><br>';
}); });
$("#lists").html(lists); $("#lists").html(lists);
} else { }else{
$("#lists").html(lang.lang_list_nodata); $("#lists").html(lang.lang_list_nodata);
} }
}); });
} }
} }
function makeNewList() { function makeNewList(){
var acct_id = $("#list-acct-sel").val(); var acct_id = $("#list-acct-sel").val();
var text = $("#list-add").val(); var text=$("#list-add").val();
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 (localStorage.getItem("mode_" + domain) != "misskey") { if(localStorage.getItem("mode_" + domain)!="misskey"){
var start = "https://" + domain + "/api/v1/lists" var start = "https://" + domain + "/api/v1/lists"
var httpreq = new XMLHttpRequest(); console.log(start)
httpreq.open('POST', start, true); var httpreq = new XMLHttpRequest();
httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.open('POST', start, true);
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.responseType = "json"; httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.send(JSON.stringify({ httpreq.responseType = "json";
title: text httpreq.send(JSON.stringify({
})); title: text
httpreq.onreadystatechange = function () { }));
if (httpreq.readyState === 4) { httpreq.onreadystatechange = function() {
var json = httpreq.response; if (httpreq.readyState === 4) {
list(); var json = httpreq.response;
$("#list-add").val("") list();
} $("#list-add").val("")
} }
} else { }
var start = "https://" + domain + "/api/users/lists/create" }else{
var httpreq = new XMLHttpRequest(); var start = "https://" + domain + "/api/users/lists/create"
httpreq.open('POST', start, true); console.log(start)
httpreq.setRequestHeader('Content-Type', 'application/json'); var httpreq = new XMLHttpRequest();
httpreq.responseType = "json"; httpreq.open('POST', start, true);
httpreq.send(JSON.stringify({ httpreq.setRequestHeader('Content-Type', 'application/json');
i: at, httpreq.responseType = "json";
title: text httpreq.send(JSON.stringify({
})); i:at,
httpreq.onreadystatechange = function () { title: text
if (httpreq.readyState === 4) { }));
var json = httpreq.response; httpreq.onreadystatechange = function() {
list(); if (httpreq.readyState === 4) {
$("#list-add").val("") var json = httpreq.response;
} list();
$("#list-add").val("")
} }
} }
} }
function listShow(id, title, acct_id) {
localStorage.setItem("list_" + id + "_" + acct_id, title);
tl('list', id, acct_id, 'add');
} }
function listUser(id, acct_id) { function listShow(id,title,acct_id){
var domain = localStorage.getItem("domain_" + acct_id); localStorage.setItem("list_"+id+"_"+acct_id,title);
var at = localStorage.getItem("acct_" + acct_id + "_at"); tl('list',id,acct_id,'add');
var start = "https://" + domain + "/api/v1/lists/" + id + "/accounts" }
function listUser(id,acct_id){
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
console.log(start)
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
if (json) { if (json) {
var lists = ""; var lists = "";
var templete = userparse(json, '', acct_id); var templete = userparse(json,'',acct_id);
if (!json[0]) { if(!json[0]){
templete = lang.lang_list_nouser; templete=lang.lang_list_nouser;
} }
$("#lists-user").html(templete); $("#lists-user").html(templete);
jQuery("time.timeago").timeago(); }else{
} else { $("#lists-user").html(lang.lang_list_nouser);
$("#lists-user").html(lang.lang_list_nouser); }
}
}); });
} }
function hisList(user, acct_id) { function hisList(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");
if (localStorage.getItem("mode_" + domain) != "misskey") { if(localStorage.getItem("mode_" + domain)!="misskey"){
var start = "https://" + domain + "/api/v1/lists" var start = "https://" + domain + "/api/v1/lists"
fetch(start, { console.log(start)
method: 'GET', fetch(start, {
headers: { method: 'GET',
'content-type': 'application/json', headers: {
'Authorization': 'Bearer ' + at 'content-type': 'application/json',
}, 'Authorization': 'Bearer ' + at
}).then(function (response) { },
return response.json(); }).then(function(response) {
}).catch(function (error) { return response.json();
todo(error); }).catch(function(error) {
console.error(error); todo(error);
}).then(function (json) { console.error(error);
if (json) { }).then(function(json) {
var lists = lang.lang_list_add + "<br>"; if (json) {
Object.keys(json).forEach(function (key) { var lists = lang.lang_list_add+"<br>";
var list = json[key]; Object.keys(json).forEach(function(key) {
lists = lists + '<a onclick="listAdd(\'' + list.id + '\',\'' + user + '\',\'' + acct_id + var list = json[key];
'\')" class="pointer">' + escapeHTML(list.title) + '</a><br> '; lists = lists + '<a onclick="listAdd(\'' + list.id + '\',\'' + user + '\',\'' + acct_id +
}); '\')" class="pointer">'+escapeHTML(list.title)+'</a><br> ';
$("#his-lists-a").html(lists); });
} else { $("#his-lists-a").html(lists);
$("#his-lists-a").html(lang.lang_list_nodata); }else{
} $("#his-lists-a").html(lang.lang_list_nodata);
}); }
var start = "https://" + domain + "/api/v1/accounts/" + user + "/lists" });
fetch(start, { var start = "https://" + domain + "/api/v1/accounts/"+user+"/lists"
method: 'GET', console.log(start)
headers: { fetch(start, {
'content-type': 'application/json', method: 'GET',
'Authorization': 'Bearer ' + at headers: {
}, 'content-type': 'application/json',
}).then(function (response) { 'Authorization': 'Bearer ' + at
return response.json(); },
}).catch(function (error) { }).then(function(response) {
todo(error); return response.json();
console.error(error); }).catch(function(error) {
}).then(function (json) { todo(error);
if (json) { console.error(error);
var lists = lang.lang_list_remove + "<br>"; }).then(function(json) {
Object.keys(json).forEach(function (key) { if (json) {
var list = json[key]; var lists = lang.lang_list_remove+"<br>";
lists = lists + '<a onclick="listRemove(\'' + list.id + '\',\'' + user + '\',\'' + acct_id + Object.keys(json).forEach(function(key) {
'\')" class="pointer">' + escapeHTML(list.title) + '</a><br> '; var list = json[key];
}); lists = lists + '<a onclick="listRemove(\'' + list.id + '\',\'' + user + '\',\'' + acct_id +
$("#his-lists-b").html(lists); '\')" class="pointer">'+escapeHTML(list.title)+'</a><br> ';
} else { });
$("#his-lists-b").html(lang.lang_list_nodata); $("#his-lists-b").html(lists);
} }else{
}); $("#his-lists-b").html(lang.lang_list_nodata);
} else { }
var start = "https://" + domain + "/api/users/lists/list" });
}else{
var start = "https://" + domain + "/api/users/lists/list"
fetch(start, { fetch(start, {
method: 'POST', method: 'POST',
body: JSON.stringify({ body: JSON.stringify({
i: at i:at
}), }),
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
if (json) { if (json) {
var lists = ""; var lists = "";
Object.keys(json).forEach(function (key) { Object.keys(json).forEach(function(key) {
var list = json[key]; var list = json[key];
lists = lists + list.title + ':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id + lists = lists + list.title+':<a onclick="listShow(\'' + list.id + '\',\'' + escapeHTML(list.title) + '\',\'' + acct_id +
'\')" class="pointer">' + lang.lang_list_show + '</a>/<a onclick="listAdd(\'' + list.id + '\',\'' + user + '\',\'' + acct_id + '\')" class="pointer">'+lang.lang_list_show+'</a>/<a onclick="listAdd(\'' + list.id + '\',\'' + user + '\',\'' + acct_id +
'\')" class="pointer">' + lang.lang_list_add + lang.lang_list_add_misskey + '</a><br>'; '\')" class="pointer">'+lang.lang_list_add+lang.lang_list_add_misskey+'</a><br>';
}); });
$("#his-lists-a").html(lists); $("#his-lists-a").html(lists);
} else { }else{
$("#his-lists-a").html(lang.lang_list_nodata); $("#his-lists-a").html(lang.lang_list_nodata);
} }
}); });
$("#his-lists-b").html(""); $("#his-lists-b").html("");
}
} }
function listAdd(id, user, acct_id) { }
var domain = localStorage.getItem("domain_" + acct_id); function listAdd(id,user,acct_id){
var at = localStorage.getItem("acct_" + acct_id + "_at"); var domain = localStorage.getItem("domain_" + acct_id);
if (localStorage.getItem("mode_" + domain) == "misskey") { var at = localStorage.getItem("acct_"+ acct_id + "_at");
if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/users/lists/push" var start = "https://" + domain + "/api/users/lists/push"
var i = { var i={
i: at, i:at,
listId: id, listId:id,
userId: user userId:user
} }
} else { }else{
var start = "https://" + domain + "/api/v1/lists/" + id + "/accounts" var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
var i = { var i={
account_ids: [user] account_ids: [user]
} }
} }
console.log(start)
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');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(JSON.stringify(i)); httpreq.send(JSON.stringify(i));
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
hisList(user, acct_id) hisList(user,acct_id)
} }
} }
} }
function listRemove(id, user, acct_id) { function listRemove(id,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");
if (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
var start = "https://" + domain + "/api/users/lists/push" var start = "https://" + domain + "/api/users/lists/push"
var method = 'POST' var method='POST'
var i = { var i={
i: at, i:at,
listId: id, listId:id,
userId: user userId:user
} }
} else { }else{
var start = "https://" + domain + "/api/v1/lists/" + id + "/accounts" var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
var method = 'DELETE' var method='DELETE'
var i = { var i={
account_ids: [user] account_ids: [user]
} }
} }
console.log(start)
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
httpreq.open(method, start, true); httpreq.open(method, start, true);
httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(JSON.stringify(i)); httpreq.send(JSON.stringify(i));
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
hisList(user, acct_id) hisList(user,acct_id)
} }
} }
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,127 +1,131 @@
//Integrated TL //Integrated TL
function mixtl(acct_id, tlid, type, delc, voice) { function mixtl(acct_id, tlid, type,delc,voice) {
console.log(delc);
localStorage.removeItem("morelock") localStorage.removeItem("morelock")
localStorage.setItem("now", type); localStorage.setItem("now", type);
todo("Integrated TL Loading...(Local)"); todo("Integrated TL Loading...(Local)");
//まずLocal //まずLocal
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/timelines/public?local=true"; var start = "https://" + domain + "/api/v1/timelines/public?local=true";
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (jsonL) { }).then(function(jsonL) {
var start = "https://" + domain + "/api/v1/timelines/home"; var start = "https://" + domain + "/api/v1/timelines/home";
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (jsonH) { }).then(function(jsonH) {
var homearr = []; var homearr=[];
var timeline = jsonL.concat(jsonH); var timeline = jsonL.concat(jsonH);
timeline.sort(function (a, b) { timeline.sort(function(a,b){
if (date(a.created_at, "unix") >= date(b.created_at, "unix")) return -1; if(date(a.created_at,"unix")>=date(b.created_at,"unix")) return -1;
if (date(a.created_at, "unix") < date(b.created_at, "unix")) return 1; if(date(a.created_at,"unix")<date(b.created_at,"unix")) return 1;
return 0; return 0;
}); });
if (type == "integrated") { if(type=="integrated"){
timeline.splice(20); timeline.splice(20);
} }
var templete = ""; var templete="";
if (localStorage.getItem("filter_" + acct_id) != "undefined") { Object.keys(timeline).forEach(function(key) {
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "mix"); var pkey=key*1+1;
} else { if(pkey<timeline.length){
var mute = []; if(date(timeline[key].created_at,"unix")!=date(timeline[pkey].created_at,"unix")){
} if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
Object.keys(timeline).forEach(function (key) { var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"mix");
var pkey = key * 1 + 1; }else{
if (pkey < timeline.length) { var mute=[];
if (date(timeline[key].created_at, "unix") != date(timeline[pkey].created_at, "unix")) { }
if (type == "integrated") { if(type=="integrated"){
templete = templete + parse([timeline[key]], '', acct_id, tlid, "", mute, "mix"); templete = templete+parse([timeline[key]], '', acct_id, tlid, "", mute, "mix");
} else if (type == "plus") { }else if(type=="plus"){
if (timeline[key].account.acct == timeline[key].account.username) { if(timeline[key].account.acct==timeline[key].account.username){
templete = templete + parse([timeline[key]], '', acct_id, tlid, "", mute, "plus"); templete = templete+parse([timeline[key]], '', acct_id, tlid, "", mute, "plus");
} }
} }
} }
} }
}); });
$("#landing_" + tlid).hide(); $("#landing_" + tlid).hide();
$("#timeline_" + tlid).html(templete); $("#timeline_" + tlid).html(templete);
mixre(acct_id, tlid, type, mute, delc, voice); mixre(acct_id, tlid, type, mute,delc,voice);
additional(acct_id, tlid); additional(acct_id, tlid);
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
todc(); todc();
}); });
}); });
} }
//Streamingに接続 //Streamingに接続
function mixre(acct_id, tlid, TLtype, mute, delc, voice, mode) { function mixre(acct_id, tlid, TLtype, mute,delc,voice,mode) {
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 (localStorage.getItem("streaming_" + acct_id)) { if(localStorage.getItem("streaming_" + acct_id)){
var wss = localStorage.getItem("streaming_" + acct_id) var wss=localStorage.getItem("streaming_" + acct_id)
} else { }else{
var wss = "wss://" + domain var wss="wss://"+domain
} }
var startHome = wss + var startHome = wss+
"/api/v1/streaming/?stream=user&access_token=" + at; "/api/v1/streaming/?stream=user&access_token=" + at;
var startLocal = wss + var startLocal = wss+
"/api/v1/streaming/?stream=public:local&access_token=" + at; "/api/v1/streaming/?stream=public:local&access_token=" + at;
var wshid = websocketHome.length; var wshid = websocketHome.length;
var wslid = websocketLocal.length; var wslid = websocketLocal.length;
websocketHome[wshid] = new WebSocket(startHome); websocketHome[wshid] = new WebSocket(startHome);
websocketLocal[wslid] = new WebSocket(startLocal); websocketLocal[wslid] = new WebSocket(startLocal);
websocketHome[wshid].onopen = function (mess) { websocketHome[wshid].onopen = function(mess) {
localStorage.setItem("wssH_" + tlid, wshid); localStorage.setItem("wssH_" + tlid, wshid);
console.table({ "tlid": tlid, "type": "Connect Streaming API(Integrated:Home)", "domain": domain, "message": mess }) console.log(tlid + ":Connect Streaming API(Integrated:Home)");
console.log(mess);
$("#notice_icon_" + tlid).removeClass("red-text"); $("#notice_icon_" + tlid).removeClass("red-text");
} }
websocketLocal[wslid].onopen = function (mess) { websocketLocal[wslid].onopen = function(mess) {
localStorage.setItem("wssL_" + tlid, wslid); localStorage.setItem("wssL_" + tlid, wslid);
console.table({ "tlid": tlid, "type": "Connect Streaming API(Integrated:Local)", "domain": domain, "message": mess }) console.log(tlid + ":Connect Streaming API(Integrated:Local)");
console.log(mess);
$("#notice_icon_" + tlid).removeClass("red-text"); $("#notice_icon_" + tlid).removeClass("red-text");
} }
websocketLocal[wslid].onmessage = function (mess) { websocketLocal[wslid].onmessage = function(mess) {
console.log(["Receive Streaming API:(Integrated:Local)", obj]); console.log("Receive Streaming API:(Integrated:Local)");
var obj = JSON.parse(JSON.parse(mess.data).payload); var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj);
var type = JSON.parse(mess.data).event; var type = JSON.parse(mess.data).event;
if (type == "delete") { if (type == "delete") {
if (delc == "true") { if(delc=="true"){
$("#timeline_" + tlid + " [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized"); $("#timeline_"+tlid+" [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized");
$("#timeline_" + tlid + " [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch"); $("#timeline_"+tlid+" [toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch");
} else { }else{
$("[toot-id=" + JSON.parse(mess.data).payload + "]").hide(); $("[toot-id=" + JSON.parse(mess.data).payload + "]").hide();
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove(); $("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
} }
} else if (type == "update") { } else if (type == "update") {
var templete = parse([obj], '', acct_id, tlid, "", mute); var templete = parse([obj], '', acct_id, tlid,"",mute);
if ($("#timeline_" + tlid + " [toot-id=" + obj.id + "]").length < 1) { if($("#timeline_" + tlid +" [toot-id=" + obj.id + "]").length < 1){
if (voice) { if(voice){
say(obj.content) say(obj.content)
} }
var templete = parse([obj], type, acct_id, tlid, "", mute, "mix"); var templete = parse([obj], type, acct_id, tlid,"",mute, "mix");
var pool = localStorage.getItem("pool_" + tlid); var pool = localStorage.getItem("pool_" + tlid);
if (pool) { if (pool) {
pool = templete + pool; pool = templete + pool;
@@ -134,45 +138,47 @@ function mixre(acct_id, tlid, TLtype, mute, delc, voice, mode) {
additional(acct_id, tlid); additional(acct_id, tlid);
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
} else { }else{
todo("二重取得発生中"); todo("二重取得発生中");
} }
} }
} }
websocketHome[wshid].onmessage = function (mess) { websocketHome[wshid].onmessage = function(mess) {
console.log(["Receive Streaming API:(Integrated:Home)", obj]); console.log("Receive Streaming API:(Integrated:Home)");
var obj = JSON.parse(JSON.parse(mess.data).payload); var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj);
var type = JSON.parse(mess.data).event; var type = JSON.parse(mess.data).event;
if (type == "delete") { if (type == "delete") {
if (del > 10) { if(del>10){
reconnector(tlid, type, acct_id, data) reconnector(tlid,type,acct_id,data)
} else { }else{
localStorage.setItem("delete", del * 1 + 1) localStorage.setItem("delete",del*1+1)
} }
if (delc == "true") { if(delc=="true"){
$("[toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized"); $("[toot-id=" + JSON.parse(mess.data).payload + "]").addClass("emphasized");
$("[toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch"); $("[toot-id=" + JSON.parse(mess.data).payload + "]").addClass("by_delcatch");
} else { }else{
$("[toot-id=" + JSON.parse(mess.data).payload + "]").hide(); $("[toot-id=" + JSON.parse(mess.data).payload + "]").hide();
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove(); $("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
} }
} else if (type == "update") { } else if (type == "update") {
localStorage.removeItem("delete"); localStorage.removeItem("delete");
if (TLtype == "integrated") { if(TLtype=="integrated"){
var templete = parse([obj], '', acct_id, tlid); var templete = parse([obj], '', acct_id, tlid);
} else if (TLtype == "plus") { }else if(TLtype=="plus"){
if (obj.account.acct == obj.account.username) { if(obj.account.acct==obj.account.username){
var templete = parse([obj], '', acct_id, tlid, "", mute, "mix"); var templete = parse([obj], '', acct_id, tlid,"",mute, "mix");
} else { }else{
var templete = ""; var templete="";
} }
} }
if ($("#timeline_" + tlid + " [toot-id=" + obj.id + "]").length < 1) { if($("#timeline_" + tlid +" [toot-id=" + obj.id + "]").length < 1){
if (voice) { if(voice){
say(obj.content) say(obj.content)
} }
var templete = parse([obj], type, acct_id, tlid, "", mute, "mix"); var templete = parse([obj], type, acct_id, tlid,"",mute,"mix");
var pool = localStorage.getItem("pool_" + tlid); var pool = localStorage.getItem("pool_" + tlid);
if (pool) { if (pool) {
pool = templete + pool; pool = templete + pool;
@@ -185,61 +191,62 @@ function mixre(acct_id, tlid, TLtype, mute, delc, voice, mode) {
additional(acct_id, tlid); additional(acct_id, tlid);
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
} else { }else{
todo("二重取得発生中"); todo("二重取得発生中");
} }
} }
} }
websocketLocal[wslid].onerror = function (error) { websocketLocal[wslid].onerror = function(error) {
console.error('WebSocketLocal Error') console.error('WebSocketLocal Error')
console.error(error); console.error(error);
if (mode == "error") { if(mode=="error"){
$("#notice_icon_" + tlid).addClass("red-text"); $("#notice_icon_" + tlid).addClass("red-text");
todo('WebSocket Error ' + error); todo('WebSocket Error ' + error);
} else { }else{
var errorct = localStorage.getItem("wserror_" + tlid) * 1 + 1; var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
localStorage.setItem("wserror_" + tlid, errorct); localStorage.setItem("wserror_" + tlid,errorct);
if (errorct < 3) { if(errorct<3){
reconnector(tlid, TLtype, acct_id, "", "error"); reconnector(tlid,TLtype,acct_id,"","error");
} }
} }
}; };
websocketLocal[wslid].onclose = function () { websocketLocal[wslid].onclose = function() {
console.warn('WebSocketLocal Closing:' + tlid); console.log('WebSocketLocal Closing:' + tlid);
if (mode == "error") { if(mode=="error"){
$("#notice_icon_" + tlid).addClass("red-text"); $("#notice_icon_" + tlid).addClass("red-text");
todo('WebSocket Closed'); todo('WebSocket Closed');
} else { }else{
var errorct = localStorage.getItem("wserror_" + tlid) * 1 + 1; var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
localStorage.setItem("wserror_" + tlid, errorct); localStorage.setItem("wserror_" + tlid,errorct);
if (errorct < 3) { if(errorct<3){
reconnector(tlid, TLtype, acct_id, "", "error"); reconnector(tlid,TLtype,acct_id,"","error");
} }
} }
}; };
websocketHome[wshid].onerror = function (error) { websocketHome[wshid].onerror = function(error) {
console.error(['WebSocketHome Error', error]) console.error('WebSocketHome Error')
if (mode == "error") { console.error(error);
if(mode=="error"){
$("#notice_icon_" + tlid).addClass("red-text"); $("#notice_icon_" + tlid).addClass("red-text");
todo('WebSocket Error ' + error); todo('WebSocket Error ' + error);
} else { }else{
var errorct = localStorage.getItem("wserror_" + tlid) * 1 + 1; var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
localStorage.setItem("wserror_" + tlid, errorct); localStorage.setItem("wserror_" + tlid,errorct);
if (errorct < 3) { if(errorct<3){
reconnector(tlid, TLtype, acct_id, "", "error"); reconnector(tlid,TLtype,acct_id,"","error");
} }
} }
}; };
websocketHome[wshid].onclose = function () { websocketHome[wshid].onclose = function() {
console.warn('WebSocketHome Closing:' + tlid); console.log('WebSocketHome Closing:' + tlid);
if (mode == "error") { if(mode=="error"){
$("#notice_icon_" + tlid).addClass("red-text"); $("#notice_icon_" + tlid).addClass("red-text");
todo('WebSocket Closed'); todo('WebSocket Closed');
} else { }else{
var errorct = localStorage.getItem("wserror_" + tlid) * 1 + 1; var errorct=localStorage.getItem("wserror_" + tlid)*1+1;
localStorage.setItem("wserror_" + tlid, errorct); localStorage.setItem("wserror_" + tlid,errorct);
if (errorct < 3) { if(errorct<3){
reconnector(tlid, TLtype, acct_id, "", "error"); reconnector(tlid,TLtype,acct_id,"","error");
} }
} }
@@ -248,79 +255,79 @@ function mixre(acct_id, tlid, TLtype, mute, delc, voice, mode) {
} }
//ある程度のスクロールで発火 //ある程度のスクロールで発火
function mixmore(tlid, type) { function mixmore(tlid,type) {
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;
moreloading = true; moreloading=true;
todo("Integrated TL MoreLoading...(Local)"); todo("Integrated TL MoreLoading...(Local)");
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").last().attr("unique-id"); var sid = $("#timeline_" + tlid + " .cvo").last().attr("unique-id");
var start = "https://" + domain + "/api/v1/timelines/public?local=true&max_id=" + sid; var start = "https://" + domain + "/api/v1/timelines/public?local=true&max_id="+sid;
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (jsonL) { }).then(function(jsonL) {
var start = "https://" + domain + "/api/v1/timelines/home?max_id=" + sid; var start = "https://" + domain + "/api/v1/timelines/home?max_id="+sid;
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
'Authorization': 'Bearer ' + at 'Authorization': 'Bearer ' + at
}, },
}).then(function (response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (jsonH) { }).then(function(jsonH) {
var homearr = []; var homearr=[];
var timeline = jsonL.concat(jsonH); var timeline = jsonL.concat(jsonH);
timeline.sort(function (a, b) { timeline.sort(function(a,b){
if (date(a.created_at, "unix") > date(b.created_at, "unix")) return -1; if(date(a.created_at,"unix")>date(b.created_at,"unix")) return -1;
if (date(a.created_at, "unix") < date(b.created_at, "unix")) return 1; if(date(a.created_at,"unix")<date(b.created_at,"unix")) return 1;
return 0; return 0;
}); });
timeline.splice(20); timeline.splice(20);
var templete = ""; var templete="";
Object.keys(timeline).forEach(function (key) { Object.keys(timeline).forEach(function(key) {
var pkey = key * 1 + 1; var pkey=key*1+1;
if (pkey < 20) { if(pkey<20){
if (date(timeline[key].created_at, "unix") != date(timeline[pkey].created_at, "unix")) { if(date(timeline[key].created_at,"unix")!=date(timeline[pkey].created_at,"unix")){
if (localStorage.getItem("filter_" + acct_id) != "undefined") { if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "mix"); var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"mix");
} else { }else{
var mute = []; var mute=[];
} }
if (type == "integrated") { if(type=="integrated"){
templete = templete + parse([timeline[key]], '', acct_id, tlid, "", mute, "mix"); templete = templete+parse([timeline[key]], '', acct_id, tlid,"",mute,"mix");
} else if (type == "plus") { }else if(type=="plus"){
if (timeline[key].account.acct == timeline[key].account.username) { if(timeline[key].account.acct==timeline[key].account.username){
templete = templete + parse([timeline[key]], '', acct_id, tlid, "", mute, "mix"); templete = templete+parse([timeline[key]], '', acct_id, tlid,"",mute,"mix");
} }
} }
} }
} }
}); });
$("#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;
todc(); todc();
}); });
}); });

View File

@@ -1,143 +1,142 @@
//通知 //通知
//取得+Streaming接続 //取得+Streaming接続
function notf(acct_id, tlid, sys) { function notf(acct_id, tlid, sys){
if (sys == "direct") { if (sys == "direct") {
notfColumn(acct_id, tlid, sys) notfColumn(acct_id, tlid, sys)
} else { } else {
notfCommon(acct_id, tlid, sys) notfCommon(acct_id, tlid, sys)
} }
} }
function notfColumn(acct_id, tlid, sys) { function notfColumn(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");
if (!native) { if(!native){
native = "yes"; native="yes";
} }
var domain = localStorage.getItem("domain_" + acct_id); var domain = localStorage.getItem("domain_" + acct_id);
console.log(start)
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
if (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey = true; var misskey=true;
var start = "https://" + domain + "/api/i/notifications"; var start = "https://" + domain + "/api/i/notifications";
httpreq.open("POST", start, true); httpreq.open(POST, start, true);
httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.setRequestHeader('Content-Type', 'application/json');
var body = JSON.stringify({ var body=JSON.stringify({
i: at i:at
}); });
} else { }else{
var misskey = false; var misskey=false;
if (localStorage.getItem("exclude-" + tlid)) { if(localStorage.getItem("exclude-"+tlid)){
var exc = localStorage.getItem("exclude-" + tlid); var exc=localStorage.getItem("exclude-"+tlid);
} else { }else{
var exc = ""; var exc="";
} }
var start = "https://" + domain + "/api/v1/notifications" + exc; var start = "https://" + domain + "/api/v1/notifications"+exc;
httpreq.open("GET", start, true); httpreq.open("GET", start, true);
httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
var body = ""; var body="";
} }
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(body); httpreq.send(body);
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
var max_id = httpreq.getResponseHeader("link"); var max_id = httpreq.getResponseHeader("link").match(/[?&]{1}max_id=([0-9]+)/)[1];
if (max_id) { if(json[0]){
max_id = max_id.match(/[?&]{1}max_id=([0-9]+)/)[1] var templete="";
} var lastnotf=localStorage.getItem("lastnotf_" + acct_id);
if (json[0]) { localStorage.setItem("lastnotf_" + acct_id,json[0].id);
var templete = ""; Object.keys(json).forEach(function(key) {
var lastnotf = localStorage.getItem("lastnotf_" + acct_id);
localStorage.setItem("lastnotf_" + acct_id, json[0].id);
Object.keys(json).forEach(function (key) {
var obj = json[key]; var obj = json[key];
if (lastnotf == obj.id && key > 0 && native == "yes") { if(lastnotf==obj.id && key>0 && native=="yes"){
var ct = key; var ct=key;
if (key > 14) { if(key>14){
ct = "15+"; ct="15+";
}
var os = localStorage.getItem("platform");
var options = {
body: ct + lang.lang_notf_new,
icon: localStorage.getItem("prof_" + acct_id)
};
if (os == "darwin") {
var n = new Notification('TheDesk:' + domain, options);
} else {
var nativeNotfOpt=['TheDesk:' + domain, ct + lang.lang_notf_new, localStorage.getItem("prof_" + acct_id)]
postMessage(["nativeNotf", nativeNotfOpt], "*")
} }
var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var options = {
body: ct+lang.lang_notf_new,
icon: localStorage.getItem("prof_"+acct_id)
};
if(os=="darwin"){
var n = new Notification('TheDesk:'+domain, options);
}else{
ipc.send('native-notf', ['TheDesk:'+domain,ct+lang.lang_notf_new,localStorage.getItem("prof_"+acct_id)]);
}
} }
if (localStorage.getItem("filter_" + acct_id) != "undefined") { if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "notif"); var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"notif");
} else { }else{
var mute = []; var mute=[];
} }
if (obj.type != "follow") { if(obj.type!="follow"){
if (misskey) { if(misskey){
templete = templete + misskeyParse([obj], 'notf', acct_id, tlid, -1, mute); templete = templete+misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute);
} else { }else{
templete = templete + parse([obj], 'notf', acct_id, tlid, -1, mute); templete = templete+parse([obj], 'notf', acct_id, 'notf', -1, mute);
} }
} else { }else{
if (misskey) { if(misskey){
templete = templete + misskeyUserparse([obj], 'notf', acct_id, tlid, -1, mute); templete = templete+misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute);
} else { }else{
templete = templete + userparse([obj.account], 'notf', acct_id, tlid, -1); templete = templete+userparse([obj.account], 'notf', acct_id, 'notf', -1);
} }
} }
}); });
templete = templete + '<div class="hide notif-marker" data-maxid="' + max_id + '"></div>'; templete=templete+'<div class="hide notif-marker" data-maxid="'+max_id+'"></div>';
$("#timeline_" + tlid).html(templete); $("#timeline_" + tlid).html(templete);
$("#landing_" + tlid).hide(); $("#landing_" + tlid).hide();
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
} }
$("#notf-box").addClass("fetched"); $("#notf-box").addClass("fetched");
todc(); todc();
} }
} }
if (!misskey) { if(!misskey){
if (localStorage.getItem("streaming_" + acct_id)) { if(localStorage.getItem("streaming_" + acct_id)){
var wss = localStorage.getItem("streaming_" + acct_id) var wss=localStorage.getItem("streaming_" + acct_id)
} else { }else{
var wss = "wss://" + domain var wss="wss://"+domain
} }
var start = wss + "/api/v1/streaming/?stream=user&access_token=" + var start = wss + "/api/v1/streaming/?stream=user&access_token=" +
at; at;
} else { }else{
var start = "wss://" + domain + "/?i=" + var start = "wss://" + domain + "/?i=" +
at; at;
} }
} }
function notfCommon(acct_id, tlid, sys) { 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");
if (!native) { if(!native){
native = "yes"; native="yes";
} }
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"){
var misskey = true; var misskey=true;
var start = "https://" + domain + "/api/i/notifications"; var start = "https://" + domain + "/api/i/notifications";
var i = { var i={
method: 'POST', method: 'POST',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
}, },
body: JSON.stringify({ body:JSON.stringify({
i: at i:at
}) })
} }
} else { }else{
var misskey = false; var misskey=false;
var start = "https://" + domain + "/api/v1/notifications"; var start = "https://" + domain + "/api/v1/notifications";
var i = { var i={
method: 'GET', method: 'GET',
headers: { headers: {
'content-type': 'application/json', 'content-type': 'application/json',
@@ -145,230 +144,262 @@ function notfCommon(acct_id, tlid, sys) {
}, },
} }
} }
fetch(start, i).then(function (response) { fetch(start, i).then(function(response) {
console.log("header to get param:" + response.headers.get('link')); console.log(response.headers.get('link'));
return response.json(); return response.json();
}).catch(function (error) { }).catch(function(error) {
todo(error); todo(error);
console.error(error); console.error(error);
}).then(function (json) { }).then(function(json) {
if (json[0]) { if(json[0]){
var templete = ""; var templete="";
var lastnotf = localStorage.getItem("lastnotf_" + acct_id); var lastnotf=localStorage.getItem("lastnotf_" + acct_id);
localStorage.setItem("lastnotf_" + acct_id, json[0].id); localStorage.setItem("lastnotf_" + acct_id,json[0].id);
Object.keys(json).forEach(function (key) { Object.keys(json).forEach(function(key) {
var obj = json[key]; var obj = json[key];
if (lastnotf == obj.id && key > 0 && native == "yes") { if(lastnotf==obj.id && key>0 && native=="yes"){
var ct = key; var ct=key;
if (key > 14) { if(key>14){
ct = "15+"; ct="15+";
} }
var os = localStorage.getItem("platform"); var electron = require("electron");
var ipc = electron.ipcRenderer;
var os = electron.remote.process.platform;
var options = { var options = {
body: ct + lang.lang_notf_new, body: ct+lang.lang_notf_new,
icon: localStorage.getItem("prof_" + acct_id) icon: localStorage.getItem("prof_"+acct_id)
}; };
if (os == "darwin") { if(os=="darwin"){
var n = new Notification('TheDesk:' + domain, options); var n = new Notification('TheDesk:'+domain, options);
} else { }else{
var nativeNotfOpt=['TheDesk:' + domain, ct + lang.lang_notf_new, localStorage.getItem("prof_" + acct_id)] ipc.send('native-notf', ['TheDesk:'+domain,ct+lang.lang_notf_new,localStorage.getItem("prof_"+acct_id)]);
postMessage(["nativeNotf", nativeNotfOpt], "*")
} }
}
if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"notif");
}else{
var mute=[];
}
if(obj.type!="follow"){
if(misskey){
templete = templete+misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute);
}else{
templete = templete+parse([obj], 'notf', acct_id, 'notf', -1, mute);
} }
if (localStorage.getItem("filter_" + acct_id) != "undefined") { }else{
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "notif"); if(misskey){
} else { templete = templete+misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute);
var mute = []; }else{
templete = templete+userparse([obj.account], 'notf', acct_id, 'notf', -1);
} }
if (obj.type != "follow") {
if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute);
} else {
templete = templete + parse([obj], 'notf', acct_id, 'notf', -1, mute);
}
} else {
if (misskey) {
templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute);
} else {
templete = templete + userparse([obj.account], 'notf', acct_id, 'notf', -1);
}
} }
}); });
$("div[data-notf=" + acct_id + "]").html(templete); $("div[data-notf=" + acct_id +"]").html(templete);
$("#landing_" + tlid).hide(); $("#landing_" + tlid).hide();
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
} }
$("#notf-box").addClass("fetched"); $("#notf-box").addClass("fetched");
todc(); todc();
notfWS(misskey, acct_id, tlid, domain, at)
}); });
if(!misskey){
} if(localStorage.getItem("streaming_" + acct_id)){
function notfWS(misskey, acct_id, tlid, domain, at) { var wss=localStorage.getItem("streaming_" + acct_id)
if (!misskey) { }else{
if (localStorage.getItem("streaming_" + acct_id)) { var wss="wss://"+domain
var wss = localStorage.getItem("streaming_" + acct_id)
} else {
var wss = "wss://" + domain
} }
var start = wss + "/api/v1/streaming/?stream=user&access_token=" + var start = wss + "/api/v1/streaming/?stream=user&access_token=" +
at; at;
}else{
var start = "wss://" + domain + "/?i=" +
at;
}
var wsid = websocketNotf.length; console.log(start);
websocketNotf[acct_id] = new WebSocket(start); var wsid = websocketNotf.length;
websocketNotf[acct_id].onopen = function (mess) { websocketNotf[acct_id] = new WebSocket(start);
console.table({ "acct_id": acct_id, "type": "Connect Streaming API(Notf)", "domain": domain, "message": [mess] }) console.log(websocketNotf);
$("i[data-notf=" + acct_id + "]").removeClass("red-text"); websocketNotf[acct_id].onopen = function(mess) {
console.log("Connect Streaming API(Notf):");
console.log(mess);
$("i[data-notf=" + acct_id +"]").removeClass("red-text");
} }
websocketNotf[acct_id].onmessage = function (mess) { websocketNotf[acct_id].onmessage = function(mess) {
//console.log(["Receive Streaming API(Notf):" + acct_id + "(" + domain + ")", JSON.parse(JSON.parse(mess.data).payload)]); console.log("Receive Streaming API(Notf):"+acct_id);
var popup = localStorage.getItem("popup"); var popup = localStorage.getItem("popup");
if (!popup) { if (!popup) {
popup = 0; popup = 0;
} }
var obj = JSON.parse(JSON.parse(mess.data).payload); console.log(domain)
var type = JSON.parse(mess.data).event; if(misskey){
if (type == "notification") { console.log("misskey")
var templete = ""; console.log(JSON.parse(mess.data));
localStorage.setItem("lastnotf_" + acct_id, obj.id); if (JSON.parse(mess.data).type == "notification") {
if (obj.type != "follow") { var obj = JSON.parse(mess.data).body;
templete = parse([obj], 'notf', acct_id, 'notf', popup); console.log(obj);
} else { if(obj.type!="follow"){
templete = userparse([obj], 'notf', acct_id, 'notf', popup);
templete = misskeyParse([obj], 'notf', acct_id, 'notf', popup);
}else{
templete = misskeyUserparse([obj], 'notf', acct_id, 'notf', popup);
} }
if (!$("div[data-notfIndv=" + acct_id + "_" + obj.id + "]").length) { if(obj.type=="reaction"){
$("div[data-notf=" + acct_id + "]").prepend(templete); console.log("refresh")
$("div[data-const=notf_" + acct_id + "]").prepend(templete); reactRefresh(acct_id,obj.note.id)
}
if(!$("div[data-notfIndv=" + acct_id +"_"+obj.id+"]").length){
$("div[data-notf=" + acct_id +"]").prepend(templete);
$("div[data-const=notf_"+acct_id+"]").prepend(templete);
} }
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
} else if (type == "delete") { }else if(JSON.parse(mess.data).type == "note-updated"){
$("[toot-id=" + obj + "]").hide(); var obj = JSON.parse(mess.data).body.note;
$("[toot-id=" + obj + "]").remove(); reactRefreshCore(obj)
} }
}else{
var obj = JSON.parse(JSON.parse(mess.data).payload);
console.log(obj);
var type = JSON.parse(mess.data).event;
if (type == "notification") {
var templete="";
localStorage.setItem("lastnotf_" + acct_id,obj.id);
if(obj.type!="follow"){
templete = parse([obj], 'notf', acct_id, 'notf', popup);
}else{
templete = userparse([obj], 'notf', acct_id, 'notf', popup);
}
if(!$("div[data-notfIndv=" + acct_id +"_"+obj.id+"]").length){
$("div[data-notf=" + acct_id +"]").prepend(templete);
$("div[data-const=notf_"+acct_id+"]").prepend(templete);
}
jQuery("time.timeago").timeago();
} else if (type == "delete") {
$("[toot-id=" + obj + "]").hide();
$("[toot-id=" + obj + "]").remove();
}
} }
websocketNotf[acct_id].onerror = function (error) {
console.error('WebSocket Error ' + error);
notfWS(misskey, acct_id, tlid, domain, at)
};
} }
websocketNotf[acct_id].onerror = function(error) {
console.error('WebSocket Error ' + error);
};
} }
//一定のスクロールで発火 //一定のスクロールで発火
function notfmore(tlid) { function notfmore(tlid) {
console.log({ "status": "kicked", "status": moreloading }); console.log(moreloading);
console.log("kicked");
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;
if (!type) { if (!type) {
var type = obj[tlid].type; var type = obj[tlid].type;
} else { }else{
var data; var data;
} }
var sid = $("#timeline_" + tlid + " .notif-marker").last().attr("data-maxid"); var sid = $("#timeline_" + tlid + " .notif-marker").last().attr("data-maxid");
var at = localStorage.getItem("acct_" + acct_id + "_at"); var at = localStorage.getItem("acct_"+ acct_id + "_at");
var domain = localStorage.getItem("domain_" + acct_id); var domain = localStorage.getItem("domain_" + acct_id);
if (sid && !moreloading) { if (sid && !moreloading) {
moreloading = true; moreloading=true;
var httpreq = new XMLHttpRequest(); var httpreq = new XMLHttpRequest();
if (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
var misskey = true; var misskey=true;
var start = "https://" + domain + "/api/i/notifications"; var start = "https://" + domain + "/api/i/notifications";
httpreq.open(POST, start, true); httpreq.open(POST, start, true);
httpreq.setRequestHeader('Content-Type', 'application/json'); httpreq.setRequestHeader('Content-Type', 'application/json');
var body = JSON.stringify({ var body=JSON.stringify({
i: at, i:at,
untilID: sid untilID:sid
}); });
} else { }else{
var misskey = false; var misskey=false;
if (localStorage.getItem("exclude-" + tlid)) { if(localStorage.getItem("exclude-"+tlid)){
var exc = localStorage.getItem("exclude-" + tlid) + "&max_id=" + sid; var exc=localStorage.getItem("exclude-"+tlid)+"&max_id="+sid;
} else { }else{
var exc = "?max_id=" + sid; var exc="?max_id="+sid;
}
var start = "https://" + domain + "/api/v1/notifications" + exc;
httpreq.open("GET", start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
var body = "";
} }
var start = "https://" + domain + "/api/v1/notifications"+exc;
httpreq.open("GET", start, true);
httpreq.setRequestHeader('Content-Type', 'application/json');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
var body="";
}
httpreq.responseType = "json"; httpreq.responseType = "json";
httpreq.send(body); httpreq.send(body);
httpreq.onreadystatechange = function () { httpreq.onreadystatechange = function() {
if (httpreq.readyState === 4) { if (httpreq.readyState === 4) {
var json = httpreq.response; var json = httpreq.response;
console.log(["More notifications on " + tlid, json]); console.log(json);
var max_id = httpreq.getResponseHeader("link").match(/[?&]{1}max_id=([0-9]+)/)[1]; var max_id = httpreq.getResponseHeader("link").match(/[?&]{1}max_id=([0-9]+)/)[1];
if (json[0]) { if(json[0]){
var templete = ""; var templete="";
var lastnotf = localStorage.getItem("lastnotf_" + acct_id); var lastnotf=localStorage.getItem("lastnotf_" + acct_id);
localStorage.setItem("lastnotf_" + acct_id, json[0].id); localStorage.setItem("lastnotf_" + acct_id,json[0].id);
Object.keys(json).forEach(function (key) { Object.keys(json).forEach(function(key) {
var obj = json[key]; var obj = json[key];
if (localStorage.getItem("filter_" + acct_id) != "undefined") { if(localStorage.getItem("filter_"+ acct_id)!="undefined"){
var mute = getFilterType(JSON.parse(localStorage.getItem("filter_" + acct_id)), "notif"); var mute=getFilterType(JSON.parse(localStorage.getItem("filter_"+ acct_id)),"notif");
} else { }else{
var mute = []; var mute=[];
}
if(obj.type!="follow"){
if(misskey){
templete = templete+misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute);
}else{
templete = templete+parse([obj], 'notf', acct_id, 'notf', -1, mute);
}
}else{
if(misskey){
templete = templete+misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute);
}else{
templete = templete+userparse([obj.account], 'notf', acct_id, 'notf', -1);
} }
if (obj.type != "follow") {
if (misskey) {
templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute);
} else {
templete = templete + parse([obj], 'notf', acct_id, 'notf', -1, mute);
}
} else {
if (misskey) {
templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute);
} else {
templete = templete + userparse([obj.account], 'notf', acct_id, 'notf', -1);
}
} }
}); });
moreloading = false; moreloading=false;
templete = templete + '<div class="hide notif-marker" data-maxid="' + max_id + '"></div>'; templete=templete+'<div class="hide notif-marker" data-maxid="'+max_id+'"></div>';
$("#timeline_" + tlid).append(templete); $("#timeline_" + tlid).append(templete);
$("#landing_" + tlid).hide(); $("#landing_" + tlid).hide();
jQuery("time.timeago").timeago(); jQuery("time.timeago").timeago();
} }
$("#notf-box").addClass("fetched"); $("#notf-box").addClass("fetched");
todc(); todc();
}
} }
} }
} }
}
//通知トグルボタン //通知トグルボタン
function notfToggle(acct, tlid) { function notfToggle(acct, tlid) {
if ($("#notf-box_" + tlid).hasClass("column-hide")) { if($("#notf-box_" + tlid).hasClass("column-hide")){
$("#notf-box_" + tlid).css("display", "block") $("#notf-box_" + tlid).css("display","block")
$("#notf-box_" + tlid).animate({ $("#notf-box_" + tlid).animate({
'height': '400px' 'height': '400px'
}, { },{
'duration': 300, 'duration': 300,
'complete': function () { 'complete': function(){
$("#notf-box_" + tlid).css("overflow-y", "scroll") $("#notf-box_" + tlid).css("overflow-y","scroll")
$("#notf-box_" + tlid).removeClass("column-hide") $("#notf-box_" + tlid).removeClass("column-hide")
} }
}); });
} else { }else{
$("#notf-box_" + tlid).css("overflow-y", "hidden") $("#notf-box_" + tlid).css("overflow-y","hidden")
$("#notf-box_" + tlid).animate({ $("#notf-box_" + tlid).animate({
'height': '0' 'height': '0'
}, { },{
'duration': 300, 'duration': 300,
'complete': function () { 'complete': function(){
$("#notf-box_" + tlid).addClass("column-hide") $("#notf-box_" + tlid).addClass("column-hide")
$("#notf-box_" + tlid).css("display", "none") $("#notf-box_" + tlid).css("display","none")
} }
}); });
} }
notfCanceler(acct) notfCanceler(acct)
} }
function notfCanceler(acct) { function notfCanceler(acct){
$(".notf-reply_" + acct).text(0); $(".notf-reply_" + acct).text(0);
localStorage.removeItem("notf-reply_" + acct) localStorage.removeItem("notf-reply_" + acct)
$(".notf-reply_" + acct).addClass("hide"); $(".notf-reply_" + acct).addClass("hide");
@@ -383,13 +414,15 @@ function notfCanceler(acct) {
$(".notf-follow_" + acct).addClass("hide"); $(".notf-follow_" + acct).addClass("hide");
$(".notf-icon_" + acct).removeClass("red-text"); $(".notf-icon_" + acct).removeClass("red-text");
} }
function allNotfRead() { function allNotfRead(){
console.log(localStorage.getItem("notf-fav_2"));
var multi = localStorage.getItem("multi"); var multi = localStorage.getItem("multi");
if (multi) { if (multi) {
var obj = JSON.parse(multi); var obj = JSON.parse(multi);
Object.keys(obj).forEach(function (key) { Object.keys(obj).forEach(function(key) {
notfCanceler(key) console.log(key);
}); notfCanceler(key)
} });
}
} }
allNotfRead() allNotfRead()

File diff suppressed because it is too large Load Diff

View File

@@ -1,33 +1,17 @@
//アンケートのトグル //アンケートのトグル
function pollToggle() { function pollToggle() {
if ($("#poll").hasClass("hide")) { if ($("#poll").hasClass("hide")) {
$("#right-side").show() $("#right-side").show()
$("#right-side").css("width", "300px") $("#poll").removeClass("hide")
$("#left-side").css("width", "calc(100% - 300px)") } else {
var width = localStorage.getItem("postbox-width").replace("px", "") * 1 + 300;
if (!width) {
width = 600
}
$("#post-box").css("width", width + "px")
$("#poll").removeClass("hide")
$("#pollsta").text(lang.lang_yesno)
} else {
$("#right-side").hide() $("#right-side").hide()
$("#left-side").css("width", "100%")
$("#right-side").css("width", "300px")
var width = localStorage.getItem("postbox-width").replace("px", "") * 1;
if (!width) {
width = 300
}
$("#post-box").css("width", width + "px")
$("#emoji").addClass("hide") $("#emoji").addClass("hide")
$("#poll").addClass("hide") $("#poll").addClass("hide")
$("#pollsta").text(lang.lang_no) }
}
} }
function pollProviderCk() { function pollProviderCk(){
$(".poll-provider").addClass("hide"); $(".poll-provider").addClass("hide");
$("#" + $("#poll-sel").val()).removeClass("hide"); $("#"+$("#poll-sel").val()).removeClass("hide");
} }
/* /*
function pollAddtime(num){ function pollAddtime(num){
@@ -37,99 +21,99 @@ function pollAddtime(num){
pollCalc(); pollCalc();
} }
*/ */
function pollCalc() { function pollCalc(){
var days = $("#days_poll").val(); var days=$("#days_poll").val();
var hrs = $("#hours_poll").val(); var hrs=$("#hours_poll").val();
var mins = $("#mins_poll").val(); var mins=$("#mins_poll").val();
console.log("Poll calc:" + days * 86400 + hrs * 3600 + mins * 60) console.log(days*86400+hrs*3600+mins*60)
return days * 86400 + hrs * 3600 + mins * 60; return days*86400+hrs*3600+mins*60;
} }
//Vote //Vote
function voteSelMastodon(acct_id, id, to, mul) { function voteSelMastodon(acct_id,id,to,mul){
if ($('.vote_' + acct_id + '_' + id + '_' + to).hasClass("sel")) { console.log('.vote_'+acct_id+'_'+id+'_'+to);
$('.vote_' + acct_id + '_' + id + '_' + to).css("background-color", "transparent") if($('.vote_'+acct_id+'_'+id+'_'+to).hasClass("sel")){
$('.vote_' + acct_id + '_' + id + '_' + to).removeClass("sel"); $('.vote_'+acct_id+'_'+id+'_'+to).css("background-color","transparent")
} else { $('.vote_'+acct_id+'_'+id+'_'+to).removeClass("sel");
if (!mul) { }else{
$('.vote_' + acct_id + '_' + id + ' div').each(function (i, elem) { if(!mul){
if (i == to) { $('.vote_'+acct_id+'_'+id+' div' ).each(function(i, elem) {
$(this).css("background-color", "var(--emphasized)"); if(i==to){
$(this).css("background-color","var(--emphasized)");
$(this).addClass("sel"); $(this).addClass("sel");
} else { }else{
$(this).css("background-color", "transparent") $(this).css("background-color","transparent")
$(this).removeClass("sel"); $(this).removeClass("sel");
} }
}); });
} else { }else{
$('.vote_' + acct_id + '_' + id + '_' + to).css("background-color", "var(--emphasized)") $('.vote_'+acct_id+'_'+id+'_'+to).css("background-color","var(--emphasized)")
$('.vote_' + acct_id + '_' + id + '_' + to).addClass("sel"); $('.vote_'+acct_id+'_'+id+'_'+to).addClass("sel");
} }
} }
} }
function voteMastodon(acct_id, id) { function voteMastodon(acct_id,id){
var choice = []; var choice=[];
$('.vote_' + acct_id + '_' + id + ' 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+"");
} }
}); });
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/polls/" + id + "/votes"; var start = "https://" + domain + "/api/v1/polls/"+id+"/votes";
if (localStorage.getItem("mode_" + domain) == "misskey") { if(localStorage.getItem("mode_" + domain)=="misskey"){
return false; return false;
} }
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');
httpreq.setRequestHeader('Authorization', 'Bearer ' + at); httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
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) 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) { function voteMastodonrefresh(acct_id,id){
var datetype = localStorage.getItem("datetype"); var datetype = localStorage.getItem("datetype");
if (!datetype) { if (!datetype) {
datetype = "absolute"; datetype = "absolute";
} }
var httpreqd = new XMLHttpRequest(); var httpreqd = new XMLHttpRequest();
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/polls/" + id; var start = "https://" + domain + "/api/v1/polls/"+id;
httpreqd.open('GET', start, true); httpreqd.open('GET', start, true);
httpreqd.setRequestHeader('Content-Type', 'application/json'); httpreqd.setRequestHeader('Content-Type', 'application/json');
httpreqd.setRequestHeader('Authorization', 'Bearer ' + at);
httpreqd.responseType = 'json'; httpreqd.responseType = 'json';
httpreqd.send(); httpreqd.send(JSON.stringify({i:at,noteId:id}));
httpreqd.onreadystatechange = function () { httpreqd.onreadystatechange = function() {
if (httpreqd.readyState == 4) { if (httpreqd.readyState == 4) {
var json = httpreqd.response; var json = httpreqd.response;
console.log(["Refresh vote", json]); console.log(json);
if (!json) { if(!json){
return false; return false;
} }
var poll = ""; var poll="";
var choices = json.options; var choices=json.options;
var myvote = lang.lang_parse_voted; var myvote=lang.lang_parse_voted;
var result_hide = ""; var result_hide="";
Object.keys(choices).forEach(function (keyc) { Object.keys(choices).forEach(function(keyc) {
var choice = choices[keyc]; var choice = choices[keyc];
if (!json.voted) { if(!json.voted){
votesel = 'voteSelMastodon(\'' + acct_id + '\',\'' + json.id + '\',' + keyc + ',' + json.multiple + ')'; votesel='voteSelMastodon(\''+acct_id+'\',\''+json.id+'\','+keyc+','+json.multiple+')';
} }
poll = poll + '<div class="pointer vote vote_' + acct_id + '_' + json.id + '_' + keyc + '" onclick="' + votesel + '">' + escapeHTML(choice.title) + '<span class="vote_' + acct_id + '_' + json.id + '_result ' + result_hide + '">(' + choice.votes_count + ')</span></div>'; poll=poll+'<div class="pointer vote vote_'+acct_id+'_'+json.id+'_'+keyc+'" onclick="'+votesel+'">'+escapeHTML(choice.title)+'<span class="vote_'+acct_id+'_'+json.id+'_result '+result_hide+'">('+choice.votes_count+')</span></div>';
}); });
poll = poll + myvote + '<a onclick="voteMastodonrefresh(\'' + acct_id + '\',\'' + json.id + '\')" class="pointer">' + lang.lang_manager_refresh + '</a><span class="cbadge cbadge-hover" title="' + date(json.expires_at, 'absolute') + poll=poll+myvote+'<span class="cbadge cbadge-hover" title="' + date(json.expires_at, 'absolute') +
'"><i class="far fa-calendar-times"></i>' + '"><i class="far fa-calendar-times"></i>' +
date(json.expires_at, datetype) + '</span>'; date(json.expires_at, datetype) + '</span>';
$('.vote_' + acct_id + '_' + json.id).html(poll) $('.vote_'+acct_id+'_'+json.id).html(poll)
} }
} }
} }

View File

@@ -1,38 +1,39 @@
$voise = null; $voise = null;
$voiseName = lang.lang_speech; $voiseName = lang.lang_speech;
$voices = speechSynthesis.getVoices(); $voices = speechSynthesis.getVoices();
$synthes = new SpeechSynthesisUtterance(); $synthes = new SpeechSynthesisUtterance();
$voise = $.grep($voices, function (n, i) { return n.name == $voiseName })[0]; $voise = $.grep($voices, function(n, i){return n.name == $voiseName})[0];
$synthes.voice = $voise; // 音声の設定 $synthes.voice = $voise; // 音声の設定
localStorage.removeItem("voicebank"); localStorage.removeItem("voicebank");
speechSynthesis.cancel() speechSynthesis.cancel()
if (!localStorage.getItem("voice_vol")) { if(!localStorage.getItem("voice_vol")){
localStorage.setItem("voice_vol", 1) localStorage.setItem("voice_vol",1)
}
$synthes.rate = localStorage.getItem("voice_speed");
$synthes.pitch = localStorage.getItem("voice_pitch");
$synthes.volume = localStorage.getItem("voice_vol");
function say(msgr) {
msg = voiceParse(msgr);
var voice = localStorage.getItem("voicebank");
var obj = JSON.parse(voice);
if (!obj) {
var json = JSON.stringify([msg]);
localStorage.setItem("voicebank", json);
} else {
obj.push([msg]);
var json = JSON.stringify(obj);
localStorage.setItem("voicebank", json);
} }
$synthes.rate=localStorage.getItem("voice_speed");
$synthes.pitch=localStorage.getItem("voice_pitch");
$synthes.volume=localStorage.getItem("voice_vol");
function say(msgr){
msg=voiceParse(msgr);
var voice=localStorage.getItem("voicebank");
var obj = JSON.parse(voice);
if(!obj){
var json = JSON.stringify([msg]);
localStorage.setItem("voicebank", json);
}else{
obj.push([msg]);
var json = JSON.stringify(obj);
localStorage.setItem("voicebank", json);
}
} }
$repeat = setInterval(function () { $repeat = setInterval(function() {
if (!speechSynthesis.speaking) { if(!speechSynthesis.speaking){
var voice = localStorage.getItem("voicebank"); var voice=localStorage.getItem("voicebank");
if (voice) { if(voice){
var obj = JSON.parse(voice); var obj = JSON.parse(voice);
if (obj[0]) { if(obj[0]){
$synthes.text = obj[0]; $synthes.text = obj[0];
console.log($synthes);
speechSynthesis.speak($synthes); speechSynthesis.speak($synthes);
obj.splice(0, 1); obj.splice(0, 1);
var json = JSON.stringify(obj); var json = JSON.stringify(obj);
@@ -41,68 +42,68 @@ $repeat = setInterval(function () {
} }
} }
}, 300); }, 300);
function voiceParse(msg) { function voiceParse(msg){
msg = $.strip_tags(msg); msg = $.strip_tags(msg);
msg = msg.replace(/#/g, ""); msg = msg.replace(/#/g, "");
msg = msg.replace(/'/g, ""); msg = msg.replace(/'/g, "");
msg = msg.replace(/"/g, ""); msg = msg.replace(/"/g, "");
msg = msg.replace(/https?:\/\/[a-zA-Z0-9./-@_=?%&-]+/g, ""); msg = msg.replace(/https?:\/\/[a-zA-Z0-9./-@_=?%&-]+/g, "");
return msg; return msg;
} }
function voiceToggle(tlid) { function voiceToggle(tlid) {
var voiceck = localStorage.getItem("voice_" + tlid); var voiceck = localStorage.getItem("voice_" + tlid);
if (voiceck) { if (voiceck) {
localStorage.removeItem("voice_" + tlid); localStorage.removeItem("voice_" + tlid);
speechSynthesis.cancel() speechSynthesis.cancel()
$("#sta-voice-" + tlid).text("Off"); $("#sta-voice-" + tlid).text("Off");
$("#sta-voice-" + tlid).css("color", 'red'); $("#sta-voice-" + tlid).css("color",'red');
parseColumn(tlid); parseColumn();
} else { } else {
localStorage.setItem("voice_" + tlid, "true"); localStorage.setItem("voice_" + tlid, "true");
$("#sta-voice-" + tlid).text("On"); $("#sta-voice-" + tlid).text("On");
$("#sta-voice-" + tlid).css("color", '#009688'); $("#sta-voice-" + tlid).css("color",'#009688');
parseColumn(tlid); parseColumn();
} }
} }
function voiceCheck(tlid) { function voiceCheck(tlid) {
var voiceck = localStorage.getItem("voice_" + tlid); var voiceck = localStorage.getItem("voice_" + tlid);
if (voiceck) { if (voiceck) {
$("#sta-voice-" + tlid).text("On"); $("#sta-voice-" + tlid).text("On");
$("#sta-voice-" + tlid).css("color", '#009688'); $("#sta-voice-" + tlid).css("color",'#009688');
} else { } else {
$("#sta-voice-" + tlid).text("Off"); $("#sta-voice-" + tlid).text("Off");
$("#sta-voice-" + tlid).css("color", 'red'); $("#sta-voice-" + tlid).css("color",'red');
} }
} }
function voicePlay() { function voicePlay(){
if (speechSynthesis.speaking) { if(speechSynthesis.speaking){
speechSynthesis.cancel() speechSynthesis.cancel()
} else { }else{
$synthes.text = $("#voicetxt").val(); $synthes.text = $("#voicetxt").val();
$synthes.rate = $("#voicespeed").val() / 10; $synthes.rate = $("#voicespeed").val()/10;
$synthes.pitch = $("#voicepitch").val() / 50; $synthes.pitch = $("#voicepitch").val()/50;
$synthes.volume = $("#voicevol").val() / 100; $synthes.volume = $("#voicevol").val()/100;
speechSynthesis.speak($synthes); speechSynthesis.speak($synthes);
} }
} }
function voiceSettings() { function voiceSettings(){
localStorage.setItem("voice_speed", $("#voicespeed").val() / 10); localStorage.setItem("voice_speed", $("#voicespeed").val()/10);
localStorage.setItem("voice_pitch", $("#voicepitch").val() / 50); localStorage.setItem("voice_pitch", $("#voicepitch").val()/50);
localStorage.setItem("voice_vol", $("#voicevol").val() / 100); localStorage.setItem("voice_vol", $("#voicevol").val()/100);
M.toast({ html: lang.lang_speech_refresh, displayLength: 3000 }) Materialize.toast(lang.lang_speech_refresh, 3000);
} }
function voiceSettingLoad() { function voiceSettingLoad(){
var speed = localStorage.getItem("voice_speed"); var speed=localStorage.getItem("voice_speed");
var pitch = localStorage.getItem("voice_pitch"); var pitch=localStorage.getItem("voice_pitch");
var vol = localStorage.getItem("voice_vol"); var vol=localStorage.getItem("voice_vol");
if (speed) { if(speed){
$("#voicespeed").val(speed * 10); $("#voicespeed").val(speed*10);
} }
if (pitch) { if(pitch){
$("#voicepitch").val(pitch * 50); $("#voicepitch").val(pitch*50);
} }
if (vol) { if(vol){
$("#voicevol").val(vol * 100); $("#voicevol").val(vol*100);
} }
} }

View File

@@ -1,220 +1,36 @@
//検索 //検索
//検索ボックストグル //検索ボックストグル
function searchMenu() { function searchMenu() {
$("#src-contents").html("");
trend();
$("#left-menu div").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");
//$('ul.tabs').tabs('select_tab', 'src-sta'); $('ul.tabs').tabs('select_tab', 'src-sta');
$("#src-contents").html("");
} }
//検索取得 //検索取得
function src(mode, offset) { function src(mode) {
if(!offset){ $("#src-contents").html("");
$("#src-contents").html("");
var add = ""
}else{
var add = "&type=accounts&offset=" + $("#src-accts .cvo").length
}
var q = $("#src").val(); var q = $("#src").val();
var acct_id = $("#src-acct-sel").val(); var acct_id = $("#src-acct-sel").val();
if (acct_id == "tootsearch") { if(acct_id=="tootsearch"){
tsAdd(q) tsAdd(q)
return false; return false;
} }
localStorage.setItem("last-use", acct_id); localStorage.setItem("last-use", 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 m = q.match(/^#(.+)$/); var m = q.match(/^#(.+)$/);
if (m) { q = m[1]; } if(m){q=m[1];}
if (user == "--now") { if (user == "--now") {
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?q=" + q + add var start = "https://" + domain + "/api/v2/search?q=" + q
} else { }else{
var start = "https://" + domain + "/api/v1/search?q=" + q var start = "https://" + domain + "/api/v1/search?q=" + q
} }
console.log("Try to search at " + start)
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + at
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
src("v1")
return false;
}).then(function (json) {
console.log(["Search", json]);
//ハッシュタグ
if (json.hashtags[0]) {
var tags = "";
Object.keys(json.hashtags).forEach(function (key4) {
var tag = json.hashtags[key4];
if (mode) {
tags = tags + '<a onclick="tl(\'tag\',\'' + tag + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag) + '</a><br> ';
} else {
tags = tags + graphDraw(tag, acct_id);
}
});
$("#src-contents").append("Tags<br>" + tags);
}
//トゥート
if (json.statuses[0]) {
var templete = parse(json.statuses, '', acct_id);
$("#src-contents").append("<br>Mentions<br>" + templete);
}
//アカウント
if (json.accounts[0]) {
var templete = userparse(json.accounts, '', acct_id);
if(!offset){
$("#src-contents").append("<br>Accounts<div id=\"src-accts\">" + templete + '</div><a onclick="src(false,\'more\')" class="pointer">more...</a>');
}else{
$("#src-accts").append(templete)
}
}
jQuery("time.timeago").timeago();
});
}
function tsAdd(q) {
var add = {
domain: acct_id,
type: "tootsearch",
data: q
};
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
localStorage.setItem("card_" + obj.length, "true");
obj.push(add);
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
parseColumn('add');
}
function tootsearch(tlid, q) {
var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q
console.log("Toot srrach at " + start)
$("#notice_" + tlid).text("tootsearch(" + q + ")");
$("#notice_icon_" + tlid).text("search");
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (raw) {
var templete = "";
var json = raw.hits.hits;
var max_id = raw["hits"].length;
for (var i = 0; i < json.length; i++) {
var toot = json[i]["_source"];
if (lastid != toot.uri) {
if (toot && toot.account) {
templete = templete + parse([toot], "noauth", null, tlid, 0, [], "tootsearch")
}
}
var lastid = toot.uri;
}
if (!templete) {
templete = lang.lang_details_nodata;
} else {
templete = templete + '<div class="hide ts-marker" data-maxid="' + max_id + '"></div>';
}
$("#timeline_" + tlid).html(templete);
jQuery("time.timeago").timeago();
});
}
function moreTs(tlid, q) {
var sid = $("#timeline_" + tlid + " .ts-marker").last().attr("data-maxid");
moreloading = true;
var start = "https://tootsearch.chotto.moe/api/v1/search?from=" + sid + "&sort=created_at%3Adesc&q=" + q
$("#notice_" + tlid).text("tootsearch(" + q + ")");
$("#notice_icon_" + tlid).text("search");
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function (response) {
return response.json();
}).catch(function (error) {
todo(error);
console.error(error);
}).then(function (raw) {
var templete = "";
var json = raw.hits.hits;
var max_id = raw["hits"].length;
for (var i = 0; i < json.length; i++) {
var toot = json[i]["_source"];
if (lastid != toot.uri) {
if (toot && toot.account) {
templete = templete + parse([toot], "noauth", null, tlid, 0, [], "tootsearch")
}
}
var lastid = toot.uri;
}
if (!templete) {
templete = lang.lang_details_nodata;
} else {
templete = templete + '<div class="hide ts-marker" data-maxid="' + max_id + '"></div>';
}
$("#timeline_" + tlid).append(templete);
jQuery("time.timeago").timeago();
});
}
function graphDraw(tag, acct_id) {
var tags = "";
var his = tag.history;
var max = Math.max.apply(null, [his[0].uses, his[1].uses, his[2].uses, his[3].uses, his[4].uses, his[5].uses, his[6].uses]);
var six = 50 - (his[6].uses / max * 50);
var five = 50 - (his[5].uses / max * 50);
var four = 50 - (his[4].uses / max * 50);
var three = 50 - (his[3].uses / max * 50);
var two = 50 - (his[2].uses / max * 50);
var one = 50 - (his[1].uses / max * 50);
var zero = 50 - (his[0].uses / max * 50);
if (max === 0) {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toot(s)&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
} else {
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">' +
'<g><path d="M0,' + six + ' L10,' + five + ' 20,' + four + ' 30,' + three + ' 40,' + two + ' 50,' + one + ' 60,' + zero + '" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>' +
'</svg><span style="font-size:200%">' + his[0].uses + '</span>toot&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;' + his[0].accounts + lang.lang_src_people;
}
return tags;
}
/*
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
<path d="M0,0 L10,0 20,10 20,50" fill="#3F51B5"></path>
</svg>
*/
function trend(){
console.log("get trend")
$("#src-contents").html("");
var acct_id = $("#src-acct-sel").val();
if(acct_id=="tootsearch"){
return false;
}
var domain = localStorage.getItem("domain_" + acct_id);
var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/trends"
console.log(start) console.log(start)
fetch(start, { fetch(start, {
method: 'GET', method: 'GET',
@@ -225,28 +41,164 @@ function trend(){
}).then(function(response) { }).then(function(response) {
return response.json(); return response.json();
}).catch(function(error) { }).catch(function(error) {
//todo(error); src("v1")
console.error(error); return false;
}).then(function(json) { }).then(function(json) {
var tags = ""; console.log(json);
Object.keys(json).forEach(function(keye) { //ハッシュタグ
var tag = json[keye]; if (json.hashtags[0]) {
var his=tag.history; var tags = "";
var max=Math.max.apply(null, [his[0].uses,his[1].uses,his[2].uses,his[3].uses,his[4].uses,his[5].uses,his[6].uses]); Object.keys(json.hashtags).forEach(function(key4) {
var six=50-(his[6].uses/max*50); var tag = json.hashtags[key4];
var five=50-(his[5].uses/max*50); if(mode){
var four=50-(his[4].uses/max*50); tags = tags + '<a onclick="tl(\'tag\',\'' + tag + '\',\'' + acct_id +
var three=50-(his[3].uses/max*50); '\',\'add\')" class="pointer">#' + escapeHTML(tag) + '</a><br> ';
var two=50-(his[2].uses/max*50); }else{
var one=50-(his[1].uses/max*50); tags=tags+graphDraw(tag);
var zero=50-(his[0].uses/max*50); }
tags = '<svg version="1.1" viewbox="0 0 60 50" width="60" height="50">'+
'<g><path d="M0,'+six+' L10,'+five+' 20,'+four+' 30,'+three+' 40,'+two+' 50,'+one+' 60,'+zero+'" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>'+
'</svg><span style="font-size:200%">'+his[0].uses+'</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + tag.name + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + tag.name + '</a>&nbsp;'+his[0].accounts+lang.lang_src_people+"<br><br>";
$("#src-contents").append(tags);
}); });
$("#src-contents").append("Tags<br>" + tags);
}
//トゥート
if (json.statuses[0]) {
var templete = parse(json.statuses,'',acct_id);
$("#src-contents").append("Mentions<br>" + templete);
}
//アカウント
if (json.accounts[0]) {
var templete = userparse(json.accounts,'',acct_id);
$("#src-contents").append("Accounts<br>" + templete);
}
jQuery("time.timeago").timeago();
}); });
} }
function tsAdd(q){
var add = {
domain: acct_id,
type: "tootsearch",
data: q
};
var multi = localStorage.getItem("column");
var obj = JSON.parse(multi);
localStorage.setItem("card_" + obj.length,"true");
obj.push(add);
console.log(obj);
var json = JSON.stringify(obj);
localStorage.setItem("column", json);
parseColumn();
}
function tootsearch(tlid,q){
var start = "https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=" + q
console.log(start)
$("#notice_" + tlid).text("tootsearch("+q+")");
$("#notice_icon_" + tlid).text("search");
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(raw) {
var templete="";
var json=raw.hits.hits;
console.log(json);
var max_id = raw["hits"].length;
for(var i=0;i<json.length;i++){
var toot = json[i]["_source"];
console.log(lastid)
if(lastid!=toot.uri){
console.log(toot);
if(toot && toot.account){
templete = templete+parse([toot], "noauth", null, tlid, 0, [], "tootsearch")
}
}
var lastid=toot.uri;
}
if(!templete){
templete=lang.lang_details_nodata;
}else{
templete=templete+'<div class="hide ts-marker" data-maxid="'+max_id+'"></div>';
}
$("#timeline_" + tlid).html(templete);
jQuery("time.timeago").timeago();
});
}
function moreTs(tlid,q){
var sid = $("#timeline_" + tlid + " .ts-marker").last().attr("data-maxid");
moreloading=true;
var start = "https://tootsearch.chotto.moe/api/v1/search?from="+sid+"&sort=created_at%3Adesc&q=" + q
console.log(start)
$("#notice_" + tlid).text("tootsearch("+q+")");
$("#notice_icon_" + tlid).text("search");
fetch(start, {
method: 'GET',
headers: {
'content-type': 'application/json'
},
}).then(function(response) {
return response.json();
}).catch(function(error) {
todo(error);
console.error(error);
}).then(function(raw) {
var templete="";
var json=raw.hits.hits;
console.log(json);
var max_id = raw["hits"].length;
for(var i=0;i<json.length;i++){
var toot = json[i]["_source"];
console.log(lastid)
if(lastid!=toot.uri){
console.log(toot);
if(toot && toot.account){
templete = templete+parse([toot], "noauth", null, tlid, 0, [], "tootsearch")
}
}
var lastid=toot.uri;
}
if(!templete){
templete=lang.lang_details_nodata;
}else{
templete=templete+'<div class="hide ts-marker" data-maxid="'+max_id+'"></div>';
}
$("#timeline_" + tlid).append(templete);
jQuery("time.timeago").timeago();
});
}
function graphDraw(tag){
var tags="";
var his=tag.history;
console.log(his);
var max=Math.max.apply(null, [his[0].uses,his[1].uses,his[2].uses,his[3].uses,his[4].uses,his[5].uses,his[6].uses]);
var six=50-(his[6].uses/max*50);
var five=50-(his[5].uses/max*50);
var four=50-(his[4].uses/max*50);
var three=50-(his[3].uses/max*50);
var two=50-(his[2].uses/max*50);
var one=50-(his[1].uses/max*50);
var zero=50-(his[0].uses/max*50);
if(max===0){
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">'+
'</svg><span style="font-size:200%">'+his[0].uses+'</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;'+his[0].accounts+lang.lang_src_people;
}else{
tags = '<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50">'+
'<g><path d="M0,'+six+' L10,'+five+' 20,'+four+' 30,'+three+' 40,'+two+' 50,'+one+' 60,'+zero+'" style="stroke: #9e9e9e; stroke-width: 1;fill: none;"></path></g>'+
'</svg><span style="font-size:200%">'+his[0].uses+'</span>toots&nbsp;<a onclick="tl(\'tag\',\'' + escapeHTML(tag.name) + '\',\'' + acct_id +
'\',\'add\')" class="pointer">#' + escapeHTML(tag.name) + '</a>&nbsp;'+his[0].accounts+lang.lang_src_people;
}
return tags;
}
/*
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
<path d="M0,0 L10,0 20,10 20,50" fill="#3F51B5"></path>
</svg>
*/

View File

@@ -1,35 +1,35 @@
//タグ表示 //タグ表示
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 == "tag") { if(mode=="tag"){
var acct_id = localStorage.getItem("main"); var acct_id=localStorage.getItem("main");
tl('tag', decodeURI(codex), acct_id, 'add'); tl('tag',decodeURI(codex),acct_id,'add');
} }
} }
//よく使うタグ //よく使うタグ
function tagShow(tag) { function tagShow(tag){
$("[data-tag=" + decodeURI(tag).toLowerCase() + "]").toggleClass("hide"); $("[data-tag="+decodeURI(tag)+"]").toggleClass("hide");
} }
//タグ追加 //タグ追加
function tagPin(tag) { function tagPin(tag){
var tags = localStorage.getItem("tag"); var tags = localStorage.getItem("tag");
if (!tags) { if(!tags){
var obj = []; var obj=[];
} else { }else{
var obj = JSON.parse(tags); var obj = JSON.parse(tags);
} }
var can; var can;
Object.keys(obj).forEach(function (key) { Object.keys(obj).forEach(function(key) {
var tagT = obj[key]; var tagT = obj[key];
if (tagT == tag) { if(tagT==tag){
can = true; can=true;
} else { }else{
can = false; can=false;
} }
}); });
if (!can) { if(!can){
obj.push(tag); obj.push(tag);
} }
var json = JSON.stringify(obj); var json = JSON.stringify(obj);
@@ -45,86 +45,87 @@ function tagRemove(key) {
localStorage.setItem("tag", json); localStorage.setItem("tag", json);
favTag(); favTag();
} }
function favTag() { function favTag(){
$("#taglist").html(""); $("#taglist").html("");
var tagarr = localStorage.getItem("tag"); var tagarr = localStorage.getItem("tag");
if (!tagarr) { if(!tagarr){
var obj = []; var obj=[];
} else { }else{
var obj = JSON.parse(tagarr); var obj = JSON.parse(tagarr);
} }
var tags = ""; var tags="";
var nowPT = localStorage.getItem("stable") var nowPT=localStorage.getItem("stable")
Object.keys(obj).forEach(function (key) { Object.keys(obj).forEach(function(key) {
var tag = obj[key]; var tag = obj[key];
if (nowPT != tag) { if(nowPT!=tag){
console.log("stable tags:" + nowPT + "/" + tag); console.log(nowPT+"/"+tag);
var ptt = lang.lang_tags_realtime; var ptt=lang.lang_tags_realtime;
var nowon = ""; var nowon="";
} else { }else{
var ptt = lang.lang_tags_unrealtime; var ptt=lang.lang_tags_unrealtime;
var nowon = "(" + lang.lang_tags_realtime + ")"; var nowon="("+lang.lang_tags_realtime+")";
} }
tag = escapeHTML(tag); tag=escapeHTML(tag);
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a>' + nowon + '<span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="' + lang.lang_parse_tagTL.replace("{{tag}}", '#' + tag) + '">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", '#' + tag) + '">Toot</a> ' + tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a>'+nowon+'<span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="' +lang.lang_parse_tagTL.replace("{{tag}}" ,'#'+tag)+ '">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}" ,'#'+tag) + '">Toot</a> '+
'<a onclick="autoToot(\'' + tag + '\');" class="pointer" title="' + lang.lang_tags_always + lang.lang_parse_tagtoot.replace("{{tag}}", '#' + tag) + '">' + ptt + '</a> <a onclick="tagRemove(\'' + key + '\')" class="pointer" title="' + lang.lang_tags_tagunpin.replace("{{tag}}", '#' + tag) + '">' + lang.lang_del + '</a></span> '; '<a onclick="autoToot(\'' + tag + '\');" class="pointer" title="'+lang.lang_tags_always + lang.lang_parse_tagtoot.replace("{{tag}}" ,'#'+tag) + '">'+ptt+'</a> <a onclick="tagRemove(\'' + key + '\')" class="pointer" title="' +lang.lang_tags_tagunpin.replace("{{tag}}" ,'#'+tag)+ '">'+lang.lang_del+'</a></span> ';
}); });
if (obj.length > 0) { if(obj.length>0){
$("#taglist").append("My Tags:" + tags); $("#taglist").append("My Tags:" + tags);
} else { }else{
$("#taglist").append(""); $("#taglist").append("");
} }
} }
function trendTag() { function trendTag(){
$(".trendtag").remove(); $(".trendtag").remove();
var domain = "imastodon.net" var domain="imastodon.net"
var at = localStorage.getItem("acct_" + acct_id + "_at"); var at = localStorage.getItem("acct_"+ acct_id + "_at");
var start = "https://" + domain + "/api/v1/trend_tags" var start = "https://" + domain + "/api/v1/trend_tags"
fetch(start, { console.log(start)
method: 'GET', fetch(start, {
headers: { method: 'GET',
'content-type': 'application/json', headers: {
'Authorization': 'Bearer ' + at 'content-type': 'application/json',
}, 'Authorization': 'Bearer ' + at
}).then(function (response) { },
return response.json(); }).then(function(response) {
}).catch(function (error) { return response.json();
todo(error); }).catch(function(error) {
console.error(error); todo(error);
}).then(function (json) { console.error(error);
if (json) { }).then(function(json) {
var tags = ""; if (json) {
json = json.score; var tags="";
Object.keys(json).forEach(function (tag) { json=json.score;
tag = escapeHTML(tag); Object.keys(json).forEach(function(tag) {
tag=escapeHTML(tag);
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span> '; tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span> ';
}); });
$("#taglist").append('<div class="trendtag">アイマストドントレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' + tags + '</div>'); $("#taglist").append('<div class="trendtag">アイマストドントレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' + tags+'</div>');
trendintervalset() trendintervalset()
} else { }else{
$("#taglist").html(""); $("#taglist").html("");
} }
}); });
} }
function trendintervalset() { function trendintervalset(){
setTimeout(trendTag, 6000000); setTimeout(trendTag, 6000000);
} }
function tagTL(a, b, c, d) { function tagTL(a,b,c,d){
var acct_id = $("#post-acct-sel").val(); var acct_id = $("#post-acct-sel").val();
tl(a, b, acct_id, d); tl(a,b,acct_id,d);
} }
function autoToot(tag) { function autoToot(tag){
tag = escapeHTML(tag) tag=escapeHTML(tag)
var nowPT = localStorage.getItem("stable") var nowPT=localStorage.getItem("stable")
if (nowPT == tag) { if(nowPT==tag){
localStorage.removeItem("stable"); localStorage.removeItem("stable");
M.toast({ html: lang.lang_tags_unrealtime, displayLength: 3000 }) Materialize.toast(lang.lang_tags_unrealtime,3000);
} else { }else{
localStorage.setItem("stable", tag); localStorage.setItem("stable",tag);
M.toast({ html: lang.lang_tags_tagwarn.replace("{{tag}}", tag).replace("{{tag}}", tag), displayLength: 3000 }) Materialize.toast(lang.lang_tags_tagwarn.replace("{{tag}}" ,tag).replace("{{tag}}" ,tag),3000);
brInsert('#' + tag + " ") brInsert('#' + tag+" ")
} }
favTag(); favTag();
} }

File diff suppressed because it is too large Load Diff

View File

@@ -6,25 +6,25 @@ function imgv(id, key, acct_id) {
$('#imgmodal').attr('src', '../../img/loading.svg'); $('#imgmodal').attr('src', '../../img/loading.svg');
var murl = $("#" + id + "-image-" + key).attr("data-url"); var murl = $("#" + id + "-image-" + key).attr("data-url");
var type = $("#" + id + "-image-" + key).attr("data-type"); var type = $("#" + id + "-image-" + key).attr("data-type");
$("#imagemodal").attr("data-id", id); $("#imagemodal").attr("data-id",id);
$("#imagemodal").attr("data-acct", acct_id); $("#imagemodal").attr("data-acct",acct_id);
$(document).ready(function () { $(document).ready(function() {
if (type == "image") { if (type == "image") {
$('#imagemodal').modal('open'); $('#imagemodal').modal('open');
xhr = new XMLHttpRequest; xhr = new XMLHttpRequest;
xhr.open('GET', murl, true); xhr.open('GET', murl, true);
xhr.addEventListener('progress', function (event) { xhr.addEventListener('progress', function (event) {
if (event.lengthComputable) { if (event.lengthComputable) {
var total = event.total; var total=event.total;
var now = event.loaded; var now=event.loaded;
var per = now / total * 100; var per=now/total*100;
$("#imgprog").text(Math.floor(per)); $("#imgprog").text(Math.floor(per));
} }
}, false); }, false);
xhr.addEventListener('loadend', function (event) { xhr.addEventListener('loadend', function (event) {
var total = event.total; var total=event.total;
var now = event.loaded; var now=event.loaded;
var per = now / total * 100; var per=now/total*100;
$("#imgprog").text(Math.floor(per)); $("#imgprog").text(Math.floor(per));
}, false); }, false);
xhr.send(); xhr.send();
@@ -40,35 +40,36 @@ function imgv(id, key, acct_id) {
} }
var element = new Image(); var element = new Image();
var width; var width;
element.onload = function () { element.onload = function() {
var width = element.naturalWidth; var width = element.naturalWidth;
var height = element.naturalHeight; var height = element.naturalHeight;
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 + 60 + "px") $("#imagemodal").css("height",height+60+"px")
$("#imagemodal img").css("height", "100%") $("#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", "100%") $("#imagemodal img").css("width","100%")
var heightS = windowW * 0.8 / width * height; var heightS=windowW*0.8/width*height;
$("#imagemodal").css("height", heightS + 60 + "px") $("#imagemodal").css("height",heightS+60+"px")
} else { }else{
$("#imagemodal").css("width", width + "px") $("#imagemodal").css("width",width+"px")
} }
} else { }else{
$("#imagemodal img").css("width", "auto") console.log("long")
var widthS = windowH / height * width; $("#imagemodal img").css("width","auto")
if (widthS < windowW) { var widthS=windowH/height*width;
$("#imagemodal").css("width", widthS + "px") if(widthS<windowW){
} else { $("#imagemodal").css("width",widthS+"px")
$("#imagemodal").css("width", "100vw") }else{
$("#imagemodal").css("width","100vw")
} }
$("#imagemodal").css("height", "100vh") $("#imagemodal").css("height","100vh")
$("#imagemodal img").css("height", "calc(100vh - 60px)") $("#imagemodal img").css("height","calc(100vh - 60px)")
} }
} }
@@ -96,99 +97,101 @@ function imgCont(type) {
key = key * 1 - 1; key = key * 1 - 1;
} }
var murl = $("#" + id + "-image-" + key).attr("data-url"); var murl = $("#" + id + "-image-" + key).attr("data-url");
if (murl) { if(murl){
$('#imgmodal').attr('src', '../../img/loading.svg'); $('#imgmodal').attr('src', '../../img/loading.svg');
var type = $("#" + id + "-image-" + key).attr("data-type"); var type = $("#" + id + "-image-" + key).attr("data-type");
$(document).ready(function () { $(document).ready(function() {
if (type == "image") { if (type == "image") {
xhr = new XMLHttpRequest; xhr = new XMLHttpRequest;
xhr.open('GET', murl, true); xhr.open('GET', murl, true);
xhr.responseType = "arraybuffer"; xhr.responseType = "arraybuffer";
xhr.addEventListener('progress', function (event) { xhr.addEventListener('progress', function (event) {
if (event.lengthComputable) { if (event.lengthComputable) {
var total = event.total; var total=event.total;
var now = event.loaded; var now=event.loaded;
var per = now / total * 100; var per=now/total*100;
$("#imgprog").text(Math.floor(per)); $("#imgprog").text(Math.floor(per));
} }
}, false); }, false);
xhr.addEventListener('loadend', function (event) { xhr.addEventListener('loadend', function (event) {
var total = event.total; var total=event.total;
var now = event.loaded; var now=event.loaded;
var per = now / total * 100; var per=now/total*100;
$("#imgprog").text(Math.floor(per)); $("#imgprog").text(Math.floor(per));
}, false); }, false);
xhr.send(); xhr.send();
$('#imgmodal').attr('src', murl); $('#imgmodal').attr('src', murl);
$('#imagewrap').dragScroll(); // ドラッグスクロール設定 $('#imagewrap').dragScroll(); // ドラッグスクロール設定
$('#imagemodal').attr('data-key', key); $('#imagemodal').attr('data-key', key);
$('#imagemodal').attr('data-id', id); $('#imagemodal').attr('data-id', id);
} else if (type == "video" || type == "gifv") { } else if (type == "video" || type == "gifv") {
$('#video').attr('src', murl); $('#video').attr('src', murl);
$('#videomodal').modal('open'); $('#videomodal').modal('open');
} }
var element = new Image(); var element = new Image();
var width; var width;
element.onload = function () { element.onload = function() {
var width = element.naturalWidth; var width = element.naturalWidth;
var height = element.naturalHeight; var height = element.naturalHeight;
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 + 60 + "px") $("#imagemodal").css("height",height+60+"px")
$("#imagemodal img").css("height", "100%") $("#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", "100%") $("#imagemodal img").css("width","100%")
var heightS = windowW * 0.8 / width * height; var heightS=windowW*0.8/width*height;
$("#imagemodal").css("height", heightS + 60 + "px") $("#imagemodal").css("height",heightS+60+"px")
} else { }else{
$("#imagemodal").css("width", width + "px") $("#imagemodal").css("width",width+"px")
} }
} else { }else{
$("#imagemodal img").css("width", "auto") console.log("long")
var widthS = windowH / height * width; $("#imagemodal img").css("width","auto")
if (widthS < windowW) { var widthS=windowH/height*width;
$("#imagemodal").css("width", widthS + "px") if(widthS<windowW){
} else { $("#imagemodal").css("width",widthS+"px")
$("#imagemodal").css("width", "100vw") }else{
} $("#imagemodal").css("width","100vw")
$("#imagemodal").css("height", "100vh")
$("#imagemodal img").css("height", "calc(100vh - 60px)")
} }
}
if ($("#" + id + "-image-" + (key * 1 + 1)).length === 0) {
$("#image-next").prop("disabled", true);
} else {
$("#image-next").prop("disabled", false);
}
if ($("#" + id + "-image-" + (key * 1 - 1)).length === 0) {
$("#image-prev").prop("disabled", true);
} else {
$("#image-prev").prop("disabled", false);
}
element.src = murl;
}); $("#imagemodal").css("height","100vh")
$("#imagemodal img").css("height","calc(100vh - 60px)")
}
}
if ($("#" + id + "-image-" + (key * 1 + 1)).length === 0) {
$("#image-next").prop("disabled", true);
} else {
$("#image-next").prop("disabled", false);
}
console.log("#" + id + "-image-" + (key * 1 - 1));
if ($("#" + id + "-image-" + (key * 1 - 1)).length === 0) {
$("#image-prev").prop("disabled", true);
} else {
$("#image-prev").prop("disabled", false);
}
element.src = murl;
});
} }
} }
//ズームボタン(z:倍率) //ズームボタン(z:倍率)
function zoom(z) { function zoom(z) {
var wdth = $('#imagewrap img').width(); var wdth = $('#imagewrap img').width();
var wdth = wdth * z; var wdth = wdth * z;
$('#imagewrap img').css("width", wdth + "px"); $('#imagewrap img').css("width", wdth+"px");
var hgt = $('#imagewrap img').height(); var hgt = $('#imagewrap img').height();
var hgt = hgt * z; var hgt = hgt * 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).mousedown(function (event) { $(this).mousedown(function(event) {
$(this) $(this)
.data('down', true) .data('down', true)
.data('x', event.clientX) .data('x', event.clientX)
@@ -201,7 +204,7 @@ function zoom(z) {
'cursor': 'move' 'cursor': 'move'
}); });
// ウィンドウから外れてもイベント実行 // ウィンドウから外れてもイベント実行
$(document).mousemove(function (event) { $(document).mousemove(function(event) {
if ($(target).data('down') == true) { if ($(target).data('down') == true) {
// スクロール // スクロール
target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') - target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') -
@@ -210,10 +213,10 @@ function zoom(z) {
event.clientY); event.clientY);
return false; // 文字列選択を抑止 return false; // 文字列選択を抑止
} }
}).mouseup(function (event) { }).mouseup(function(event) {
$(target).data('down', false); $(target).data('down', false);
}); });
$(this).on('touchstart', function (event) { $(this).on('touchstart', function(event) {
$(this) $(this)
.data('down', true) .data('down', true)
.data('x', getX(event)) .data('x', getX(event))
@@ -225,17 +228,18 @@ function zoom(z) {
'overflow': 'hidden', // スクロールバー非表示 'overflow': 'hidden', // スクロールバー非表示
'cursor': 'move' 'cursor': 'move'
}); //指が触れたか検知 }); //指が触れたか検知
$(this).on('touchmove', function (event) { $(this).on('touchmove', function(event) {
if ($(target).data('down') === true) { if ($(target).data('down') === true) {
// スクロール // スクロール
console.log($(target).data('x'));
target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') - target.scrollLeft($(target).data('scrollLeft') + $(target).data('x') -
getX(event)); getX(event));
target.scrollTop($(target).data('scrollTop') + $(target).data('y') - target.scrollTop($(target).data('scrollTop') + $(target).data('y') -
getY(event)); getY(event));
return false; // 文字列選択を抑止 return false; // 文字列選択を抑止
} else { } } else {}
}); //指が動いたか検知 }); //指が動いたか検知
$(this).on('touchend', function (event) { $(this).on('touchend', function(event) {
$(target).data('down', false); $(target).data('down', false);
}); });
@@ -252,7 +256,7 @@ function getY(event) {
} }
//マウスホイールで拡大 //マウスホイールで拡大
var element = document.getElementById("imagemodal"); var element = document.getElementById("imagemodal");
element.onmousewheel = function (e) { element.onmousewheel = function(e) {
var delta = e.wheelDelta; var delta = e.wheelDelta;
if (delta > 0) { if (delta > 0) {
zoom(1.1) zoom(1.1)
@@ -262,23 +266,31 @@ element.onmousewheel = function (e) {
} }
//当該トゥート //当該トゥート
function detFromImg() { function detFromImg(){
var id = $("#imagemodal").attr("data-id"); var id=$("#imagemodal").attr("data-id");
var acct_id = $("#imagemodal").attr("data-acct"); var acct_id=$("#imagemodal").attr("data-acct");
$('#imagemodal').modal('close'); $('#imagemodal').modal('close');
details(id, acct_id); details(id,acct_id);
} }
//画像保存 //画像保存
function dlImg() { function dlImg(){
var url = $("#imgmodal").attr("src"); var url=$("#imgmodal").attr("src");
if (localStorage.getItem("savefolder")) { var electron = require("electron");
var save = localStorage.getItem("savefolder"); var ipc = electron.ipcRenderer;
} else { if(localStorage.getItem("savefolder")){
var save = ""; var save=localStorage.getItem("savefolder");
}else{
var save="";
} }
postMessage(["generalDL", [url, save, false]], "*") ipc.send('general-dl', [url,save,false]);
ipc.on('general-dl-prog', function (event, arg) {
console.log(arg);
})
ipc.on('general-dl-message', function (event, arg) {
var argC=arg.replace(/\\/g,"\\\\")+"\\\\.";
Materialize.toast(lang.lang_img_DLDone+arg+'<button class="btn-flat toast-action" onclick="openFinder(\''+argC+'\')">Show</button>', 5000);
})
} }
function openFinder(dir) { function openFinder(dir){
postMessage(["openFinder", dir], "*") ipc.send('open-finder', dir);
} }

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