Compare commits
1410 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3373ff417f | ||
|
|
9bee8afe95 | ||
|
|
f79da2b692 | ||
|
|
fedb1ee858 | ||
|
|
50e11ec035 | ||
|
|
233442936a | ||
|
|
b68ae81782 | ||
|
|
835234885b | ||
|
|
6995155392 | ||
|
|
2d7d127266 | ||
|
|
ee6cbf922e | ||
|
|
2c2ba89434 | ||
|
|
68b23dc25a | ||
|
|
181e8b47fd | ||
|
|
8004643768 | ||
|
|
681b2f207a | ||
|
|
8ba1fa5e18 | ||
|
|
3b4fe169d0 | ||
|
|
8ea7cde8e6 | ||
|
|
db23b2b016 | ||
|
|
e8b0fb3e6c | ||
|
|
b47079e4c8 | ||
|
|
bae2d84d81 | ||
|
|
73a57c86cb | ||
|
|
50a2ce1470 | ||
|
|
429a5c764f | ||
|
|
6fbfdf0323 | ||
|
|
7822b2c740 | ||
|
|
0014890881 | ||
|
|
8e909cf3b2 | ||
|
|
f7be9e9143 | ||
|
|
e44fee2165 | ||
|
|
940514c97d | ||
|
|
4839c64878 | ||
|
|
8c660d8499 | ||
|
|
2d0c7bdcea | ||
|
|
9ecdb4fdb6 | ||
|
|
b03b387707 | ||
|
|
3df827cbeb | ||
|
|
0af7e1da9f | ||
|
|
3531c338de | ||
|
|
d44724d784 | ||
|
|
2d67a7df23 | ||
|
|
38db36602c | ||
|
|
2e1264173e | ||
|
|
365918bb94 | ||
|
|
db7c471ec5 | ||
|
|
b67ac5e48b | ||
|
|
0f72db8e9c | ||
|
|
3bff41f3d9 | ||
|
|
b02b031d97 | ||
|
|
ecda811835 | ||
|
|
0b573e3825 | ||
|
|
dc42ac6fce | ||
|
|
f345e1e33b | ||
|
|
5ffa9bc732 | ||
|
|
343b02bf19 | ||
|
|
c8786ca00f | ||
|
|
2732161dd2 | ||
|
|
8db9c438c4 | ||
|
|
50a32d75d3 | ||
|
|
d32c3c7866 | ||
|
|
a8390a0f2a | ||
|
|
9ad0e3e2c0 | ||
|
|
03b08b7c71 | ||
|
|
aa30072848 | ||
|
|
528e7ea61c | ||
|
|
89abea0706 | ||
|
|
3c45752ce1 | ||
|
|
b6cf6158f8 | ||
|
|
b4eaa6a849 | ||
|
|
86c83e8b11 | ||
|
|
a235e536da | ||
|
|
56fe5e6345 | ||
|
|
5d9327d3d3 | ||
|
|
72daf55e4e | ||
|
|
e5d651365b | ||
|
|
e1a0a69a2a | ||
|
|
a9e5e72ccc | ||
|
|
1d5f73e2ab | ||
|
|
0f81740562 | ||
|
|
0adb904c86 | ||
|
|
92f8611043 | ||
|
|
c24ef878c4 | ||
|
|
ba01510c88 | ||
|
|
47d69857ba | ||
|
|
8d812fbd2c | ||
|
|
790d353b69 | ||
|
|
495db60a84 | ||
|
|
ce117cca24 | ||
|
|
547a7b7c7c | ||
|
|
b6255244ef | ||
|
|
04e7088b7d | ||
|
|
1aefd4a3bb | ||
|
|
34075000a8 | ||
|
|
b24d937152 | ||
|
|
b821724e59 | ||
|
|
9a1f7311a6 | ||
|
|
b642d42229 | ||
|
|
ab265fae62 | ||
|
|
44b0c6c8fd | ||
|
|
ae16bb3525 | ||
|
|
7bf5353f05 | ||
|
|
64a3440969 | ||
|
|
6a02d4df6c | ||
|
|
4f84ad6c91 | ||
|
|
3fe5676f44 | ||
|
|
bc11e75d79 | ||
|
|
87f4d86587 | ||
|
|
de06c930ea | ||
|
|
dd056f4c05 | ||
|
|
484f320b7f | ||
|
|
bf7b38a02e | ||
|
|
bf534f9c79 | ||
|
|
bf94612e2e | ||
|
|
16fe5f07e3 | ||
|
|
c85ef3c659 | ||
|
|
e8910d7e64 | ||
|
|
817d159fd9 | ||
|
|
674ce32a30 | ||
|
|
8f85016d8c | ||
|
|
ee7ca45b91 | ||
|
|
51af1590ad | ||
|
|
b42b04d769 | ||
|
|
ffaa59cf88 | ||
|
|
109170627f | ||
|
|
553abf90cb | ||
|
|
eccdee7446 | ||
|
|
b2d98948d2 | ||
|
|
4bcb8104de | ||
|
|
b7c82b4831 | ||
|
|
626aebef4d | ||
|
|
32420fecd9 | ||
|
|
c318803ecd | ||
|
|
adf37f6513 | ||
|
|
0dcc0ff0ac | ||
|
|
f30749d752 | ||
|
|
af459aa93a | ||
|
|
e190cf3393 | ||
|
|
9f6c14ced0 | ||
|
|
320576f288 | ||
|
|
7366d9ce98 | ||
|
|
6da37a6cbb | ||
|
|
140e47d842 | ||
|
|
44128d8801 | ||
|
|
046dbc5559 | ||
|
|
f46b05dca8 | ||
|
|
8844320fc5 | ||
|
|
9f1aeb2b58 | ||
|
|
89ba321890 | ||
|
|
0ede195a5a | ||
|
|
c305ed5627 | ||
|
|
e58989f021 | ||
|
|
f88a3169c4 | ||
|
|
8aa9de05f9 | ||
|
|
e6ee50a6ea | ||
|
|
802988cb77 | ||
|
|
3afe00e208 | ||
|
|
0db238b023 | ||
|
|
3c07bbaf38 | ||
|
|
951d4d7251 | ||
|
|
dc789ad9c0 | ||
|
|
c5cbc07b2b | ||
|
|
101212de01 | ||
|
|
6a977d6484 | ||
|
|
4ed28c4d6c | ||
|
|
136d101588 | ||
|
|
e55a211269 | ||
|
|
89e01ec6e2 | ||
|
|
06c9e3437a | ||
|
|
a24d058ee5 | ||
|
|
176c692e46 | ||
|
|
17505711d7 | ||
|
|
e359347ae7 | ||
|
|
51dbf712f7 | ||
|
|
30bd7abec1 | ||
|
|
370af944d8 | ||
|
|
ccdd30f372 | ||
|
|
157aec934d | ||
|
|
a6d8bfd874 | ||
|
|
ed8dc492c5 | ||
|
|
87aee3764b | ||
|
|
692f01885f | ||
|
|
8b4537f61c | ||
|
|
74abc5d150 | ||
|
|
968dd67bda | ||
|
|
08b38f2789 | ||
|
|
8c826ccc3f | ||
|
|
f76fa5b13a | ||
|
|
2cc42fd3e0 | ||
|
|
4eabfad002 | ||
|
|
fa6304f244 | ||
|
|
27b0a6e47e | ||
|
|
6aca5a7b2b | ||
|
|
c0b9fc96e7 | ||
|
|
84b0defe3b | ||
|
|
49e6f89015 | ||
|
|
e9abe29fc3 | ||
|
|
4c26a76cd4 | ||
|
|
ce9bd51a92 | ||
|
|
f6dad03f7f | ||
|
|
0ee1ca5086 | ||
|
|
088c370d0e | ||
|
|
db934fb96b | ||
|
|
ef3bae0c0f | ||
|
|
bcf7d5f6ae | ||
|
|
bfaee4533c | ||
|
|
cf24c2042b | ||
|
|
be9a52c221 | ||
|
|
142098c4e7 | ||
|
|
b4da761c5b | ||
|
|
48d1dd14c1 | ||
|
|
3243602653 | ||
|
|
c2cfbd5583 | ||
|
|
6105152926 | ||
|
|
7ae073dec4 | ||
|
|
d6933a05a7 | ||
|
|
aa53700ffd | ||
|
|
6deec5758d | ||
|
|
ef68d2b421 | ||
|
|
496106476b | ||
|
|
7dd48c6da6 | ||
|
|
6435f55d0b | ||
|
|
a5c7494ba2 | ||
|
|
ed0e7cc615 | ||
|
|
529a08dd01 | ||
|
|
3a3e4159d9 | ||
|
|
fbbcf5de7f | ||
|
|
101f0afa07 | ||
|
|
298ef0547b | ||
|
|
b948608ce3 | ||
|
|
ec16bf81ed | ||
|
|
c6b63d1d0c | ||
|
|
b7397bccb0 | ||
|
|
95606ed251 | ||
|
|
5e3a89a654 | ||
|
|
2a0a9fd205 | ||
|
|
34e6a3bb72 | ||
|
|
6b44ca625f | ||
|
|
2082bb4662 | ||
|
|
5c5161ed3f | ||
|
|
3713a06750 | ||
|
|
a897d517cf | ||
|
|
df9c022563 | ||
|
|
3796b79872 | ||
|
|
f74eab450f | ||
|
|
493066df76 | ||
|
|
b89b5ea108 | ||
|
|
3dcfe1812d | ||
|
|
7b9d084cde | ||
|
|
f80ec5e6c3 | ||
|
|
773e482d56 | ||
|
|
6a1910ec9d | ||
|
|
a53b8fd884 | ||
|
|
5d9bb0ff19 | ||
|
|
b27c3c0940 | ||
|
|
e8f05ac324 | ||
|
|
279c6c3514 | ||
|
|
61a6a0f4d9 | ||
|
|
9e84456b46 | ||
|
|
3d65080e28 | ||
|
|
2cc8551386 | ||
|
|
2140757d5b | ||
|
|
f5226a6a7d | ||
|
|
6addb35131 | ||
|
|
ebba76cb92 | ||
|
|
e3c6d81a23 | ||
|
|
b35ecbf79c | ||
|
|
3e3387e4bd | ||
|
|
4b8c7fdaf3 | ||
|
|
07dcf40d13 | ||
|
|
1962e9265f | ||
|
|
92b692a958 | ||
|
|
a335813b42 | ||
|
|
7579cf6636 | ||
|
|
25316d8dcf | ||
|
|
b87a28521f | ||
|
|
e67d4e2e4f | ||
|
|
ea8295bb6b | ||
|
|
3dfa92e091 | ||
|
|
9a9907b264 | ||
|
|
e6b711b4b4 | ||
|
|
3375222582 | ||
|
|
b6a9284cbf | ||
|
|
7462c2195d | ||
|
|
01b4d0240b | ||
|
|
663fed681d | ||
|
|
16d02b5507 | ||
|
|
73ba6ff27a | ||
|
|
d2b0bf0927 | ||
|
|
e653beee09 | ||
|
|
3491c9b24b | ||
|
|
e328c0fb6e | ||
|
|
fdf1f34365 | ||
|
|
9fe22338a9 | ||
|
|
80ac4a55d3 | ||
|
|
c600009722 | ||
|
|
256e7b0f09 | ||
|
|
ce72432039 | ||
|
|
b3689fe297 | ||
|
|
0b58690ddd | ||
|
|
e598ab32cf | ||
|
|
001892dcee | ||
|
|
a89e1202e1 | ||
|
|
f9c8fb727c | ||
|
|
4a6e8c733f | ||
|
|
de2ac24382 | ||
|
|
e7aa01c547 | ||
|
|
72b060e7ae | ||
|
|
2a99a79d37 | ||
|
|
d1e6fac1b0 | ||
|
|
63802c98a3 | ||
|
|
3bd8520e7c | ||
|
|
662c15da93 | ||
|
|
dd0fd325b8 | ||
|
|
b772b03ef2 | ||
|
|
eda554eb8f | ||
|
|
2936bd1e5a | ||
|
|
df2f86f577 | ||
|
|
b9d1899cf2 | ||
|
|
b01497e391 | ||
|
|
af38681293 | ||
|
|
022565e176 | ||
|
|
00863d6917 | ||
|
|
e345b3a479 | ||
|
|
fe32723ad5 | ||
|
|
b9d562d8f0 | ||
|
|
83bd9499fd | ||
|
|
d3911792ec | ||
|
|
5c49715298 | ||
|
|
2b3feb40ad | ||
|
|
f7dbeaef84 | ||
|
|
31472e3206 | ||
|
|
2e88a8e0c3 | ||
|
|
224d762bc6 | ||
|
|
2fa1299391 | ||
|
|
dad459694c | ||
|
|
c2fa24c956 | ||
|
|
e55ea3bd0c | ||
|
|
ae9e6c4a56 | ||
|
|
2a5bb034ab | ||
|
|
49f190a471 | ||
|
|
3f5a870877 | ||
|
|
fd3cf1eb9f | ||
|
|
9a49979dcb | ||
|
|
6a11099b50 | ||
|
|
5c5c57739a | ||
|
|
8e663391b9 | ||
|
|
85ccbd1382 | ||
|
|
542ee57f93 | ||
|
|
f3fa854074 | ||
|
|
714feca455 | ||
|
|
f0db66d8d8 | ||
|
|
cd74236462 | ||
|
|
955c95e8a8 | ||
|
|
ebdacc013a | ||
|
|
d08c2ecd74 | ||
|
|
ef9b851309 | ||
|
|
083139efa7 | ||
|
|
bd11f7da50 | ||
|
|
472e9268a1 | ||
|
|
e6ce764084 | ||
|
|
b8fcd11a62 | ||
|
|
f35232cc52 | ||
|
|
615b89be3a | ||
|
|
ffa4ecd673 | ||
|
|
5dfb28f2de | ||
|
|
25d24ddef0 | ||
|
|
dcc9aba4a8 | ||
|
|
9977c009e0 | ||
|
|
2fd45f9e31 | ||
|
|
4f7eb88a13 | ||
|
|
1455f04261 | ||
|
|
9f9e4d6d6e | ||
|
|
3ab45a57e1 | ||
|
|
3d5485072c | ||
|
|
8c2083955f | ||
|
|
450c6a758f | ||
|
|
24f3e1e758 | ||
|
|
b9103abe96 | ||
|
|
a7f8793454 | ||
|
|
7b28981e9c | ||
|
|
ca41ca955c | ||
|
|
dd086e62cb | ||
|
|
3e2d40d248 | ||
|
|
bb08ec2435 | ||
|
|
0677c24887 | ||
|
|
29277236ca | ||
|
|
7579957fdf | ||
|
|
257d0d313d | ||
|
|
4b970ef770 | ||
|
|
6ec35e37ab | ||
|
|
72f461f0d2 | ||
|
|
32c7f52882 | ||
|
|
4943b3ad20 | ||
|
|
7eccc04e98 | ||
|
|
88e65c36bf | ||
|
|
5e13d86778 | ||
|
|
0e89f8bc4d | ||
|
|
a9a57822ef | ||
|
|
df25b4e609 | ||
|
|
b3ca402842 | ||
|
|
a52d7aee73 | ||
|
|
7214ff001a | ||
|
|
0e731c3e8a | ||
|
|
4f858cf7d6 | ||
|
|
3e5f9c51f5 | ||
|
|
8784cae01c | ||
|
|
81a3da550f | ||
|
|
7fc06d0750 | ||
|
|
1e0ebe9b7f | ||
|
|
73b7abd894 | ||
|
|
132f7253f6 | ||
|
|
827d581f1a | ||
|
|
9a315c241c | ||
|
|
5f9ddd969e | ||
|
|
cacf7f9920 | ||
|
|
d642729158 | ||
|
|
6b339b636a | ||
|
|
85468761d3 | ||
|
|
4cabeb2e99 | ||
|
|
f7d89b7659 | ||
|
|
6b5c527a3e | ||
|
|
57cbab10ac | ||
|
|
f50c2d3049 | ||
|
|
9957bd9b8a | ||
|
|
e6767dc3f9 | ||
|
|
136935d4f9 | ||
|
|
d654b63bca | ||
|
|
3ba4dee8a7 | ||
|
|
d4e0a50dbb | ||
|
|
3d4e35d942 | ||
|
|
5dcdbcdb53 | ||
|
|
d3a6ad1105 | ||
|
|
f233ca3284 | ||
|
|
f4914d9461 | ||
|
|
433aac37da | ||
|
|
fa34f5483e | ||
|
|
defa748497 | ||
|
|
c70b78d0c7 | ||
|
|
570b0c3e6a | ||
|
|
62a8d9b0f6 | ||
|
|
97e1e4ce53 | ||
|
|
b5655b530f | ||
|
|
b2c2530a1a | ||
|
|
c0a1139773 | ||
|
|
e452f8e006 | ||
|
|
7de625e004 | ||
|
|
8106296f6c | ||
|
|
7df901756f | ||
|
|
b41984e153 | ||
|
|
376c7f2545 | ||
|
|
d5df64f949 | ||
|
|
c9b2a66114 | ||
|
|
530917b85e | ||
|
|
b118e61741 | ||
|
|
635df4dd09 | ||
|
|
dccdc6290e | ||
|
|
573c461aa2 | ||
|
|
5a76eb28bf | ||
|
|
48028a8e09 | ||
|
|
1917531c54 | ||
|
|
a9d2bc08b7 | ||
|
|
e4ddd6ad8c | ||
|
|
aaf318de03 | ||
|
|
3c80cc0670 | ||
|
|
a01d89db30 | ||
|
|
26090084ff | ||
|
|
ab0ce56033 | ||
|
|
527854bbed | ||
|
|
f9de846ad5 | ||
|
|
57fbb15685 | ||
|
|
8986107256 | ||
|
|
2326d409a4 | ||
|
|
bcbccd5cb1 | ||
|
|
d47373e3b5 | ||
|
|
9ffcfa7f41 | ||
|
|
9a7ff92b5b | ||
|
|
a53f2ace64 | ||
|
|
280f6c4c9a | ||
|
|
cc33e8fa1b | ||
|
|
52b649b1c4 | ||
|
|
4194412540 | ||
|
|
9f2f0e29be | ||
|
|
e43107ccf7 | ||
|
|
c2ebadd87a | ||
|
|
3521e7b0e7 | ||
|
|
9d0aad933e | ||
|
|
3bd3df8fb2 | ||
|
|
71e1f5ae9d | ||
|
|
36c3d354cd | ||
|
|
9f0af1ba86 | ||
|
|
f74e2262dc | ||
|
|
2971144d7f | ||
|
|
2e2723427b | ||
|
|
ee6127ffcc | ||
|
|
dcd6fa6958 | ||
|
|
7442216962 | ||
|
|
bb0c781daa | ||
|
|
56e5a5ac53 | ||
|
|
419fa4906d | ||
|
|
16e7617b1e | ||
|
|
2ca5798f89 | ||
|
|
a08ddc1b8c | ||
|
|
83153e2777 | ||
|
|
5b72b93248 | ||
|
|
c7d911451c | ||
|
|
c400cc317d | ||
|
|
50784c9958 | ||
|
|
c4a5d406c7 | ||
|
|
d933eef8cc | ||
|
|
ce84069429 | ||
|
|
8140e56cbc | ||
|
|
de40e0e22a | ||
|
|
44ccd111b2 | ||
|
|
7ac0889b78 | ||
|
|
c4a5996b21 | ||
|
|
9eaca7bcb2 | ||
|
|
90629aecb4 | ||
|
|
cb6a75de3b | ||
|
|
9bb066596c | ||
|
|
a0b6610b7d | ||
|
|
c4e06f90f8 | ||
|
|
60a525f0b8 | ||
|
|
fe6067eeed | ||
|
|
f72294e2b9 | ||
|
|
409b98dd39 | ||
|
|
0168b882a8 | ||
|
|
9aa83354bd | ||
|
|
e311d82b0a | ||
|
|
531e526d33 | ||
|
|
a2a6c49ae0 | ||
|
|
15ae6d91d9 | ||
|
|
f3ba3706ba | ||
|
|
0ab6ea2e26 | ||
|
|
05d17f329f | ||
|
|
c7e9b67698 | ||
|
|
f654620816 | ||
|
|
5bd4885241 | ||
|
|
91643b06f2 | ||
|
|
d35ec1b7c4 | ||
|
|
d2609d11ab | ||
|
|
014d3499f0 | ||
|
|
edd8a412b5 | ||
|
|
7c57eef9f7 | ||
|
|
8df4d5d808 | ||
|
|
98b0fd4a4f | ||
|
|
3e8c9acb02 | ||
|
|
d829dd01de | ||
|
|
41803d21c9 | ||
|
|
b58b66178c | ||
|
|
7c40cf1fb7 | ||
|
|
a923c62dac | ||
|
|
00d9c91a53 | ||
|
|
6fa101c699 | ||
|
|
1372833dd8 | ||
|
|
7d57750d73 | ||
|
|
28c06706b4 | ||
|
|
18146d2ef7 | ||
|
|
52c65afce6 | ||
|
|
8f76c9b09d | ||
|
|
fffc94fbdd | ||
|
|
1f398a8b4c | ||
|
|
98f4010cb7 | ||
|
|
d34e8940a7 | ||
|
|
bbf3c33a89 | ||
|
|
f69fee98df | ||
|
|
f9b717965f | ||
|
|
01ad439d0a | ||
|
|
29ad8d9dbc | ||
|
|
6ffad11cba | ||
|
|
dc62840299 | ||
|
|
ae9c669ca3 | ||
|
|
cd4b9b3be6 | ||
|
|
e7fc5719e3 | ||
|
|
29350e0782 | ||
|
|
2c9821e670 | ||
|
|
a61050f8fa | ||
|
|
747d25b439 | ||
|
|
cafd36b85d | ||
|
|
d7450d9699 | ||
|
|
4224a02d16 | ||
|
|
82bf21d54b | ||
|
|
e2672d5d94 | ||
|
|
8d30ccf6fe | ||
|
|
be995930a0 | ||
|
|
fbd52c5a85 | ||
|
|
10e7a7fd27 | ||
|
|
92a0ec03b1 | ||
|
|
83a07f7ee4 | ||
|
|
32628be87b | ||
|
|
102e8964ee | ||
|
|
742ea9f245 | ||
|
|
25f843331c | ||
|
|
c6680d1f03 | ||
|
|
f5279fc91e | ||
|
|
ba50376c85 | ||
|
|
dd1395f3f4 | ||
|
|
450df2ce6a | ||
|
|
f9e384a87d | ||
|
|
81484b7ae3 | ||
|
|
a14809a96a | ||
|
|
1753b01a1b | ||
|
|
86e7924675 | ||
|
|
e0daa923c6 | ||
|
|
32c67d5f62 | ||
|
|
7580706bd0 | ||
|
|
68da5085ea | ||
|
|
55d0c0f66b | ||
|
|
5d35d56837 | ||
|
|
a9b150960e | ||
|
|
72a9e81ba1 | ||
|
|
0032a51051 | ||
|
|
faa9102815 | ||
|
|
525ce59b8b | ||
|
|
00055a9f32 | ||
|
|
3da62e366f | ||
|
|
66ba0fe18e | ||
|
|
cc7a7386be | ||
|
|
f1a89f1001 | ||
|
|
83ad5538b0 | ||
|
|
8e1497cf71 | ||
|
|
9b4da63b0d | ||
|
|
1fad5adbd2 | ||
|
|
72497154a7 | ||
|
|
5dcab4fe9e | ||
|
|
d592f5eb62 | ||
|
|
d85cbca8ea | ||
|
|
be92ae76d6 | ||
|
|
3cfedd4ae9 | ||
|
|
cd88acf337 | ||
|
|
adf628b3b0 | ||
|
|
bbb945283b | ||
|
|
10b7691313 | ||
|
|
1e93556f8e | ||
|
|
77bfb852e0 | ||
|
|
abeb0ad82f | ||
|
|
722304c4a1 | ||
|
|
9e5ea8c052 | ||
|
|
e6dc46a270 | ||
|
|
cf0fffcc3b | ||
|
|
64835b0de9 | ||
|
|
ca3ae925d1 | ||
|
|
245e17ed42 | ||
|
|
22605323c1 | ||
|
|
ca0e8f93f9 | ||
|
|
8f763f9c5c | ||
|
|
1e8e619762 | ||
|
|
5d3d5b4c72 | ||
|
|
81029b203e | ||
|
|
1fbfb3970d | ||
|
|
aa9e590574 | ||
|
|
495ef70d41 | ||
|
|
8d45bf6ee9 | ||
|
|
5ea7e397c6 | ||
|
|
70af77f06e | ||
|
|
21da8f0274 | ||
|
|
9be2b578a2 | ||
|
|
bcbc640840 | ||
|
|
a569240444 | ||
|
|
f071b9c4f2 | ||
|
|
681f116733 | ||
|
|
b1bfa713e2 | ||
|
|
8133bf1916 | ||
|
|
7fc61cdad3 | ||
|
|
0f926c96c8 | ||
|
|
557409ea72 | ||
|
|
f0a847b135 | ||
|
|
5181b271bc | ||
|
|
38fe00fbe0 | ||
|
|
be100b24d1 | ||
|
|
0ef338b1e8 | ||
|
|
12130f8601 | ||
|
|
dfe6c9e8e7 | ||
|
|
cfd4d18c62 | ||
|
|
7ee60c8986 | ||
|
|
0fee24734d | ||
|
|
4b7895c3ab | ||
|
|
63610a324c | ||
|
|
7a72daf3ec | ||
|
|
f33acd67ec | ||
|
|
9a5ac036d6 | ||
|
|
e0d8094268 | ||
|
|
1d5648f882 | ||
|
|
d528093510 | ||
|
|
738a11d96f | ||
|
|
01744889fb | ||
|
|
f5c4362f0d | ||
|
|
268dd4d469 | ||
|
|
41c207af14 | ||
|
|
513b7ecd78 | ||
|
|
83fb4663f6 | ||
|
|
7e88993b5c | ||
|
|
6e6b7f37b2 | ||
|
|
a1152446d9 | ||
|
|
3eab9b30a1 | ||
|
|
573587b894 | ||
|
|
adfb395492 | ||
|
|
b4b4f09287 | ||
|
|
31c80ff07b | ||
|
|
d20e94b422 | ||
|
|
1e7fefbde9 | ||
|
|
42f68a1109 | ||
|
|
f47c704e29 | ||
|
|
be3cfd8d2d | ||
|
|
d6ded9e64b | ||
|
|
6b0704ec76 | ||
|
|
a896ae69d0 | ||
|
|
9ba4fe2d0f | ||
|
|
29b904998e | ||
|
|
bf422cb0b2 | ||
|
|
bf87c3e3f1 | ||
|
|
b96c6bd324 | ||
|
|
0293318b59 | ||
|
|
38588b8204 | ||
|
|
f2d22e6b7f | ||
|
|
45848306bc | ||
|
|
b160b25d7d | ||
|
|
d1e6d533fc | ||
|
|
ee168ed5e2 | ||
|
|
6c8e3d88bd | ||
|
|
77b2e416c1 | ||
|
|
e02eefdc8e | ||
|
|
fd4f5ec574 | ||
|
|
b327b38113 | ||
|
|
76ad662f56 | ||
|
|
4ad3c397b6 | ||
|
|
75d2b46c7a | ||
|
|
a7659a0c2e | ||
|
|
e3a740f66a | ||
|
|
af281481d5 | ||
|
|
5f6758554d | ||
|
|
2b2a8c1d2e | ||
|
|
156f5aec91 | ||
|
|
9045e5aa90 | ||
|
|
5ca9d2f1b1 | ||
|
|
6cb5bcfb0c | ||
|
|
ffaff7c356 | ||
|
|
130fc4996f | ||
|
|
a95141048d | ||
|
|
2d82382f34 | ||
|
|
6afd975913 | ||
|
|
0df0eb104c | ||
|
|
f1c5d3605c | ||
|
|
afed289647 | ||
|
|
22fb1fb8c9 | ||
|
|
5809d4efca | ||
|
|
332e215c85 | ||
|
|
9eefbe9fb9 | ||
|
|
3fa86d3236 | ||
|
|
f0e125df08 | ||
|
|
8bf7d0efd4 | ||
|
|
8a71dfa591 | ||
|
|
928dee677f | ||
|
|
bf5500eb19 | ||
|
|
a5efb1b4b6 | ||
|
|
5aa77a67a8 | ||
|
|
c5c22f8dc9 | ||
|
|
ad3ae5e6b1 | ||
|
|
ed029ecb01 | ||
|
|
ff45c64a22 | ||
|
|
c953091e8d | ||
|
|
fd30ab7168 | ||
|
|
dca3dddba0 | ||
|
|
41eb4c54a4 | ||
|
|
15a2333010 | ||
|
|
1061d2867f | ||
|
|
64ba1f1ea1 | ||
|
|
196cc664c8 | ||
|
|
1d871d4d68 | ||
|
|
89475a9838 | ||
|
|
52d335cbfd | ||
|
|
333ca4f36a | ||
|
|
d2e18c5400 | ||
|
|
f04cc92b44 | ||
|
|
fa3a048a6c | ||
|
|
6200034dd0 | ||
|
|
9a25d82c48 | ||
|
|
95e0d3953e | ||
|
|
fb91da4b69 | ||
|
|
74fcd2df7b | ||
|
|
1a88a08454 | ||
|
|
688cf579d6 | ||
|
|
ba9ba5f55b | ||
|
|
8341733dc2 | ||
|
|
54f7a0f20e | ||
|
|
b2382d91d6 | ||
|
|
b729780ac1 | ||
|
|
6f4c516d0c | ||
|
|
b9bdcba4f9 | ||
|
|
bd69863799 | ||
|
|
375fdc444e | ||
|
|
e832592b35 | ||
|
|
a15d4e097e | ||
|
|
2597d2455c | ||
|
|
16e817d42c | ||
|
|
c6d39a9e60 | ||
|
|
b860f1a170 | ||
|
|
0cebd0b7f3 | ||
|
|
91742c1b80 | ||
|
|
64bc79de38 | ||
|
|
55239be477 | ||
|
|
0feebb662f | ||
|
|
1699f9d141 | ||
|
|
7ac9df9496 | ||
|
|
2074818cd0 | ||
|
|
ecb3eaf541 | ||
|
|
345455da4b | ||
|
|
1937fddbfd | ||
|
|
e7534bbcbd | ||
|
|
305192eae6 | ||
|
|
0541aa3373 | ||
|
|
81fe8b7435 | ||
|
|
4ca26b4e32 | ||
|
|
d348a67ba8 | ||
|
|
e2f03ee8d6 | ||
|
|
0e64c46064 | ||
|
|
987a4125ae | ||
|
|
a7e4c1a5a5 | ||
|
|
6d66982d35 | ||
|
|
7c78e05649 | ||
|
|
61383ef294 | ||
|
|
469d4ec566 | ||
|
|
418f1146b7 | ||
|
|
170c8885d0 | ||
|
|
e3f04f4ab8 | ||
|
|
791b8142bd | ||
|
|
ffff89ae96 | ||
|
|
3c8b0f6308 | ||
|
|
a01aa8c335 | ||
|
|
1dc1e6f081 | ||
|
|
b86447cdbf | ||
|
|
bf1e805269 | ||
|
|
0b0d551730 | ||
|
|
22016d2856 | ||
|
|
6ef5d66521 | ||
|
|
bbf80408d4 | ||
|
|
f7c7614625 | ||
|
|
c5e71230e3 | ||
|
|
d61e15a02c | ||
|
|
981d286e13 | ||
|
|
f58c3e9a67 | ||
|
|
c316c381f8 | ||
|
|
066ae678f9 | ||
|
|
c3a75a5525 | ||
|
|
14257ba448 | ||
|
|
2c7e86fa97 | ||
|
|
63d7b7a471 | ||
|
|
98a882f450 | ||
|
|
868fd1ddc5 | ||
|
|
9c19819a08 | ||
|
|
62ef634bc0 | ||
|
|
f4158deb0a | ||
|
|
e61a224fc6 | ||
|
|
c83fb868e4 | ||
|
|
0a118f1740 | ||
|
|
d5d6edd2fb | ||
|
|
e17382f441 | ||
|
|
6c6fe5378f | ||
|
|
b68a31b2ee | ||
|
|
0be362e82c | ||
|
|
17a917ad00 | ||
|
|
f975fbf221 | ||
|
|
1741813003 | ||
|
|
7e7e24021b | ||
|
|
a662106228 | ||
|
|
be98a562d4 | ||
|
|
2af4692e1a | ||
|
|
b525ac18bc | ||
|
|
3fdca1ba64 | ||
|
|
9cc721bf80 | ||
|
|
d9cbd5d173 | ||
|
|
59f5cb9d35 | ||
|
|
bd020c14fb | ||
|
|
7b9f814d37 | ||
|
|
7a6fe30ee5 | ||
|
|
9910adbb40 | ||
|
|
ad6a578863 | ||
|
|
365120ed9f | ||
|
|
dbd0541ad1 | ||
|
|
7ce16856ec | ||
|
|
8fff3e4ec0 | ||
|
|
53f559a750 | ||
|
|
924fc30697 | ||
|
|
41955f8927 | ||
|
|
83689f420c | ||
|
|
1c68a0fd4b | ||
|
|
9e25db7089 | ||
|
|
7eacd54a9c | ||
|
|
be44519431 | ||
|
|
66f35b2720 | ||
|
|
23902d2465 | ||
|
|
1c3717edef | ||
|
|
17fa0f3eb0 | ||
|
|
247e19f1e3 | ||
|
|
54fae816d2 | ||
|
|
3b70a2cc2d | ||
|
|
acd4a16dcb | ||
|
|
550c84c367 | ||
|
|
e35e0be251 | ||
|
|
db5ada2cfb | ||
|
|
643f452064 | ||
|
|
bbda6c6785 | ||
|
|
e6449cd818 | ||
|
|
708527db77 | ||
|
|
b1aa6c5699 | ||
|
|
eeaa1a7f07 | ||
|
|
52b7183935 | ||
|
|
386833ae64 | ||
|
|
d4a48ce585 | ||
|
|
4931cdd272 | ||
|
|
d7933dc73f | ||
|
|
9a1048cc17 | ||
|
|
a8fd0736b3 | ||
|
|
10d884a837 | ||
|
|
52b28c79c7 | ||
|
|
8a36e55813 | ||
|
|
5103bb2697 | ||
|
|
c6a07714ba | ||
|
|
48c3500033 | ||
|
|
d155e75a5d | ||
|
|
fa481129a9 | ||
|
|
3c1402dab7 | ||
|
|
a7f4189bd3 | ||
|
|
64ed13de7c | ||
|
|
21394eb29e | ||
|
|
fbb8c3613f | ||
|
|
7778da80d5 | ||
|
|
e791e102d5 | ||
|
|
deb73450c3 | ||
|
|
cc9d1bf4f2 | ||
|
|
b025ef8b22 | ||
|
|
7bda0f400a | ||
|
|
3b7a113a11 | ||
|
|
ee636bf88c | ||
|
|
52144d8e52 | ||
|
|
513c686dea | ||
|
|
29cc2429ae | ||
|
|
31219e9ac1 | ||
|
|
3beab5a9e1 | ||
|
|
7558311531 | ||
|
|
106d08a899 | ||
|
|
02f203475d | ||
|
|
b4460eddf7 | ||
|
|
90e06116d1 | ||
|
|
1e4397ed7b | ||
|
|
e9cc2d0e52 | ||
|
|
376847b489 | ||
|
|
5d61b83c50 | ||
|
|
561b3a594b | ||
|
|
2d0acb68b1 | ||
|
|
919c6c40e2 | ||
|
|
120e9da1c9 | ||
|
|
47c6454c00 | ||
|
|
02f49cd392 | ||
|
|
8117ddb6ce | ||
|
|
d372fa8e6e | ||
|
|
c3ed865a3a | ||
|
|
96c137ec4b | ||
|
|
c5cd683aa5 | ||
|
|
c5cdabaa3a | ||
|
|
d19be3f2cb | ||
|
|
a9f55aa64f | ||
|
|
dfb0f79c92 | ||
|
|
4a59438c0c | ||
|
|
f35710d652 | ||
|
|
c19a532f3e | ||
|
|
be6b278b3c | ||
|
|
78c16dc278 | ||
|
|
09d2839a00 | ||
|
|
d17d52436f | ||
|
|
5c522a33d0 | ||
|
|
c9cf89adeb | ||
|
|
c5c996cb7a | ||
|
|
f2ec258e7a | ||
|
|
8c29f21970 | ||
|
|
5b730d2c38 | ||
|
|
609e84a8ae | ||
|
|
7ca778f81b | ||
|
|
93b194af3b | ||
|
|
b3e1f32ffe | ||
|
|
d78b3bffeb | ||
|
|
bff5038a64 | ||
|
|
0c7fcfbcc5 | ||
|
|
9d6fc15959 | ||
|
|
5bad5e1031 | ||
|
|
f8d6ec3a8f | ||
|
|
9a3dc81630 | ||
|
|
3d9b97ccb5 | ||
|
|
2c3dbba052 | ||
|
|
907eecd030 | ||
|
|
75026bf42d | ||
|
|
d217fb33a9 | ||
|
|
8cea32d01b | ||
|
|
c8d2da0c07 | ||
|
|
a458f51b9a | ||
|
|
bd8ac2935b | ||
|
|
dd59cc1468 | ||
|
|
fd365c52cc | ||
|
|
ad7e77a067 | ||
|
|
6b9135a205 | ||
|
|
fdca5b1c60 | ||
|
|
f891b30f9f | ||
|
|
8fbd8070f2 | ||
|
|
657dec1c10 | ||
|
|
0d93dcdc45 | ||
|
|
5a50c0e1e6 | ||
|
|
ab8da89fbc | ||
|
|
c9edf47643 | ||
|
|
84328bf693 | ||
|
|
6fdbf0b48e | ||
|
|
8b1d5b3cb4 | ||
|
|
bf69d23379 | ||
|
|
a4e3031796 | ||
|
|
286e7956f2 | ||
|
|
e04b64a326 | ||
|
|
c86a99df06 | ||
|
|
3b69c4e7c1 | ||
|
|
bc5be9449d | ||
|
|
b968e59db1 | ||
|
|
fa06c4a729 | ||
|
|
81b99515cd | ||
|
|
5e6c713f9d | ||
|
|
376425cc98 | ||
|
|
38cff550e1 | ||
|
|
64781c1cca | ||
|
|
e82e85b5ea | ||
|
|
2b84a27cdc | ||
|
|
6f7f5cbabc | ||
|
|
174a8696b0 | ||
|
|
d5a27ba814 | ||
|
|
6e2e488565 | ||
|
|
7d02ef2b3e | ||
|
|
f8f2719c5d | ||
|
|
da6faaf1a5 | ||
|
|
350068d6f1 | ||
|
|
70bee4265b | ||
|
|
18ce8cf2f4 | ||
|
|
b50a55cce7 | ||
|
|
e6f0e18aed | ||
|
|
fd7daa407a | ||
|
|
0dead93606 | ||
|
|
5d6e8cf9b3 | ||
|
|
a0544e21e3 | ||
|
|
d54112d41c | ||
|
|
1a0ba40b43 | ||
|
|
5d8ca9566a | ||
|
|
834fa719b2 | ||
|
|
89bde2739a | ||
|
|
46dbc9ae62 | ||
|
|
71554fca59 | ||
|
|
1c76b5886f | ||
|
|
5007b70683 | ||
|
|
5694cbd945 | ||
|
|
eee3c34dd7 | ||
|
|
cac39ad539 | ||
|
|
1b68cdf7db | ||
|
|
845c9a0f2e | ||
|
|
24c69af942 | ||
|
|
c656bc4bb6 | ||
|
|
025b60e564 | ||
|
|
1e86964d8f | ||
|
|
61d4d7005e | ||
|
|
d0ed9faf50 | ||
|
|
8ed12170de | ||
|
|
d2ba5cbe4d | ||
|
|
6b6d3c7307 | ||
|
|
362b5b9c69 | ||
|
|
3cde12e893 | ||
|
|
d2214480f6 | ||
|
|
b8bd1a8ae6 | ||
|
|
0bfef0c2ce | ||
|
|
f2ce98fda5 | ||
|
|
5f08215571 | ||
|
|
9567a6ddf9 | ||
|
|
4416c56884 | ||
|
|
68328a9449 | ||
|
|
141f2a3f39 | ||
|
|
7bbca06033 | ||
|
|
ebb72265b9 | ||
|
|
c98f433da6 | ||
|
|
2346ef7089 | ||
|
|
8aac6474da | ||
|
|
ffcecf38c8 | ||
|
|
77342206b1 | ||
|
|
b6a44e7a7c | ||
|
|
e138d357c7 | ||
|
|
66645982e9 | ||
|
|
4347f55077 | ||
|
|
ab9d45c775 | ||
|
|
9c0c662f25 | ||
|
|
63abdb2d53 | ||
|
|
47e2693368 | ||
|
|
b909cbe666 | ||
|
|
95f5ce13ba | ||
|
|
fed1496e68 | ||
|
|
da6993730c | ||
|
|
0a1d462ace | ||
|
|
1387482db0 | ||
|
|
b7a86324dd | ||
|
|
babc5a6424 | ||
|
|
74a468383c | ||
|
|
3a48f0ff0d | ||
|
|
e26363adf6 | ||
|
|
35d97d42c5 | ||
|
|
4fa7d07500 | ||
|
|
15f428528b | ||
|
|
7fa805fe3a | ||
|
|
fd9c97a126 | ||
|
|
f081154804 | ||
|
|
866affdf45 | ||
|
|
30aee556f1 | ||
|
|
b12c18aa08 | ||
|
|
f17a47d088 | ||
|
|
d79f096749 | ||
|
|
5b82b91c6a | ||
|
|
4a6b87ac1c | ||
|
|
1bea06354e | ||
|
|
5fbd5aaf10 | ||
|
|
0290a6d918 | ||
|
|
2576c48441 | ||
|
|
eb02dd2986 | ||
|
|
d92570fa3b | ||
|
|
38c988d2a2 | ||
|
|
0927282d41 | ||
|
|
5ffd59619c | ||
|
|
a739926ad4 | ||
|
|
e41c38f41d | ||
|
|
2de05b84aa | ||
|
|
0e9bdef9ca | ||
|
|
8e70e005c1 | ||
|
|
3817dbc925 | ||
|
|
63ec669c52 | ||
|
|
afc5702796 | ||
|
|
41ec66b58a | ||
|
|
936d3ca7fc | ||
|
|
f8b4b7b74d | ||
|
|
bd865977b0 | ||
|
|
d056db5617 | ||
|
|
7685677ada | ||
|
|
eb0aa81492 | ||
|
|
dc52531f28 | ||
|
|
5a20034b9f | ||
|
|
5cd0ef0d8a | ||
|
|
4daf47bb5f | ||
|
|
3e0dbd8433 | ||
|
|
fc4d3b24f6 | ||
|
|
3a9eab55a4 | ||
|
|
546b34275d | ||
|
|
3ee4cf27d5 | ||
|
|
87da95b9a4 | ||
|
|
3368e30e15 | ||
|
|
f1ea5ad8f1 | ||
|
|
fa2d5f8492 | ||
|
|
0f2c5de161 | ||
|
|
b69937d4fd | ||
|
|
e82faacbb2 | ||
|
|
2ab5c67545 | ||
|
|
358d01b12e | ||
|
|
95460fabbb | ||
|
|
0fb882b3ad | ||
|
|
3d0382d279 | ||
|
|
59d5aa4515 | ||
|
|
2dff9f9b17 | ||
|
|
03fded672e | ||
|
|
a21c1f5329 | ||
|
|
37815ced63 | ||
|
|
b7f9b8d668 | ||
|
|
f68af78099 | ||
|
|
027abffa01 | ||
|
|
5dfba4dd5e | ||
|
|
d0ae7e9cf9 | ||
|
|
5a57e984de | ||
|
|
473f4d7c24 | ||
|
|
35bfea2dbd | ||
|
|
62cb30cb5b | ||
|
|
9d2eb6f18b | ||
|
|
d5cd57c26d | ||
|
|
37695735e0 | ||
|
|
c15625c063 | ||
|
|
cd65bd4c2a | ||
|
|
fc3fead235 | ||
|
|
2e00282560 | ||
|
|
54d740e861 | ||
|
|
478a849e8d | ||
|
|
82c5b35d07 | ||
|
|
6cdd4cba9e | ||
|
|
dda9469874 | ||
|
|
334fbdab3f | ||
|
|
a5f8e34ee6 | ||
|
|
eba54d0906 | ||
|
|
070c40a958 | ||
|
|
8d308cae5e | ||
|
|
848e9fcf99 | ||
|
|
d146776b17 | ||
|
|
7da16a7428 | ||
|
|
7b46145114 | ||
|
|
725f0f789a | ||
|
|
772a5438aa | ||
|
|
3c276b329b | ||
|
|
e2cde71831 | ||
|
|
861ee3250d | ||
|
|
5672ccfa37 | ||
|
|
65e691cda8 | ||
|
|
56cca8b529 | ||
|
|
367f2f656e | ||
|
|
7f806bd155 | ||
|
|
a70444e3c7 | ||
|
|
1a72033571 | ||
|
|
a475407c27 | ||
|
|
b602cd92a9 | ||
|
|
2878a4a524 | ||
|
|
8b1ac63343 | ||
|
|
8d1012c9fb | ||
|
|
62f2654358 | ||
|
|
e7feb4b2c5 | ||
|
|
dcc62b32a2 | ||
|
|
26eecd11b6 | ||
|
|
8d388bbd4b | ||
|
|
409635b00c | ||
|
|
17a71ddbf6 | ||
|
|
d2a86af0e2 | ||
|
|
f23dc928b2 | ||
|
|
68e11dc222 | ||
|
|
075c3ef9ca | ||
|
|
6b004a3992 | ||
|
|
3cf198538a | ||
|
|
612400944e | ||
|
|
5f22d2427e | ||
|
|
2692967b7d | ||
|
|
2ed85ab978 | ||
|
|
f843872a14 | ||
|
|
b365b9d15b | ||
|
|
938ff926c3 | ||
|
|
7a1a6354df | ||
|
|
37e9d8242b | ||
|
|
8bf03f2809 | ||
|
|
c684a5b0d0 | ||
|
|
3281461809 | ||
|
|
2cd5cf505d | ||
|
|
42334450bf | ||
|
|
410633c873 | ||
|
|
ee67baf0b4 | ||
|
|
7afa959e6c | ||
|
|
ca0db95910 | ||
|
|
9825a84880 | ||
|
|
68260f3d85 | ||
|
|
d25fcfadc1 | ||
|
|
7059c1bb31 | ||
|
|
a4ac0af6e1 | ||
|
|
205a3bea44 | ||
|
|
748a69b3bd | ||
|
|
be36c3dd0b | ||
|
|
13384ed93f | ||
|
|
92b8a36019 | ||
|
|
225786e07f | ||
|
|
8c8cf44ed6 | ||
|
|
c3e6e657c9 | ||
|
|
04185ea07b | ||
|
|
49794e05d0 | ||
|
|
b2be1a7bcc | ||
|
|
2d167c9c2e | ||
|
|
5251ba9b3f | ||
|
|
df443003e4 | ||
|
|
3719b1ed40 | ||
|
|
d4a246ea59 | ||
|
|
c77b0f5924 | ||
|
|
bb1165ecf9 | ||
|
|
93d2e8e0d5 | ||
|
|
b0db765f25 | ||
|
|
68a3786fb8 | ||
|
|
9103ba6af1 | ||
|
|
dd8e89234c | ||
|
|
bcb358cc8b | ||
|
|
f42c59669f | ||
|
|
d656860b2e | ||
|
|
30744e402a | ||
|
|
43bac6f3e6 | ||
|
|
dae4371a3f | ||
|
|
990c2f796e | ||
|
|
89c3a4f8b1 | ||
|
|
ca12884735 | ||
|
|
07e907b599 | ||
|
|
e0bdd1e0b2 | ||
|
|
595b1a3c62 | ||
|
|
236392299b | ||
|
|
418b2e7668 | ||
|
|
052694dbde | ||
|
|
d529a105c5 | ||
|
|
40d877682b | ||
|
|
5e324f19ae | ||
|
|
9d8b9cbd04 | ||
|
|
54e5180732 | ||
|
|
dbf959782f | ||
|
|
33114ca3c8 | ||
|
|
4c2aebc7c1 | ||
|
|
b51470f999 | ||
|
|
b2be5f3706 | ||
|
|
06eb347cf8 | ||
|
|
81c5c1d86a | ||
|
|
82858b7b92 | ||
|
|
b3506aec3c | ||
|
|
de6e9c6f11 | ||
|
|
d3ff1aa17a | ||
|
|
3cde6d0bff | ||
|
|
bfade31849 | ||
|
|
3a06820f1e | ||
|
|
c5f712359d | ||
|
|
c9cca85db3 | ||
|
|
07b203b719 | ||
|
|
a636c745e4 | ||
|
|
e9024312a7 | ||
|
|
edbe3c164f | ||
|
|
8991cb5a96 | ||
|
|
b4aa5aead5 | ||
|
|
873a8fd229 | ||
|
|
d0ddc58160 | ||
|
|
6eebfed609 | ||
|
|
09b7b8633e | ||
|
|
c93326d218 | ||
|
|
a03c5c0ecf | ||
|
|
0380251294 | ||
|
|
d8f857e05d | ||
|
|
7a06a2b192 | ||
|
|
771db8c3ad | ||
|
|
9a800639e6 | ||
|
|
550c7b1805 | ||
|
|
ad7c7ffa66 | ||
|
|
57978bd152 | ||
|
|
5cd72a538c | ||
|
|
d439169c63 | ||
|
|
da39e0ded6 | ||
|
|
823fae5eac | ||
|
|
4f3a7c47e3 | ||
|
|
bd8d480e07 | ||
|
|
a09c031dbe | ||
|
|
1fee94846d | ||
|
|
4fb37525d5 | ||
|
|
8f25557f20 | ||
|
|
cb47eabed9 | ||
|
|
f8823a4c5a | ||
|
|
7fdd5964cc | ||
|
|
3aadcaef0f | ||
|
|
f58d4f349b | ||
|
|
9bb8ec0b66 | ||
|
|
ec9a14d63b | ||
|
|
82a00f4d1e | ||
|
|
af97f88d0a | ||
|
|
e27351481b | ||
|
|
4c375e2d0a | ||
|
|
53cd49d4e8 | ||
|
|
e36942180e | ||
|
|
6b58c88118 | ||
|
|
d20777ed18 | ||
|
|
202e389c20 | ||
|
|
707a5b2033 | ||
|
|
0967c93dde | ||
|
|
b13849a427 | ||
|
|
d0322c7bda | ||
|
|
494a4e90d6 | ||
|
|
d1968a2e69 | ||
|
|
51e6909f77 | ||
|
|
cec46faf19 | ||
|
|
53f880ab97 | ||
|
|
cc20b0a7c0 | ||
|
|
efac88db4c | ||
|
|
2e1c076b5f | ||
|
|
5a03df6ee9 | ||
|
|
ade5893183 | ||
|
|
8a17e737f9 | ||
|
|
94c1ff3731 | ||
|
|
4e5fe2fc91 | ||
|
|
f88ed31e38 | ||
|
|
7df51c161b | ||
|
|
b5d1686c12 | ||
|
|
a1048b3243 | ||
|
|
f9090e261d | ||
|
|
4029f168df | ||
|
|
7965e7c742 | ||
|
|
932e6731c9 | ||
|
|
3c3eb5209b | ||
|
|
a07d6b3172 | ||
|
|
253f742332 | ||
|
|
35e262293d | ||
|
|
972ea9f5ed | ||
|
|
0c1191e362 | ||
|
|
426e48325c | ||
|
|
6c86825732 | ||
|
|
e0cae78827 | ||
|
|
09d3643b19 | ||
|
|
ed93d5b4f2 | ||
|
|
f0d7d84f8e | ||
|
|
05fab4c45c | ||
|
|
3059ec9941 | ||
|
|
892872869b | ||
|
|
0db7ed4a33 | ||
|
|
54e12db08b | ||
|
|
6fb90f0c8e | ||
|
|
5f3257a83b | ||
|
|
f333595817 | ||
|
|
cc1018c65d | ||
|
|
1c16a5f4a0 | ||
|
|
0ad7bf9036 | ||
|
|
1670c0bc08 | ||
|
|
f1c4276d06 | ||
|
|
50bfbbd755 | ||
|
|
f5afafe26a | ||
|
|
c524777505 | ||
|
|
8155baa07d | ||
|
|
32c56dcf6a |
8
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# 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
|
||||||
27
.github/ISSUE_TEMPLATE/bug-report-english.md
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
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.
|
||||||
27
.github/ISSUE_TEMPLATE/bug-report-japanese----------.md
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
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]
|
||||||
|
|
||||||
|
**追記**
|
||||||
|
追記
|
||||||
17
.gitignore
vendored
@@ -3,10 +3,7 @@
|
|||||||
*.7z
|
*.7z
|
||||||
*.exe
|
*.exe
|
||||||
TheDesk-*
|
TheDesk-*
|
||||||
app/build
|
build/*
|
||||||
build
|
|
||||||
make.js
|
|
||||||
make_js.js
|
|
||||||
app/.DS_Store
|
app/.DS_Store
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.vs/*
|
.vs/*
|
||||||
@@ -15,3 +12,15 @@ enq.md
|
|||||||
app/.tkn
|
app/.tkn
|
||||||
app/node_modules
|
app/node_modules
|
||||||
app/js/login/tkn.js
|
app/js/login/tkn.js
|
||||||
|
app/view/en
|
||||||
|
app/view/ja
|
||||||
|
app/view/ja-KS
|
||||||
|
app/view/de
|
||||||
|
app/view/bg
|
||||||
|
app/view/cs
|
||||||
|
app/view/ps
|
||||||
|
app/view/es-AR
|
||||||
|
app/git
|
||||||
|
*.code-workspace
|
||||||
|
releasenote.md
|
||||||
|
app/yarn-error.log
|
||||||
|
|||||||
57
.travis.yml
@@ -1,33 +1,54 @@
|
|||||||
os: windows
|
os:
|
||||||
|
- windows
|
||||||
|
- linux
|
||||||
|
- osx
|
||||||
language: node_js
|
language: node_js
|
||||||
|
env:
|
||||||
|
- YARN_GPG=no
|
||||||
node_js:
|
node_js:
|
||||||
- '10.15.2'
|
- '10.15.2'
|
||||||
|
cache:
|
||||||
|
yarn: true
|
||||||
script: node -v
|
script: node -v
|
||||||
before_deploy:
|
before_deploy:
|
||||||
|
- yarn global add electron-builder
|
||||||
- cd app
|
- cd app
|
||||||
- npm install electron-builder -g
|
- VERSION=$(cat package.json | grep version | head -1 | awk -F= "{ print $2 }" | sed 's/[version:,\",]//g' | tr -d '[[:space:]]')
|
||||||
- npm install
|
- yarn install --no-lockfile --prod
|
||||||
- electron-builder --win --ia32
|
- yarn construct
|
||||||
- mv ../build/TheDesk-setup.exe ../TheDesk-setup-ia32.exe
|
- if [ "$TRAVIS_OS_NAME" = "osx" ];then electron-builder --mac -p never;else :;fi
|
||||||
- mv ../build/TheDesk*.exe ../TheDesk-ia32.exe
|
- if [ "$TRAVIS_OS_NAME" = "linux" ];then electron-builder --linux --x64 -p never;else :;fi
|
||||||
- electron-builder --win --x64
|
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../build;else :;fi
|
||||||
- mv ../build/TheDesk-setup.exe ../TheDesk-setup.exe
|
- if [ "$TRAVIS_OS_NAME" = "linux" ];then ls;else :;fi
|
||||||
- mv ../build/TheDesk*.exe ../TheDesk.exe
|
- 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 yarn add electron-builder;else :;fi
|
||||||
|
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win --ia32 -p never;else :;fi
|
||||||
|
- if [ "$TRAVIS_OS_NAME" = "windows" ];then 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
|
- ls build
|
||||||
after_deploy: ls
|
|
||||||
deploy:
|
deploy:
|
||||||
skip_cleanup: true
|
|
||||||
provider: releases
|
provider: releases
|
||||||
|
# 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 ページにアップロードするファイル
|
||||||
|
file_glob: true
|
||||||
file:
|
file:
|
||||||
- TheDesk.exe
|
- build/*
|
||||||
- TheDesk-setup.exe
|
skip_cleanup: true
|
||||||
- TheDesk-ia32.exe
|
|
||||||
- TheDesk-setup-ia32.exe
|
|
||||||
on:
|
on:
|
||||||
repo: cutls/TheDesk
|
repo: cutls/TheDesk
|
||||||
|
tags: true
|
||||||
branches:
|
branches:
|
||||||
only:
|
only: "/^v?[0-9\\.]+/"
|
||||||
- master
|
|
||||||
|
|||||||
22
LATEST.md
@@ -1,22 +0,0 @@
|
|||||||
## For Astarte(kirishima.cloud), My Primary Instance
|
|
||||||
|
|
||||||
TheDesk :thedesk: Akane (16.1.0)
|
|
||||||
・不具合修正(マウスオーバー,クリックに関する)
|
|
||||||
・2.5.0に対する対応(リプ数やendorseなど)
|
|
||||||
・軽量化を図った
|
|
||||||
・一つのカラムをTwitter(TweetDeck)にできる機能
|
|
||||||
・画像の保存先を変えられるように
|
|
||||||
・インスタンス情報の拡充
|
|
||||||
・デザイン変更
|
|
||||||
・トゥートバーを左端に持ってこれるように
|
|
||||||
・Windowsのネイティブ通知が復活
|
|
||||||
|
|
||||||
ほか
|
|
||||||
https://thedesk.top
|
|
||||||
:github: https://github.com/cutls/TheDesk #Desk #DeskUpdate
|
|
||||||
|
|
||||||
## For Other Instances
|
|
||||||
|
|
||||||
TheDesk :thedesk: Akane (16.0.1)
|
|
||||||
|
|
||||||
https://thedesk.top
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# プライバシーポリシー
|
|
||||||
|
|
||||||
* TheDeskは「開発者からのお知らせ」配信のためにサーバー(thedesk.top)に常時アクセスしています。
|
|
||||||
* 上記の接続によるユーザーの情報提供はありません。(IPアドレス等を含む)
|
|
||||||
* thedesk.topのページにおいては、Googleアナリティクスによる解析を採用しています。
|
|
||||||
* 配信についてAmazon Web Service CloudFrontを使用しています。CloudFrontにはアクセス解析機能がありますが、これの使用につきましては同プライバシーポリシーに則ります。
|
|
||||||
* 接続するインスタンスのプライバシーポリシーはAPIを通じた全てのアクションに対して有効ですので、TheDeskについてもそれらに則ります。
|
|
||||||
|
|
||||||
167
README.md
@@ -1,83 +1,134 @@
|
|||||||
|
<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
|
||||||
|
|
||||||
[](https://travis-ci.org/cutls/TheDesk)
|
[](https://travis-ci.org/cutls/TheDesk)
|
||||||
[](https://translate.thedesk.top/project/thedesk)
|
[](https://translate.thedesk.top/project/thedesk)
|
||||||
|
[](https://bit.ly/31zqMmZ)
|
||||||
|
[](https://github.com/cutls/TheDesk/releases)
|
||||||
|

|
||||||
Mastodon/Misskey client for PC(Windows/Linux/macOS)
|
Mastodon/Misskey client for PC(Windows/Linux/macOS)
|
||||||
オープンソースSNSマストドン/MisskeyのWindows/Linuxクライアント
|
オープンソースSNSマストドン/MisskeyのPC向けクライアント[日本語はこちら](README_ja.md)
|
||||||
Download:[TheDesk](https://thedesk.top)
|
|
||||||
|
|
||||||
Contact me(bug report...):GitHub Issues, mention to [Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls) or toot with #Desk
|
Download:[TheDesk](https://thedesk.top) [](https://status.cutls.com)
|
||||||
|
|
||||||
バグレポートなど:GitHub Issuesや[Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls)へのリプ,または#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>
|
||||||
|
<a href="https://liberapay.com/cutls/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
|
||||||
|

|
||||||
|
|
||||||
### Contribute/コントリビュート
|
## License
|
||||||
|
|
||||||
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/)/アイコンは[クリエイティブ・コモンズ 表示-非営利-継承](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/)
|
||||||
[Press Kit](https://dl.thedesk.top/press/TheDesk+PressKit.zip)
|
[Press Kit](https://d2upiril6ywqp9.cloudfront.net/press/TheDesk+PressKit.zip)
|
||||||
|
|
||||||
* [PNG](https://dl.thedesk.top/press/TheDesk.png)
|
* [PNG 512x512](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.png)
|
||||||
* [Monotone SVG](https://dl.thedesk.top/press/TheDesk.svg)
|
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg)
|
||||||
* [ico](https://dl.thedesk.top/press/TheDesk.ico)
|
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico)
|
||||||
* [icns](https://dl.thedesk.top/press/TheDesk.icns)
|
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns)
|
||||||
|
* [Illustrator .ai](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ai)
|
||||||
|
|
||||||
## Terms of Use/利用規約
|
The default sounds of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/)
|
||||||
|
|
||||||
|
## 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
|
||||||
|
* de, cs, bg(from Crowdin)
|
||||||
|
|
||||||
### Translation/翻訳
|
### Translation
|
||||||
|
|
||||||
Crowdin project is available! Visit: https://translate.thedesk.top
|
Crowdin project is available! Visit: https://translate.thedesk.top
|
||||||
|
|
||||||
Crowdinから翻訳に参加してみませんか?: https://translate.thedesk.top
|
### Run on developer mode
|
||||||
|
|
||||||
## Requirement/環境
|
`npm run dev` on `app` folder.
|
||||||
|
|
||||||
* Electron 3.0.10(install yourself)
|
## Contributors
|
||||||
* electron-dl(in package.json)
|
|
||||||
* Jimp(in package.json)
|
|
||||||
* font-manager(in package.json)
|
|
||||||
* Python 2.x(install yourself)
|
|
||||||
* VisualC++(Windows)(install yourself)
|
|
||||||
* itunes-nowplaying-mac(for macOS)(in package.json)
|
|
||||||
* node-notifier(in package.json)
|
|
||||||
* sumchecker(in package.json)
|
|
||||||
* Ability to read unformated files!(install yourself)
|
|
||||||
|
|
||||||
## Contributors/主なコントリビューター
|
Build for macOS
|
||||||
|
|
||||||
macOSビルダー
|
* [toneji](https://minohdon.jp/@toneji)
|
||||||
|
|
||||||
* [とねぢ](https://minohdon.jp/@toneji)
|
Build for Linux
|
||||||
|
|
||||||
Linuxビルダー
|
* [popn_ja](https://popon.pptdn.jp/@popn_ja)
|
||||||
|
|
||||||
* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
|
Fellow coder
|
||||||
|
|
||||||
iTunes NowPlayingにアルバムアートワークを付けてくれた人
|
* [kPherox](https://pl.kpherox.dev/kPherox)
|
||||||
|
|
||||||
* [kPherox](https://www.kr-kp.com/)
|
## Build
|
||||||
|
|
||||||
## Build/ビルド
|
You have to use either **npm** or **yarn**. Whichever you use, it works well.
|
||||||
|
|
||||||
Misskey(misskey.xyz) application token is not in cutls/TheDesk
|
### npm
|
||||||
Misskey(misskey.xyz)のトークンは含まれておりません。
|
|
||||||
`git clone https://github.com/cutls/TheDesk`
|
```sh
|
||||||
`npm install electron -g`
|
git clone https://github.com/cutls/TheDesk
|
||||||
`cd TheDesk/app`
|
cd TheDesk/app
|
||||||
`npm install`
|
npm install
|
||||||
|
npm install --only=dev
|
||||||
|
npm run construct
|
||||||
|
```
|
||||||
|
|
||||||
|
### yarn
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/cutls/TheDesk
|
||||||
|
cd TheDesk/app
|
||||||
|
# Linux or macOS
|
||||||
|
yarn install --no-lockfile
|
||||||
|
# Windows
|
||||||
|
yarn install
|
||||||
|
|
||||||
|
yarn construct
|
||||||
|
```
|
||||||
|
|
||||||
|
run `npm run dev` or `yarn dev` to launch developer version with console(click `view`)
|
||||||
|
|
||||||
|
### electron-builder(Recommended)
|
||||||
|
Use scripts(they can work well with npm, **yarn**).
|
||||||
|
|
||||||
|
#### npm
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Build for current platform
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# Select build target
|
||||||
|
## Windows
|
||||||
|
npm run build:win
|
||||||
|
|
||||||
|
## Windows and Linux (The macOS target should run on macOS. So, this option hasn't include the build for macOS)
|
||||||
|
npm run build:all
|
||||||
|
```
|
||||||
|
|
||||||
|
#### yarn
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Build for current platform
|
||||||
|
yarn build
|
||||||
|
|
||||||
|
# Select build target
|
||||||
|
## Windows
|
||||||
|
yarn build:win
|
||||||
|
|
||||||
|
## Windows and Linux (The macOS target should run on macOS. So, this option hasn't include the build for macOS)
|
||||||
|
yarn build:all
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Config is all on package.json
|
||||||
|
|
||||||
|
### electron-packager
|
||||||
`npm install --save-dev electron-rebuild`
|
`npm install --save-dev electron-rebuild`
|
||||||
|
|
||||||
Linux/macOS
|
Linux/macOS
|
||||||
@@ -86,13 +137,8 @@ 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)氏談)
|
|
||||||
|
|
||||||
### electron-packager
|
|
||||||
|
|
||||||
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
|
||||||
@@ -100,19 +146,24 @@ Linux
|
|||||||
macOS
|
macOS
|
||||||
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite`
|
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite`
|
||||||
|
|
||||||
### electron-builder
|
### PWA support
|
||||||
|
|
||||||
Config is all on package.json
|
TheDesk is a wed-based app, so you can run it on a browser. Of course, the main stream is as Electron. Some features won't work as well as Electron.
|
||||||
ビルド設定はすべてpackage.jsonに記載しています。
|
|
||||||
|
You can run `npm run build:pwa` to build as PWA, including `manifest.json` and the ServiceWorker.
|
||||||
|
|
||||||
|
**You have to rename `node_modules` to `dependencies` to run as a web application. (restricted by Netlify)**
|
||||||
|
|
||||||
|
Check the app on Chrome or Firefox: [Here](https://app.thedesk.top) (it follows the `master` branch, so not stable.)
|
||||||
|
[](https://app.netlify.com/sites/thedesk/deploys)
|
||||||
|
|
||||||
## Pleroma support
|
## Pleroma support
|
||||||
|
|
||||||
Did you find a bug with Pleroma accounts?
|
Did you find a bug with Pleroma accounts?
|
||||||
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に書いてある問題についてはなるべく対処しますので、ぜひお知らせください。
|
|
||||||
|
|
||||||
## See also/詳しく
|
## Vulnerabilities when `npm i`???
|
||||||
|
|
||||||
|
No, if your npm says materialize-css has vulnerabilities(CVE-2019-11002/3/4), look at [here](https://github.com/Dogfalo/materialize/issues/6286) under discussion.
|
||||||
|
|
||||||
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)
|
|
||||||
|
|||||||
171
README_ja.md
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
<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
|
||||||
|
|
||||||
|
[](https://travis-ci.org/cutls/TheDesk)
|
||||||
|
[](https://translate.thedesk.top/project/thedesk)
|
||||||
|
[](https://bit.ly/31zqMmZ)
|
||||||
|
[](https://github.com/cutls/TheDesk/releases)
|
||||||
|

|
||||||
|
Mastodon/Misskey client for PC(Windows/Linux/macOS)
|
||||||
|
オープンソースSNSマストドン/MisskeyのPC向けクライアント
|
||||||
|
Download:[TheDesk](https://thedesk.top) [](https://status.cutls.com)
|
||||||
|
|
||||||
|
[Pixiv FANBOX](https://www.pixiv.net/fanbox/creator/28105985)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## ライセンス
|
||||||
|
|
||||||
|
[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(英語)
|
||||||
|
* ドイツ語, チェコ語, ブルガリア語(from Crowdin)
|
||||||
|
|
||||||
|
### 翻訳
|
||||||
|
|
||||||
|
Crowdinから翻訳に参加してみませんか?: https://translate.thedesk.top
|
||||||
|
|
||||||
|
### デベロッパーモード
|
||||||
|
|
||||||
|
`npm run dev`を`app`フォルダ内で実行
|
||||||
|
|
||||||
|
## 主なコントリビューター
|
||||||
|
|
||||||
|
macOSビルダー
|
||||||
|
|
||||||
|
* [とねぢ](https://minohdon.jp/@toneji)
|
||||||
|
|
||||||
|
Linuxビルダー
|
||||||
|
|
||||||
|
* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
|
||||||
|
|
||||||
|
コーダー
|
||||||
|
|
||||||
|
* [kPherox](https://pl.kpherox.dev/kPherox)
|
||||||
|
|
||||||
|
## ビルド
|
||||||
|
|
||||||
|
npmでもyarnでも好きな方を選んでください。
|
||||||
|
|
||||||
|
### npm
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/cutls/TheDesk
|
||||||
|
cd TheDesk/app
|
||||||
|
npm install
|
||||||
|
npm install --only=dev
|
||||||
|
npm run construct
|
||||||
|
```
|
||||||
|
|
||||||
|
### yarn
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://github.com/cutls/TheDesk
|
||||||
|
cd TheDesk/app
|
||||||
|
# Linux or macOS
|
||||||
|
yarn install --no-lockfile
|
||||||
|
# Windows
|
||||||
|
yarn install
|
||||||
|
|
||||||
|
yarn construct
|
||||||
|
```
|
||||||
|
|
||||||
|
### electron-builder(推奨)
|
||||||
|
|
||||||
|
scriptsを利用します
|
||||||
|
|
||||||
|
#### npm
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# 実行している環境向けにビルド
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# ターゲットを指定してビルド
|
||||||
|
## Windows
|
||||||
|
npm run build:win
|
||||||
|
|
||||||
|
## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません
|
||||||
|
npm run build:all
|
||||||
|
```
|
||||||
|
|
||||||
|
#### yarn
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# 実行している環境向けにビルド
|
||||||
|
yarn build
|
||||||
|
|
||||||
|
# ターゲットを指定してビルド
|
||||||
|
## Windows
|
||||||
|
yarn build:win
|
||||||
|
|
||||||
|
## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません
|
||||||
|
yarn 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`
|
||||||
|
|
||||||
|
### PWAとして実行
|
||||||
|
|
||||||
|
TheDeskはウェブ技術を使用して作られているので、ブラウザで動かすこともできます。もちろん、Electron向けに設計されているので一部機能は動きません。
|
||||||
|
|
||||||
|
`npm run build:pwa`でビルドできます。PWAに必要な`manifest.json`やサービスワーカーなども要員されています。
|
||||||
|
|
||||||
|
**`node_modules`を`dependencies`にリネームしないと動きません。(Netlifyの制限です)**
|
||||||
|
|
||||||
|
ChromeまたはFirefoxでチェック: [こちら](https://app.thedesk.top) (`master`ブランチに追従しています。不安定です。)
|
||||||
|
[](https://app.netlify.com/sites/thedesk/deploys)
|
||||||
|
|
||||||
|
## 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)で本当に脆弱性かどうか議論しています。
|
||||||
|
実際には害が無いものと思われます。
|
||||||
214
app/about.html
@@ -1,109 +1,135 @@
|
|||||||
<!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="./css/materialize.css" type="text/css" rel="stylesheet">
|
<link href="./node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
|
||||||
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
|
<link href='./css/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;
|
||||||
a,button{
|
padding-top: 15px;
|
||||||
-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;
|
|
||||||
}
|
|
||||||
|
|
||||||
.area-name1 {
|
a,
|
||||||
grid-area: name1;
|
button {
|
||||||
}
|
-webkit-app-region: no-drag;
|
||||||
|
}
|
||||||
|
|
||||||
.area-data1 {
|
.container {
|
||||||
grid-area: data1;
|
width: 100%;
|
||||||
}
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
grid-template-rows: 1fr 1fr 1fr 1fr 1fr;
|
||||||
|
grid-template-areas: 'name1 data1''name2 data2''name3 data3''name4 data4''name5 data5''name6 data6';
|
||||||
|
text-align: left;
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
.area-name2 {
|
.area-name1 {
|
||||||
grid-area: name2;
|
grid-area: name1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.area-data2 {
|
.area-data1 {
|
||||||
grid-area: data2;
|
grid-area: data1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.area-name3 {
|
.area-name2 {
|
||||||
grid-area: name3;
|
grid-area: name2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.area-data3 {
|
.area-data2 {
|
||||||
grid-area: data3;
|
grid-area: data2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.area-name4 {
|
.area-name3 {
|
||||||
grid-area: name4;
|
grid-area: name3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.area-data4 {
|
.area-data3 {
|
||||||
grid-area: data4;
|
grid-area: data3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.area-name5 {
|
.area-name4 {
|
||||||
grid-area: name5;
|
grid-area: name4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.area-data5 {
|
.area-data4 {
|
||||||
grid-area: data5;
|
grid-area: data4;
|
||||||
}
|
}
|
||||||
</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">
|
|
||||||
<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>
|
|
||||||
<img src="./img/desk.png" style="max-width:70%;">
|
|
||||||
<h5>TheDesk</h5>
|
|
||||||
<div class='container'>
|
|
||||||
<div class='area-name1'>バージョン</div>
|
|
||||||
<div class='area-data1' id="now"></div>
|
|
||||||
<div class='area-name2'>Internal version</div>
|
|
||||||
<div class='area-data2' id="ver"></div>
|
|
||||||
<div class='area-name3'>Chromium</div>
|
|
||||||
<div class='area-data3' id="chrome"></div>
|
|
||||||
<div class='area-name4'>Electron</div>
|
|
||||||
<div class='area-data4' id="electron"></div>
|
|
||||||
<div class='area-name5'>Node.js</div>
|
|
||||||
<div class='area-data5' id="node"></div>
|
|
||||||
</div>
|
|
||||||
<div class="cp">Copyright © TheDesk 2018 All rights reserved.<br><a href="https://thedesk.top" target="_blank">Web site</a></div>
|
|
||||||
<button onclick="window.close()" class="btn waves-effect indigo" style="width:calc(100% - 10px);"><i class="material-icons left">close</i>Close</button>
|
|
||||||
<script type="text/javascript" src="./js/ui/theme.js"></script>
|
|
||||||
<script>
|
|
||||||
$("#now").text(localStorage.getItem("ver"));
|
|
||||||
var electron = require("electron");
|
|
||||||
var remote=electron.remote;
|
|
||||||
//JSON.parse(fs.readFileSync(info_path, 'utf8'));
|
|
||||||
console.log(process.versions);
|
|
||||||
$("#node").text(process.version);
|
|
||||||
$("#chrome").text(process.versions.chrome);
|
|
||||||
$("#electron").text(process.versions.electron);
|
|
||||||
if(location.search){
|
|
||||||
var m = location.search.match(/\?ver=([a-zA-Z-0-9.]+)/);
|
|
||||||
var ver=m[1];
|
|
||||||
$("#ver").text(ver);
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
<body class="center " style="overflow:hidden">
|
||||||
<script type="text/javascript" src="./js/platform/end.js"></script>
|
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
|
||||||
|
<script type="text/javascript" src="./node_modules/materialize-css/dist/js/materialize.js"></script>
|
||||||
|
<img src="./img/desk.svg" style="max-width:62%;">
|
||||||
|
<h5>TheDesk</h5>
|
||||||
|
<div class="container">
|
||||||
|
<div class="area-name1">Display version</div>
|
||||||
|
<div class="area-data1" id="now"></div>
|
||||||
|
<div class="area-name2">Internal version</div>
|
||||||
|
<div class="area-data2" id="ver"></div>
|
||||||
|
<div class="area-name3">Commit(7chars)</div>
|
||||||
|
<div class="area-data3" id="hash"></div>
|
||||||
|
<div class="area-name4">Chromium</div>
|
||||||
|
<div class="area-data4" id="chrome"></div>
|
||||||
|
<div class="area-name5">Electron</div>
|
||||||
|
<div class="area-data5" id="electron"></div>
|
||||||
|
<div class="area-name6">Node.js</div>
|
||||||
|
<div class="area-data6" id="node"></div>
|
||||||
|
</div>
|
||||||
|
<div class="cp">Copyright © TheDesk 2018<br>
|
||||||
|
Main developer(author): <a href="https://cutls.com/@Cutls" target="_blank">Cutls P</a><br>
|
||||||
|
Thanks:<a href="https://minohdon.jp/@toneji" target="_blank">toneji</a>/<a
|
||||||
|
href="https://popon.pptdn.jp/@popn_ja" target="_blank">popn_ja</a>/<a href="https://pl.kpherox.dev/kPherox"
|
||||||
|
target="_blank">kPherox</a> and all users
|
||||||
|
<img draggable="false" style="width:0.8rem;top: 1px;margin-left: 1px;position: relative;" alt="❤️"
|
||||||
|
title=":heart:" src="https://twemoji.maxcdn.com/2/72x72/2764.png">
|
||||||
|
<br><a href="https://thedesk.top" target="_blank">Web site</a></div>
|
||||||
|
<button onclick="window.close()" class="btn waves-effect indigo" style="width:calc(100% - 10px);"><i
|
||||||
|
class="material-icons left">close</i>Close</button>
|
||||||
|
<script type="text/javascript" src="./js/ui/theme.js"></script>
|
||||||
|
<script>
|
||||||
|
var about = JSON.parse(localStorage.getItem("about"));
|
||||||
|
$("#now").text(localStorage.getItem("ver"));
|
||||||
|
$("#node").text(about[0]);
|
||||||
|
$("#chrome").text(about[1]);
|
||||||
|
$("#electron").text(about[2]);
|
||||||
|
if (location.search) {
|
||||||
|
var m = location.search.match(/\?ver=([a-zA-Z-0-9.]+)/);
|
||||||
|
var ver = m[1];
|
||||||
|
$("#ver").text(ver);
|
||||||
|
}
|
||||||
|
$("#hash").html('<a href="https://github.com/cutls/TheDesk/commits/' + about[3] + '" target="_blank">' + about[3].slice(0, 7) + '</a>');
|
||||||
|
$(document).on('click', 'a', e => {
|
||||||
|
var url = $(e.target).attr('href');
|
||||||
|
postMessage(["openUrl", url], "*")
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
</script>
|
||||||
260
app/adobe.html
@@ -1,260 +0,0 @@
|
|||||||
<!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>
|
|
||||||
112
app/build.js
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
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
|
||||||
|
})
|
||||||
|
}
|
||||||
BIN
app/build/appx/Square150x150Logo.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
app/build/appx/Square44x44Logo.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
app/build/appx/StoreLogo.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
app/build/appx/Wide310x150Logo.png
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
app/build/thedesk.ico
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
@@ -1,2 +1,4 @@
|
|||||||
/*このソフトについてを押した時に読み込まれます*/
|
/*このソフトについてを押した時に読み込まれます*/
|
||||||
body{font-family:Open Sans;}
|
body {
|
||||||
|
font-family: Open Sans;
|
||||||
|
}
|
||||||
|
|||||||
76
app/css/acct.css
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
.acct {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
width: 400px;
|
||||||
|
background-color: #494949;
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body,
|
||||||
|
html {
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
#acct-list {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
color: white;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lts {
|
||||||
|
font-size: 150%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.colorsel {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .colorsel div:not(.exc) {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .colorsel div.exc {
|
||||||
|
width: 40px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.first {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.first .hide-first {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#compt {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 50px;
|
||||||
|
border: 1px solid;
|
||||||
|
border: 1px solid;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#compt li {
|
||||||
|
list-style-type: disc;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#domain-list {
|
||||||
|
width: 500px;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
i.left {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#domain-list .title {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
24
app/css/font-awesome.css
vendored
@@ -5,9 +5,15 @@
|
|||||||
/* 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') 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');
|
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");
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
@@ -60,9 +66,9 @@
|
|||||||
left: -1.85714286em;
|
left: -1.85714286em;
|
||||||
}
|
}
|
||||||
.fa-border {
|
.fa-border {
|
||||||
padding: .2em .25em .15em;
|
padding: 0.2em 0.25em 0.15em;
|
||||||
border: solid 0.08em #eeeeee;
|
border: solid 0.08em #eeeeee;
|
||||||
border-radius: .1em;
|
border-radius: 0.1em;
|
||||||
}
|
}
|
||||||
.fa-pull-left {
|
.fa-pull-left {
|
||||||
float: left;
|
float: left;
|
||||||
@@ -71,10 +77,10 @@
|
|||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
.fa.fa-pull-left {
|
.fa.fa-pull-left {
|
||||||
margin-right: .3em;
|
margin-right: 0.3em;
|
||||||
}
|
}
|
||||||
.fa.fa-pull-right {
|
.fa.fa-pull-right {
|
||||||
margin-left: .3em;
|
margin-left: 0.3em;
|
||||||
}
|
}
|
||||||
/* Deprecated as of 4.4.0 */
|
/* Deprecated as of 4.4.0 */
|
||||||
.pull-right {
|
.pull-right {
|
||||||
@@ -84,10 +90,10 @@
|
|||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
.fa.pull-left {
|
.fa.pull-left {
|
||||||
margin-right: .3em;
|
margin-right: 0.3em;
|
||||||
}
|
}
|
||||||
.fa.pull-right {
|
.fa.pull-right {
|
||||||
margin-left: .3em;
|
margin-left: 0.3em;
|
||||||
}
|
}
|
||||||
.fa-spin {
|
.fa-spin {
|
||||||
-webkit-animation: fa-spin 2s infinite linear;
|
-webkit-animation: fa-spin 2s infinite linear;
|
||||||
|
|||||||
@@ -1,409 +1,572 @@
|
|||||||
/*共通CSS*/
|
/*共通CSS*/
|
||||||
html,body{
|
html,
|
||||||
/*transform: translate3d(0,0,0);*/
|
body {
|
||||||
overflow:hidden;
|
/*transform: translate3d(0,0,0);*/
|
||||||
user-select: none;
|
overflow: hidden;
|
||||||
cursor:default;
|
user-select: none;
|
||||||
font-size:13px;
|
cursor: default;
|
||||||
height: 100vh;
|
font-size: 13px;
|
||||||
background-color: var(--bg);
|
height: 100vh;
|
||||||
color: var(--color);
|
color: var(--color);
|
||||||
}
|
}
|
||||||
body{
|
.titlebar, .menubar-menu-container, .action-menu-item {
|
||||||
border: thin solid gray;
|
background-color: var(--notfbox) !important;
|
||||||
|
filter: brightness(110%) !important;
|
||||||
|
color: var(--color) !important;
|
||||||
|
}
|
||||||
|
.action-menu-item:hover {
|
||||||
|
filter: brightness(80%) !important;
|
||||||
}
|
}
|
||||||
.btn {
|
.btn {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
}
|
}
|
||||||
.markdown {
|
.markdown {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
help {
|
help {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.show-help {
|
.show-help {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
option {
|
option {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
#mainView {
|
#mainView {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
overflow: scroll;
|
||||||
|
height: auto;
|
||||||
}
|
}
|
||||||
#message {
|
#message {
|
||||||
display: none;
|
display: none;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
background-color: black;
|
background-color: black;
|
||||||
color: white;
|
color: white;
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
}
|
}
|
||||||
#imagemodal, #videomodal {
|
#imagemodal,
|
||||||
display: none;
|
#videomodal {
|
||||||
max-width: 100vw;
|
display: none;
|
||||||
max-height: 100vh;
|
max-width: 100vw;
|
||||||
position: fixed;
|
max-height: 100vh;
|
||||||
z-index: 9;
|
position: fixed;
|
||||||
|
z-index: 9;
|
||||||
|
top: 0 !important;
|
||||||
}
|
}
|
||||||
#videomodal, #tootmodal {
|
#videomodal,
|
||||||
background-color: var(--modal);
|
#tootmodal {
|
||||||
|
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: hidden;
|
||||||
overflow-y:hidden;
|
overflow-y: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
#imagewrap {
|
#imagewrap {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
.pointer {
|
.pointer {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.badge{
|
.badge {
|
||||||
min-width: 0 !important;
|
min-width: 0 !important;
|
||||||
margin-left: 5px !important;
|
margin-left: 5px !important;
|
||||||
}
|
}
|
||||||
.bbcode-pulse-loadings, .bbcode-pulse-loading, .fa-pulse {
|
.unvisible {
|
||||||
display: inline-block;
|
opacity: 0;
|
||||||
animation-duration: 3s;
|
}
|
||||||
animation-fill-mode: both;
|
.bbcode-pulse-loadings,
|
||||||
animation-iteration-count: infinite;
|
.bbcode-pulse-loading,
|
||||||
animation-name: pulse;
|
.fa-pulse {
|
||||||
|
display: inline-block;
|
||||||
|
animation-duration: 3s;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-name: pulse;
|
||||||
}
|
}
|
||||||
@keyframes pulse {
|
@keyframes pulse {
|
||||||
from, 50%, to {
|
from,
|
||||||
opacity: 1;
|
50%,
|
||||||
}
|
to {
|
||||||
25%, 75% {
|
opacity: 1;
|
||||||
opacity: 0;
|
}
|
||||||
}
|
25%,
|
||||||
|
75% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@keyframes shake {
|
@keyframes shake {
|
||||||
from,
|
from,
|
||||||
to {
|
to {
|
||||||
-webkit-transform: translate3d(0, 0, 0);
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
transform: translate3d(0, 0, 0);
|
transform: translate3d(0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
10%,
|
10%,
|
||||||
30%,
|
30%,
|
||||||
50%,
|
50%,
|
||||||
70%,
|
70%,
|
||||||
90% {
|
90% {
|
||||||
-webkit-transform: translate3d(-10px, 0, 0);
|
-webkit-transform: translate3d(-10px, 0, 0);
|
||||||
transform: translate3d(-10px, 0, 0);
|
transform: translate3d(-10px, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
20%,
|
20%,
|
||||||
40%,
|
40%,
|
||||||
60%,
|
60%,
|
||||||
80% {
|
80% {
|
||||||
-webkit-transform: translate3d(10px, 0, 0);
|
-webkit-transform: translate3d(10px, 0, 0);
|
||||||
transform: translate3d(10px, 0, 0);
|
transform: translate3d(10px, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.shake {
|
.shake {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
animation-duration: 1s;
|
animation-duration: 1s;
|
||||||
animation-fill-mode: both;
|
animation-fill-mode: both;
|
||||||
animation-iteration-count: infinite;
|
animation-iteration-count: infinite;
|
||||||
animation-name: shake;
|
animation-name: shake;
|
||||||
}
|
}
|
||||||
code:before, .pre:before {
|
code:before,
|
||||||
content: "Code";
|
.pre:before {
|
||||||
font-size: 1.8rem;
|
content: 'Code';
|
||||||
line-height: 1em;
|
font-size: 1.8rem;
|
||||||
font-family: monospace, monospace;
|
line-height: 1em;
|
||||||
color: #999;
|
font-family: monospace, monospace;
|
||||||
position: absolute;
|
color: #999;
|
||||||
right: 0;
|
position: absolute;
|
||||||
top: 0;
|
right: 0;
|
||||||
|
top: 0;
|
||||||
}
|
}
|
||||||
code, pre {
|
code,
|
||||||
color: white;
|
pre {
|
||||||
display: block;
|
color: white;
|
||||||
border-left: 5px solid;
|
display: block;
|
||||||
border-color: #079903;
|
border-left: 5px solid;
|
||||||
padding-left: 10px;
|
border-color: #079903;
|
||||||
margin-top: 5px;
|
padding-left: 10px;
|
||||||
margin-bottom: 5px;
|
margin-top: 5px;
|
||||||
margin-left: 5px;
|
margin-bottom: 5px;
|
||||||
background-color: #000;
|
margin-left: 5px;
|
||||||
padding: 1em 1em 1em;
|
background-color: #000;
|
||||||
position: relative;
|
padding: 1em 1em 1em;
|
||||||
border-top-left-radius: 10px;
|
position: relative;
|
||||||
border-bottom-right-radius: 10px;
|
border-top-left-radius: 10px;
|
||||||
border-bottom-left-radius: 10px;
|
border-bottom-right-radius: 10px;
|
||||||
|
border-bottom-left-radius: 10px;
|
||||||
}
|
}
|
||||||
blockquote, .quote p {
|
blockquote,
|
||||||
margin: 0;
|
.quote p {
|
||||||
|
margin: 0;
|
||||||
}
|
}
|
||||||
blockquote, .quote {
|
blockquote,
|
||||||
color: black;
|
.quote {
|
||||||
background-color: #ddd;
|
color: black;
|
||||||
padding: 1em 1em 1em;
|
background-color: #ddd;
|
||||||
position: relative;
|
padding: 1em 1em 1em;
|
||||||
border-top-left-radius: 10px;
|
position: relative;
|
||||||
border-bottom-right-radius: 10px;
|
border-top-left-radius: 10px;
|
||||||
border-bottom-left-radius: 10px;
|
border-bottom-right-radius: 10px;
|
||||||
|
border-bottom-left-radius: 10px;
|
||||||
}
|
}
|
||||||
blockquote:before, .quote:before {
|
blockquote:before,
|
||||||
content: "Quote";
|
.quote:before {
|
||||||
font-size: 1.8rem;
|
content: 'Quote';
|
||||||
line-height: 1em;
|
font-size: 1.8rem;
|
||||||
font-family: Open Sans, cursive;
|
line-height: 1em;
|
||||||
color: #999;
|
font-family: Open Sans, cursive;
|
||||||
position: absolute;
|
color: #999;
|
||||||
right: 0;
|
position: absolute;
|
||||||
top: 0;
|
right: 0;
|
||||||
}
|
top: 0;
|
||||||
.twitter-tweet {
|
|
||||||
color: black;
|
|
||||||
background-color: #fff;
|
|
||||||
padding: 1em 1em 1em;
|
|
||||||
position: relative;
|
|
||||||
border-top-left-radius: 10px;
|
|
||||||
border-bottom-right-radius: 10px;
|
|
||||||
border-bottom-left-radius: 10px;
|
|
||||||
border-left: 5px solid #0c7abf;
|
|
||||||
}
|
|
||||||
.twitter-tweet :before {
|
|
||||||
content: "From Twitter";
|
|
||||||
font-size: 1.8rem;
|
|
||||||
line-height: 1em;
|
|
||||||
font-family: Open Sans;
|
|
||||||
color: #999;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
}
|
}
|
||||||
.pixiv-post {
|
.pixiv-post {
|
||||||
color: black;
|
color: black;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
padding: 1em 1em 1em;
|
padding: 1em 1em 1em;
|
||||||
position: relative;
|
position: relative;
|
||||||
border-top-left-radius: 10px;
|
border-top-left-radius: 10px;
|
||||||
border-bottom-right-radius: 10px;
|
border-bottom-right-radius: 10px;
|
||||||
border-bottom-left-radius: 10px;
|
border-bottom-left-radius: 10px;
|
||||||
border-left: 5px solid #0096fa;
|
border-left: 5px solid #0096fa;
|
||||||
}
|
}
|
||||||
.pixiv-post :before {
|
.pixiv-post :before {
|
||||||
content: "From Pixiv";
|
content: 'From Pixiv';
|
||||||
font-size: 1.8rem;
|
font-size: 1.8rem;
|
||||||
line-height: 1em;
|
line-height: 1em;
|
||||||
font-family: Open Sans;
|
font-family: Open Sans;
|
||||||
color: #999;
|
color: #999;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
|
}
|
||||||
|
#start {
|
||||||
|
display: none;
|
||||||
|
position: fixed;
|
||||||
|
width: 100vw;
|
||||||
|
height: calc(100vh - 40px);
|
||||||
|
background-color: var(--bg);
|
||||||
|
color: var(--color);
|
||||||
|
z-index: 99999;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
#drag {
|
#drag {
|
||||||
display: none;
|
display: none;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
background-color: var(--bg);
|
background-color: var(--bg);
|
||||||
color: var(--color);
|
color: var(--color);
|
||||||
z-index: 99999;
|
z-index: 99999;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
#drag-content {
|
#drag-content {
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
.radio{
|
#pip {
|
||||||
font-family:'Baloo Bhai'
|
z-index: 504;
|
||||||
|
width: 418px;
|
||||||
|
background-color: var(--subcolor);
|
||||||
|
position: absolute;
|
||||||
}
|
}
|
||||||
#pip{
|
.pip-bottom {
|
||||||
z-index:504;
|
bottom: 10px;
|
||||||
width:418px;
|
|
||||||
background-color: var(--subcolor);
|
|
||||||
position:absolute;
|
|
||||||
}
|
}
|
||||||
.pip-bottom{
|
.pip-left {
|
||||||
bottom:10px;
|
left: 10px;
|
||||||
}
|
}
|
||||||
.pip-left{
|
.pip-top {
|
||||||
left:10px;
|
top: 10px;
|
||||||
}
|
}
|
||||||
.pip-top{
|
.pip-right {
|
||||||
top:10px;
|
right: 10px;
|
||||||
}
|
}
|
||||||
.pip-right{
|
#pip-content .material-icons {
|
||||||
right:10px;
|
display: none;
|
||||||
}
|
}
|
||||||
#pip-content .material-icons{
|
.big-text {
|
||||||
display:none;
|
font-size: 1.2rem;
|
||||||
}
|
|
||||||
.big-text{
|
|
||||||
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 {
|
||||||
|
animation: show 0.2s linear 0s;
|
||||||
}
|
}
|
||||||
.show{
|
@keyframes show {
|
||||||
animation: show 0.2s linear 0s;
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@keyframes show{
|
.hide-anime {
|
||||||
from{
|
animation: hide 0.2s linear 0s;
|
||||||
opacity: 0;
|
display: none;
|
||||||
}
|
|
||||||
to{
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.hide-anime{
|
@keyframes hide {
|
||||||
animation: hide 0.2s linear 0s;
|
from {
|
||||||
display:none;
|
opacity: 1;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@keyframes hide{
|
.collapsible-header,
|
||||||
from{
|
.tabs {
|
||||||
opacity: 1;
|
background-color: var(--subcolor);
|
||||||
}
|
|
||||||
to{
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.collapsible-header,.tabs{
|
.collapsible-header:focus {
|
||||||
background-color: var(--subcolor);
|
background-color: var(--subcolor) !important;
|
||||||
}
|
}
|
||||||
.modal-footer{
|
.modal-footer {
|
||||||
background-color: var(--modalfooter) !important;
|
background-color: var(--modalfooter) !important;
|
||||||
}
|
}
|
||||||
.font{
|
.font {
|
||||||
font-size:1.5rem;
|
font-size: 1.5rem;
|
||||||
margin-bottom: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(--postbox);
|
||||||
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:170px;
|
width: 230px;
|
||||||
}
|
}
|
||||||
#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:380px;
|
width: 100%;
|
||||||
max-height:375px;
|
overflow-y: scroll;
|
||||||
overflow-y:scroll;
|
overflow-x: hidden;
|
||||||
overflow-x:hidden;
|
padding: 5px;
|
||||||
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 span {
|
||||||
|
width: calc(100% - 30px);
|
||||||
}
|
}
|
||||||
#tltype .type:hover {
|
#tltype .type:hover {
|
||||||
background-color: var(--beforehover);
|
background-color: var(--beforehover);
|
||||||
}
|
}
|
||||||
#tltype .active{
|
#tltype .active {
|
||||||
background-color: var(--emphasized);
|
background-color: var(--emphasized);
|
||||||
}
|
}
|
||||||
#tltype i{
|
#tltype i {
|
||||||
font-size:30px;
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
#tltype i.sub-icon {
|
||||||
|
font-size: 20px;
|
||||||
|
position: absolute;
|
||||||
|
color: var(--beforehover);
|
||||||
|
left: 10px;
|
||||||
|
bottom: 5px;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
.drag-bar {
|
||||||
|
cursor: move;
|
||||||
|
text-align: center;
|
||||||
|
width: calc(100% + 10px);
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: var(--box);
|
||||||
|
filter: brightness(80%);
|
||||||
|
margin-left: -5px;
|
||||||
|
margin-right: -5px;
|
||||||
|
margin-top: -5px;
|
||||||
|
font-size: 16px;
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
#something-wrong {
|
||||||
|
flex-direction: column;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
#src-contents svg {
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
.contributor {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.contributor img {
|
||||||
|
width: 1rem;
|
||||||
|
}
|
||||||
|
.tagComp {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 60px 80px 1fr;
|
||||||
|
grid-template-rows: 1fr 1fr;
|
||||||
|
grid-template-areas: 'svg toot user' 'svg toot tag' 'svg toots tag';
|
||||||
|
border-top: dotted 0.5px var(--gray);
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.tagCompSvg {
|
||||||
|
grid-area: svg;
|
||||||
|
}
|
||||||
|
.tagCompToot {
|
||||||
|
grid-area: toot;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.tagCompToots {
|
||||||
|
grid-area: toots;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.tagCompUser {
|
||||||
|
grid-area: user;
|
||||||
|
}
|
||||||
|
.tagCompTag {
|
||||||
|
grid-area: tag;
|
||||||
|
padding-top: 10px;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
#sabakanMark {
|
||||||
|
background-color: var(--emphasized);
|
||||||
|
}
|
||||||
|
#pageSrc {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: calc(50vw - 150px);
|
||||||
|
width: 300px;
|
||||||
|
max-width: 100%;
|
||||||
|
background-color: var(--box);
|
||||||
|
z-index: 501;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
#pageSrcInput {
|
||||||
|
width: 160px;
|
||||||
}
|
}
|
||||||
#tltype i.sub-icon{
|
|
||||||
font-size: 20px;
|
|
||||||
position: relative;
|
|
||||||
color: var(--beforehover);
|
|
||||||
left: -15px;
|
|
||||||
|
|
||||||
}
|
@media (max-width: 500px) {
|
||||||
.drag-bar{
|
#pageSrc {
|
||||||
cursor:move;
|
left: 0;
|
||||||
text-align:center;
|
}
|
||||||
width:calc(100% + 10px);
|
|
||||||
border-radius: 5px;
|
|
||||||
background-color: var(--bg);
|
|
||||||
margin-left:-5px;
|
|
||||||
margin-right:-5px;
|
|
||||||
margin-top:-5px;
|
|
||||||
font-size:16px;
|
|
||||||
padding:4px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*スクロールバー*/
|
/*スクロールバー*/
|
||||||
::-webkit-scrollbar {
|
::-webkit-scrollbar {
|
||||||
width: 5px;
|
width: 5px;
|
||||||
height: 10px;
|
height: 10px;
|
||||||
background: rgba(0, 0, 0, 0.05);
|
background: rgba(0, 0, 0, 0.05);
|
||||||
}
|
}
|
||||||
::-webkit-scrollbar-track {
|
::-webkit-scrollbar-track {
|
||||||
-webkit-border-radius: 5px;
|
-webkit-border-radius: 5px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
/* Handle */
|
/* Handle */
|
||||||
::-webkit-scrollbar-thumb {
|
::-webkit-scrollbar-thumb {
|
||||||
-webkit-border-radius: 5px;
|
-webkit-border-radius: 5px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
background: #607d8b;
|
background: #607d8b;
|
||||||
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
|
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
/* Web Fonts */
|
||||||
|
@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
16
app/css/materialize.min.css
vendored
137
app/css/post.css
@@ -1,16 +1,23 @@
|
|||||||
/*トゥートボックス向け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;
|
||||||
min-width:300px;
|
max-width: 100%;
|
||||||
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 {
|
||||||
@@ -19,8 +26,7 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 2px;
|
right: 2px;
|
||||||
top:4px;
|
top: 4px;
|
||||||
|
|
||||||
}
|
}
|
||||||
.more-show {
|
.more-show {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -42,10 +48,12 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
#sch-box input {
|
#sch-box input {
|
||||||
width:auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
.picker__close, .picker__today, .picker__clear {
|
.picker__close,
|
||||||
color: #26a69a !important;
|
.picker__today,
|
||||||
|
.picker__clear {
|
||||||
|
color: #26a69a !important;
|
||||||
}
|
}
|
||||||
.cw {
|
.cw {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -54,10 +62,9 @@
|
|||||||
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 {
|
||||||
@@ -68,70 +75,70 @@
|
|||||||
#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:white;
|
color: var(--color);
|
||||||
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;
|
||||||
top: 90px;
|
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;
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
@@ -1,32 +1,31 @@
|
|||||||
|
.drag-content {
|
||||||
.drag-content{
|
text-overflow: ellipsis;
|
||||||
text-overflow: ellipsis;
|
cursor: move;
|
||||||
cursor:move;
|
user-select: none;
|
||||||
user-select: none;
|
background-color: var(--modalfooter);
|
||||||
background-color:var(--modalfooter);
|
margin: 5px;
|
||||||
margin:5px;
|
border-radius: 5px;
|
||||||
border-radius:5px;
|
color: var(--color);
|
||||||
color:var(--color);
|
padding: 3px;
|
||||||
padding:3px;
|
display: grid;
|
||||||
display:grid;
|
grid-template-columns: 43px 1fr 60px;
|
||||||
grid-template-columns: 43px 1fr 60px;
|
grid-template-areas: "sorticon sorttitle sorttitle" "sorticon sortacct sortaction";
|
||||||
grid-template-areas: 'sorticon sorttitle sorttitle' 'sorticon sortacct sortaction';
|
|
||||||
}
|
}
|
||||||
.sorticon {
|
.sorticon {
|
||||||
grid-area:sorticon;
|
grid-area: sorticon;
|
||||||
}
|
}
|
||||||
.sorticon i{
|
.sorticon i {
|
||||||
font-size: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;
|
||||||
}
|
}
|
||||||
@@ -1,100 +1,192 @@
|
|||||||
: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:#81c784;
|
--sidebar: #c5e1a5;
|
||||||
--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");
|
||||||
|
}
|
||||||
|
.polartheme {
|
||||||
|
--bg: #2e3440;
|
||||||
|
--drag: rgba(0, 0, 0, 0.8);
|
||||||
|
--color: white;
|
||||||
|
--beforehover: #8d94a0;
|
||||||
|
--modal: #3b4252;
|
||||||
|
--subcolor: #434c5e;
|
||||||
|
--box: #4c566a;
|
||||||
|
--sidebar: #3b4252;
|
||||||
|
--shared: #2d3b58;
|
||||||
|
--notfbox: #2a3857;
|
||||||
|
--emphasized: #2f4b86;
|
||||||
|
--his-data: rgba(0, 0, 0, 0.8);
|
||||||
|
--active: #2a3857;
|
||||||
|
--postbox: #434c5e;
|
||||||
|
--modalfooter: #485166;
|
||||||
|
--accentbtn: #2f4b86;
|
||||||
|
--selected: #464f61;
|
||||||
|
--selectedWithShare: #3e527e;
|
||||||
|
--gray: #cccccc;
|
||||||
|
}
|
||||||
|
.polartheme #imagemodal {
|
||||||
|
background: url("../img/pixel.svg");
|
||||||
|
}
|
||||||
|
.snowtheme {
|
||||||
|
--bg: #eceff4;
|
||||||
|
--drag: rgba(255, 255, 255, 0.8);
|
||||||
|
--color: #36425a;
|
||||||
|
--beforehover: #344058;
|
||||||
|
--modal: #e5e9f0;
|
||||||
|
--subcolor: #d8dee9;
|
||||||
|
--box: #c0c8d6;
|
||||||
|
--sidebar: #eeeeee;
|
||||||
|
--shared: #c3d4e6;
|
||||||
|
--notfbox: #d8dee9;
|
||||||
|
--emphasized: #88c0d0;
|
||||||
|
--his-data: rgba(255, 255, 255, 0.9);
|
||||||
|
--active: #8fbcbb;
|
||||||
|
--postbox: #d8dee9;
|
||||||
|
--modalfooter: #b2bed4;
|
||||||
|
--accentbtn: #81a1c1;
|
||||||
|
--selected: #b4bdd0;
|
||||||
|
--selectedWithShare: #a3afbb;
|
||||||
|
--gray: #5c6c8c;
|
||||||
|
}
|
||||||
|
.snowtheme #imagemodal {
|
||||||
|
background: url("../img/pixel.white.svg");
|
||||||
}
|
}
|
||||||
1100
app/css/tl.css
@@ -1,92 +1,151 @@
|
|||||||
/*アイコンをクリックした時とかにでてくるユーザーデータ*/
|
/*アイコンをクリックした時とかにでてくるユーザーデータ*/
|
||||||
#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-name{
|
#his-data .btn .material-icons{
|
||||||
font-size:1.5rem;
|
float:left;
|
||||||
|
}
|
||||||
|
#his-data-content {
|
||||||
|
display: flex;
|
||||||
|
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%;
|
||||||
|
overflow-y: hidden;
|
||||||
}
|
}
|
||||||
#his-float-timeline{
|
#his-leftside {
|
||||||
width: calc(100% - 400px);
|
width: 500px;
|
||||||
height:100%;
|
|
||||||
overflow-y:hidden;
|
|
||||||
}
|
}
|
||||||
#his-basic-prof{
|
#his-float-timeline {
|
||||||
min-height:130px;
|
max-width: 775px;
|
||||||
|
height: 100%;
|
||||||
|
overflow-y: hidden;
|
||||||
}
|
}
|
||||||
#his-matching-list{
|
#his-basic-prof {
|
||||||
|
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; padding:0; background-color:#757575; text-align:center;
|
height: 1.5rem;
|
||||||
padding:5px;
|
padding: 0;
|
||||||
margin-bottom:1px;
|
background-color: #757575;
|
||||||
|
text-align: center;
|
||||||
|
padding: 5px;
|
||||||
|
margin-bottom: 1px;
|
||||||
|
width: 30%;
|
||||||
}
|
}
|
||||||
.his-field-content{
|
.his-field-content {
|
||||||
height:1.5rem; padding:0; padding-left:5px;
|
height: 1.5rem;
|
||||||
|
padding: 0;
|
||||||
|
padding-left: 5px;
|
||||||
}
|
}
|
||||||
#his-data a span.ellipsis:after{
|
.his-var-content a span.ellipsis:after {
|
||||||
content:"...";
|
content: "...";
|
||||||
}
|
}
|
||||||
#his-data a:not(.mention) span:last-of-type{
|
.his-var-content a:not(.mention) span:last-of-type {
|
||||||
display:none;
|
display: none;
|
||||||
|
}
|
||||||
|
#his-data a .rep_ct,
|
||||||
|
#his-data a .rt_ct,
|
||||||
|
#his-data a .fav_ct {
|
||||||
|
display: inline !important;
|
||||||
}
|
}
|
||||||
#his-data-show {
|
#his-data-show {
|
||||||
margin: 20px;
|
margin: 20px;
|
||||||
background-color:var(--his-data);
|
margin-left: 50px;
|
||||||
width: calc(100% - 20px);
|
margin-right: 50px;
|
||||||
|
background-color: var(--his-data);
|
||||||
height: calc(100% - 20px);
|
height: calc(100% - 20px);
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
.tab-content {
|
#his-data-wrap {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.his-var-content {
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
height: calc(100% - 240px)
|
height: calc(100% - 45px);
|
||||||
}
|
}
|
||||||
.my-data-width {
|
#my-data-nav .btn {
|
||||||
width: 10%;
|
width: 140px;
|
||||||
}
|
}
|
||||||
.active-back{
|
.active-back {
|
||||||
background-color: var(--active);
|
background-color: var(--active);
|
||||||
}
|
}
|
||||||
#his-name .emojione,#his-name .emoji-img{
|
#his-name .emojione,
|
||||||
|
#his-name .emoji-img {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
}
|
}
|
||||||
#his-plus-action .btn{
|
#his-plus-action .btn {
|
||||||
width:170px
|
padding-right: 5px;
|
||||||
|
padding-left: 5px;
|
||||||
}
|
}
|
||||||
.custom-tabs{
|
.tabs {
|
||||||
display:flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
.custom-tabs .custom-tab a{
|
.tabs .tab a {
|
||||||
padding: 8px 12px;
|
padding: 8px 12px;
|
||||||
}
|
}
|
||||||
#his-des .mention{
|
#his-des {
|
||||||
|
max-height: 250px;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
#his-sign-action {
|
||||||
|
border: 1px solid;
|
||||||
|
border-radius: 5px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
#his-sign-action .btn {
|
||||||
|
flex-basis: 31.2%;
|
||||||
|
}
|
||||||
|
#his-des .mention {
|
||||||
color: #039be5;
|
color: #039be5;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
#his-table{
|
||||||
|
max-height: 150px;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
#his-float-blocked {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 2rem;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
#hisdropdown{
|
||||||
|
background-color: var(--bg);
|
||||||
|
}
|
||||||
|
#hisdropdown li:hover{
|
||||||
|
background-color: var(--active);
|
||||||
|
}
|
||||||
4
app/dist/builder-effective-config.yaml
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
directories:
|
||||||
|
output: dist
|
||||||
|
buildResources: build
|
||||||
|
electronVersion: 1.4.13
|
||||||
BIN
app/img/desk.png
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 11 KiB |
39
app/img/desk.svg
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
TheDesk icon, Cutls P.
|
||||||
|
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
|
||||||
|
-->
|
||||||
|
<!-- 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>
|
||||||
|
After Width: | Height: | Size: 2.4 KiB |
@@ -1,122 +1,39 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
<!--
|
||||||
|
TheDesk icon, Cutls P.
|
||||||
|
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
|
||||||
|
-->
|
||||||
|
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
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"/>
|
||||||
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg"
|
<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"/>
|
||||||
width="7.11022in" height="7.11022in"
|
|
||||||
viewBox="0 0 512 512">
|
<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 id="選択範囲 #1"
|
<path class="st5" d="M714.5,2953.5"/>
|
||||||
fill="white" stroke="white" stroke-width="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
|
||||||
d="M 96.00,16.00
|
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
|
||||||
C 99.85,16.01 102.39,15.12 104.00,19.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
|
||||||
104.00,19.00 97.00,19.00 97.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
|
||||||
97.00,19.00 108.00,22.07 108.00,22.07
|
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
|
||||||
108.00,22.07 144.00,43.08 144.00,43.08
|
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
|
||||||
144.00,43.08 181.83,64.31 181.83,64.31
|
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"/>
|
||||||
181.83,64.31 223.00,88.26 223.00,88.26
|
<rect class="st7" width="4096" height="4096"/>
|
||||||
223.00,88.26 247.00,102.22 247.00,102.22
|
<path class="st1" d="M-58,1122"/>
|
||||||
247.00,102.22 257.00,107.00 257.00,107.00
|
</g>
|
||||||
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: 6.2 KiB After Width: | Height: | Size: 2.3 KiB |
BIN
app/img/icons/icon-128x128.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
app/img/icons/icon-144x144.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
app/img/icons/icon-152x152.png
Normal file
|
After Width: | Height: | Size: 8.5 KiB |
BIN
app/img/icons/icon-192x192.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
app/img/icons/icon-384x384.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
app/img/icons/icon-512x512.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
app/img/icons/icon-72x72.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
app/img/icons/icon-96x96.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 434 B |
2
app/img/picture.svg
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
|
||||||
|
After Width: | Height: | Size: 259 B |
|
Before Width: | Height: | Size: 34 KiB |
136
app/img/thinking.svg
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
ThinkingDesk: Cutls P's icon, Cutls P.
|
||||||
|
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
|
||||||
|
-->
|
||||||
|
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<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>
|
||||||
|
After Width: | Height: | Size: 8.0 KiB |
7
app/index.html
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv=”refresh” content=”0;URL=’./view/ja'” />
|
||||||
|
<script>location.href = './view/ja';</script>
|
||||||
|
</head>
|
||||||
|
</html>
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
//このソフトについて
|
//このソフトについて
|
||||||
function about() {
|
function about() {
|
||||||
var electron = require("electron");
|
postMessage(["sendSinmpleIpc", "about"], "*")
|
||||||
var ipc = electron.ipcRenderer;
|
|
||||||
ipc.send('about', 'go');
|
|
||||||
}
|
}
|
||||||
119
app/js/common/blurhash.js
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
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
@@ -1,204 +1,268 @@
|
|||||||
|
selectedColumn = 0
|
||||||
|
selectedToot = 0
|
||||||
$(function($) {
|
$(function($) {
|
||||||
//キーボードショートカット
|
//キーボードショートカット
|
||||||
$(window).keydown(function(e) {
|
$(window).keydown(function(e) {
|
||||||
var hasFocus = $('input').is(':focus');
|
var hasFocus = $('input').is(':focus')
|
||||||
var hasFocus2 = $('textarea').is(':focus');
|
var hasFocus2 = $('textarea').is(':focus')
|
||||||
if(document.getElementById("webview")){
|
if (document.getElementById('webview')) {
|
||||||
if($("#webviewsel:checked").val()){
|
if ($('#webviewsel:checked').val()) {
|
||||||
var wv=false;
|
var wv = false
|
||||||
}else{
|
} else {
|
||||||
var wv=true;
|
var wv = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var wv = true
|
||||||
|
}
|
||||||
|
//Enter
|
||||||
|
if (e.keyCode === 13) {
|
||||||
|
if ($('#src').is(':focus')) {
|
||||||
|
src()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if ($('#list-add').is(':focus')) {
|
||||||
|
makeNewList()
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
}else{
|
|
||||||
var wv=true;
|
|
||||||
}
|
}
|
||||||
//Ctrl+Shift+Enter:Lgen
|
//Ctrl+Shift+Enter:Lgen
|
||||||
if (event.metaKey || event.ctrlKey && wv) {
|
if (event.metaKey || (event.ctrlKey && wv)) {
|
||||||
if (event.shiftKey) {
|
if (event.shiftKey) {
|
||||||
if (e.keyCode === 13) {
|
if (e.keyCode === 13) {
|
||||||
post('local');
|
post('local')
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//Ctrl+Enter:投稿
|
//Ctrl+Enter:投稿
|
||||||
if (event.metaKey || event.ctrlKey && wv) {
|
if (event.metaKey || (event.ctrlKey && wv)) {
|
||||||
if (e.keyCode === 13) {
|
if (e.keyCode === 13) {
|
||||||
post();
|
post()
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Alt+Enter:セカンダリー
|
//Alt+Enter:セカンダリー
|
||||||
if (event.metaKey || event.altKey && wv) {
|
if (event.metaKey || (event.altKey && wv)) {
|
||||||
if (e.keyCode === 13) {
|
if (e.keyCode === 13) {
|
||||||
sec();
|
sec()
|
||||||
return false;
|
return false
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//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()
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
//F5リロード
|
//F5リロード
|
||||||
if (e.keyCode === 116 && wv) {
|
if (e.keyCode === 116 && wv) {
|
||||||
location.href = "index.html";
|
location.href = 'index.html'
|
||||||
return false;
|
return false
|
||||||
}
|
|
||||||
//Ctrl+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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Ctrl+Sift+N:NowPlaying
|
//Ctrl+Sift+N:NowPlaying
|
||||||
if (((event.metaKey || event.ctrlKey) && event.shiftKey) && wv) {
|
if ((event.metaKey || event.ctrlKey) && event.shiftKey && wv) {
|
||||||
if (e.keyCode === 78) {
|
if (e.keyCode === 78) {
|
||||||
show();
|
show()
|
||||||
nowplaying()
|
nowplaying()
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//input/textareaにフォーカスなし時
|
//input/textareaにフォーカスなし時
|
||||||
if ((!hasFocus && !hasFocus2 ) && wv) {
|
if (!hasFocus && !hasFocus2 && wv) {
|
||||||
if(!wv){
|
if (!wv) {
|
||||||
return true;
|
return true
|
||||||
}
|
}
|
||||||
//Ctrl+V:いつもの
|
//Ctrl+V:いつもの
|
||||||
if (event.metaKey || event.ctrlKey) {
|
if (event.metaKey || event.ctrlKey) {
|
||||||
if (e.keyCode === 86) {
|
if (e.keyCode === 86) {
|
||||||
show();
|
show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Ctrl+F:検索
|
||||||
|
if (event.metaKey || event.ctrlKey) {
|
||||||
|
if (e.keyCode === 70) {
|
||||||
|
srcBox()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//X:開閉
|
//X:開閉
|
||||||
if (e.keyCode === 88) {
|
if (e.keyCode === 88) {
|
||||||
if (!$("#post-box").hasClass("appear")) {
|
if (!$('#post-box').hasClass('appear')) {
|
||||||
show();
|
show()
|
||||||
$('textarea').focus();
|
$('textarea').focus()
|
||||||
} else {
|
} else {
|
||||||
hide();
|
hide()
|
||||||
}
|
}
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
//N:新トゥート
|
//N:新トゥート
|
||||||
if (e.keyCode === 78) {
|
if (e.keyCode === 78) {
|
||||||
if (!$("#post-box").hasClass("appear")) {
|
if (!$('#post-box').hasClass('appear')) {
|
||||||
show();
|
show()
|
||||||
}
|
}
|
||||||
$('textarea').focus();
|
$('textarea').focus()
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
//Ctrl+E:全ての通知未読を既読にする
|
//Ctrl+E:全ての通知未読を既読にする
|
||||||
if (event.metaKey || event.ctrlKey) {
|
if (event.metaKey || event.ctrlKey) {
|
||||||
if (e.keyCode === 69) {
|
if (e.keyCode === 69) {
|
||||||
allNotfRead();
|
allNotfRead()
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Ctrl+Space:読み込み
|
//Ctrl+Space:読み込み
|
||||||
if (event.metaKey || event.ctrlKey) {
|
if (event.metaKey || event.ctrlKey) {
|
||||||
if (e.keyCode === 32) {
|
if (e.keyCode === 32) {
|
||||||
parseColumn();
|
parseColumn()
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Ctrl+Sift+S:設定
|
//Ctrl+Sift+S:設定
|
||||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
||||||
if (e.keyCode === 83) {
|
if (e.keyCode === 83) {
|
||||||
location.href = "setting.html";
|
location.href = 'setting.html'
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Ctrl+Sift+M:アカマネ
|
//Ctrl+Sift+M:アカマネ
|
||||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
||||||
if (e.keyCode === 77) {
|
if (e.keyCode === 77) {
|
||||||
location.href = "acct.html";
|
location.href = 'acct.html'
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Ctrl+Sift+P:プロフ
|
//Ctrl+Sift+P:プロフ
|
||||||
if ((event.ctrlKey) && event.shiftKey) {
|
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
||||||
if (e.keyCode === 80) {
|
if (e.keyCode === 80) {
|
||||||
profShow()
|
profShow()
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//数字:TL
|
//数字:TL
|
||||||
if (event.metaKey || event.ctrlKey) {
|
if (event.metaKey || event.ctrlKey) {
|
||||||
if (e.keyCode >= 49 && e.keyCode <= 57) {
|
if (e.keyCode >= 49 && e.keyCode <= 57) {
|
||||||
var kz=e.keyCode-49;
|
var kz = e.keyCode - 49
|
||||||
goColumn(kz);
|
goColumn(kz)
|
||||||
return false;
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
//矢印:選択
|
||||||
|
if (e.code == 'ArrowLeft') {
|
||||||
|
//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
|
||||||
|
}
|
||||||
|
//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)) {
|
||||||
return false;
|
$('#textarea').val($('#textarea').val() + localStorage.getItem('oks-' + no))
|
||||||
|
}
|
||||||
|
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
6
app/js/common/materialize.min.js
vendored
@@ -1,17 +1,29 @@
|
|||||||
//モーダル・ドロップダウンの各種設定
|
//モーダル・ドロップダウンの各種設定
|
||||||
$(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({
|
||||||
$('.dropdown-button').dropdown({
|
inDuration: 300,
|
||||||
inDuration: 300,
|
outDuration: 225,
|
||||||
outDuration: 225,
|
constrainWidth: false, // Does not change width of dropdown to that of the activator
|
||||||
constrainWidth: false, // Does not change width of dropdown to that of the activator
|
hover: false, // Activate on hover
|
||||||
hover: false, // Activate on hover
|
gutter: 0, // Spacing from edge
|
||||||
gutter: 0, // Spacing from edge
|
belowOrigin: false, // Displays dropdown below the button
|
||||||
belowOrigin: false, // Displays dropdown below the button
|
alignment: 'left', // Displays dropdown with edge aligned to the left of button
|
||||||
alignment: 'left', // Displays dropdown with edge aligned to the left of button
|
stopPropagation: false
|
||||||
stopPropagation: false // 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();
|
||||||
|
$('#videomodal').modal({
|
||||||
|
onCloseEnd: stopVideo
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,33 +1,96 @@
|
|||||||
/*
|
var sha256 = function sha256(ascii) {
|
||||||
A JavaScript implementation of the SHA family of hashes, as
|
function rightRotate(value, amount) {
|
||||||
defined in FIPS PUB 180-4 and FIPS PUB 202, as well as the corresponding
|
return (value >>> amount) | (value << (32 - amount));
|
||||||
HMAC implementation as defined in FIPS PUB 198a
|
};
|
||||||
|
|
||||||
Copyright 2008-2018 Brian Turek, 1998-2009 Paul Johnston & Contributors
|
var mathPow = Math.pow;
|
||||||
Distributed under the BSD License
|
var maxWord = mathPow(2, 32);
|
||||||
See http://caligatio.github.com/jsSHA/ for more information
|
var lengthProperty = 'length'
|
||||||
*/
|
var i, j; // Used as a counter across the whole file
|
||||||
'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;
|
var result = ''
|
||||||
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");
|
|
||||||
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 words = [];
|
||||||
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");
|
var asciiBitLength = ascii[lengthProperty] * 8;
|
||||||
}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");
|
|
||||||
}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>>>
|
//* caching results is optional - remove/add slash from front of this line to toggle
|
||||||
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");
|
// Initial hash value: first 32 bits of the fractional parts of the square roots of the first 8 primes
|
||||||
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");
|
// (we actually calculate the first 64, but extra values are just ignored)
|
||||||
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+
|
var hash = sha256.h = sha256.h || [];
|
||||||
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,
|
// Round constants: first 32 bits of the fractional parts of the cube roots of the first 64 primes
|
||||||
"");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 k = sha256.k = sha256.k || [];
|
||||||
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");
|
var primeCounter = k[lengthProperty];
|
||||||
}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>>>
|
/*/
|
||||||
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 hash = [], k = [];
|
||||||
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=
|
var primeCounter = 0;
|
||||||
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,
|
|
||||||
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);
|
var isComposite = {};
|
||||||
function sha256(token){
|
for (var candidate = 2; primeCounter < 64; candidate++) {
|
||||||
var shaObj = new jsSHA("SHA-256", "TEXT");
|
if (!isComposite[candidate]) {
|
||||||
shaObj.update(token);
|
for (i = 0; i < 313; i += candidate) {
|
||||||
var hash = shaObj.getHash("HEX");
|
isComposite[i] = candidate;
|
||||||
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;
|
||||||
|
};
|
||||||
@@ -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,7 +37,6 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
var $t = $.timeago;
|
var $t = $.timeago;
|
||||||
|
|
||||||
$.extend($.timeago, {
|
$.extend($.timeago, {
|
||||||
settings: {
|
settings: {
|
||||||
refreshMillis: 60000,
|
refreshMillis: 60000,
|
||||||
@@ -47,30 +46,30 @@
|
|||||||
cutoff: 0,
|
cutoff: 0,
|
||||||
autoDispose: true,
|
autoDispose: true,
|
||||||
strings: {
|
strings: {
|
||||||
prefixAgo: null,
|
prefixAgo: lang.lang_time_prefixAgo,
|
||||||
prefixFromNow: "今から",
|
prefixFromNow: lang.lang_time_prefixFromNow,
|
||||||
suffixAgo: "",
|
suffixAgo: lang.lang_time_suffixAgo,
|
||||||
suffixFromNow: "",
|
suffixFromNow: lang.lang_time_suffixFromNow,
|
||||||
inPast: '',
|
inPast: lang.lang_time_inPast,
|
||||||
seconds: "%d秒前",
|
seconds: lang.lang_time_seconds,
|
||||||
minute: "1分前",
|
minute: lang.lang_time_minute,
|
||||||
minutes: "%d分前",
|
minutes: lang.lang_time_minutes,
|
||||||
hour: "1時間前",
|
hour: lang.lang_time_hour,
|
||||||
hours: "%d時間前",
|
hours: lang.lang_time_hours,
|
||||||
day: "昨日",
|
day: lang.lang_time_day,
|
||||||
days: "%d日前",
|
days: lang.lang_time_days,
|
||||||
month: "昨月",
|
month: lang.lang_time_month,
|
||||||
months: "%dヶ月前",
|
months: lang.lang_time_months,
|
||||||
year: "去年",
|
year: lang.lang_time_year,
|
||||||
years: "%d年前",
|
years: lang.lang_time_years,
|
||||||
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;
|
||||||
@@ -116,20 +115,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");
|
||||||
}
|
}
|
||||||
@@ -139,7 +138,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();
|
||||||
@@ -148,7 +147,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) {
|
||||||
@@ -156,8 +155,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 () {
|
||||||
@@ -168,13 +167,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;
|
||||||
@@ -184,7 +183,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;
|
||||||
@@ -193,11 +192,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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,268 +1,400 @@
|
|||||||
//バージョンチェッカー
|
//バージョンチェッカー
|
||||||
function verck(ver) {
|
function verck(ver, jp) {
|
||||||
console.log("Welcome")
|
console.log('%c Welcome😊', 'color: red;font-size:200%;')
|
||||||
if(localStorage.getItem("ver")!=ver){
|
var date = new Date()
|
||||||
localStorage.setItem("ver", ver);
|
var show = false
|
||||||
console.log("Thank you for your update");
|
if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) {
|
||||||
$(document).ready(function(){
|
//ちょっと削除とリンク解析の都合上アレ(s)
|
||||||
$('#releasenote').modal('open');
|
//対象外のアプデ:storageが20の最初まで"Usamin (18.6.5)"
|
||||||
verp=ver.replace( '(', '');
|
if (!localStorage.getItem('usamin_18_6_5_flag')) {
|
||||||
verp=verp.replace( '.', '-');
|
localStorage.setItem('usamin_18_6_5_flag', true)
|
||||||
verp=verp.replace( '.', '-');
|
var multi = localStorage.getItem('column')
|
||||||
verp=verp.replace( '[', '-');
|
var obj = JSON.parse(multi)
|
||||||
verp=verp.replace( ']', '');
|
for (var i = 0; i < obj.length; i++) {
|
||||||
verp=verp.replace( ')', '');
|
localStorage.removeItem('card_' + i)
|
||||||
verp=verp.replace( ' ', '_');
|
|
||||||
console.log(verp);
|
|
||||||
if(lang.language=="ja"){
|
|
||||||
$("#release-"+verp).show();
|
|
||||||
}else{
|
|
||||||
$("#release-en").show();
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
//ちょっと削除とリンク解析の都合上アレ(e)
|
||||||
|
show = true
|
||||||
|
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
|
||||||
|
$(document).ready(function() {
|
||||||
|
if (localStorage.getItem('winstore')) {
|
||||||
|
$('#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()
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
var electron = require("electron");
|
localStorage.setItem('ver', ver)
|
||||||
var remote=electron.remote;
|
if (!show) {
|
||||||
var dialog=remote.dialog;
|
console.log(show)
|
||||||
var platform=remote.process.platform;
|
if (
|
||||||
if(platform=="win32"){
|
date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe') ||
|
||||||
const options = {
|
!localStorage.getItem('showSupportMe')
|
||||||
type: 'info',
|
) {
|
||||||
title: "Select your platform",
|
if (date.getMonth() == 11) {
|
||||||
message: lang.lang_version_platform,
|
var yrs = date.getFullYear() + 1
|
||||||
buttons: [lang.lang_no,lang.lang_yesno]
|
var nextmonth = yrs * 100 + 1
|
||||||
}
|
} else {
|
||||||
if(!localStorage.getItem("winstore")){
|
var yrs = date.getFullYear()
|
||||||
|
var nextmonth = yrs * 100 + date.getMonth() + 2
|
||||||
dialog.showMessageBox(options, function(arg) {
|
}
|
||||||
if(arg==1){
|
if (lang.language != 'ja') {
|
||||||
localStorage.setItem("winstore","winstore")
|
$('#support-btm-ja').addClass('hide')
|
||||||
}else{
|
$('#support-btm-en').removeClass('hide')
|
||||||
localStorage.setItem("winstore","localinstall")
|
}
|
||||||
}
|
localStorage.setItem('showSupportMe', nextmonth)
|
||||||
});
|
$('#support-btm').removeClass('hide')
|
||||||
}
|
$('#support-btm').animate(
|
||||||
}else if(platform=="linux"){
|
{
|
||||||
if(localStorage.getItem("winstore")=="unix"){
|
bottom: '0'
|
||||||
localStorage.removeItem("winstore")
|
},
|
||||||
|
{
|
||||||
|
duration: 300
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
if(!localStorage.getItem("winstore")){
|
}
|
||||||
const options = {
|
var platform = localStorage.getItem('platform')
|
||||||
type: 'info',
|
console.log('Your platform:' + platform)
|
||||||
title: "Select your platform",
|
if (!localStorage.getItem('winstore')) {
|
||||||
message: lang.lang_version_platform_linux,
|
$('#start').css('display', 'flex')
|
||||||
buttons: [lang.lang_no,lang.lang_yesno]
|
}
|
||||||
}
|
if (
|
||||||
dialog.showMessageBox(options, function(arg) {
|
localStorage.getItem('winstore') == 'brewcask' ||
|
||||||
if(arg==1){
|
localStorage.getItem('winstore') == 'snapcraft' ||
|
||||||
localStorage.setItem("winstore","snapcraft")
|
localStorage.getItem('winstore') == 'winstore'
|
||||||
}else{
|
) {
|
||||||
localStorage.setItem("winstore","localinstall")
|
var winstore = true
|
||||||
}
|
} else {
|
||||||
});
|
var winstore = false
|
||||||
}
|
}
|
||||||
}else if(platform=="darwin"){
|
var l = 5
|
||||||
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 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) {
|
})
|
||||||
return response.json();
|
.then(function(response) {
|
||||||
}).catch(function(error) {
|
if (!response.ok) {
|
||||||
todo(error);
|
response.text().then(function(text) {
|
||||||
console.error(error);
|
setLog(response.url, response.status, text)
|
||||||
}).then(function(mess) {
|
})
|
||||||
console.log(mess);
|
|
||||||
if (mess) {
|
|
||||||
var electron = require("electron");
|
|
||||||
var remote=electron.remote;
|
|
||||||
var platform=remote.process.platform;
|
|
||||||
if(platform=="darwin"){
|
|
||||||
var newest=mess.desk_mac;
|
|
||||||
}else{
|
|
||||||
var newest=mess.desk;
|
|
||||||
}
|
}
|
||||||
if (newest == ver) {
|
return response.json()
|
||||||
todo(lang.lang_version_usever.replace("{{ver}}" ,mess.desk));
|
})
|
||||||
//betaかWinstoreならアプデチェックしない
|
.catch(function(error) {
|
||||||
} else if (ver.indexOf("beta")!=-1 || winstore) {
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
}else{
|
setLog(start, 'JSON', error)
|
||||||
localStorage.removeItem("instance")
|
console.error(error)
|
||||||
if(localStorage.getItem("new-ver-skip")){
|
})
|
||||||
if(localStorage.getItem("next-ver")!=newest){
|
.then(function(mess) {
|
||||||
var ipc = electron.ipcRenderer;
|
console.table(mess)
|
||||||
ipc.send('update', "true");
|
if (mess) {
|
||||||
}else{
|
//askjp_jp_ua: 2019年10月24日、mstdn.jpによるユーザーエージェントアクセス制限
|
||||||
console.log(lang.lang_version_skipver);
|
if (jp && mess.jp_ua && !localStorage.getItem('askjp_jp_ua')) {
|
||||||
todo(lang.lang_version_skipver);
|
localStorage.setItem('askjp_jp_ua', true)
|
||||||
|
$('#askjp_jp_ua').removeClass('hide')
|
||||||
|
}
|
||||||
|
var platform = localStorage.getItem('platform')
|
||||||
|
if (platform == 'darwin') {
|
||||||
|
var newest = mess.desk_mac
|
||||||
|
} else {
|
||||||
|
var newest = mess.desk
|
||||||
|
}
|
||||||
|
if (newest == ver) {
|
||||||
|
todo(lang.lang_version_usever.replace('{{ver}}', mess.desk))
|
||||||
|
//betaかWinstoreならアプデチェックしない
|
||||||
|
} else if (ver.indexOf('beta') != -1 || winstore) {
|
||||||
|
} else {
|
||||||
|
localStorage.removeItem('instance')
|
||||||
|
if (localStorage.getItem('new-ver-skip')) {
|
||||||
|
if (localStorage.getItem('next-ver') != newest) {
|
||||||
|
postMessage(['sendSinmpleIpc', 'update'], '*')
|
||||||
|
} else {
|
||||||
|
console.warn(lang.lang_version_skipver)
|
||||||
|
todo(lang.lang_version_skipver)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
postMessage(['sendSinmpleIpc', 'update'], '*')
|
||||||
}
|
}
|
||||||
}else{
|
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
console.log(localStorage.getItem("last-notice-id"))
|
var start = 'https://thedesk.top/notice?since_id=' + 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) {
|
})
|
||||||
return response.json();
|
.then(function(response) {
|
||||||
}).catch(function(error) {
|
if (!response.ok) {
|
||||||
todo(error);
|
response.text().then(function(text) {
|
||||||
console.error(error);
|
setLog(response.url, response.status, text)
|
||||||
}).then(function(mess) {
|
})
|
||||||
console.log(mess.length);
|
}
|
||||||
if(mess.length<1){
|
return response.json()
|
||||||
return false;
|
})
|
||||||
}else{
|
.catch(function(error) {
|
||||||
var last=localStorage.getItem("last-notice-id")
|
todo(error)
|
||||||
localStorage.setItem("last-notice-id",mess[0].ID)
|
setLog(start, 'JSON', error)
|
||||||
for(i=0;i<mess.length;i++){
|
console.error(error)
|
||||||
var obj=mess[i];
|
})
|
||||||
if(obj.ID*1<=last){
|
.then(function(mess) {
|
||||||
break;
|
if (mess.length < 1) {
|
||||||
}else{
|
return false
|
||||||
var show=true;
|
} else {
|
||||||
if(obj.Toot!=""){
|
var last = localStorage.getItem('last-notice-id')
|
||||||
var toot='<button class="btn-flat toast-action" onclick="detEx(\''+obj.Toot+'\',\'main\')">Show</button>';
|
localStorage.setItem('last-notice-id', mess[0].ID)
|
||||||
}else{
|
for (i = 0; i < mess.length; i++) {
|
||||||
var toot="";
|
var obj = mess[i]
|
||||||
}
|
if (obj.ID * 1 <= last) {
|
||||||
if(obj.Ver!=""){
|
break
|
||||||
if(obj.Ver==ver){
|
} else {
|
||||||
show=true;
|
if (obj.type == 'textv2') {
|
||||||
}else{
|
if (~obj.languages.indexOf(lang.language)) {
|
||||||
show=false;
|
var show = true
|
||||||
}
|
if (obj.toot != '') {
|
||||||
}
|
var toot =
|
||||||
if(obj.Domain!=""){
|
'<button class="btn-flat toast-action" onclick="detEx(\'' +
|
||||||
var multi = localStorage.getItem("multi");
|
obj.toot +
|
||||||
if (multi) {
|
"','main')\">Show</button>"
|
||||||
show=false;
|
} else {
|
||||||
var accts = JSON.parse(multi);
|
var toot = ''
|
||||||
Object.keys(accts).forEach(function(key) {
|
}
|
||||||
var acct = accts[key];
|
if (obj.ver != '') {
|
||||||
if(acct.domain==obj.Domain){
|
if (obj.ver == ver) {
|
||||||
show=true;
|
show = true
|
||||||
|
} 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(show){
|
|
||||||
Materialize.toast(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:");
|
console.log([tlid, ':Connect Streaming Info:', mess])
|
||||||
console.log(mess);
|
infostreaming = true
|
||||||
infostreaming=true;
|
|
||||||
}
|
}
|
||||||
infows.onmessage = function(mess) {
|
infows.onmessage = function(mess) {
|
||||||
console.log(":Receive Streaming:");
|
console.log([tlid, ':Receive Streaming:', JSON.parse(mess.data)])
|
||||||
console.log(JSON.parse(mess.data));
|
var obj = JSON.parse(mess.data)
|
||||||
var obj=JSON.parse(mess.data);
|
if (obj.type != 'counter') {
|
||||||
if(obj.type!="counter"){
|
if (obj.type == 'textv2') {
|
||||||
if(obj.id*1<=localStorage.getItem("last-notice-id")){
|
if (~obj.languages.indexOf(lang.language)) {
|
||||||
|
localStorage.setItem('last-notice-id', obj.id)
|
||||||
}else{
|
var show = true
|
||||||
localStorage.setItem("last-notice-id",obj.id)
|
if (obj.toot != '') {
|
||||||
var show=true;
|
var toot =
|
||||||
if(obj.toot!=""){
|
'<button class="btn-flat toast-action" onclick="detEx(\'' +
|
||||||
var toot='<button class="btn-flat toast-action" onclick="detEx(\''+obj.toot+'\',\'main\')">Show</button>';
|
obj.toot +
|
||||||
}else{
|
"','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 (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
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(show){
|
} else {
|
||||||
Materialize.toast(obj.text+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400);
|
$('#persons').text(obj.text)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}else{
|
|
||||||
$("#persons").text(obj.text);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
infows.onerror = function(error) {
|
infows.onerror = function(error) {
|
||||||
infostreaming=false;
|
infostreaming = false
|
||||||
console.error("Error closing:info");
|
console.error('Error closing:info')
|
||||||
console.error(error);
|
console.error(error)
|
||||||
return false;
|
return false
|
||||||
};
|
|
||||||
infows.onclose = function() {
|
|
||||||
infostreaming=false;
|
|
||||||
console.error("Closing:info");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
setInterval(function(){
|
|
||||||
if(!infostreaming){
|
|
||||||
console.log("try to connect")
|
|
||||||
infowebsocket();
|
|
||||||
}
|
}
|
||||||
}, 10000);
|
infows.onclose = function() {
|
||||||
|
infostreaming = false
|
||||||
|
console.error('Closing:info')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setInterval(function() {
|
||||||
|
if (!infostreaming) {
|
||||||
|
console.log('try to connect to base-streaming')
|
||||||
|
infowebsocket()
|
||||||
|
}
|
||||||
|
}, 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
|
||||||
|
} else {
|
||||||
|
var mes = false
|
||||||
|
}
|
||||||
|
if (mes) {
|
||||||
|
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()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
localStorage.setItem('ver', ver)
|
||||||
|
show = true
|
||||||
|
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#releasenote').modal('open')
|
||||||
|
verp = ver.replace('(', '')
|
||||||
|
verp = verp.replace('.', '-')
|
||||||
|
verp = verp.replace('.', '-')
|
||||||
|
verp = verp.replace('[', '-')
|
||||||
|
verp = verp.replace(']', '')
|
||||||
|
verp = verp.replace(')', '')
|
||||||
|
verp = verp.replace(' ', '_')
|
||||||
|
console.log('%c ' + verp, 'color: red;font-size:200%;')
|
||||||
|
if (lang.language == 'ja') {
|
||||||
|
$('#release-' + verp).show()
|
||||||
|
} else {
|
||||||
|
$('#release-en').show()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
function closeStart() {
|
||||||
|
$('#start').css('display', 'none')
|
||||||
|
var platform = localStorage.getItem('platform')
|
||||||
|
var ver = localStorage.getItem('ver')
|
||||||
|
storeDialog(platform, ver)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,89 +1,105 @@
|
|||||||
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 announcement = false
|
||||||
var emojis="";
|
if ($('#media').val() == 'announcement') {
|
||||||
Object.keys(json).forEach(function(key) {
|
announcement = true
|
||||||
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>';
|
var json = defaultemoji[target]
|
||||||
});
|
var emojis = ''
|
||||||
$("#emoji-list").html(emojis);
|
Object.keys(json).forEach(function(key) {
|
||||||
$("#now-emoji").text(lang.lang_defaultemojis_text.replace("{{cat}}" ,defaultemojiname[target]));
|
var emoji = json[key]
|
||||||
console.log(target);
|
if (announcement) {
|
||||||
$(".emoji-control").addClass("hide");
|
var def = `<a onclick="emojiReactionDef('${emoji['shortcode']}')" class="pointer">`
|
||||||
}
|
} else {
|
||||||
function customEmoji(){
|
var def = `<a onclick="defEmoji('${emoji['shortcode']}')" class="pointer">`
|
||||||
$("#emoji-suggest").val("");
|
|
||||||
$(".emoji-control").removeClass("hide");
|
|
||||||
emojiList('home')
|
|
||||||
}
|
|
||||||
function defEmoji(target){
|
|
||||||
var emojiraw = newpack.filter(function(item, index){
|
|
||||||
if (item.short_name == target) return true;
|
|
||||||
});
|
|
||||||
emoji=twemoji.convert.fromCodePoint(emojiraw[0].unified);
|
|
||||||
var now = $("#textarea").val();
|
|
||||||
var selin = localStorage.getItem("cursor");
|
|
||||||
var now = $("#textarea").val();
|
|
||||||
if(selin>0){
|
|
||||||
var before = now.substr(0, selin);
|
|
||||||
var after = now.substr(selin, now.length);
|
|
||||||
newt = before+ emoji + after;
|
|
||||||
}else{
|
|
||||||
newt = emoji+now;
|
|
||||||
}
|
}
|
||||||
console.log(emoji);
|
emojis =
|
||||||
$("#textarea").val(newt);
|
emojis +
|
||||||
$("#textarea").focus();
|
`${def}
|
||||||
var selin = $("#textarea").prop('selectionStart');
|
<span style="
|
||||||
if(!selin){
|
width: 20px; height: 20px; display: inline-block; background-image: url('../../img/sheet.png'); background-size: 4900%;
|
||||||
selin=0;
|
background-position:${emoji['css']};"></span>
|
||||||
}
|
</a>`
|
||||||
localStorage.setItem("cursor", selin);
|
})
|
||||||
|
$('#emoji-list').html(emojis)
|
||||||
|
$('#now-emoji').text(lang.lang_defaultemojis_text.replace('{{cat}}', defaultemojiname[target]))
|
||||||
|
$('.emoji-control').addClass('hide')
|
||||||
}
|
}
|
||||||
function faicon(){
|
function customEmoji() {
|
||||||
var json=faicons;
|
$('#emoji-suggest').val('')
|
||||||
console.log(json);
|
$('.emoji-control').removeClass('hide')
|
||||||
var emojis="";
|
emojiList('home')
|
||||||
Object.keys(json).forEach(function(key) {
|
}
|
||||||
var emoji = json[key];
|
function defEmoji(target) {
|
||||||
var eje = emoji.replace( /fa-/g , "" ) ;
|
var selin = $('#textarea').prop('selectionStart')
|
||||||
emojis = emojis + '<a onclick="emojiInsert(\'[faicon]'+eje+'[/faicon]\')" class="pointer white-text" style="font-size:24px"><i class="fa '+emoji+'"></i></a>';
|
if (!selin) {
|
||||||
});
|
selin = 0
|
||||||
$("#emoji-list").html(emojis);
|
}
|
||||||
$("#now-emoji").text("faicon");
|
var emojiraw = newpack.filter(function(item, index) {
|
||||||
$(".emoji-control").addClass("hide");
|
if (item.short_name == target) return true
|
||||||
|
})
|
||||||
|
var hex = emojiraw[0].unified.split('-')
|
||||||
|
if (hex.length === 2) {
|
||||||
|
emoji = twemoji.convert.fromCodePoint(hex[0]) + twemoji.convert.fromCodePoint(hex[1])
|
||||||
|
} else {
|
||||||
|
emoji = twemoji.convert.fromCodePoint(hex[0])
|
||||||
|
}
|
||||||
|
var now = $('#textarea').val()
|
||||||
|
var before = now.substr(0, selin)
|
||||||
|
var after = now.substr(selin, now.length)
|
||||||
|
newt = before + emoji + after
|
||||||
|
$('#textarea').val(newt)
|
||||||
|
$('#textarea').focus()
|
||||||
|
}
|
||||||
|
function faicon() {
|
||||||
|
var json = faicons
|
||||||
|
var emojis = ''
|
||||||
|
Object.keys(json).forEach(function(key) {
|
||||||
|
var emoji = json[key]
|
||||||
|
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>'
|
||||||
|
})
|
||||||
|
$('#emoji-list').html(emojis)
|
||||||
|
$('#now-emoji').text('faicon')
|
||||||
|
$('.emoji-control').addClass('hide')
|
||||||
}
|
}
|
||||||
@@ -1,247 +0,0 @@
|
|||||||
//commonError
|
|
||||||
var lang={
|
|
||||||
"language":"en",
|
|
||||||
"lang_toot":"Toot",
|
|
||||||
"lang_there":"Yes",
|
|
||||||
"lang_nothing":"None",
|
|
||||||
"lang_yesno":"Yes",
|
|
||||||
"lang_no":"No",
|
|
||||||
"lang_progress":"Wait...",
|
|
||||||
"lang_edit":"Edit",
|
|
||||||
"lang_del":"Delete",
|
|
||||||
"lang_add":"Add",
|
|
||||||
"lang_fatalerroroccured":"Some errors are occured, please restart TheDesk.",
|
|
||||||
"lang_speech":"Google US English",
|
|
||||||
//language.html
|
|
||||||
"lang_lang":"Language",
|
|
||||||
"lang_langlocale":"English",
|
|
||||||
"lang_back":"Back",
|
|
||||||
"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.",
|
|
||||||
//common/version.js
|
|
||||||
"lang_version_usever":"No update is found({{ver}})",
|
|
||||||
"lang_version_skipver":"Update was ignored.",
|
|
||||||
"lang_version_platform":"Was this software installed at Microsoft Store? When select 'yes', any update was ignored.",
|
|
||||||
"lang_version_platform_linux":"Was this software installed at Snapcraft(snapd)? When select 'yes', any update was ignored.",
|
|
||||||
"lang_version_platform_mac":"Was this software installed at Homebrew Cask? When select 'yes', any update was ignored.",
|
|
||||||
//login
|
|
||||||
//login/login.js
|
|
||||||
"lang_login_noauth":"Show TL of unlogined accounts",
|
|
||||||
//login/manager.js
|
|
||||||
"lang_manager_info":"About this instance",
|
|
||||||
"lang_manager_refresh":"Refresh",
|
|
||||||
"lang_manager_delete":"Logout",
|
|
||||||
"lang_manager_color":"Account Color",
|
|
||||||
"lang_manager_confirm":"is about to logout. Continue?",
|
|
||||||
"lang_manager_mainAcct":"Done:choose main account",
|
|
||||||
"lang_manager_def":"Default",
|
|
||||||
"lang_manager_none":"None",
|
|
||||||
"lang_manager_godev":"Open DevCenter of Misskey. We show also an official documents to refer.",
|
|
||||||
//post/bb-md.js
|
|
||||||
"lang_bbmd_misskey":"TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
|
|
||||||
//post/emoji.js
|
|
||||||
"lang_emoji_get":"Get emojis",
|
|
||||||
"lang_emoji_custom":"Custom emojis",
|
|
||||||
"lang_defaultemojis_text":"Emojis about {{cat}}",
|
|
||||||
//post/img.js
|
|
||||||
"lang_postimg_previewdis":"cannot preview",
|
|
||||||
"lang_postimg_aftupload":"You cannot change accounts after uploading.",
|
|
||||||
"lang_postimg_delete":"Delete this image.",
|
|
||||||
//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_tagVis":"This toot(not 'public' toot) is not shown on this tag's TL.",
|
|
||||||
"lang_post_cwtitle":"Auto CW Alert",
|
|
||||||
"lang_post_cwtxt":"You are about to post longer toot than you set.\nWarning text:",
|
|
||||||
"lang_post_btn1":"Cancel (will not post)",
|
|
||||||
"lang_post_btn2":"Make text hidden automatically",
|
|
||||||
"lang_post_btn3":"Continue to post",
|
|
||||||
//post/status.js
|
|
||||||
"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_follow":"Follow",
|
|
||||||
"lang_status_unfollow":"Unfollow",
|
|
||||||
"lang_status_block":"Block",
|
|
||||||
"lang_status_unblock":"Unblock",
|
|
||||||
"lang_status_mute":"Mute",
|
|
||||||
"lang_status_unmute":"Unmute",
|
|
||||||
"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_unemphas":"'s toots are not emphasized. Please reload after this action.",
|
|
||||||
"lang_status_unendorse":"Not feature on profile",
|
|
||||||
"lang_status_endorse":"Feature on profile",
|
|
||||||
//post/suggest.js
|
|
||||||
"lang_suggest_nodata":"Please get emojis list in order to show suggestion.",
|
|
||||||
//post/use-txtbox.js
|
|
||||||
"lang_usetxtbox_reply":"Reply Mode. Ctrl+Shift+C to clear.",
|
|
||||||
//tl/card.js
|
|
||||||
"lang_cards_check":" check",
|
|
||||||
"lang_cards_pip":"PiP mode",
|
|
||||||
//tl/details.js
|
|
||||||
"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.",
|
|
||||||
//tl/filter.js
|
|
||||||
"lang_filter_nodata":"No data",
|
|
||||||
"lang_filter_errordegree":"Please check a context",
|
|
||||||
//tl/list.js
|
|
||||||
"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_remove":"Remove from the list",
|
|
||||||
//tl/notification.js
|
|
||||||
"lang_notf_new":" new notifications",
|
|
||||||
//tl/speech.js
|
|
||||||
"lang_speech_refresh":"Save value about TTS config",
|
|
||||||
//tl/src.js
|
|
||||||
"lang_src_ts":"chronological order",
|
|
||||||
"lang_src_people":" people toot",
|
|
||||||
//tl/tag.js
|
|
||||||
"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":"Auto complete {{tag}}, if toot without {{tag}}",
|
|
||||||
//tl/tl.js
|
|
||||||
"lang_tl_media":"Media",
|
|
||||||
"lang_tl_reconnect":"Reconnect to streaming API",
|
|
||||||
//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_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":"Show BT mode(OFF/Exclude BT/Only BT)",
|
|
||||||
"lang_layout_leftFold":"Stack to the left",
|
|
||||||
"lang_layout_leftUnfold":"Dock on the right",
|
|
||||||
//ui/sort.js
|
|
||||||
"lang_sort_gothis":"Go to this column",
|
|
||||||
"lang_sort_remthis":"Delete this column",
|
|
||||||
//ui/spotify.js
|
|
||||||
"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":"Done:templete of NowPlaying",
|
|
||||||
"lang_setting_npprovide":"NowPlaying provider:{{set}}",
|
|
||||||
//userdata/his-data.js
|
|
||||||
"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.",
|
|
||||||
//userdata/showOnTL.js
|
|
||||||
"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.",
|
|
||||||
//parse
|
|
||||||
"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":"Delete this toot",
|
|
||||||
"lang_parse_pin":"Pin this toot",
|
|
||||||
"lang_parse_det":"Details via your main account.",
|
|
||||||
"lang_parse_redraft":"Delete & re-draft",
|
|
||||||
"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":"Voted",
|
|
||||||
"lang_parse_unvoted":"Show the result without voting",
|
|
||||||
"lang_parse_endedvote":"Expired",
|
|
||||||
"lang_parse_thread":"Show thread",
|
|
||||||
//misskey
|
|
||||||
"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.",
|
|
||||||
//setting
|
|
||||||
"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":"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":"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":"All data will be deleted.",
|
|
||||||
}
|
|
||||||
@@ -1,249 +0,0 @@
|
|||||||
//commonError
|
|
||||||
var lang={
|
|
||||||
"language":"ja",
|
|
||||||
"lang_toot":"トゥート",
|
|
||||||
"lang_there":"あり",
|
|
||||||
"lang_nothing":"なし",
|
|
||||||
"lang_yesno":"はい",
|
|
||||||
"lang_no":"いいえ",
|
|
||||||
"lang_progress":"処理中",
|
|
||||||
"lang_edit":"編集",
|
|
||||||
"lang_del":"削除",
|
|
||||||
"lang_add":"追加",
|
|
||||||
"lang_fatalerroroccured":"エラーが発生しました。しばらく待ってから再起動してください。",
|
|
||||||
"lang_speech":"Google 日本語",
|
|
||||||
//language.html
|
|
||||||
"lang_lang":"言語",
|
|
||||||
"lang_langlocale":"日本語",
|
|
||||||
"lang_back":"戻る",
|
|
||||||
"lang_set":"設定",
|
|
||||||
"lang_langadd":"<a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>から翻訳に参加できます。英語の校正(緊急)や他言語に翻訳していただける方を募集しております。",
|
|
||||||
//common/version.js
|
|
||||||
"lang_version_usever":"お使いのバージョン{{ver}}は最新です。",
|
|
||||||
"lang_version_skipver":"アップデートはスキップされました。",
|
|
||||||
"lang_version_platform":"このソフトウェアはMicrosoft Storeからダウンロードされましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
|
||||||
"lang_version_platform_linux":"このソフトウェアはSnapcraft(snapd)からインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
|
||||||
"lang_version_platform_mac":"このソフトウェアはHomebrew Caskからインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
|
||||||
//login
|
|
||||||
//login/login.js
|
|
||||||
"lang_login_noauth":"認証せずに見る",
|
|
||||||
//login/manager.js
|
|
||||||
"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":"MisskeyのDevセンターに移動します。同時に開かれるドキュメントを参考にログインしてください。",
|
|
||||||
//post/bb-md.js
|
|
||||||
"lang_bbmd_misskey":"TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。",
|
|
||||||
//post/emoji.js
|
|
||||||
"lang_emoji_get":"絵文字リストを取得",
|
|
||||||
"lang_emoji_custom":"カスタム絵文字",
|
|
||||||
"lang_defaultemojis_text":"{{cat}}の絵文字",
|
|
||||||
//post/img.js
|
|
||||||
"lang_postimg_previewdis":"プレビューできません。",
|
|
||||||
"lang_postimg_aftupload":"アップロード後はアカウントを切り替えられません。",
|
|
||||||
"lang_postimg_delete":"この画像を削除します",
|
|
||||||
//post/post.js
|
|
||||||
"lang_post_tagTL":"デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
|
|
||||||
"lang_post_tagVis":"公開範囲が「公開」以外だと、タグTLに表示されません。(一部インスタンスを除く)",
|
|
||||||
"lang_post_cwtitle":"長文投稿の警告",
|
|
||||||
"lang_post_cwtxt":"指定文字数、行数を超えるトゥートを行おうとしています。\n自動CWのタイトル:",
|
|
||||||
"lang_post_btn1":"キャンセル(投稿しない)",
|
|
||||||
"lang_post_btn2":"自動でCWを付ける",
|
|
||||||
"lang_post_btn3":"そのまま投稿",
|
|
||||||
//post/status.js
|
|
||||||
"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_redraft":"削除して再編集しますか?そのトゥートの全てのデータがリセットされます。この機能はベータ版です。画像は~v2.4.1で破棄されます。",
|
|
||||||
"lang_status_emphas":"を強調します。リロードしてください。",
|
|
||||||
"lang_status_unemphas":"を強調解除します。リロードしてください。",
|
|
||||||
"lang_status_unendorse":"紹介解除",
|
|
||||||
"lang_status_endorse":"プロフで紹介する",
|
|
||||||
//post/suggest.js
|
|
||||||
"lang_suggest_nodata":"サジェストのために絵文字リストを取得してください。",
|
|
||||||
//post/use-txtbox.js
|
|
||||||
"lang_usetxtbox_reply":"返信モードです。クリアするときはCtrl+Shift+Cを押してください。",
|
|
||||||
//tl/card.js
|
|
||||||
"lang_cards_check":"チェック",
|
|
||||||
"lang_cards_pip":"ながら観モード",
|
|
||||||
//tl/details.js
|
|
||||||
"lang_details_nodata":"データなし",
|
|
||||||
"lang_details_filtered":"フィルターされました。",
|
|
||||||
"lang_details_embed":"埋め込みHTMLがコピーされました。",
|
|
||||||
"lang_details_url":"トゥートURLがコピーされました。",
|
|
||||||
"lang_details_txt":"トゥート本文がコピーされました。",
|
|
||||||
//tl/filter.js
|
|
||||||
"lang_filter_nodata":"フィルターはありません",
|
|
||||||
"lang_filter_errordegree":"適応範囲を最低一つ以上チェックしてください。",
|
|
||||||
//tl/list.js
|
|
||||||
"lang_list_nodata":"リストはありません",
|
|
||||||
"lang_list_show":"表示",
|
|
||||||
"lang_list_users":"ユーザー一覧",
|
|
||||||
"lang_list_nouser":"ユーザーはいません",
|
|
||||||
"lang_list_add":"リストに追加",
|
|
||||||
"lang_list_remove":"リストから削除",
|
|
||||||
//tl/notification.js
|
|
||||||
"lang_notf_new":"件の新しい通知",
|
|
||||||
//tl/speech.js
|
|
||||||
"lang_speech_refresh":"音声読み上げ設定を更新しました。",
|
|
||||||
//tl/src.js
|
|
||||||
"lang_src_ts":"時系列",
|
|
||||||
"lang_src_people":"人がトゥート",
|
|
||||||
//tl/tag.js
|
|
||||||
"lang_tags_always":"常に",
|
|
||||||
"lang_tags_realtime":"実況",
|
|
||||||
"lang_tags_tagunpin":"{{tag}}をよく使うタグから削除",
|
|
||||||
"lang_tags_unrealtime":"実況解除",
|
|
||||||
"lang_tags_tagwarn":"{{tag}}がない場合自動で補完されます。",
|
|
||||||
//tl/tl.js
|
|
||||||
"lang_tl_media":"メディア",
|
|
||||||
"lang_tl_reconnect":"Streamingに再接続しました",
|
|
||||||
//ui/img.js
|
|
||||||
"lang_img_DLDone":"ダウンロード先:",
|
|
||||||
//ui/layout.js
|
|
||||||
"lang_layout_gotop":"一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。",
|
|
||||||
"lang_layout_thisacct":"このアカウントの{{notf}}",
|
|
||||||
"lang_layout_delthis":"このカラムを削除",
|
|
||||||
"lang_layout_setthis":"このカラムの設定",
|
|
||||||
"lang_layout_mediafil":"メディアフィルター",
|
|
||||||
"lang_layout_linkana":"リンク解析",
|
|
||||||
"lang_layout_linkanades":"リンクの解析を切り替え",
|
|
||||||
"lang_layout_tts":"読み上げ",
|
|
||||||
"lang_layout_reconnect":"ストリーミング再接続",
|
|
||||||
"lang_layout_headercolor":"TLヘッダーカラー",
|
|
||||||
"lang_layout_nodata":"[ここにトゥートはありません。]<br>F5/⌘+Rで再読込できます。",
|
|
||||||
"lang_layout_dm":"ダイレクトメッセージ",
|
|
||||||
"lang_layout_webviewmode":"WebView優先",
|
|
||||||
"lang_excluded":"除外する通知",
|
|
||||||
"lang_layout_excludingbt":"BT表示(OFF/BT除外/BTのみ)",
|
|
||||||
"lang_layout_leftFold":"左へ重ねる",
|
|
||||||
"lang_layout_leftUnfold":"右へ出す",
|
|
||||||
//ui/sort.js
|
|
||||||
"lang_sort_gothis":"このカラムへ",
|
|
||||||
"lang_sort_remthis":"このカラムを削除",
|
|
||||||
//ui/spotify.js
|
|
||||||
"lang_spotify_img":"アルバムアートワークを添付します。",
|
|
||||||
"lang_spotify_imgno":"アルバムアートワークを添付しません。",
|
|
||||||
"lang_spotify_acct":"アカウント連携をしてください。",
|
|
||||||
"lang_spotify_np":"NowPlaying文書を更新しました。",
|
|
||||||
"lang_setting_npprovide":"NowPlayingのソースを{{set}}に設定しました。",
|
|
||||||
//userdata/his-data.js
|
|
||||||
"lang_hisdata_frcreq":"Mastodon 2.4.3~が必要です",
|
|
||||||
"lang_hisdata_frcwarn":"非フォローだけど絡みがある時に表示されます。",
|
|
||||||
"lang_hisdata_taketime":"30秒から数分かかります",
|
|
||||||
"lang_hisdata_notonmisskey":"このシステムはMisskeyにはありません。",
|
|
||||||
//userdata/showOnTL.js
|
|
||||||
"lang_showontl_movetxt":"このアカウントは移行しています",
|
|
||||||
"lang_showontl_movebtn":"移行先を見る",
|
|
||||||
"lang_showontl_botacct":"botアカウント",
|
|
||||||
"lang_showontl_followed":"フォローされています",
|
|
||||||
"lang_showontl_notf":"通知",
|
|
||||||
"lang_showontl_domain":"ドメイン",
|
|
||||||
"lang_showontl_listwarn":"リストに追加するためにはフォローが必要です。",
|
|
||||||
//parse
|
|
||||||
"lang_parse_mentioned":"が返信しました",
|
|
||||||
"lang_parse_faved":"がお気に入り登録しました",
|
|
||||||
"lang_parse_bted":"がブーストしました",
|
|
||||||
"lang_parse_btedsimple":"がブースト",
|
|
||||||
"lang_parse_polled":"のアンケート",
|
|
||||||
"lang_parse_notftime":"通知された時間",
|
|
||||||
"lang_parse_cwshow":"見る",
|
|
||||||
"lang_parse_fulltext":"以下全文",
|
|
||||||
"lang_parse_autofold":"自動折り畳み",
|
|
||||||
"lang_parse_more":"続き...",
|
|
||||||
"lang_parse_url":"URL解析",
|
|
||||||
"lang_parse_tagTL":"{{tag}}のタイムライン",
|
|
||||||
"lang_parse_tagtoot":"{{tag}}でトゥート",
|
|
||||||
"lang_parse_tagpin":"{{tag}}をよく使うタグへ",
|
|
||||||
"lang_parse_public":"公開",
|
|
||||||
"lang_parse_unlisted":"未収載",
|
|
||||||
"lang_parse_private":"非公開",
|
|
||||||
"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":"会話を表示",
|
|
||||||
//misskey
|
|
||||||
"lang_misskeyparse_renote":"再投稿",
|
|
||||||
"lang_misskeyparse_renoteqt":"引用",
|
|
||||||
"lang_misskeyparse_reaction":"リアクション",
|
|
||||||
"lang_misskeyparse_tagnostr":"タグTLはストリーミング非対応です。",
|
|
||||||
"lang_misskeyparse_listnostr":"リストTLはストリーミング非対応です。",
|
|
||||||
"lang_misskeyparse_home":"ホーム",
|
|
||||||
"lang_misskeyparse_followers":"フォロワー",
|
|
||||||
"lang_misskeyparse_specified":"ユーザー指定",
|
|
||||||
"lang_misskeyparse_qt":"MisskeyのRenote(引用モード)中:Ctrl+Shift+Cでクリア",
|
|
||||||
"lang_misskeyparse_renoted":"がRepost",
|
|
||||||
"lang_misskeyparse_quoted":"が引用",
|
|
||||||
"lang_misskeyparse_reacted":"がリアクション",
|
|
||||||
//setting
|
|
||||||
"lang_setting_time":"時間設定を{{set}}に設定しました。",
|
|
||||||
"lang_setting_theme":"テーマ設定を{{set}}に設定しました。",
|
|
||||||
"lang_setting_nsfw":"画像表示設定を{{set}}に設定しました。",
|
|
||||||
"lang_setting_cw":"テキスト表示設定を{{set}}に設定しました。",
|
|
||||||
"lang_setting_cwtext":"デフォルトの警告文を「{{set}}」に設定しました。",
|
|
||||||
"lang_setting_cws":"標準でCW:{{set}}",
|
|
||||||
"lang_setting_rp":"リプライ数表示:{{set}}",
|
|
||||||
"lang_setting_vis":"デフォルトの公開設定を{{set}}に設定しました。",
|
|
||||||
"lang_setting_popup":"ポップアップお知らせを{{set}}に設定しました。",
|
|
||||||
"lang_setting_off":"オフ",
|
|
||||||
"lang_setting_s":"秒",
|
|
||||||
"lang_setting_box":"デフォルトでのボックスの挙動を{{set}}に設定しました。",
|
|
||||||
"lang_setting_gif":"アイコンアニメーション再生を{{set}}に設定しました。",
|
|
||||||
"lang_setting_selt":"{{set1}}行以上または{{set2}}文字以上でテキストを隠します。",
|
|
||||||
"lang_setting_autocw":"{{set1}}行以上または{{set2}}文字以上で警告を表示します。",
|
|
||||||
"lang_setting_width":"横幅最低を{{set}}pxに設定しました。",
|
|
||||||
"lang_setting_fixwidth":"TweetDeckの横幅を{{set}}pxに設定しました。",
|
|
||||||
"lang_setting_img":"画像投稿後の設定を「{{set}}」に設定しました。",
|
|
||||||
"lang_setting_font":"フォントを{{set}}に設定しました。",
|
|
||||||
"lang_setting_default":"デフォルト",
|
|
||||||
"lang_setting_size":"フォントサイズを{{set}}pxに設定しました。",
|
|
||||||
"lang_setting_imgheight":"画像高さを{{set}}pxに設定しました。",
|
|
||||||
"lang_setting_ticker":"#InstanceTicker使用を{{set}}に設定しました。",
|
|
||||||
"lang_setting_animation":"アニメーションを{{set}}に設定しました。",
|
|
||||||
"lang_setting_tag":"タグの取得範囲を「{{set}}」に設定しました。",
|
|
||||||
"lang_setting_boxConfirm":"投稿ボックスを{{set}}",
|
|
||||||
"lang_setting_ul":"独自ロケール設定を{{set}}に設定しました。",
|
|
||||||
"lang_setting_notf":"ネイティブ通知を{{set}}に設定しました。",
|
|
||||||
"lang_setting_quote":"引用形式を{{set}}に設定しました。",
|
|
||||||
"lang_setting_via":"via表示を{{set}}に設定しました。",
|
|
||||||
"lang_setting_mov":"アクションボタン非表示を{{set}}に設定しました。",
|
|
||||||
"lang_setting_setasread":"通知カラム存在時新着非表示を{{set}}に設定しました。",
|
|
||||||
"lang_setting_main":"起動時・投稿時のアカウントを{{set}}に設定しました。",
|
|
||||||
"lang_setting_sec":"セカンダリートゥートボタン:{{set}}",
|
|
||||||
"lang_setting_ksref":"キーボードショートカットが更新されました。",
|
|
||||||
"lang_setting_nomuting":"ミュートしているクライアントはありません。",
|
|
||||||
"lang_setting_notftest":"通知テスト",
|
|
||||||
"lang_setting_notftestprof":"アイコンはあなたのアカウントのものです。",
|
|
||||||
"lang_setting_exportwarn":"重要なデータのみエクスポートされます。エクスポートされたデータは外部に公開しないでください。全ての認証データが含まれています。",
|
|
||||||
"lang_setting_importwarn":"全てのデータがリセットされます。"
|
|
||||||
}
|
|
||||||
@@ -1,110 +1,88 @@
|
|||||||
//インスタンスリスト
|
//インスタンスリスト
|
||||||
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",
|
"fedibird.com":"instance",
|
||||||
"minohdon.jp_bbcode":"disabled",
|
"fedibird.com_name":"Fedibird",
|
||||||
"minohdon.jp_markdown":"disabled",
|
"fedibird.com_quote":"enabled",
|
||||||
"minohdon.jp_glitch":"disabled",
|
"mastodos.com": "instance",
|
||||||
"knzk.me":"instance",
|
"mastodos.com_name": "マストどす",
|
||||||
"knzk.me_name":"神崎丼",
|
"dev.kirishima.cloud": "hidden",
|
||||||
"knzk.me_letters":"5000",
|
"dev.kirishima.cloud_name": "アスタルテ(Dev)",
|
||||||
"knzk.me_bbcode":"disabled",
|
"dev.kirishima.cloud_letters": "6229",
|
||||||
"knzk.me_markdown":"disabled",
|
"dev.kirishima.cloud_bbcode": "enabled",
|
||||||
"knzk.me_glitch":"enabled",
|
"dev.kirishima.cloud_markdown": "enabled",
|
||||||
"mastodos.com":"instance",
|
"dev.kirishima.cloud_glitch": "enabled",
|
||||||
"mastodos.com_name":"マストどす",
|
"mstdn.y-zu.org": "instance",
|
||||||
"mastodos.com_letters":"500",
|
"mstdn.y-zu.org_name": "Yづドン(Y-zuDon)",
|
||||||
"mastodos.com_bbcode":"disabled",
|
"imastodon.net": "instance",
|
||||||
"mastodos.com_markdown":"disabled",
|
"imastodon.net_name": "im@stodon",
|
||||||
"mastodos.com_glitch":"disabled",
|
"imastodon.net_home": "オフィス",
|
||||||
"dev.kirishima.cloud":"hidden",
|
"imastodon.net_local": "楽屋",
|
||||||
"dev.kirishima.cloud_name":"アスタルテ(Dev)",
|
"imastodon.net_notification": "ホワイトボード",
|
||||||
"dev.kirishima.cloud_letters":"6229",
|
"imastodon.net_public": "ライブステージ",
|
||||||
"dev.kirishima.cloud_bbcode":"enabled",
|
"imastodon.net_post": "あふぅ",
|
||||||
"dev.kirishima.cloud_markdown":"enabled",
|
"imastodon.net_fav": "の頭にティンときたようです",
|
||||||
"dev.kirishima.cloud_glitch":"enabled",
|
"imastodon.net_bt": ":「わかるわ」",
|
||||||
"mstdn.y-zu.org":"instance",
|
"imastodon.net_follow": "名刺をいただきました",
|
||||||
"mstdn.y-zu.org_name":"Yづドン!(502 BadGateway)",
|
"mstdn.osaka_home": "ウチ",
|
||||||
"mstdn.y-zu.org_letters":"500",
|
"mstdn.osaka_local": "近所",
|
||||||
"mstdn.y-zu.org_bbcode":"disabled",
|
"mstdn.osaka_notification": "あめちゃん",
|
||||||
"mstdn.y-zu.org_markdown":"enabled",
|
"mstdn.osaka_public": "新世界",
|
||||||
"mstdn.y-zu.org_glitch":"disabled",
|
"mstdn.osaka_post": "なんや!",
|
||||||
"imastodon.net":"instance",
|
"mstdn.osaka_fav": "がええやん言いました",
|
||||||
"imastodon.net_name":"im@stodon",
|
"mstdn.osaka_bt": "がしばいた",
|
||||||
"imastodon.net_letters":"500",
|
"mstdn.osaka_follow": "ツルまれました",
|
||||||
"imastodon.net_bbcode":"disabled",
|
"mstdn.kemono-friends.info": "instance",
|
||||||
"imastodon.net_markdown":"disabled",
|
"mstdn.kemono-friends.info_name": "ますとどんちほー",
|
||||||
"imastodon.net_home":"オフィス",
|
"mstdn.kemono-friends.info_letters": "1024",
|
||||||
"imastodon.net_local":"楽屋",
|
"mstdn.kemono-friends.info_home": "なわばり",
|
||||||
"imastodon.net_notification":"ホワイトボード",
|
"mstdn.kemono-friends.info_local": "ますとどんちほー",
|
||||||
"imastodon.net_public":"ライブステージ",
|
"mstdn.kemono-friends.info_notification": "ねえねえ!",
|
||||||
"imastodon.net_post":"あふぅ",
|
"mstdn.kemono-friends.info_public": "ジャパリパーク",
|
||||||
"imastodon.net_fav":"の頭にティンときたようです",
|
"mstdn.kemono-friends.info_post": "がおー!",
|
||||||
"imastodon.net_bt":":「わかるわ」",
|
"mstdn.kemono-friends.info_fav": ":「すごーい」",
|
||||||
"imastodon.net_follow":"名刺をいただきました",
|
"mstdn.kemono-friends.info_bt": ":「たーのしー」",
|
||||||
"imastodon.net_glitch":"disabled",
|
"itabashi.0j0.jp": "instance",
|
||||||
"mstdn.osaka":"instance",
|
"itabashi.0j0.jp_name": "板橋丼",
|
||||||
"mstdn.osaka_name":"大阪丼",
|
"itabashi.0j0.jp_letters": "1024",
|
||||||
"mstdn.osaka_letters":"500",
|
"itabashi.0j0.jp_quote":"enabled",
|
||||||
"mstdn.osaka_bbcode":"disabled",
|
"dtp-mstdn.jp": "instance",
|
||||||
"mstdn.osaka_markdown":"disabled",
|
"dtp-mstdn.jp_name": "dtp-mstdn.jp",
|
||||||
"mstdn.osaka_home":"ウチ",
|
"dtp-mstdn.jp_quote":"enabled",
|
||||||
"mstdn.osaka_local":"近所",
|
"misskey.io": "misskey",
|
||||||
"mstdn.osaka_notification":"あめちゃん",
|
"misskey.io_name": "misskey.io",
|
||||||
"mstdn.osaka_public":"新世界",
|
"misskey.io_letters": "1000",
|
||||||
"mstdn.osaka_post":"なんや!",
|
"misskey.io_bbcode": "disabled",
|
||||||
"mstdn.osaka_fav":"がええやん言いました",
|
"misskey.io_markdown": "enabled",
|
||||||
"mstdn.osaka_bt":"がしばいた",
|
"misskey.io_public": "Global",
|
||||||
"mstdn.osaka_follow":"ツルまれました",
|
"misskey.io_post": "Post",
|
||||||
"mstdn.osaka_glitch":"disabled",
|
"misskey.io_fav": " reacted your post.",
|
||||||
"mstdn.kemono-friends.info":"instance",
|
"misskey.io_bt": " reposted your post.",
|
||||||
"mstdn.kemono-friends.info_name":"ますとどんちほー",
|
"misskey.dev": "misskey",
|
||||||
"mstdn.kemono-friends.info_letters":"1024",
|
"misskey.dev_name": "misskey.dev",
|
||||||
"mstdn.kemono-friends.info_bbcode":"disabled",
|
"misskey.dev_letters": "1024",
|
||||||
"mstdn.kemono-friends.info_markdown":"disabled",
|
"misskey.dev_bbcode": "disabled",
|
||||||
"mstdn.kemono-friends.info_home":"なわばり",
|
"misskey.dev_markdown": "enabled",
|
||||||
"mstdn.kemono-friends.info_local":"ますとどんちほー",
|
"misskey.dev_public": "Global",
|
||||||
"mstdn.kemono-friends.info_notification":"ねえねえ!",
|
"misskey.dev_post": "Post",
|
||||||
"mstdn.kemono-friends.info_public":"ジャパリパーク",
|
"misskey.dev_fav": " reacted your post.",
|
||||||
"mstdn.kemono-friends.info_post":"がおー!",
|
"misskey.dev_bt": " reposted your post.",
|
||||||
"mstdn.kemono-friends.info_fav":":「すごーい」",
|
"precure.ml": "instance",
|
||||||
"mstdn.kemono-friends.info_bt":":「たーのしー」",
|
"precure.ml_name": "キュアスタ!",
|
||||||
"mstdn.kemono-friends.info_glitch":"disabled",
|
"precure.ml_letters": "1024",
|
||||||
"itabashi.0j0.jp":"instance",
|
"precure.ml_post": "キュア!",
|
||||||
"itabashi.0j0.jp_name":"板橋丼",
|
"odakyu.app_quote":"enabled",
|
||||||
"itabashi.0j0.jp_letters":"1024",
|
"nitiasa.com_quote":"enabled",
|
||||||
"itabashi.0j0.jp_bbcode":"disabled",
|
"biwakodon.com_quote":"enabled",
|
||||||
"itabashi.0j0.jp_markdown":"disabled",
|
"comm.cx_quote":"enabled"
|
||||||
"itabashi.0j0.jp_glitch":"disabled",
|
|
||||||
"theboss.tech":"instance",
|
|
||||||
"theboss.tech_name":"theboss.tech",
|
|
||||||
"theboss.tech_letters":"1000",
|
|
||||||
"theboss.tech_bbcode":"disabled",
|
|
||||||
"theboss.tech_markdown":"disabled",
|
|
||||||
"theboss.tech_glitch":"disabled",
|
|
||||||
"dtp-mstdn.jp":"instance",
|
|
||||||
"dtp-mstdn.jp_name":"DTP鯖",
|
|
||||||
"dtp-mstdn.jp_letters":"500",
|
|
||||||
"dtp-mstdn.jp_bbcode":"disabled",
|
|
||||||
"dtp-mstdn.jp_markdown":"disabled",
|
|
||||||
"dtp-mstdn.jp_glitch":"disabled",
|
|
||||||
"misskey.xyz":"instance",
|
|
||||||
"misskey.xyz_name":"Misskey",
|
|
||||||
"misskey.xyz_letters":"1000",
|
|
||||||
"misskey.xyz_bbcode":"disabled",
|
|
||||||
"misskey.xyz_markdown":"enabled",
|
|
||||||
"misskey.xyz_public":"Global",
|
|
||||||
"misskey.xyz_post":"Post",
|
|
||||||
"misskey.xyz_fav":" reacted your post.",
|
|
||||||
"misskey.xyz_bt":" reposted your post.",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("instance", JSON.stringify(idata));
|
localStorage.setItem("instance", JSON.stringify(idata));
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
@@ -1,180 +1,219 @@
|
|||||||
//プラットフォーム別 最後に読むやつ
|
//プラットフォーム別 最後に読むやつ
|
||||||
//リンクを外部で開くか内部で出すか
|
//リンクを外部で開くか内部で出すか
|
||||||
$(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.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
|
toot = url.match(/https:\/\/([^+_]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/)
|
||||||
//タグのURLぽかったら
|
if (!toot) {
|
||||||
var tags=[];
|
//Pleroma対策
|
||||||
tags = url.match(
|
toot = url.match(/https:\/\/([^+_]+)\/users\/([a-zA-Z0-9_]+)\/statuses\/([0-9]+)/)
|
||||||
/https:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
|
}
|
||||||
);
|
//タグのURLぽかったら
|
||||||
//メンションっぽかったら
|
var tags = []
|
||||||
var ats=[];
|
tags = url.match(/https:\/\/([^+_]+)\/tags\/([_a-zA-Z0-9\&=+\%]+)/)
|
||||||
ats = url.match(
|
//メンションっぽかったら
|
||||||
/https:\/\/([-a-zA-Z0-9@.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
|
var ats = []
|
||||||
);
|
ats = url.match(/https:\/\/([^+_]+)\/@([_a-zA-Z0-9\&=+\%]+)/)
|
||||||
console.log(toot);
|
if (toot) {
|
||||||
if(toot){
|
if (toot[1]) {
|
||||||
if(toot[1]){
|
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;
|
}
|
||||||
}
|
$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) {
|
||||||
|
if (tags[2]) {
|
||||||
}else if(tags){
|
var acct_id = $a.parent().attr('data-acct')
|
||||||
if(tags[2]){
|
if (!acct_id) {
|
||||||
tagShow(tags[2]);
|
acct_id = 0
|
||||||
Materialize.toast('<a class="btn-flat toast-action" href="detEx(\''+url+'\')">Open in browser</a>', 86400);
|
}
|
||||||
}
|
tl('tag', decodeURI(tags[2]), acct_id, 'add')
|
||||||
}else if(ats){
|
}
|
||||||
console.log(ats);
|
} else if (ats) {
|
||||||
if(ats[2]){
|
if (ats[2]) {
|
||||||
if(ats[1]!="quesdon.rinsuki.net"){
|
//Quesdon判定
|
||||||
udgEx(ats[2]+"@"+ats[1],"main");
|
if (!~ats[2].indexOf('@')) {
|
||||||
return false
|
udgEx(url, 'main')
|
||||||
}else{
|
return false
|
||||||
const {
|
} else {
|
||||||
shell
|
if(pwa) {
|
||||||
} = require('electron');
|
return true
|
||||||
|
} else {
|
||||||
shell.openExternal(url);
|
postMessage(['openUrl', url], '*')
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
} else {
|
||||||
}else{
|
if(pwa) {
|
||||||
//hrefがhttp/httpsならブラウザで
|
return true
|
||||||
if(urls){
|
}
|
||||||
if (urls[0]) {
|
//hrefがhttp/httpsならブラウザで
|
||||||
const {shell} = require('electron');
|
if (urls) {
|
||||||
if(~url.indexOf("thedeks.top")){
|
if (urls[0]) {
|
||||||
//alert("If you recieve this alert, let the developer(Cutls@kirishima.cloud) know it with a screenshot.");
|
if (~url.indexOf('thedeks.top')) {
|
||||||
url="https://thedesk.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 {
|
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");
|
postMessage(['copy', string], '*')
|
||||||
temp.val(string);
|
return true
|
||||||
temp.select();
|
|
||||||
var result = document.execCommand('copy');
|
|
||||||
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(percent * 100);
|
console.log('Progress: ' + 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)
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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(){
|
function opendev() {
|
||||||
var webview = document.getElementById("webview");
|
var webview = document.getElementById('webview')
|
||||||
webview.openDevTools();
|
webview.openDevTools()
|
||||||
/*webview.sendInputEvent({
|
/*webview.sendInputEvent({
|
||||||
type: "keyDown",
|
type: "keyDown",
|
||||||
keyCode: '2'
|
keyCode: '2'
|
||||||
});
|
});
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
var soundFile
|
||||||
|
function playSound() {
|
||||||
|
window.AudioContext = window.AudioContext || window.webkitAudioContext
|
||||||
|
if (soundFile) {
|
||||||
|
soundFile.stop()
|
||||||
|
}
|
||||||
|
context = new AudioContext()
|
||||||
|
context.createBufferSource().start(0)
|
||||||
|
context.decodeAudioData(request.response, function(buf) {
|
||||||
|
//console.log("Playing:" , source)
|
||||||
|
source.buffer = buf
|
||||||
|
source.loop = false
|
||||||
|
})
|
||||||
|
source = context.createBufferSource()
|
||||||
|
volumeControl = context.createGain()
|
||||||
|
source.connect(volumeControl)
|
||||||
|
volumeControl.connect(context.destination)
|
||||||
|
var cvol = localStorage.getItem('customVol')
|
||||||
|
if (cvol) {
|
||||||
|
vol = cvol
|
||||||
|
} else {
|
||||||
|
vol = 0.8
|
||||||
|
}
|
||||||
|
volumeControl.gain.value = vol
|
||||||
|
source.start(0)
|
||||||
|
soundFile = source
|
||||||
|
|
||||||
var webviewDom = document.getElementById('webview');
|
function newFunction() {
|
||||||
const {
|
var source
|
||||||
shell
|
return source
|
||||||
} = require('electron');
|
}
|
||||||
webviewDom.addEventListener('new-window', function(e) {
|
}
|
||||||
shell.openExternal(e.url);
|
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], e.data[1][3])
|
||||||
|
} else if (e.data[0] == 'post') {
|
||||||
|
post('pass')
|
||||||
|
} else if (e.data[0] == 'toastSaved') {
|
||||||
|
var show = `${lang.lang_img_DLDone}${
|
||||||
|
e.data[1][0]
|
||||||
|
}<button class="btn-flat toast-action" onclick="openFinder('${e.data[1][1]}')">Show</button>`
|
||||||
|
M.toast({ html: show, 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] == 'asRead') {
|
||||||
|
asRead()
|
||||||
|
} else if (e.data[0] == 'asReadEnd') {
|
||||||
|
asReadEnd()
|
||||||
|
} else if (e.data[0] == 'logData') {
|
||||||
|
$('#logs').val(e.data[1])
|
||||||
|
var obj = document.getElementById('logs')
|
||||||
|
obj.scrollTop = obj.scrollHeight
|
||||||
|
} else if (e.data[0] == 'alert') {
|
||||||
|
Swal.fire({
|
||||||
|
type: 'info',
|
||||||
|
title: e.data[1]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* PWA */
|
||||||
|
if(pwa) {
|
||||||
|
function postMessage(e) {
|
||||||
|
if (e[0] == 'openUrl') {
|
||||||
|
urls = e[1].match(/https?:\/\/(.+)/)
|
||||||
|
if (urls) {
|
||||||
|
Swal.fire({
|
||||||
|
title: 'Open URL',
|
||||||
|
icon: 'info',
|
||||||
|
html:
|
||||||
|
`If you are OK, click: <a href="${urls[0]}" target="_blank" class="btn waves-effect">Here</a>`,
|
||||||
|
showCloseButton: false,
|
||||||
|
showCancelButton: true,
|
||||||
|
focusConfirm: false,
|
||||||
|
confirmButtonText: 'Close'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,3 +1 @@
|
|||||||
//jQuery読む
|
//jQuery読む
|
||||||
window.jQuery = window.$ = require('./js/common/jquery.js');
|
|
||||||
var Hammer = require('./js/common/hammer.min.js');
|
|
||||||
@@ -1,160 +1,285 @@
|
|||||||
//jQuery読む
|
document.title = 'TheDesk'
|
||||||
window.jQuery = window.$ = require('../../js/common/jquery.js');
|
|
||||||
var Hammer = require('../../js/common/hammer.min.js');
|
|
||||||
$.strip_tags = function(str, allowed) {
|
$.strip_tags = function(str, allowed) {
|
||||||
if(!str){
|
if (!str) {
|
||||||
return "";
|
return ''
|
||||||
}
|
}
|
||||||
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || [])
|
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('')
|
||||||
.join('');
|
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
|
||||||
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
|
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi
|
||||||
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
|
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
|
||||||
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
|
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''
|
||||||
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
|
})
|
||||||
});
|
}
|
||||||
};
|
function escapeHTML(str) {
|
||||||
function escapeHTML(str) {
|
if (!str) {
|
||||||
if(!str){
|
return ''
|
||||||
return "";
|
}
|
||||||
}
|
return str
|
||||||
return str.replace(/&/g, '&')
|
.replace(/&/g, '&')
|
||||||
.replace(/</g, '<')
|
.replace(/</g, '<')
|
||||||
.replace(/>/g, '>')
|
.replace(/>/g, '>')
|
||||||
.replace(/"/g, '"')
|
.replace(/"/g, '"')
|
||||||
.replace(/'/g, ''');
|
.replace(/'/g, ''')
|
||||||
}
|
}
|
||||||
//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 formattime(date){
|
function br2nl(str) {
|
||||||
var str=date.getFullYear()+"-";
|
if (!str) {
|
||||||
if(date.getMonth()+1<10){
|
return ''
|
||||||
str=str+"0"+(date.getMonth()+1)+"-";
|
|
||||||
}else{
|
|
||||||
str=str+(date.getMonth()+1)+"-";
|
|
||||||
}
|
}
|
||||||
if(date.getDate()<10){
|
str = str.replace(/<br \/>/g, '\r\n')
|
||||||
str=str+"0"+date.getDate()
|
return str
|
||||||
}else{
|
|
||||||
str=str+date.getDate()
|
|
||||||
}
|
|
||||||
str=str+"T";
|
|
||||||
if(date.getHours()<10){
|
|
||||||
str=str+"0"+date.getHours()+":"
|
|
||||||
}else{
|
|
||||||
str=str+date.getHours()+":"
|
|
||||||
}
|
|
||||||
if(date.getMinutes()<10){
|
|
||||||
str=str+"0"+date.getMinutes()
|
|
||||||
}else{
|
|
||||||
str=str+date.getMinutes()
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
function formattimeutc(date){
|
function formattime(date) {
|
||||||
var str=date.getUTCFullYear()+"-";
|
var str = date.getFullYear() + '-'
|
||||||
if(date.getUTCMonth()+1<10){
|
if (date.getMonth() + 1 < 10) {
|
||||||
str=str+"0"+(date.getUTCMonth()+1)+"-";
|
str = str + '0' + (date.getMonth() + 1) + '-'
|
||||||
}else{
|
} else {
|
||||||
str=str+(date.getUTCMonth()+1)+"-";
|
str = str + (date.getMonth() + 1) + '-'
|
||||||
}
|
}
|
||||||
if(date.getUTCDate()<10){
|
if (date.getDate() < 10) {
|
||||||
str=str+"0"+date.getUTCDate()
|
str = str + '0' + date.getDate()
|
||||||
}else{
|
} else {
|
||||||
str=str+date.getUTCDate()
|
str = str + date.getDate()
|
||||||
}
|
}
|
||||||
str=str+"T";
|
str = str + 'T'
|
||||||
if(date.getUTCHours()<10){
|
if (date.getHours() < 10) {
|
||||||
str=str+"0"+date.getUTCHours()+":"
|
str = str + '0' + date.getHours() + ':'
|
||||||
}else{
|
} else {
|
||||||
str=str+date.getUTCHours()+":"
|
str = str + date.getHours() + ':'
|
||||||
}
|
}
|
||||||
if(date.getUTCMinutes()<10){
|
if (date.getMinutes() < 10) {
|
||||||
str=str+"0"+date.getUTCMinutes()
|
str = str + '0' + date.getMinutes()
|
||||||
}else{
|
} else {
|
||||||
str=str+date.getUTCMinutes()
|
str = str + date.getMinutes()
|
||||||
}
|
}
|
||||||
return str;
|
return escapeHTML(str)
|
||||||
}
|
}
|
||||||
var electron = require("electron");
|
function formattimeutc(date) {
|
||||||
var ipc = electron.ipcRenderer;
|
var str = date.getUTCFullYear() + '-'
|
||||||
ipc.send('custom-css-request', "");
|
if (date.getUTCMonth() + 1 < 10) {
|
||||||
ipc.on('custom-css-response', function (event, arg) {
|
str = str + '0' + (date.getUTCMonth() + 1) + '-'
|
||||||
if(arg==""){ return false; }
|
} else {
|
||||||
var styleNode = document.createElement("style");
|
str = str + (date.getUTCMonth() + 1) + '-'
|
||||||
styleNode.setAttribute("type","text/css")
|
}
|
||||||
|
if (date.getUTCDate() < 10) {
|
||||||
var content = document.createTextNode(arg)
|
str = str + '0' + date.getUTCDate()
|
||||||
styleNode.append(content)
|
} else {
|
||||||
document.getElementsByTagName("head")[0].append(styleNode)
|
str = str + date.getUTCDate()
|
||||||
})
|
}
|
||||||
ipc.on('theme-css-response', function (event, arg) {
|
str = str + 'T'
|
||||||
if(arg==""){ return false; }
|
if (date.getUTCHours() < 10) {
|
||||||
var styleNode = document.createElement("style");
|
str = str + '0' + date.getUTCHours() + ':'
|
||||||
styleNode.setAttribute("type","text/css")
|
} else {
|
||||||
|
str = str + date.getUTCHours() + ':'
|
||||||
var content = document.createTextNode(arg)
|
}
|
||||||
styleNode.append(content)
|
if (date.getUTCMinutes() < 10) {
|
||||||
document.getElementsByTagName("head")[0].append(styleNode)
|
str = str + '0' + date.getUTCMinutes()
|
||||||
})
|
} else {
|
||||||
function makeCID(){
|
str = str + date.getUTCMinutes()
|
||||||
return randomStr(8)+"-"+randomStr(4)+"-"+randomStr(4)+"-"+randomStr(4)+"-"+randomStr(12);
|
}
|
||||||
|
return escapeHTML(str)
|
||||||
}
|
}
|
||||||
function randomStr(l){
|
postMessage(['sendSinmpleIpc', 'custom-css-request'], '*')
|
||||||
|
function makeCID() {
|
||||||
|
return (
|
||||||
|
randomStr(8) +
|
||||||
|
'-' +
|
||||||
|
randomStr(4) +
|
||||||
|
'-' +
|
||||||
|
randomStr(4) +
|
||||||
|
'-' +
|
||||||
|
randomStr(4) +
|
||||||
|
'-' +
|
||||||
|
randomStr(12)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
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に変換したものを代入する変数
|
||||||
// HEXに変換したものを代入する変数
|
var 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桁になる
|
||||||
// rgb(1,1,1)のようなときHEXに変換すると1桁になる
|
// 1桁のときは前に0を足す
|
||||||
// 1桁のときは前に0を足す
|
if (rgb[i].length == 1) {
|
||||||
if (rgb[i].length == 1)
|
rgb[i] = '0' + rgb[i]
|
||||||
{
|
}
|
||||||
rgb[i] = '0' + rgb[i];
|
hex += 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 splitter = new GraphemeSplitter()
|
||||||
|
var arr = splitter.splitGraphemes(str)
|
||||||
|
return arr.length
|
||||||
|
}
|
||||||
|
$.mb_substr = function(str, begin, end) {
|
||||||
|
//配列にする
|
||||||
|
var splitter = new GraphemeSplitter()
|
||||||
|
var arr = splitter.splitGraphemes(str)
|
||||||
|
var newarr = []
|
||||||
|
for (var i = 0; i < arr.length; i++) {
|
||||||
|
if (i >= begin && i <= end) {
|
||||||
|
newarr.push(arr[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return newarr.join('')
|
||||||
|
}
|
||||||
|
//ソートするやつ
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
function setLog(txt1, txt2, txt3) {
|
||||||
|
//url,statuscode,responsetext
|
||||||
|
var text = new Date().toUTCString()
|
||||||
|
text = text + ',' + txt1 + ',' + txt2 + ',' + escapeCsv(txt3)
|
||||||
|
console.error(text)
|
||||||
|
postMessage(['log', text], '*')
|
||||||
|
}
|
||||||
|
function escapeCsv(str) {
|
||||||
|
if (!str) {
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
var result
|
||||||
|
result = str.toString().replace(/\"/g, '""')
|
||||||
|
if (result.indexOf(',') >= 0) {
|
||||||
|
result = '"' + result + '"'
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
function evalAttr(json, attr, lenCk) {
|
||||||
|
if (json[attr]) {
|
||||||
|
if (lenCk) {
|
||||||
|
if (json[attr][0]) {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function statusModel(now) {
|
||||||
|
if (!now) {
|
||||||
|
var now = new Date().toString()
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
id: '',
|
||||||
|
created_at: now,
|
||||||
|
in_reply_to_id: null,
|
||||||
|
in_reply_to_account_id: null,
|
||||||
|
sensitive: false,
|
||||||
|
spoiler_text: '',
|
||||||
|
visibility: 'public',
|
||||||
|
language: 'en',
|
||||||
|
uri: '',
|
||||||
|
url: '',
|
||||||
|
replies_count: 0,
|
||||||
|
reblogs_count: 0,
|
||||||
|
favourites_count: 0,
|
||||||
|
favourited: false,
|
||||||
|
reblogged: false,
|
||||||
|
muted: false,
|
||||||
|
bookmarked: false,
|
||||||
|
pinned: false,
|
||||||
|
content: '<p><i>No status here</i></p>',
|
||||||
|
reblog: null,
|
||||||
|
application: {
|
||||||
|
name: null,
|
||||||
|
website: null
|
||||||
|
},
|
||||||
|
account: {
|
||||||
|
id: '',
|
||||||
|
username: '',
|
||||||
|
acct: '',
|
||||||
|
display_name: '',
|
||||||
|
locked: false,
|
||||||
|
bot: false,
|
||||||
|
created_at: now,
|
||||||
|
note: '',
|
||||||
|
url: '',
|
||||||
|
avatar: '',
|
||||||
|
avatar_static: '',
|
||||||
|
header: '',
|
||||||
|
header_static: '',
|
||||||
|
followers_count: 0,
|
||||||
|
following_count: 0,
|
||||||
|
statuses_count: 0,
|
||||||
|
last_status_at: now,
|
||||||
|
emojis: [],
|
||||||
|
fields: []
|
||||||
|
},
|
||||||
|
media_attachments: [],
|
||||||
|
mentions: [],
|
||||||
|
tags: [],
|
||||||
|
card: null,
|
||||||
|
poll: null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,143 +1,263 @@
|
|||||||
|
|
||||||
//TL取得
|
//TL取得
|
||||||
|
var websocket
|
||||||
function tl(data) {
|
function tl(data) {
|
||||||
var tlid=0;
|
var tlid = 0
|
||||||
var acct_id = $("#post-acct-sel").val();
|
if (websocket) {
|
||||||
var type = $("#type-sel").val();
|
websocket.close()
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
}
|
||||||
|
var acct_id = $('#post-acct-sel').val()
|
||||||
|
var type = $('#type-sel').val()
|
||||||
|
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(
|
||||||
"user_" + acct_id) + "@" + domain + ")");
|
cap(type, data) + ' TL(' + localStorage.getItem('user_' + acct_id) + '@' + domain + ')'
|
||||||
var start = "https://" + domain + "/api/v1/timelines/" + com(type, data);
|
)
|
||||||
console.log(start);
|
var start = 'https://' + domain + '/api/v1/timelines/' + com(type, data)
|
||||||
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) {
|
|
||||||
return response.json();
|
|
||||||
}).catch(function(error) {
|
|
||||||
console.error(error);
|
|
||||||
}).then(function(json) {
|
|
||||||
var templete = parse([json[0]], '', acct_id, tlid);
|
|
||||||
$("#timeline_nano").html(templete);
|
|
||||||
jQuery("time.timeago").timeago();
|
|
||||||
});
|
|
||||||
//Streaming接続
|
|
||||||
var websocket=[];
|
|
||||||
var tlid=0;
|
|
||||||
if (type == "home") {
|
|
||||||
var start = "wss://" + domain +
|
|
||||||
"/api/v1/streaming/?stream=user&access_token=" + at;
|
|
||||||
} else if (type == "pub") {
|
|
||||||
var start = "wss://" + domain +
|
|
||||||
"/api/v1/streaming/?stream=public&access_token=" + at;
|
|
||||||
} else if (type == "local") {
|
|
||||||
var start = "wss://" + domain +
|
|
||||||
"/api/v1/streaming/?stream=public:local&access_token=" + at;
|
|
||||||
} else if (type == "tag") {
|
|
||||||
var start = "wss://" + domain +
|
|
||||||
"/api/v1/streaming/?stream=hashtag&tag=" + data +"&access_token=" + at;
|
|
||||||
}
|
|
||||||
console.log(start);
|
|
||||||
var wsid = websocket.length;
|
|
||||||
websocket[wsid] = new WebSocket(start);
|
|
||||||
websocket[wsid].onopen = function(mess) {
|
|
||||||
console.log(tlid + ":Connect Streaming API:" + type);
|
|
||||||
console.log(mess);
|
|
||||||
$("#notice_icon_" + tlid).removeClass("red-text");
|
|
||||||
}
|
|
||||||
websocket[wsid].onmessage = function(mess) {
|
|
||||||
console.log(tlid + ":Receive Streaming API:");
|
|
||||||
console.log(websocket[wsid]);
|
|
||||||
var typeA = JSON.parse(mess.data).event;
|
|
||||||
if (typeA == "delete") {
|
|
||||||
var obj = JSON.parse(mess.data).payload;
|
|
||||||
$("[toot-id=" + JSON.parse(mess.data).payload + "]").hide();
|
|
||||||
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
|
|
||||||
} else if (typeA == "update") {
|
|
||||||
var obj = JSON.parse(JSON.parse(mess.data).payload);
|
|
||||||
console.log(obj);
|
|
||||||
var templete = parse([obj], '', acct_id, tlid);
|
|
||||||
$("#timeline_nano").html(templete);
|
|
||||||
}
|
}
|
||||||
websocket[wsid].onclose = function(mess) {
|
})
|
||||||
console.log("Close Streaming API:" + type);
|
.then(function(response) {
|
||||||
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
var templete = parse([json[0]], '', acct_id, tlid)
|
||||||
|
$('#timeline_nano').html(templete)
|
||||||
|
jQuery('time.timeago').timeago()
|
||||||
|
$('#menu').addClass('hide')
|
||||||
|
})
|
||||||
|
//Streaming接続
|
||||||
|
var tlid = 0
|
||||||
|
if (type == 'home') {
|
||||||
|
var start = 'wss://' + domain + '/api/v1/streaming/?stream=user&access_token=' + at
|
||||||
|
} else if (type == 'pub') {
|
||||||
|
var start = 'wss://' + domain + '/api/v1/streaming/?stream=public&access_token=' + at
|
||||||
|
} else if (type == 'local') {
|
||||||
|
var start = 'wss://' + domain + '/api/v1/streaming/?stream=public:local&access_token=' + at
|
||||||
|
} else if (type == 'tag') {
|
||||||
|
var start =
|
||||||
|
'wss://' + domain + '/api/v1/streaming/?stream=hashtag&tag=' + data + '&access_token=' + at
|
||||||
|
}
|
||||||
|
websocket = new WebSocket(start)
|
||||||
|
websocket.onopen = function(mess) {
|
||||||
|
$('#notice_icon_' + tlid).removeClass('red-text')
|
||||||
|
}
|
||||||
|
websocket.onmessage = function(mess) {
|
||||||
|
var typeA = JSON.parse(mess.data).event
|
||||||
|
if (typeA == 'update') {
|
||||||
|
var obj = JSON.parse(JSON.parse(mess.data).payload)
|
||||||
|
var templete = parse([obj], '', acct_id, tlid)
|
||||||
|
jQuery('time.timeago').timeago()
|
||||||
|
$('#timeline_nano').html(templete)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
websocket[wsid].onerror = function(error) {
|
websocket.onerror = function(error) {
|
||||||
console.error('WebSocket Error ' + error);
|
console.error('WebSocket Error ' + error)
|
||||||
};
|
}
|
||||||
|
websocket.onclose = function(mess) {
|
||||||
|
console.error('Close Streaming API:' + type)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//TLのタイトル
|
//TLのタイトル
|
||||||
function cap(type, data) {
|
function cap(type, data) {
|
||||||
if (type == "home") {
|
if (type == 'home') {
|
||||||
return "Home"
|
return 'Home'
|
||||||
} else if (type == "local") {
|
} else if (type == 'local') {
|
||||||
return "Local"
|
return 'Local'
|
||||||
} else if (type == "pub") {
|
} else if (type == 'pub') {
|
||||||
return "Public"
|
return 'Public'
|
||||||
} else if (type == "tag") {
|
} else if (type == 'tag') {
|
||||||
return "#" + data
|
return '#' + data
|
||||||
} else if (type == "list") {
|
} else if (type == 'list') {
|
||||||
return "List(id:" + data + ")"
|
return 'List(id:' + data + ')'
|
||||||
} else if (type == "notf") {
|
} else if (type == 'notf') {
|
||||||
return "Notification"
|
return 'Notification'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TLのURL
|
//TLのURL
|
||||||
function com(type, data) {
|
function com(type, data) {
|
||||||
if (type == "home") {
|
if (type == 'home') {
|
||||||
return "home?"
|
return 'home?'
|
||||||
} else if (type == "local") {
|
} else if (type == 'local') {
|
||||||
return "public?local=true&"
|
return 'public?local=true&'
|
||||||
} else if (type == "pub") {
|
} else if (type == 'pub') {
|
||||||
return "public?"
|
return 'public?'
|
||||||
} else if (type == "tag") {
|
} else if (type == 'tag') {
|
||||||
return "tag/" + data + "?"
|
return 'tag/' + data + '?'
|
||||||
}
|
}
|
||||||
if (type == "list") {
|
if (type == 'list') {
|
||||||
return "list/" + data + "?"
|
return 'list/' + data + '?'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TLのアイコン
|
//TLのアイコン
|
||||||
function icon(type) {
|
function icon(type) {
|
||||||
if (type == "home") {
|
if (type == 'home') {
|
||||||
return "home"
|
return 'home'
|
||||||
} else if (type == "local") {
|
} else if (type == 'local') {
|
||||||
return "people_outline"
|
return 'people_outline'
|
||||||
} else if (type == "pub") {
|
} else if (type == 'pub') {
|
||||||
return "language"
|
return 'language'
|
||||||
} else if (type == "tag") {
|
} else if (type == 'tag') {
|
||||||
return "search"
|
return 'search'
|
||||||
}
|
}
|
||||||
if (type == "list") {
|
if (type == 'list') {
|
||||||
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:投稿
|
||||||
if (event.ctrlKey) {
|
if (event.ctrlKey) {
|
||||||
if (e.keyCode === 13) {
|
if (e.keyCode === 13) {
|
||||||
post();
|
post()
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
});
|
})
|
||||||
|
function set() {
|
||||||
|
$('#menu').toggleClass('hide')
|
||||||
|
if ($('#menu').hasClass('hide')) {
|
||||||
|
$('#setting').text('Setting')
|
||||||
|
} else {
|
||||||
|
$('#setting').text('Close')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var multi = localStorage.getItem('multi')
|
||||||
|
if (!multi) {
|
||||||
|
var obj = [
|
||||||
|
{
|
||||||
|
at: localStorage.getItem(localStorage.getItem('domain_' + acct_id) + '_at'),
|
||||||
|
name: localStorage.getItem('name_' + acct_id),
|
||||||
|
domain: localStorage.getItem('domain_' + acct_id),
|
||||||
|
user: localStorage.getItem('user_' + acct_id),
|
||||||
|
prof: localStorage.getItem('prof_' + acct_id)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
var json = JSON.stringify(obj)
|
||||||
|
localStorage.setItem('multi', json)
|
||||||
|
} else {
|
||||||
|
var obj = JSON.parse(multi)
|
||||||
|
}
|
||||||
|
var templete
|
||||||
|
var last = localStorage.getItem('last-use')
|
||||||
|
var sel
|
||||||
|
Object.keys(obj).forEach(function(key) {
|
||||||
|
var acct = obj[key]
|
||||||
|
var list = key * 1 + 1
|
||||||
|
if (key == last) {
|
||||||
|
sel = 'selected'
|
||||||
|
} else {
|
||||||
|
sel = ''
|
||||||
|
}
|
||||||
|
templete = `<option value="${key}" ${sel}>${acct.user}@${acct.domain}</option>`
|
||||||
|
$('#post-acct-sel').append(templete)
|
||||||
|
})
|
||||||
|
function mov() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
function resetmv() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
function post() {
|
||||||
|
var acct_id = $('#post-acct-sel').val()
|
||||||
|
var domain = localStorage.getItem('domain_' + acct_id)
|
||||||
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||||
|
var start = 'https://' + domain + '/api/v1/statuses'
|
||||||
|
var str = $('#textarea').val()
|
||||||
|
var toot = {
|
||||||
|
status: str
|
||||||
|
}
|
||||||
|
var vis = loadVis(acct_id)
|
||||||
|
toot.visibility = vis
|
||||||
|
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(JSON.stringify(toot))
|
||||||
|
httpreq.onreadystatechange = function() {
|
||||||
|
if (httpreq.readyState === 4) {
|
||||||
|
if (this.status !== 200) {
|
||||||
|
setLog(start, this.status, this.response)
|
||||||
|
}
|
||||||
|
$('#textarea').val('')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function loadVis(acct_id) {
|
||||||
|
var vist = localStorage.getItem('vis')
|
||||||
|
if (!vist) {
|
||||||
|
return 'public'
|
||||||
|
} else {
|
||||||
|
if (vist == 'memory') {
|
||||||
|
var memory = localStorage.getItem('vis-memory-' + acct_id)
|
||||||
|
if (!memory) {
|
||||||
|
memory = 'public'
|
||||||
|
}
|
||||||
|
return memory
|
||||||
|
} else if (vist == 'server' || vist == 'useapi') {
|
||||||
|
var multi = localStorage.getItem('multi')
|
||||||
|
var obj = JSON.parse(multi)
|
||||||
|
var memory = obj[acct_id]['vis']
|
||||||
|
if (!memory) {
|
||||||
|
memory = 'public'
|
||||||
|
}
|
||||||
|
return memory
|
||||||
|
} else {
|
||||||
|
return vist
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function loader() {
|
||||||
|
var acct_id = $('#post-acct-sel').val()
|
||||||
|
console.log(loadVis(acct_id))
|
||||||
|
$('#vis-sel').val(loadVis(acct_id))
|
||||||
|
}
|
||||||
|
loader()
|
||||||
|
$('textarea').height(15) //init
|
||||||
|
$('textarea').css('lineHeight', '1rem') //init
|
||||||
|
|
||||||
|
$('textarea').on('input', function(evt) {
|
||||||
|
if (evt.target.scrollHeight > evt.target.offsetHeight) {
|
||||||
|
$(evt.target).height(evt.target.scrollHeight)
|
||||||
|
} else {
|
||||||
|
var lineHeight = Number(
|
||||||
|
$(evt.target)
|
||||||
|
.css('lineHeight')
|
||||||
|
.split('px')[0]
|
||||||
|
)
|
||||||
|
while (true) {
|
||||||
|
$(evt.target).height($(evt.target).height() - lineHeight)
|
||||||
|
if (evt.target.scrollHeight > evt.target.offsetHeight) {
|
||||||
|
$(evt.target).height(evt.target.scrollHeight)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|||||||
244
app/js/platform/preload.js
Normal file
@@ -0,0 +1,244 @@
|
|||||||
|
var electron = require('electron')
|
||||||
|
const shell = electron.shell
|
||||||
|
var ipc = electron.ipcRenderer
|
||||||
|
//title bar
|
||||||
|
const customTitlebar = require('custom-electron-titlebar')
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
ipc.send('frameCheck', '')
|
||||||
|
ipc.on('frame', function(event, args) {
|
||||||
|
const file = location.href.substr(-10)
|
||||||
|
if (
|
||||||
|
file == 'index.html' ||
|
||||||
|
file == '/acct.html' ||
|
||||||
|
file == 'tting.html'
|
||||||
|
) {
|
||||||
|
new customTitlebar.Titlebar({
|
||||||
|
backgroundColor: customTitlebar.Color.fromHex('#000'),
|
||||||
|
titleHorizontalAlignment: 'right',
|
||||||
|
icon: '../../img/desk.png'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
onmessage = function(e) {
|
||||||
|
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] == 'resizeImage') {
|
||||||
|
ipc.send('resize-image', e.data[1])
|
||||||
|
} else if (e.data[0] == 'stampImage') {
|
||||||
|
ipc.send('stamp-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] == 'frameSet') {
|
||||||
|
ipc.send('frameSet', e.data[1])
|
||||||
|
} else if (e.data[0] == 'ua') {
|
||||||
|
ipc.send('ua', 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)
|
||||||
|
} else if (e.data[0] == 'asReadComp') {
|
||||||
|
ipc.send('sendMarkersComplete', null)
|
||||||
|
} else if (e.data[0] == 'copy') {
|
||||||
|
ipc.send('copy', e.data[1])
|
||||||
|
} else if (e.data[0] == 'log') {
|
||||||
|
ipc.send('log', e.data[1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//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) {
|
||||||
|
if (b64[2]) {
|
||||||
|
var stamped = true
|
||||||
|
} else {
|
||||||
|
var stamped = false
|
||||||
|
}
|
||||||
|
postMessage(['media', [b64[0], 'image/png', b64[1], stamped]], '*')
|
||||||
|
})
|
||||||
|
ipc.on('resizeJudgement', function(event, b64) {
|
||||||
|
var resize = localStorage.getItem('uploadCrop') * 1
|
||||||
|
if (resize > 0) {
|
||||||
|
var element = new Image()
|
||||||
|
var width
|
||||||
|
element.onload = function() {
|
||||||
|
var width = element.naturalWidth
|
||||||
|
var height = element.naturalHeight
|
||||||
|
if (width > resize || height > resize) {
|
||||||
|
ipc.send('resize-image', [b64, resize])
|
||||||
|
} else {
|
||||||
|
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
element.src = b64
|
||||||
|
} else {
|
||||||
|
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]], '*')
|
||||||
|
})
|
||||||
|
//log
|
||||||
|
ipc.on('logData', function(event, args) {
|
||||||
|
postMessage(['logData', args], '*')
|
||||||
|
})
|
||||||
|
//update.html
|
||||||
|
ipc.on('prog', function(event, arg) {
|
||||||
|
postMessage(['updateProg', arg], '*')
|
||||||
|
})
|
||||||
|
ipc.on('mess', function(event, arg) {
|
||||||
|
postMessage(['updateMess', arg], '*')
|
||||||
|
})
|
||||||
|
ipc.on('asRead', function(event, arg) {
|
||||||
|
postMessage(['asRead', ''], '*')
|
||||||
|
})
|
||||||
|
ipc.on('asReadEnd', function(event, arg) {
|
||||||
|
postMessage(['asReadEnd', ''], '*')
|
||||||
|
})
|
||||||
|
var webviewDom = document.getElementById('webview')
|
||||||
|
if (webviewDom) {
|
||||||
|
webviewDom.addEventListener('new-window', function(e) {
|
||||||
|
shell.openExternal(e.url)
|
||||||
|
})
|
||||||
|
}
|
||||||
508
app/js/platform/punycode.js
Normal file
@@ -0,0 +1,508 @@
|
|||||||
|
/*! 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)
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
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
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -1,316 +1,346 @@
|
|||||||
//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(
|
||||||
}else{
|
localStorage.getItem('post_' + acct_id) +
|
||||||
$("#toot-post-btn").text(lang.lang_toot+"("+localStorage.getItem("domain_"+acct_id)+")");
|
'(' +
|
||||||
|
localStorage.getItem('domain_' + acct_id) +
|
||||||
|
')'
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
$('#toot-post-btn').text(lang.lang_toot + '(' + localStorage.getItem('domain_' + acct_id) + ')')
|
||||||
|
}
|
||||||
|
if (!localStorage.getItem('bb_' + acct_id) && !localStorage.getItem('md_' + acct_id)) {
|
||||||
|
$('.markdown').addClass('hide')
|
||||||
|
$('.anti-markdown').addClass('hide')
|
||||||
|
} else {
|
||||||
|
$('.anti-markdown').removeClass('hide')
|
||||||
|
}
|
||||||
|
if ($('.markdown').hasClass('hide')) {
|
||||||
|
localStorage.setItem('md', 'hide')
|
||||||
|
} else {
|
||||||
|
localStorage.removeItem('md')
|
||||||
|
}
|
||||||
|
var domain = localStorage.getItem('domain_' + acct_id)
|
||||||
|
if (domain == 'itabashi.0j0.jp') {
|
||||||
|
$('#limited-button').removeClass('hide')
|
||||||
|
} else {
|
||||||
|
$('#limited-button').addClass('hide')
|
||||||
|
}
|
||||||
|
if (domain == 'kirishima.cloud') {
|
||||||
|
$('#faicon-btn').show()
|
||||||
|
} else {
|
||||||
|
$('#faicon-btn').hide()
|
||||||
|
}
|
||||||
|
if (domain == 'imastodon.net') {
|
||||||
|
trendTag()
|
||||||
|
} else {
|
||||||
|
$('#trendtag').html('')
|
||||||
|
}
|
||||||
|
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
||||||
|
M.toast({ html: lang.lang_bbmd_misskey, displayLength: 5000 })
|
||||||
|
}
|
||||||
|
if (idata[domain + '_letters']) {
|
||||||
|
$('#textarea').attr('data-length', idata[domain + '_letters'])
|
||||||
|
} else {
|
||||||
|
var maxletters = localStorage.getItem('letters_' + acct_id)
|
||||||
|
if (maxletters > 0) {
|
||||||
|
$('#textarea').attr('data-length', maxletters)
|
||||||
|
} else {
|
||||||
|
$('#textarea').attr('data-length', 500)
|
||||||
}
|
}
|
||||||
if(!localStorage.getItem("bb_"+acct_id) && !localStorage.getItem("md_"+acct_id)){
|
|
||||||
$(".markdown").addClass("hide");
|
|
||||||
$(".anti-markdown").addClass("hide");
|
|
||||||
}else{
|
|
||||||
$(".anti-markdown").removeClass("hide");
|
|
||||||
}
|
|
||||||
if($(".markdown").hasClass("hide")){
|
|
||||||
localStorage.setItem("md","hide");
|
|
||||||
}else{
|
|
||||||
localStorage.removeItem("md");
|
|
||||||
}
|
}
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
if (idata[domain + '_glitch'] === 'true') {
|
||||||
if(domain=="itabashi.0j0.jp"){
|
$('#local-button').removeClass('hide')
|
||||||
$("#limited-button").removeClass("hide");
|
} else {
|
||||||
}else{
|
$('#local-button').addClass('hide')
|
||||||
$("#limited-button").addClass("hide");
|
|
||||||
}
|
}
|
||||||
if(domain=="kirishima.cloud"){
|
var multi = localStorage.getItem('multi')
|
||||||
$("#faicon-btn").show();
|
|
||||||
}else{
|
|
||||||
$("#faicon-btn").hide();
|
|
||||||
}
|
|
||||||
if(domain=="imastodon.net"){
|
|
||||||
trendTag();
|
|
||||||
}else{
|
|
||||||
$("#trendtag").html("");
|
|
||||||
}
|
|
||||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
|
||||||
Materialize.toast(lang.lang_bbmd_misskey, 5000);
|
|
||||||
}
|
|
||||||
if(idata[domain+"_letters"]){
|
|
||||||
$("#textarea").attr("data-length", idata[domain+"_letters"])
|
|
||||||
}else{
|
|
||||||
$("#textarea").attr("data-length", 500)
|
|
||||||
}
|
|
||||||
if(idata[domain+"_glitch"]==="true"){
|
|
||||||
$("#local-button").removeClass("hide");
|
|
||||||
}else{
|
|
||||||
$("#local-button").addClass("hide");
|
|
||||||
}
|
|
||||||
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 (
|
||||||
$("#toot-post-btn").removeClass("indigo");
|
obj[acct_id].background &&
|
||||||
$("#toot-post-btn").css("background-color","#"+obj[acct_id].background);
|
obj[acct_id].background != 'def' &&
|
||||||
$("#toot-post-btn").css("color",obj[acct_id].text);
|
obj[acct_id].text &&
|
||||||
}else{
|
obj[acct_id].text != 'def'
|
||||||
$("#toot-post-btn").css("background-color","");
|
) {
|
||||||
$("#toot-post-btn").css("color","");
|
$('#toot-post-btn').removeClass('indigo')
|
||||||
$("#toot-post-btn").addClass("indigo");
|
$('#toot-post-btn').css('background-color', '#' + obj[acct_id].background)
|
||||||
|
$('#toot-post-btn').css('color', obj[acct_id].text)
|
||||||
|
} else {
|
||||||
|
$('#toot-post-btn').css('background-color', '')
|
||||||
|
$('#toot-post-btn').css('color', '')
|
||||||
|
$('#toot-post-btn').addClass('indigo')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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 {
|
||||||
'&': '&',
|
'&': '&',
|
||||||
"'": ''',
|
"'": ''',
|
||||||
'`': '`',
|
'`': '`',
|
||||||
'"': '"',
|
'"': '"',
|
||||||
'<': '<',
|
'<': '<',
|
||||||
'>': '>',
|
'>': '>'
|
||||||
}[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) {
|
||||||
|
insertNode = '[' + tagS + ']' + '[/' + tagE + ']'
|
||||||
else if (pos.start == pos.end) {
|
target.value = beforeNode + insertNode + afterNode
|
||||||
insertNode = '[' + tagS + ']' + '[/' + tagE + ']';
|
}
|
||||||
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') {
|
||||||
|
insertNode = tagS + range
|
||||||
else if (pos.start == pos.end || ck=="no") {
|
target.value = beforeNode + insertNode + br + afterNode
|
||||||
insertNode = tagS + range;
|
}
|
||||||
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(
|
||||||
bb=nl2br(bb);
|
/\[(.+)\]\((https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g,
|
||||||
bb=bb.replace(new RegExp("</li><br />", "g"),"");
|
'<a href="$2" target="_blank">$1</a>'
|
||||||
$("#md-preview").html(bb);
|
)
|
||||||
}
|
bb = nl2br(bb)
|
||||||
//Editで戻る
|
bb = bb.replace(new RegExp('</li><br />', 'g'), '')
|
||||||
function previewEdit(){
|
$('#md-preview').html(bb)
|
||||||
$("#preview-field").hide();
|
}
|
||||||
$("#toot-field").show();
|
//Editで戻る
|
||||||
$("#preview-btn").show();
|
function previewEdit() {
|
||||||
$("#md-preview").html("");
|
$('#preview-field').hide()
|
||||||
}
|
$('#toot-field').show()
|
||||||
|
$('#preview-btn').show()
|
||||||
|
$('#md-preview').html('')
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,151 +1,349 @@
|
|||||||
//絵文字ピッカー
|
//絵文字ピッカー
|
||||||
//最初に読み込む
|
//最初に読み込む
|
||||||
$("#emoji-before").addClass("disabled");
|
$('#emoji-before').addClass('disabled')
|
||||||
$("#emoji-next").addClass("disabled");
|
$('#emoji-next').addClass('disabled')
|
||||||
|
|
||||||
//絵文字ボタンのトグル
|
//絵文字ボタンのトグル
|
||||||
function emojiToggle() {
|
function emojiToggle(reaction) {
|
||||||
var acct_id = $("#post-acct-sel").val();
|
var acct_id = $('#post-acct-sel').val()
|
||||||
var selin = $("#textarea").prop('selectionStart');
|
var selin = $('#textarea').prop('selectionStart')
|
||||||
if(!selin){
|
if (!selin) {
|
||||||
selin=0;
|
selin = 0
|
||||||
}
|
}
|
||||||
localStorage.setItem("cursor", selin);
|
if ($('#emoji').hasClass('hide')) {
|
||||||
|
$('#emoji').removeClass('hide')
|
||||||
if ($("#emoji").hasClass("hide")) {
|
$('#right-side').show()
|
||||||
$("#emoji").removeClass("hide")
|
$('#right-side').css('width', '300px')
|
||||||
$("#right-side").show()
|
$('#left-side').css('width', 'calc(100% - 300px)')
|
||||||
$("#suggest").html("");
|
var width = localStorage.getItem('postbox-width')
|
||||||
if (!localStorage.getItem("emoji_" + acct_id)) {
|
if (width) {
|
||||||
var html =
|
width = width.replace('px', '') * 1 + 300
|
||||||
'<button class="btn waves-effect green" style="width:100%; padding:0; margin-top:0;" onclick="emojiGet(\'true\');">'+lang.lang_emoji_get+'</button>';
|
|
||||||
$("#emoji-list").html(html);
|
|
||||||
} else {
|
} else {
|
||||||
emojiList('home');
|
width = 600
|
||||||
|
}
|
||||||
|
$('#post-box').css('width', width + 'px')
|
||||||
|
$('#suggest').html('')
|
||||||
|
if (!localStorage.getItem('emojis_' + acct_id)) {
|
||||||
|
var html = `<button class="btn waves-effect green" style="width:100%; padding:0; margin-top:0;" onclick="emojiGet('true');">${lang.lang_emoji_get}</button>`
|
||||||
|
$('#emoji-list').html(html)
|
||||||
|
} else {
|
||||||
|
emojiList('home', reaction)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$("#poll").addClass("hide")
|
$('#poll').addClass('hide')
|
||||||
$("#emoji").addClass("hide")
|
$('#right-side').hide()
|
||||||
$("#suggest").html("");
|
$('#right-side').css('width', '300px')
|
||||||
$("#right-side").hide()
|
$('#emoji').addClass('hide')
|
||||||
|
$('#suggest').html('')
|
||||||
|
$('#left-side').css('width', '100%')
|
||||||
|
var width = localStorage.getItem('postbox-width')
|
||||||
|
if (width) {
|
||||||
|
width = width.replace('px', '') * 1
|
||||||
|
} else {
|
||||||
|
width = 300
|
||||||
|
}
|
||||||
|
$('#post-box').css('width', width + 'px')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//絵文字リスト挿入
|
//絵文字リスト挿入
|
||||||
function emojiGet(parse) {
|
function emojiGet(parse, started) {
|
||||||
$('#emoji-list').html('Loading...');
|
$('#emoji-list').text('Loading...')
|
||||||
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 start = "https://" + domain + "/api/v1/custom_emojis";
|
if (localStorage.getItem('mode_' + domain) != 'misskey') {
|
||||||
fetch(start, {
|
var start = 'https://' + domain + '/api/v1/custom_emojis'
|
||||||
method: 'GET',
|
fetch(start, {
|
||||||
headers: {
|
method: 'GET',
|
||||||
'content-type': 'application/json'
|
headers: {
|
||||||
},
|
'content-type': 'application/json'
|
||||||
}).then(function(response) {
|
}
|
||||||
return response.json();
|
})
|
||||||
}).catch(function(error) {
|
.then(function(response) {
|
||||||
todo(error);
|
if (!response.ok) {
|
||||||
console.error(error);
|
response.text().then(function(text) {
|
||||||
}).then(function(json) {
|
setLog(response.url, response.status, text)
|
||||||
if (parse == "true") {
|
})
|
||||||
$('#emoji-list').html('Parsing...');
|
}
|
||||||
//絵文字をマストドン公式と同順にソート
|
return response.json()
|
||||||
json.sort(function(a, b) {
|
})
|
||||||
if (a.shortcode < b.shortcode) return -1;
|
.catch(function(error) {
|
||||||
if (a.shortcode > b.shortcode) return 1;
|
todo(error)
|
||||||
return 0;
|
setLog(start, 'JSON', error)
|
||||||
});
|
console.error(error)
|
||||||
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
|
})
|
||||||
} else {
|
.then(function(json) {
|
||||||
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
|
if (parse == 'true') {
|
||||||
}
|
$('#emoji-list').text('Parsing...')
|
||||||
localStorage.setItem("emojiseek", 0);
|
var md = {
|
||||||
emojiList('home')
|
categorized: {},
|
||||||
});
|
uncategorized: []
|
||||||
|
}
|
||||||
|
var if_categorized = false
|
||||||
|
Object.keys(json).forEach(function(key) {
|
||||||
|
var emoji = json[key]
|
||||||
|
if (emoji.visible_in_picker) {
|
||||||
|
var listed = true
|
||||||
|
} else {
|
||||||
|
var listed = false
|
||||||
|
}
|
||||||
|
if (emoji.category) {
|
||||||
|
var cat = emoji.category
|
||||||
|
if (!md['categorized'][cat]) {
|
||||||
|
md['categorized'][cat] = []
|
||||||
|
}
|
||||||
|
md['categorized'][cat].push({
|
||||||
|
shortcode: emoji.shortcode,
|
||||||
|
url: emoji.url,
|
||||||
|
listed: listed
|
||||||
|
})
|
||||||
|
if_categorized = true
|
||||||
|
} else {
|
||||||
|
md['uncategorized'].push({
|
||||||
|
shortcode: emoji.shortcode,
|
||||||
|
url: emoji.url,
|
||||||
|
listed: listed
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
console.log(md)
|
||||||
|
//絵文字をマストドン公式と同順にソート
|
||||||
|
md['uncategorized'].sort(function(a, b) {
|
||||||
|
if (a.shortcode < b.shortcode) return -1
|
||||||
|
if (a.shortcode > b.shortcode) return 1
|
||||||
|
return 0
|
||||||
|
})
|
||||||
|
Object.keys(md['categorized']).forEach(function(key) {
|
||||||
|
md['categorized'][key].sort(function(a, b) {
|
||||||
|
if (a.shortcode < b.shortcode) return -1
|
||||||
|
if (a.shortcode > b.shortcode) return 1
|
||||||
|
return 0
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
md['if_categorized'] = if_categorized
|
||||||
|
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
|
||||||
|
} else {
|
||||||
|
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
|
||||||
|
}
|
||||||
|
localStorage.setItem('emojiseek', 0)
|
||||||
|
if (!started) {
|
||||||
|
emojiList('home')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
var start = 'https://' + domain + '/api/meta'
|
||||||
|
fetch(start, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'content-type': 'application/json'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(function(response) {
|
||||||
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
if (json.enableEmojiReaction) {
|
||||||
|
localStorage.setItem('emojiReaction_' + acct_id, 'true')
|
||||||
|
} else {
|
||||||
|
localStorage.setItem('emojiReaction_' + acct_id, 'disabled')
|
||||||
|
}
|
||||||
|
var emojis = json.emojis
|
||||||
|
var md = { uncategorized: [] }
|
||||||
|
Object.keys(emojis).forEach(function(key) {
|
||||||
|
var emoji = emojis[key]
|
||||||
|
md['uncategorized'].push({
|
||||||
|
shortcode: emoji.name,
|
||||||
|
url: emoji.url,
|
||||||
|
listed: true
|
||||||
|
})
|
||||||
|
})
|
||||||
|
md['if_categorized'] = false
|
||||||
|
if (parse == 'true') {
|
||||||
|
$('#emoji-list').text('Parsing...')
|
||||||
|
//絵文字をマストドン公式と同順にソート
|
||||||
|
md['uncategorized'].sort(function(a, b) {
|
||||||
|
if (a.shortcode < b.shortcode) return -1
|
||||||
|
if (a.shortcode > b.shortcode) return 1
|
||||||
|
return 0
|
||||||
|
})
|
||||||
|
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
|
||||||
|
} else {
|
||||||
|
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
|
||||||
|
}
|
||||||
|
localStorage.setItem('emojiseek', 0)
|
||||||
|
if (!started) {
|
||||||
|
emojiList('home')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//リストの描画
|
//リストの描画
|
||||||
function emojiList(target) {
|
function emojiList(target, reaction) {
|
||||||
$("#now-emoji").text(lang.lang_emoji_custom);
|
$('#now-emoji').text(lang.lang_emoji_custom)
|
||||||
var acct_id = $("#post-acct-sel").val();
|
var acct_id = $('#post-acct-sel').val()
|
||||||
var start = localStorage.getItem("emojiseek");
|
if(reaction && $('#media').val() == 'misskey') {
|
||||||
if (target == "next") {
|
var misskeyReact = true
|
||||||
var start = start * 1 + 127;
|
|
||||||
localStorage.setItem("emojiseek", start);
|
|
||||||
} else if (target == "before") {
|
|
||||||
var start = start - 127;
|
|
||||||
localStorage.setItem("emojiseek", start);
|
|
||||||
} else {
|
} else {
|
||||||
var start = 0;
|
var misskeyReact = false
|
||||||
localStorage.getItem("emojiseek", 0)
|
|
||||||
}
|
}
|
||||||
var html = '';
|
if (
|
||||||
var obj = JSON.parse(localStorage.getItem("emoji_" + acct_id));
|
misskeyReact &&
|
||||||
var num = obj.length;
|
localStorage.getItem('emojiReaction_' + acct_id) != 'true'
|
||||||
|
) {
|
||||||
|
console.error('Disabled')
|
||||||
|
clear()
|
||||||
|
hide()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
var start = localStorage.getItem('emojiseek')
|
||||||
|
if (target == 'next') {
|
||||||
|
var start = start * 1 + 127
|
||||||
|
localStorage.setItem('emojiseek', start)
|
||||||
|
} else if (target == 'before') {
|
||||||
|
var start = start - 127
|
||||||
|
localStorage.setItem('emojiseek', start)
|
||||||
|
} else {
|
||||||
|
var start = 0
|
||||||
|
localStorage.getItem('emojiseek', 0)
|
||||||
|
}
|
||||||
|
var html = ''
|
||||||
|
var raw = JSON.parse(localStorage.getItem('emojis_' + acct_id))
|
||||||
|
console.log(raw)
|
||||||
|
if (raw.if_categorized) {
|
||||||
|
var obj = [
|
||||||
|
{
|
||||||
|
divider: true,
|
||||||
|
cat: lang.lang_emoji_uncat
|
||||||
|
}
|
||||||
|
]
|
||||||
|
var cats = raw['uncategorized']
|
||||||
|
obj = obj.concat(cats)
|
||||||
|
Object.keys(raw['categorized']).forEach(function(key) {
|
||||||
|
var cats = raw['categorized'][key]
|
||||||
|
obj = obj.concat([
|
||||||
|
{
|
||||||
|
divider: true,
|
||||||
|
cat: key
|
||||||
|
}
|
||||||
|
])
|
||||||
|
obj = obj.concat(cats)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
var obj = raw['uncategorized']
|
||||||
|
}
|
||||||
|
console.log(obj)
|
||||||
|
|
||||||
|
var num = obj.length
|
||||||
if (num < start) {
|
if (num < start) {
|
||||||
var start = 0;
|
var start = 0
|
||||||
localStorage.setItem("emojiseek", start);
|
localStorage.setItem('emojiseek', start)
|
||||||
}
|
}
|
||||||
var page = Math.ceil(num / 126);
|
var page = Math.ceil(num / 126)
|
||||||
$("#emoji-sum").text(page);
|
$('#emoji-sum').text(page)
|
||||||
var ct = Math.ceil(start / 126);
|
var ct = Math.ceil(start / 126)
|
||||||
if (ct === 0) {
|
if (ct === 0) {
|
||||||
var ct = 1;
|
if (num > 0) {
|
||||||
$("#emoji-before").addClass("disabled");
|
var ct = 1
|
||||||
|
}
|
||||||
|
$('#emoji-before').addClass('disabled')
|
||||||
} else {
|
} else {
|
||||||
$("#emoji-before").removeClass("disabled");
|
$('#emoji-before').removeClass('disabled')
|
||||||
}
|
}
|
||||||
$("#emoji-next").removeClass("disabled");
|
if (page != 1) {
|
||||||
$("#emoji-count").text(ct);
|
$('#emoji-next').removeClass('disabled')
|
||||||
|
} else {
|
||||||
|
$('#emoji-next').addClass('disabled')
|
||||||
|
}
|
||||||
|
$('#emoji-count').text(ct)
|
||||||
for (i = start; i < start + 126; i++) {
|
for (i = start; i < start + 126; i++) {
|
||||||
var emoji = obj[i];
|
var emoji = obj[i]
|
||||||
if (emoji) {
|
if (emoji) {
|
||||||
html = html + '<a onclick="emojiInsert(\':' + emoji.shortcode +
|
if (reaction) {
|
||||||
': \')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
|
if (emoji.divider) {
|
||||||
|
html = html + '<p style="margin-bottom:0">' + emoji.cat + '</p>'
|
||||||
|
} else {
|
||||||
|
if (emoji.listed) {
|
||||||
|
if(misskeyReact) {
|
||||||
|
var shortcode = `:${emoji.shortcode}:`
|
||||||
|
} else {
|
||||||
|
var shortcode = emoji.shortcode
|
||||||
|
}
|
||||||
|
html =
|
||||||
|
html +
|
||||||
|
`<a onclick="emojiReaction('${shortcode}')" class="pointer"><img src="${emoji.url}" width="20" title="${emoji.shortcode}"></a>`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (emoji.divider) {
|
||||||
|
html = html + '<p style="margin-bottom:0">' + emoji.cat + '</p>'
|
||||||
|
} else {
|
||||||
|
if (emoji.listed) {
|
||||||
|
html =
|
||||||
|
html +
|
||||||
|
`<a onclick="emojiInsert(':${emoji.shortcode}:')" class="pointer"><img src="${emoji.url}" width="20" title="${emoji.shortcode}"></a>`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$("#emoji-list").html(html);
|
$('#emoji-list').html(html)
|
||||||
}
|
}
|
||||||
|
|
||||||
//絵文字など様々なものをテキストボックスに挿入
|
//絵文字など様々なものをテキストボックスに挿入
|
||||||
function emojiInsert(code, del) {
|
function emojiInsert(code, del) {
|
||||||
var now = $("#textarea").val();
|
if (localStorage.getItem('emoji-zero-width') == 'yes') {
|
||||||
var selin = localStorage.getItem("cursor");
|
var blankBefore = ''
|
||||||
console.log(selin);
|
var blankAfter = ''
|
||||||
var now = $("#textarea").val();
|
|
||||||
if(selin>0){
|
|
||||||
var before = now.substr(0, selin);
|
|
||||||
var after = now.substr(selin, now.length);
|
|
||||||
newt = before + " "+ code+" " + after;
|
|
||||||
}else{
|
|
||||||
newt = code+" ";
|
|
||||||
}
|
|
||||||
if (!del) {
|
|
||||||
$("#textarea").val(newt);
|
|
||||||
//emoji();
|
|
||||||
} else {
|
} else {
|
||||||
var regExp = new RegExp(del, "g");
|
var blankBefore = ' '
|
||||||
var now = now.replace(regExp, "");
|
var blankAfter = ' '
|
||||||
$("#textarea").val(now + " " + code);
|
|
||||||
}
|
}
|
||||||
|
var textarea = document.querySelector('#textarea')
|
||||||
$("#textarea").focus();
|
var sentence = textarea.value
|
||||||
var selin = $("#textarea").prop('selectionStart');
|
var len = sentence.length
|
||||||
if(!selin){
|
var pos = textarea.selectionStart
|
||||||
selin=0;
|
if (del) {
|
||||||
|
var delLen = del.length
|
||||||
|
} else {
|
||||||
|
var delLen = 0
|
||||||
}
|
}
|
||||||
localStorage.setItem("cursor", selin);
|
var before = sentence.substr(0, pos - delLen)
|
||||||
|
var last = before.substr(-1, 1)
|
||||||
|
if (last == ' ') blankBefore = ''
|
||||||
|
var after = sentence.substr(pos, len)
|
||||||
|
var start = after.substr(0, 1)
|
||||||
|
if (start == ' ') blankAfter = ''
|
||||||
|
if (len == 0) {
|
||||||
|
var word = code
|
||||||
|
} else if (len == pos) {
|
||||||
|
var word = blankBefore + code
|
||||||
|
} else if (pos == 0) {
|
||||||
|
var word = code + blankAfter
|
||||||
|
} else {
|
||||||
|
var word = blankBefore + code + blankAfter
|
||||||
|
}
|
||||||
|
sentence = before + word + after
|
||||||
|
textarea.value = sentence
|
||||||
}
|
}
|
||||||
//改行挿入
|
//改行挿入
|
||||||
function brInsert(code) {
|
function brInsert(code) {
|
||||||
if(!$('#post-box').hasClass("appear")){
|
if (!$('#post-box').hasClass('appear')) {
|
||||||
localStorage.setItem("nohide",true);
|
localStorage.setItem('nohide', true)
|
||||||
show();
|
show()
|
||||||
}
|
}
|
||||||
var now = $("#textarea").val();
|
var now = $('#textarea').val()
|
||||||
$("#textarea").val(now + code);
|
$('#textarea').val(now + code)
|
||||||
$("#textarea").focus();
|
$('#textarea').focus()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,240 +1,418 @@
|
|||||||
//ドラッグ・アンド・ドロップからアップロードまで。uiのimg.jsとは異なります。
|
//ドラッグ・アンド・ドロップからアップロードまで。uiのimg.jsとは異なります。
|
||||||
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()
|
||||||
var files = e.originalEvent.dataTransfer.files;
|
var files = e.originalEvent.dataTransfer.files
|
||||||
pimg(files);
|
pimg(files)
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
//何もなくファイルが通過
|
//何もなくファイルが通過
|
||||||
$("#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.log(files);
|
console.table(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') {
|
||||||
var electron = require("electron");
|
postMessage(['bmpImage', [files[i].path, i]], '*')
|
||||||
var ipc = electron.ipcRenderer;
|
todo(lang.lang_progress)
|
||||||
ipc.send('bmp-image', [files[i].path,i]);
|
} else {
|
||||||
todo(lang.lang_progress);
|
handleFileUpload(files[i], obj, i)
|
||||||
|
|
||||||
}else{
|
|
||||||
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() {
|
||||||
ipc.send('file-select', "");
|
postMessage(['sendSinmpleIpc', '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);
|
var resize = localStorage.getItem('uploadCrop') * 1
|
||||||
var ret = media(b64, files["type"], no)
|
if (resize > 0) {
|
||||||
|
var element = new Image()
|
||||||
|
var width
|
||||||
|
element.onload = function() {
|
||||||
|
var width = element.naturalWidth
|
||||||
|
var height = element.naturalHeight
|
||||||
|
if (width > resize || height > resize) {
|
||||||
|
postMessage(['resizeImage', [b64, resize]], '*')
|
||||||
|
return false
|
||||||
|
} else {
|
||||||
|
$('#b64-box').val(b64)
|
||||||
|
var ret = media(b64, files['type'], no)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
element.src = b64
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
$('#b64-box').val(b64)
|
||||||
|
var ret = media(b64, files['type'], no)
|
||||||
}
|
}
|
||||||
fr.readAsDataURL(files);
|
fr.readAsDataURL(files)
|
||||||
$("#mec").append(files["name"] + "/");
|
$('#mec').append(files['name'] + '/')
|
||||||
}
|
}
|
||||||
|
|
||||||
//ファイルアップロード
|
//ファイルアップロード
|
||||||
function media(b64, type, no) {
|
async function media(b64, type, no, stamped) {
|
||||||
var l = 4;
|
var acct_id = $('#post-acct-sel').val()
|
||||||
var c = "abcdefghijklmnopqrstuvwxyz0123456789";
|
var domain = localStorage.getItem('domain_' + acct_id)
|
||||||
var cl = c.length;
|
var user = localStorage.getItem('user_' + acct_id)
|
||||||
var r = "";
|
if ($('#stamp').hasClass('stamp-avail') && !stamped) {
|
||||||
for(var i=0; i<l; i++){
|
postMessage(['stampImage', [b64, user + '@' + domain]], '*')
|
||||||
r += c[Math.floor(Math.random()*cl)];
|
return false
|
||||||
}
|
}
|
||||||
if ($("#media").val()) {
|
var l = 4
|
||||||
$("#media").val($("#media").val() + ',' + "tmp_"+r);
|
var c = 'abcdefghijklmnopqrstuvwxyz0123456789'
|
||||||
|
var cl = c.length
|
||||||
|
var r = ''
|
||||||
|
for (var i = 0; i < l; i++) {
|
||||||
|
r += c[Math.floor(Math.random() * cl)]
|
||||||
|
}
|
||||||
|
if ($('#media').val()) {
|
||||||
|
$('#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 at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||||
var acct_id = $("#post-acct-sel").val();
|
var httpreq = new XMLHttpRequest()
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
var start = 'https://' + domain + '/api/drive/files/create'
|
||||||
var httpreq = new XMLHttpRequest();
|
httpreq.open('POST', start, true)
|
||||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
httpreq.upload.addEventListener('progress', progshow, false)
|
||||||
var start = "https://" + domain + "/api/drive/files/create";
|
httpreq.responseType = 'json'
|
||||||
httpreq.open('POST', start, true);
|
if ($('#nsfw').hasClass('nsfw-avail')) {
|
||||||
httpreq.upload.addEventListener("progress", progshow, false);
|
var nsfw = true
|
||||||
httpreq.responseType = "json";
|
|
||||||
if ($("#nsfw").hasClass("nsfw-avail")) {
|
|
||||||
var nsfw = true;
|
|
||||||
} else {
|
} else {
|
||||||
var nsfw = false;
|
var nsfw = false
|
||||||
|
}
|
||||||
|
var previewer = 'url'
|
||||||
|
fd.append('i', at)
|
||||||
|
httpreq.send(fd)
|
||||||
|
} else {
|
||||||
|
var previewer = 'preview_url'
|
||||||
|
//v2/media
|
||||||
|
try {
|
||||||
|
var id = await v2MediaUpload(domain, at, fd)
|
||||||
|
var mediav = $('#media').val()
|
||||||
|
var regExp = new RegExp('tmp_' + r, 'g')
|
||||||
|
mediav = mediav.replace(regExp, id)
|
||||||
|
$('#media').val(mediav)
|
||||||
|
var html = `<img src="../../img/picture.svg" class="preview-img pointer unknown" data-media="${id}" oncontextmenu="deleteImage('${id}')" onclick="altImage('${acct_id}','${id}')" title="${lang.lang_postimg_delete}">`
|
||||||
|
$('#preview').append(html)
|
||||||
|
todc()
|
||||||
|
if (localStorage.getItem('nsfw_' + acct_id)) {
|
||||||
|
$('#nsfw').addClass('yellow-text')
|
||||||
|
$('#nsfw').html('visibility')
|
||||||
|
$('#nsfw').addClass('nsfw-avail')
|
||||||
|
}
|
||||||
|
$('.toot-btn-group').prop('disabled', false)
|
||||||
|
$('select').formSelect()
|
||||||
|
$('#mec').text(lang.lang_there)
|
||||||
|
M.toast({ html: '<span>' + lang.lang_postimg_sync + '</span><button class="btn-flat toast-action" onclick="syncDetail()">Click</button>', displayLength: 3000 })
|
||||||
|
$('#imgup').text('')
|
||||||
|
$('#imgsel').show()
|
||||||
|
localStorage.removeItem('image')
|
||||||
|
} catch {
|
||||||
|
var start = 'https://' + domain + '/api/v1/media'
|
||||||
|
httpreq.open('POST', start, true)
|
||||||
|
httpreq.upload.addEventListener('progress', progshow, false)
|
||||||
|
httpreq.responseType = 'json'
|
||||||
|
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||||
|
httpreq.send(fd)
|
||||||
}
|
}
|
||||||
var previewer="url"
|
|
||||||
fd.append('i', at);
|
|
||||||
//fd.append('isSensitive', nsfw);
|
|
||||||
httpreq.send(fd);
|
|
||||||
}else{
|
|
||||||
var previewer="preview_url"
|
|
||||||
var start = "https://" + domain + "/api/v1/media";
|
|
||||||
httpreq.open('POST', start, true);
|
|
||||||
httpreq.upload.addEventListener("progress", progshow, false);
|
|
||||||
httpreq.responseType = "json";
|
|
||||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
|
||||||
httpreq.send(fd);
|
|
||||||
}
|
}
|
||||||
httpreq.onreadystatechange = function() {
|
httpreq.onreadystatechange = function() {
|
||||||
if (httpreq.readyState === 4) {
|
if (httpreq.readyState === 4) {
|
||||||
var json = httpreq.response;
|
var json = httpreq.response
|
||||||
console.log(json);
|
if (this.status !== 200) {
|
||||||
var img = localStorage.getItem("img");
|
setLog(start, this.status, json)
|
||||||
if (json.type.indexOf("image")!=-1) {
|
$('.toot-btn-group').prop('disabled', false)
|
||||||
var html = '<img src="' + json[previewer] + '" class="preview-img pointer" data-media="'+json["id"]+'" onclick="deleteImage(\''+json["id"]+'\')" title="'+lang.lang_postimg_delete+'">';
|
$('select').formSelect()
|
||||||
$('#preview').append(html);
|
$('#mec').text(lang.lang_there)
|
||||||
|
M.toast({ html: this.status + ':' +json, displayLength: 2000 })
|
||||||
|
$('#imgup').text('')
|
||||||
|
$('#imgsel').show()
|
||||||
|
}
|
||||||
|
if (!json.id) {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
$('#imgup').text('')
|
||||||
|
$('.toot-btn-group').prop('disabled', false)
|
||||||
|
$('select').formSelect()
|
||||||
|
$('#imgsel').show()
|
||||||
|
var img = localStorage.getItem('img')
|
||||||
|
if (json.type.indexOf('image') != -1) {
|
||||||
|
var html = `<img src="${json[previewer]}" class="preview-img pointer" data-media="${json['id']}" oncontextmenu="deleteImage('${json['id']}')" onclick="altImage('${acct_id}','${json['id']}')" title="${lang.lang_postimg_delete}">`
|
||||||
|
$('#preview').append(html)
|
||||||
} else {
|
} else {
|
||||||
$('#preview').append(lang.lang_postimg_previewdis);
|
$('#preview').append(lang.lang_postimg_previewdis)
|
||||||
}
|
}
|
||||||
if (!img) {
|
if (!img) {
|
||||||
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)
|
||||||
|
|
||||||
}
|
}
|
||||||
if (img == "url") {
|
if (img == 'url' && json['text_url']) {
|
||||||
$("#textarea").val($("#textarea").val() + " " + json["text_url"])
|
$('#textarea').val($('#textarea').val() + ' ' + json['text_url'])
|
||||||
}
|
}
|
||||||
todc();
|
|
||||||
$(".toot-btn-group").prop("disabled", false);
|
|
||||||
$('select').material_select();
|
|
||||||
$("#mec").text(lang.lang_there);
|
|
||||||
Materialize.toast(lang.lang_postimg_aftupload, 1000);
|
|
||||||
$("#imgup").text("");
|
|
||||||
$("#imgsel").show();
|
|
||||||
localStorage.removeItem("image");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Base64からBlobへ
|
//Base64からBlobへ
|
||||||
function toBlob(base64, type) {
|
function toBlob(base64, type) {
|
||||||
var bin = atob(base64.replace(/^.*,/, ''));
|
var bin = atob(base64.replace(/^.*,/, ''))
|
||||||
var buffer = new Uint8Array(bin.length);
|
var buffer = new Uint8Array(bin.length)
|
||||||
for (var i = 0; i < bin.length; i++) {
|
for (var i = 0; i < bin.length; i++) {
|
||||||
buffer[i] = bin.charCodeAt(i);
|
buffer[i] = bin.charCodeAt(i)
|
||||||
}
|
}
|
||||||
// Blobを作成
|
// Blobを作成
|
||||||
try {
|
try {
|
||||||
var blob = new Blob([new Uint8Array(buffer)], {
|
var blob = new Blob([new Uint8Array(buffer)], {
|
||||||
type: type
|
type: type
|
||||||
});
|
})
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
return blob;
|
return blob
|
||||||
}
|
}
|
||||||
//画像を貼り付けたら…
|
//画像を貼り付けたら…
|
||||||
var element = document.querySelector("#textarea");
|
var element = document.querySelector('#textarea')
|
||||||
element.addEventListener("paste", function(e){
|
element.addEventListener('paste', function(e) {
|
||||||
console.log(e)
|
if (!e.clipboardData || !e.clipboardData.items) {
|
||||||
if (!e.clipboardData || !e.clipboardData.items) {
|
return true
|
||||||
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)
|
||||||
|
|
||||||
// 画像以外がペーストされたときのために、元に戻しておく
|
// 画像以外がペーストされたときのために、元に戻しておく
|
||||||
});
|
})
|
||||||
//Adobeフォトエディタ
|
function deleteImage(key) {
|
||||||
function adobe(){
|
Swal.fire({
|
||||||
var agree = localStorage.getItem("adobeagree");
|
title: lang.lang_postimg_delete,
|
||||||
ipc.send('adobe', agree);
|
type: 'warning',
|
||||||
}
|
showCancelButton: true,
|
||||||
ipc.on('adobeagree', function (event, arg) {
|
confirmButtonColor: '#3085d6',
|
||||||
localStorage.setItem("adobeagree",arg);
|
cancelButtonColor: '#d33',
|
||||||
});
|
confirmButtonText: lang.lang_yesno,
|
||||||
function deleteImage(key){
|
cancelButtonText: lang.lang_no
|
||||||
console.log(key);
|
}).then(result => {
|
||||||
if(!confirm(lang.lang_postimg_delete)){
|
if (result.value) {
|
||||||
return false;
|
var media = $('#media').val()
|
||||||
}
|
var arr = media.split(',')
|
||||||
var media = $("#media").val();
|
for (var i = 0; i < media.length; i++) {
|
||||||
var arr=media.split(",");
|
if (arr[i] == key) {
|
||||||
for(var i=0;i<media.length;i++){
|
arr.splice(i, 1)
|
||||||
if(arr[i]==key){
|
break
|
||||||
arr.splice(i, 1);
|
}
|
||||||
break;
|
}
|
||||||
|
$('#media').val(arr.join(','))
|
||||||
|
$('#preview [data-media=' + key + ']').remove()
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
$("#media").val(arr.join(","));
|
}
|
||||||
$('#preview [data-media='+key+']').remove();
|
function altImage(acct_id, id) {
|
||||||
|
var domain = localStorage.getItem('domain_' + acct_id)
|
||||||
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||||
|
var start = 'https://' + domain + '/api/v1/media/' + id
|
||||||
|
if($('[data-media=' + id + ']').hasClass('unknown')) {
|
||||||
|
fetch(start, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'content-type': 'application/json',
|
||||||
|
Authorization: 'Bearer ' + at
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(function(response) {
|
||||||
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
console.log(json)
|
||||||
|
$('[data-media=' + id + ']').removeClass('unknown')
|
||||||
|
if(json.preview_url) {
|
||||||
|
$('[data-media=' + id + ']').attr('src', json.preview_url)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
Swal.fire({
|
||||||
|
title: lang.lang_postimg_desc,
|
||||||
|
text: lang.lang_postimg_leadContext,
|
||||||
|
input: 'text',
|
||||||
|
inputAttributes: {
|
||||||
|
autocapitalize: 'off'
|
||||||
|
},
|
||||||
|
showCancelButton: true,
|
||||||
|
confirmButtonText: 'Post',
|
||||||
|
showLoaderOnConfirm: true,
|
||||||
|
preConfirm: data => {
|
||||||
|
return fetch(start, {
|
||||||
|
method: 'PUT',
|
||||||
|
headers: {
|
||||||
|
'content-type': 'application/json',
|
||||||
|
Authorization: 'Bearer ' + at
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
description: data
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(function(response) {
|
||||||
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
console.log(json)
|
||||||
|
$('[data-media=' + id + ']').attr('title', data)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
allowOutsideClick: () => !Swal.isLoading()
|
||||||
|
}).then(result => {
|
||||||
|
if (result.value) {
|
||||||
|
Swal.fire({
|
||||||
|
title: 'Complete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
function stamp() {
|
||||||
|
if ($('#stamp').hasClass('stamp-avail')) {
|
||||||
|
$('#stamp').html('Off')
|
||||||
|
$('#stamp').removeClass('stamp-avail')
|
||||||
|
} else {
|
||||||
|
$('#stamp').html('On')
|
||||||
|
$('#stamp').addClass('stamp-avail')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//v2/media対応
|
||||||
|
async function v2MediaUpload(domain, at, fd) {
|
||||||
|
var start = 'https://' + domain + '/api/v2/media'
|
||||||
|
let promise = await fetch(start, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
Authorization:
|
||||||
|
'Bearer ' + at
|
||||||
|
},
|
||||||
|
body: fd
|
||||||
|
})
|
||||||
|
var json = await promise.json()
|
||||||
|
if(json.id) {
|
||||||
|
return json.id
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function alertProcessUnfinished() {
|
||||||
|
Swal.fire({
|
||||||
|
title: lang.lang_post_unfinishedMedia,
|
||||||
|
type: 'error',
|
||||||
|
showCancelButton: true,
|
||||||
|
confirmButtonText: lang.lang_post_retry,
|
||||||
|
cancelButtonText: lang.lang_no
|
||||||
|
}).then(result => {
|
||||||
|
if (result.value) {
|
||||||
|
post()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function syncDetail() {
|
||||||
|
Swal.fire({
|
||||||
|
title: lang.lang_post_syncDetail,
|
||||||
|
text: lang.lang_post_syncDetailText,
|
||||||
|
type: 'info'
|
||||||
|
})
|
||||||
}
|
}
|
||||||
@@ -1,217 +1,278 @@
|
|||||||
//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(json);
|
if (this.status !== 200) {
|
||||||
$("[toot-id=" + id + "]").addClass("rted");
|
setLog(start, this.status, json)
|
||||||
$(".rt_"+id).toggleClass("teal-text");
|
}
|
||||||
|
console.log(['Success: renote', json])
|
||||||
|
$('[toot-id=' + id + ']').addClass('rted')
|
||||||
|
$('.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').material_select();
|
$('select').formSelect()
|
||||||
$("#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').material_select();
|
$('select').formSelect()
|
||||||
$("#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(json);
|
if (this.status !== 200) {
|
||||||
if(json.reactionCounts){
|
setLog(start, this.status, json)
|
||||||
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"];
|
}
|
||||||
for(var i=0;i<reactions.length;i++){
|
console.log(['Success: reaction', json])
|
||||||
if(json.reactionCounts[reactions[i]]){
|
if (json.reactions) {
|
||||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
var reactions = [
|
||||||
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
'like',
|
||||||
}else{
|
'love',
|
||||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(0)
|
'laugh',
|
||||||
if($("#pub_" + id +" .reactions").hasClass("fullreact")){
|
'hmm',
|
||||||
$("#pub_" + id +" .re-"+reactions[i]).addClass("hide")
|
'surprise',
|
||||||
}else{
|
'congrats',
|
||||||
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
'angry',
|
||||||
}
|
'confused',
|
||||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
'pudding',
|
||||||
}
|
'rip'
|
||||||
}
|
]
|
||||||
$("#pub_" + id +" .reactions").removeClass("hide");
|
for (var i = 0; i < reactions.length; i++) {
|
||||||
$("#pub_" + id +" .reactions").toggleClass("fullreact")
|
if (json.reactions[reactions[i]]) {
|
||||||
}else{
|
$('#pub_' + id + ' .re-' + reactions[i] + 'ct').text(json.reactions[reactions[i]])
|
||||||
if($("#pub_" + id +" .reactions").hasClass("fullreact")){
|
$('#pub_' + id + ' .re-' + reactions[i]).removeClass('hide')
|
||||||
$("#pub_" + id +" .reactions").addClass("hide")
|
} else {
|
||||||
$("#pub_" + id +" .reactions").removeClass("fullreact")
|
$('#pub_' + id + ' .re-' + reactions[i] + 'ct').text(0)
|
||||||
}else{
|
if ($('#pub_' + id + ' .reactions').hasClass('fullreact')) {
|
||||||
$("#pub_" + id +" .reactions").removeClass("hide");
|
$('#pub_' + id + ' .re-' + reactions[i]).addClass('hide')
|
||||||
$("#pub_" + id +" .reaction").removeClass("hide");
|
} else {
|
||||||
$("#pub_" + id +" .reactions").addClass("fullreact");
|
$('#pub_' + id + ' .re-' + reactions[i]).removeClass('hide')
|
||||||
}
|
}
|
||||||
}
|
$('#pub_' + id + ' .re-' + reactions[i] + 'ct').text(json.reactions[reactions[i]])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$('#pub_' + id + ' .reactions').removeClass('hide')
|
||||||
|
$('#pub_' + id + ' .reactions').toggleClass('fullreact')
|
||||||
|
} else {
|
||||||
|
if ($('#pub_' + id + ' .reactions').hasClass('fullreact')) {
|
||||||
|
$('#pub_' + id + ' .reactions').addClass('hide')
|
||||||
|
$('#pub_' + id + ' .reactions').removeClass('fullreact')
|
||||||
|
} else {
|
||||||
|
$('#pub_' + id + ' .reactions').removeClass('hide')
|
||||||
|
$('#pub_' + id + ' .reaction').removeClass('hide')
|
||||||
|
$('#pub_' + id + ' .reactions').addClass('fullreact')
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$('#pub_' + id + ' .freeReact').toggleClass('hide')
|
||||||
}
|
}
|
||||||
function reactRefresh(acct_id,id){
|
//reactioncustom
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
function reactioncustom(acct_id, id) {
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
$('#reply').val(id)
|
||||||
var start = "https://" + domain + "/api/notes/show";
|
$('#media').val('misskey')
|
||||||
|
$('#unreact').hide()
|
||||||
|
$('#addreact').removeClass('hide')
|
||||||
|
$('#post-acct-sel').val(acct_id)
|
||||||
|
$('select').formSelect()
|
||||||
|
localStorage.setItem('nohide', true)
|
||||||
|
show()
|
||||||
|
emojiToggle(true)
|
||||||
|
$('#left-side').hide()
|
||||||
|
$('#default-emoji').hide()
|
||||||
|
}
|
||||||
|
function reactRefresh(acct_id, id) {
|
||||||
|
var domain = localStorage.getItem('domain_' + acct_id)
|
||||||
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||||
|
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) {
|
if (!response.ok) {
|
||||||
return response.json();
|
response.text().then(function(text) {
|
||||||
}).catch(function(error) {
|
setLog(response.url, response.status, text)
|
||||||
todo(error);
|
})
|
||||||
console.error(error);
|
}
|
||||||
}).then(function(json) {
|
return response.json()
|
||||||
if(!json){
|
})
|
||||||
return false;
|
.catch(function(error) {
|
||||||
}
|
todo(error)
|
||||||
var poll="";
|
setLog(start, 'JSON', error)
|
||||||
console.log(json);
|
console.error(error)
|
||||||
reactRefreshCore(json)
|
})
|
||||||
});
|
.then(function(json) {
|
||||||
|
if (!json) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
var poll = ''
|
||||||
|
if (json.error) {
|
||||||
|
$('[toot-id=' + id + ']').hide()
|
||||||
|
$('[toot-id=' + id + ']').remove()
|
||||||
|
} else {
|
||||||
|
reactRefreshCore(json)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
function reactRefreshCore(json){
|
function reactRefreshCore(json) {
|
||||||
var id=json.id;
|
var id = json.id
|
||||||
if(json.reactionCounts){
|
if (json.reactions) {
|
||||||
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding"];
|
$('#pub_' + id + ' .reactions').removeClass('hide')
|
||||||
$("#pub_" + id +" .reactions").removeClass("hide")
|
var regExp = new RegExp(':', 'g')
|
||||||
for(var i=0;i<reactions.length;i++){
|
Object.keys(json.reactions).forEach(function(keye) {
|
||||||
if(json.reactionCounts[reactions[i]]){
|
keyeClass = keye.replace(regExp, '')
|
||||||
console.log(json.reactionCounts[reactions[i]])
|
if (json.reactions[keye]) {
|
||||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
$('#pub_' + id + ' .re-' + keyeClass + 'ct').text(json.reactions[keye])
|
||||||
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
$('#pub_' + id + ' .re-' + keyeClass).removeClass('hide')
|
||||||
}else{
|
} else {
|
||||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(0)
|
$('#pub_' + id + ' .re-' + keyeClass + '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-' + keyeClass).addClass('hide')
|
||||||
}
|
}
|
||||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
$('#pub_' + id + ' .re-' + keyeClass + 'ct').text(json.reactions[keye])
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function reaction(mode,id,acct_id,tlid){
|
function emojiReaction(emoji) {
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
var media = $('#media').val()
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
var acct_id = $('#post-acct-sel').val()
|
||||||
if($(".fav_"+id).hasClass("yellow-text")){
|
var id = $('#reply').val()
|
||||||
var flag="delete";
|
if(media == 'announcement') {
|
||||||
}else{
|
announReaction(id, acct_id, 0, false, emoji)
|
||||||
var flag="create";
|
} else {
|
||||||
}
|
reaction(emoji, id, acct_id, null)
|
||||||
var start = "https://" + domain + "/api/notes/reactions/"+flag;
|
}
|
||||||
if(localStorage.getItem("mode_" + domain)!="misskey"){
|
clear()
|
||||||
return false;
|
hide()
|
||||||
}
|
}
|
||||||
var httpreq = new XMLHttpRequest();
|
function reaction(mode, id, acct_id, tlid) {
|
||||||
httpreq.open('POST', start, true);
|
var domain = localStorage.getItem('domain_' + acct_id)
|
||||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||||
httpreq.responseType = "json";
|
if ($('.fav_' + id).hasClass('yellow-text')) {
|
||||||
httpreq.send(JSON.stringify({i:at,noteId:id,reaction:mode}));
|
var flag = 'delete'
|
||||||
httpreq.onreadystatechange = function() {
|
} else {
|
||||||
|
var flag = 'create'
|
||||||
|
}
|
||||||
|
var start = 'https://' + domain + '/api/notes/reactions/' + flag
|
||||||
|
if (localStorage.getItem('mode_' + domain) != 'misskey') {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
var httpreq = new XMLHttpRequest()
|
||||||
|
httpreq.open('POST', start, true)
|
||||||
|
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||||
|
httpreq.responseType = 'json'
|
||||||
|
httpreq.send(JSON.stringify({ i: at, noteId: id, reaction: mode }))
|
||||||
|
httpreq.onreadystatechange = function() {
|
||||||
if (httpreq.readyState === 4) {
|
if (httpreq.readyState === 4) {
|
||||||
$(".fav_"+id).toggleClass("yellow-text");
|
if (this.status !== 200) {
|
||||||
|
setLog(start, this.status, this.response)
|
||||||
|
}
|
||||||
|
$('.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 (this.status !== 200) {
|
||||||
return false;
|
setLog(start, this.status, json)
|
||||||
}
|
}
|
||||||
var poll="";
|
if (!json) {
|
||||||
if(json.poll){
|
return false
|
||||||
var choices=json.poll.choices;
|
}
|
||||||
Object.keys(choices).forEach(function(keyc) {
|
var poll = ''
|
||||||
var choice = choices[keyc];
|
if (json.poll) {
|
||||||
if(choice.isVoted){
|
var choices = json.poll.choices
|
||||||
var myvote=twemoji.parse("✅");
|
Object.keys(choices).forEach(function(keyc) {
|
||||||
}else{
|
var choice = choices[keyc]
|
||||||
var myvote="";
|
if (choice.isVoted) {
|
||||||
}
|
var myvote = twemoji.parse('✅')
|
||||||
poll=poll+'<div class="pointer vote" onclick="vote(\''+acct_id+'\',\''+json.id+'\','+choice.id+')">'+choice.text+'('+choice.votes+''+myvote+')</div>';
|
} else {
|
||||||
});
|
var myvote = ''
|
||||||
$(".vote_"+json.id).html(poll)
|
}
|
||||||
}
|
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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,310 +1,347 @@
|
|||||||
/*投稿系*/
|
/*投稿系*/
|
||||||
//投稿
|
//投稿
|
||||||
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(domain=="theboss.tech"){
|
if ($('#ideKey').val() != '') {
|
||||||
if(~str.indexOf("#")){
|
var ideKey = $('#ideKey').val()
|
||||||
if(str.indexOf("#theboss_tech")=="-1"){
|
} else {
|
||||||
if(!confirm(lang.lang_post_tagTL)){
|
var user = localStorage.getItem('user_' + acct_id)
|
||||||
return false;
|
var ideKey = Math.floor(Date.now() / 1000) + '/TheDesk/' + user + '@' + domain
|
||||||
|
$('#ideKey').val(ideKey)
|
||||||
|
}
|
||||||
|
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 = 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(domain=="dtp-mstdn.jp"){
|
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
||||||
if(~str.indexOf("#")){
|
misskeyPost()
|
||||||
if(str.indexOf("#dtp")=="-1"){
|
return
|
||||||
if(!confirm(lang.lang_post_tagTL)){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(!localStorage.getItem("cw_sentence")){
|
$('.toot-btn-group').prop('disabled', true)
|
||||||
var cw_sent=500;
|
todo('Posting')
|
||||||
}else{
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||||
var cw_sent=localStorage.getItem("cw_sentence");
|
var start = 'https://' + domain + '/api/v1/statuses'
|
||||||
|
var reply = $('#reply').val()
|
||||||
|
if (str.indexOf(localStorage.getItem('stable')) == -1) {
|
||||||
|
str + ' #' + localStorage.getItem('stable')
|
||||||
}
|
}
|
||||||
if(!localStorage.getItem("cw_letters")){
|
var toot = {
|
||||||
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();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$(".toot-btn-group").prop("disabled", true);
|
|
||||||
todo("Posting");
|
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
|
||||||
var start = "https://" + domain + "/api/v1/statuses";
|
|
||||||
var reply = $("#reply").val();
|
|
||||||
if(str.indexOf(localStorage.getItem("stable"))==-1){
|
|
||||||
str+" #"+localStorage.getItem("stable");
|
|
||||||
}
|
|
||||||
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")) {
|
var quote = $('#quote').val()
|
||||||
var nsfw = "true";
|
if (quote) {
|
||||||
toot.sensitive=nsfw;
|
toot.quote_id = quote
|
||||||
|
}
|
||||||
|
if ($('#nsfw').hasClass('nsfw-avail')) {
|
||||||
|
var nsfw = 'true'
|
||||||
|
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') {
|
||||||
if(vis!="inherit" && vis!="local"){
|
toot.visibility = vis
|
||||||
toot.visibility=vis;
|
} else if (vis == 'local') {
|
||||||
}else if(vis=="local"){
|
toot.status = str + '👁️'
|
||||||
toot.status=str+"👁️";
|
|
||||||
}
|
}
|
||||||
//ここに非公開・未収載タグについてwarn
|
if ($('#cw').hasClass('cw-avail')) {
|
||||||
if(domain!="kirishima.cloud" && domain!="imastodon.net"){
|
var spo = $('#cw-text').val()
|
||||||
if(~str.indexOf("#")){
|
cw()
|
||||||
if(vis == "local" || vis=="unlisted" || vis=="direct" || vis=="private"){
|
toot.spoiler_text = spo
|
||||||
if(!confirm(lang.lang_post_tagVis)){
|
} else {
|
||||||
return false;
|
var spo = ''
|
||||||
|
}
|
||||||
|
if ($('#sch-box').hasClass('sch-avail')) {
|
||||||
|
var scheduled = formattimeutc(new Date(Date.parse($('#sch-date').val())))
|
||||||
|
console.log('This toot will be posted at:' + scheduled)
|
||||||
|
schedule()
|
||||||
|
toot.scheduled_at = scheduled
|
||||||
|
} else {
|
||||||
|
var scheduled = ''
|
||||||
|
}
|
||||||
|
if (!$('#poll').hasClass('hide')) {
|
||||||
|
var options = []
|
||||||
|
$('.mastodon-choice').map(function() {
|
||||||
|
var choice = $(this).val()
|
||||||
|
if (choice != '') {
|
||||||
|
options.push(choice)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
if ($('#poll-multiple:checked').val() == '1') {
|
||||||
|
var mul = true
|
||||||
|
} else {
|
||||||
|
var mul = false
|
||||||
}
|
}
|
||||||
}
|
if ($('#poll-until:checked').val() == '1') {
|
||||||
}
|
var htt = true
|
||||||
if ($("#cw").hasClass("cw-avail")) {
|
} else {
|
||||||
var spo = $("#cw-text").val();
|
var htt = false
|
||||||
cw();
|
|
||||||
toot.spoiler_text=spo;
|
|
||||||
} else {
|
|
||||||
var spo = "";
|
|
||||||
}
|
|
||||||
if ($("#sch-box").hasClass("sch-avail")) {
|
|
||||||
var scheduled=formattimeutc(new Date(Date.parse($("#sch-date").val())))
|
|
||||||
console.log(scheduled)
|
|
||||||
schedule();
|
|
||||||
toot.scheduled_at=scheduled;
|
|
||||||
} else {
|
|
||||||
var scheduled = "";
|
|
||||||
}
|
|
||||||
if ($("#poll-sel").val()=="mastodon-poll") {
|
|
||||||
var options=[];
|
|
||||||
$(".mastodon-choice").map(function() {
|
|
||||||
var choice=$(this).val();
|
|
||||||
if(choice!=""){
|
|
||||||
options.push(choice);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if($("#poll-multiple:checked").val()=="1"){
|
|
||||||
var mul=true;
|
|
||||||
}else{
|
|
||||||
var mul=false;
|
|
||||||
}
|
}
|
||||||
if($("#poll-until:checked").val()=="1"){
|
var exin = pollCalc()
|
||||||
var htt=true;
|
if (!exin) {
|
||||||
}else{
|
todc('Error: Poll expires_in param')
|
||||||
var htt=false;
|
|
||||||
}
|
}
|
||||||
var exin=pollCalc();
|
toot.poll = {
|
||||||
if(!exin){
|
|
||||||
todc("Error: Poll expires_in param")
|
|
||||||
}
|
|
||||||
toot.poll={
|
|
||||||
options: options,
|
options: options,
|
||||||
expires_in: exin,
|
expires_in: exin,
|
||||||
multiple: mul,
|
multiple: mul,
|
||||||
hide_totals: htt
|
hide_totals: htt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(toot);
|
console.table(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.setRequestHeader('Idempotency-Key', ideKey)
|
||||||
httpreq.send(JSON.stringify(toot));
|
httpreq.responseType = 'json'
|
||||||
httpreq.onreadystatechange = function() {
|
httpreq.send(JSON.stringify(toot))
|
||||||
|
httpreq.onreadystatechange = function() {
|
||||||
if (httpreq.readyState === 4) {
|
if (httpreq.readyState === 4) {
|
||||||
var json = httpreq.response;
|
var json = httpreq.response
|
||||||
var box = localStorage.getItem("box");
|
if (this.status !== 200) {
|
||||||
if (box == "yes" || !box) {
|
if(media && this.status == 422) {
|
||||||
$("#textarea").blur();
|
$('#ideKey').val('')
|
||||||
hide();
|
$('.toot-btn-group').prop('disabled', false)
|
||||||
|
alertProcessUnfinished()
|
||||||
|
} else {
|
||||||
|
setLog(start, this.status, json)
|
||||||
|
var box = localStorage.getItem('box')
|
||||||
|
if (box == 'yes' || !box) {
|
||||||
|
$('#textarea').blur()
|
||||||
|
hide()
|
||||||
|
}
|
||||||
|
$('.toot-btn-group').prop('disabled', false)
|
||||||
|
todc()
|
||||||
|
clear()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$('#ideKey').val('')
|
||||||
|
var box = localStorage.getItem('box')
|
||||||
|
if (box == 'yes' || !box) {
|
||||||
|
$('#textarea').blur()
|
||||||
|
hide()
|
||||||
|
}
|
||||||
|
$('.toot-btn-group').prop('disabled', false)
|
||||||
|
todc()
|
||||||
|
clear()
|
||||||
}
|
}
|
||||||
$(".toot-btn-group").prop("disabled", false);
|
|
||||||
todc();
|
|
||||||
clear();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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(json);
|
if (this.status !== 200) {
|
||||||
var box = localStorage.getItem("box");
|
setLog(start, this.status, json)
|
||||||
if (box == "yes") {
|
|
||||||
hide();
|
|
||||||
}else if (box == "hide"){
|
|
||||||
$("body").addClass("mini-post");
|
|
||||||
$(".mini-btn").text("expand_less");
|
|
||||||
}
|
}
|
||||||
$(".toot-btn-group").prop("disabled", false);
|
console.log(['Success: toot', json])
|
||||||
todc();
|
var box = localStorage.getItem('box')
|
||||||
clear();
|
if (box == 'yes') {
|
||||||
|
hide()
|
||||||
|
} else if (box == 'hide') {
|
||||||
|
$('body').addClass('mini-post')
|
||||||
|
$('.mini-btn').text('expand_less')
|
||||||
|
}
|
||||||
|
$('.toot-btn-group').prop('disabled', false)
|
||||||
|
todc()
|
||||||
|
clear()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//クリア(Shift+C)
|
//クリア(Shift+C)
|
||||||
function clear() {
|
function clear() {
|
||||||
$("#textarea").val("");
|
$('#textarea').val('')
|
||||||
if(localStorage.getItem("stable")){
|
$('#ideKey').val('')
|
||||||
$("#textarea").val("#"+localStorage.getItem("stable")+" ")
|
if (localStorage.getItem('stable')) {
|
||||||
|
$('#textarea').val('#' + localStorage.getItem('stable') + ' ')
|
||||||
}
|
}
|
||||||
$("#textarea").attr("placeholder", lang.lang_toot);
|
$('#textarea').attr('placeholder', lang.lang_toot)
|
||||||
$("#reply").val("");
|
$('#reply').val('')
|
||||||
$("#media").val("");
|
$('#quote').val('')
|
||||||
var cwt = localStorage.getItem("cw-text");
|
$('#media').val('')
|
||||||
|
var cwt = localStorage.getItem('cw-text')
|
||||||
if (cwt) {
|
if (cwt) {
|
||||||
$("#cw-text").val(cwt);
|
$('#cw-text').val(cwt)
|
||||||
} else {
|
} else {
|
||||||
$("#cw-text").val("");
|
$('#cw-text').val('')
|
||||||
}
|
}
|
||||||
var acw = localStorage.getItem("always-cw");
|
var acw = localStorage.getItem('always-cw')
|
||||||
if (acw != "yes") {
|
if (acw != 'yes') {
|
||||||
$("#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()
|
||||||
}
|
}
|
||||||
$("#rec").text(lang.lang_no);
|
$('#rec').text(lang.lang_no)
|
||||||
$("#mec").text(lang.lang_nothing);
|
$('#mec').text(lang.lang_nothing)
|
||||||
loadVis();
|
loadVis()
|
||||||
$("#nsfw").removeClass("yellow-text");
|
$('#nsfw').removeClass('yellow-text')
|
||||||
$("#nsfw").html("visibility_off");
|
$('#nsfw').html('visibility_off')
|
||||||
$("#nsfw").removeClass("nsfw-avail");
|
$('#nsfw').removeClass('nsfw-avail')
|
||||||
$("#nsc").text(lang.lang_nothing);
|
$('#stamp').html('Off')
|
||||||
$("#drag").css("background-color", "#e0e0e0");
|
$('#stamp').removeClass('stamp-avail')
|
||||||
$("#preview").html("");
|
$('#nsc').text(lang.lang_nothing)
|
||||||
$(".toot-btn-group").prop("disabled", false);
|
$('#drag').css('background-color', '#e0e0e0')
|
||||||
$("#post-acct-sel").prop("disabled", false);
|
$('#preview').html('')
|
||||||
$("#days_poll").val(0);
|
$('.toot-btn-group').prop('disabled', false)
|
||||||
$("#hours_poll").val(0);
|
$('#post-acct-sel').prop('disabled', false)
|
||||||
$("#mins_poll").val(0);
|
$('#days_poll').val(0)
|
||||||
$(".mastodon-choice").map(function() {
|
$('#hours_poll').val(0)
|
||||||
$(this).val("");
|
$('#mins_poll').val(6)
|
||||||
});
|
$('#poll').addClass('hide')
|
||||||
localStorage.removeItem("image");
|
$('#pollsta').text(lang.lang_no)
|
||||||
if(localStorage.getItem("mainuse")=="main"){
|
$('.mastodon-choice').map(function() {
|
||||||
$("#post-acct-sel").val(localStorage.getItem("main"));
|
$(this).val('')
|
||||||
|
})
|
||||||
|
localStorage.removeItem('image')
|
||||||
|
if (localStorage.getItem('mainuse') == 'main') {
|
||||||
|
$('#post-acct-sel').val(localStorage.getItem('main'))
|
||||||
}
|
}
|
||||||
$('select').material_select();
|
$('#emoji').addClass('hide')
|
||||||
|
$('select').formSelect()
|
||||||
|
$('#default-emoji').show()
|
||||||
|
$('#unreact').show()
|
||||||
|
$('#addreact').addClass('hide')
|
||||||
|
$('#right-side').hide()
|
||||||
|
$('#right-side').css('width', '300px')
|
||||||
|
$('#left-side').css('width', '100%')
|
||||||
|
var width = localStorage.getItem('postbox-width')
|
||||||
|
if (width) {
|
||||||
|
width = width.replace('px', '') * 1
|
||||||
|
} else {
|
||||||
|
width = 300
|
||||||
|
}
|
||||||
|
$('#post-box').css('width', width)
|
||||||
|
mdCheck()
|
||||||
}
|
}
|
||||||
@@ -1,129 +1,128 @@
|
|||||||
/*保護系*/
|
/*保護系*/
|
||||||
//画像保護
|
//画像保護
|
||||||
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')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//投稿公開範囲
|
//投稿公開範囲
|
||||||
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')
|
||||||
$("#vis-icon").removeClass("blue-text");
|
$('#vis-icon').removeClass('blue-text')
|
||||||
$("#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')
|
||||||
|
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()
|
||||||
}
|
}
|
||||||
var vis=localStorage.getItem("vis");
|
|
||||||
if(vis=="memory"){
|
|
||||||
var acct_id = $("#post-acct-sel").val();
|
|
||||||
localStorage.setItem("vis-memory-"+acct_id,set);
|
|
||||||
}
|
|
||||||
$('.dropdown-button').dropdown('close');
|
|
||||||
}
|
}
|
||||||
function loadVis(){
|
function loadVis() {
|
||||||
var vist = localStorage.getItem("vis");
|
var vist = localStorage.getItem('vis')
|
||||||
console.log(vist);
|
if (!vist) {
|
||||||
if (!vist) {
|
vis('public')
|
||||||
vis("public");
|
} else {
|
||||||
} else {
|
if (vist == 'memory') {
|
||||||
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)
|
||||||
var memory = localStorage.getItem("vis-memory-"+acct_id);
|
if (!memory) {
|
||||||
if (!memory) {
|
memory = 'public'
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
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(e) {
|
||||||
$(".cw_hide_"+id).toggleClass("cw");
|
$(e).parent().parent().find('.cw_hide').toggleClass('cw')
|
||||||
$(".cw-long-"+id).toggleClass("hide");
|
$(e).parent().find('.cw_long').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");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,189 +1,279 @@
|
|||||||
//入力時にハッシュタグと@をサジェスト
|
//入力時にハッシュタグと@をサジェスト
|
||||||
var timer = null;
|
var timer = null
|
||||||
|
|
||||||
var input = document.getElementById("textarea");
|
var input = document.getElementById('textarea')
|
||||||
|
|
||||||
var prev_val = input.value;
|
var prev_val = input.value
|
||||||
var oldSuggest;
|
var oldSuggest
|
||||||
var suggest;
|
var suggest
|
||||||
|
|
||||||
input.addEventListener("focus", function() {
|
input.addEventListener(
|
||||||
var acct_id = $("#post-acct-sel").val();
|
'focus',
|
||||||
$("#suggest").html("");
|
function() {
|
||||||
window.clearInterval(timer);
|
localStorage.removeItem('cursor')
|
||||||
timer = window.setInterval(function() {
|
var acct_id = $('#post-acct-sel').val()
|
||||||
var new_val = input.value;
|
$('#suggest').html('')
|
||||||
if(new_val==""){
|
window.clearInterval(timer)
|
||||||
$("#suggest").html("");
|
timer = window.setInterval(function() {
|
||||||
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
|
var new_val = input.value
|
||||||
$("#right-side").hide()
|
if (new_val == '') {
|
||||||
}
|
$('#suggest').html('')
|
||||||
return;
|
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
|
||||||
}
|
$('#right-side').hide()
|
||||||
if (prev_val != new_val) {
|
$('#right-side').css('width', '300px')
|
||||||
var semoji = new_val.match(/:(\S{3,})/);
|
$('#left-side').css('width', '100%')
|
||||||
if(semoji){
|
var width = localStorage.getItem('postbox-width')
|
||||||
var obj = JSON.parse(localStorage.getItem("emoji_" + acct_id));
|
if (width) {
|
||||||
if(!obj){
|
width = width.replace('px', '') * 1
|
||||||
var ehtml=lang.lang_suggest_nodata;
|
|
||||||
}else{
|
|
||||||
var num = obj.length;
|
|
||||||
var ehtml="";
|
|
||||||
for (i = 0; i < num; i++) {
|
|
||||||
var emoji = obj[i];
|
|
||||||
if ( ~emoji.shortcode.indexOf(semoji[1])) {
|
|
||||||
if (emoji) {
|
|
||||||
ehtml = ehtml+'<a onclick="emojiInsert(\':' + emoji.shortcode +
|
|
||||||
': \',\':'+semoji[1]+'\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(ehtml!=""){
|
|
||||||
$("#right-side").show()
|
|
||||||
$("#poll").addClass("hide")
|
|
||||||
$("#emoji").addClass("hide")
|
|
||||||
}else{
|
|
||||||
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
|
|
||||||
$("#right-side").hide()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$("#suggest").html(ehtml);
|
|
||||||
}
|
|
||||||
|
|
||||||
var tag = new_val.match(/#(\S{3,})/);
|
|
||||||
var acct = new_val.match(/@(\S{3,})/);
|
|
||||||
if(localStorage.getItem("imas")){
|
|
||||||
//セルフNP
|
|
||||||
var cpnp = new_val.match(/^(?!.*http)\/\/(\S{1,})/);
|
|
||||||
}else{
|
|
||||||
var cpnp=[];
|
|
||||||
}
|
|
||||||
if (cpnp && cpnp[1]) {
|
|
||||||
var q = cpnp[1];
|
|
||||||
cgNPs(q);
|
|
||||||
} else if (tag && tag[1]) {
|
|
||||||
var q = tag[1];
|
|
||||||
} else if (acct && acct[1]) {
|
|
||||||
var q = acct[1];
|
|
||||||
}else {
|
|
||||||
$("#suggest").html("");
|
|
||||||
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
|
|
||||||
$("#right-side").hide()
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
|
||||||
suggest = "https://" + domain + "/api/v1/search?q=" + q
|
|
||||||
if (suggest != oldSuggest) {
|
|
||||||
console.log(suggest)
|
|
||||||
fetch(suggest, {
|
|
||||||
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.hashtags[0] && tag) {
|
|
||||||
if(tag[1]){
|
|
||||||
var tags = "";
|
|
||||||
Object.keys(json.hashtags).forEach(function(key4) {
|
|
||||||
var tag = json.hashtags[key4];
|
|
||||||
if(tag!=q){
|
|
||||||
tags = tags + '<a onclick="tagInsert(\'#' + tag + '\',\'#' + q +
|
|
||||||
'\')" class="pointer">#' + tag + '</a><br>';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$("#right-side").show()
|
|
||||||
$("#suggest").html("Tags:<br>" + tags);
|
|
||||||
$("#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){
|
|
||||||
accts = accts + '<a onclick="tagInsert(\'@' + acct.acct +
|
|
||||||
'\',\'@' + q + '\')" class="pointer">@' + acct.acct + '</a><br>';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$("#right-side").show()
|
|
||||||
$("#suggest").html(accts);
|
|
||||||
$("#poll").addClass("hide")
|
|
||||||
$("#emoji").addClass("hide")
|
|
||||||
} else {
|
} else {
|
||||||
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
|
width = 300
|
||||||
$("#right-side").hide()
|
}
|
||||||
|
$('#post-box').css('width', width + 'px')
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (prev_val != new_val) {
|
||||||
|
var tag = new_val.match(/#(\S{3,})/)
|
||||||
|
var acct = new_val.match(/@(\S{3,})/)
|
||||||
|
if (tag && tag[1]) {
|
||||||
|
var q = tag[1]
|
||||||
|
} else if (acct && acct[1]) {
|
||||||
|
var q = acct[1]
|
||||||
|
} else {
|
||||||
|
$('#suggest').html('')
|
||||||
|
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
|
||||||
|
$('#right-side').hide()
|
||||||
|
$('#right-side').css('width', '300px')
|
||||||
|
$('#left-side').css('width', '100%')
|
||||||
|
var width = localStorage.getItem('postbox-width')
|
||||||
|
if (width) {
|
||||||
|
width = width.replace('px', '') * 1
|
||||||
|
} else {
|
||||||
|
width = 300
|
||||||
}
|
}
|
||||||
|
$('#post-box').css('width', width + 'px')
|
||||||
}
|
}
|
||||||
});
|
return
|
||||||
}
|
}
|
||||||
};
|
var domain = localStorage.getItem('domain_' + acct_id)
|
||||||
oldSuggest = suggest;
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||||
prev_value = new_val;
|
suggest = 'https://' + domain + '/api/v2/search?q=' + q
|
||||||
}, 1000);
|
if (suggest != oldSuggest) {
|
||||||
}, false);
|
console.log('Try to get suggest at ' + suggest)
|
||||||
|
fetch(suggest, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'content-type': 'application/json',
|
||||||
|
Authorization: 'Bearer ' + at
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(function(response) {
|
||||||
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
console.log(['Search', json])
|
||||||
|
//ハッシュタグ
|
||||||
|
if (json.hashtags[0] && tag) {
|
||||||
|
if (tag[1]) {
|
||||||
|
var tags = []
|
||||||
|
Object.keys(json.hashtags).forEach(function(key4) {
|
||||||
|
var tag = json.hashtags[key4]
|
||||||
|
var his = tag.history
|
||||||
|
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
|
||||||
|
tagHTML = `<br><a onclick="tagInsert('#${escapeHTML(
|
||||||
|
tag.name
|
||||||
|
)}','#${q}')" class="pointer">#${escapeHTML(tag.name)}</a> ${uses}toot(s)`
|
||||||
|
|
||||||
input.addEventListener("blur", function() {
|
var item = {
|
||||||
window.clearInterval(timer);
|
uses: uses,
|
||||||
favTag();
|
html: tagHTML
|
||||||
}, false);
|
}
|
||||||
function tagInsert(code, del) {
|
tags.push(item)
|
||||||
var now = $("#textarea").val();
|
})
|
||||||
var selin = $("#textarea").prop('selectionStart');
|
var num_a = -1
|
||||||
if (!del) {
|
var num_b = 1
|
||||||
} else {
|
tags = tags.sort(function(a, b) {
|
||||||
var regExp = new RegExp(del, "g");
|
var x = a['uses']
|
||||||
var now = now.replace(regExp, "");
|
var y = b['uses']
|
||||||
selin=selin-del.length;
|
if (x > y) return num_a
|
||||||
}
|
if (x < y) return num_b
|
||||||
if(selin>0){
|
return 0
|
||||||
var before = now.substr(0, selin);
|
})
|
||||||
var after = now.substr(selin, now.length);
|
var ins = ''
|
||||||
newt = before + " "+ code+" " + after;
|
var nev = false
|
||||||
}else{
|
Object.keys(tags).forEach(function(key7) {
|
||||||
newt = code+" "+now;
|
ins = ins + tags[key7].html
|
||||||
}
|
if (key7 <= 0 && !nev) {
|
||||||
$("#textarea").val(newt);
|
ins = ins + '<br>'
|
||||||
$("#textarea").focus();
|
nev = true
|
||||||
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
|
}
|
||||||
$("#right-side").hide()
|
})
|
||||||
}
|
$('#suggest').html(ins)
|
||||||
$("#suggest").html("");
|
$('#right-side').show()
|
||||||
}
|
$('#right-side').css('width', '200px')
|
||||||
function cgNPs(q){
|
$('#left-side').css('width', 'calc(100% - 200px)')
|
||||||
suggest = "https://cg.toot.app/api/v1/search/light?q=" + q
|
var width = localStorage.getItem('postbox-width')
|
||||||
if (suggest != oldSuggest) {
|
if (width) {
|
||||||
console.log(suggest)
|
width = width.replace('px', '') * 1 + 200
|
||||||
fetch(suggest, {
|
} else {
|
||||||
method: 'GET',
|
width = 500
|
||||||
headers: {
|
}
|
||||||
'content-type': 'application/json'
|
$('#post-box').css('width', width + 'px')
|
||||||
},
|
$('#poll').addClass('hide')
|
||||||
}).then(function(response) {
|
$('#emoji').addClass('hide')
|
||||||
return response.json();
|
}
|
||||||
}).catch(function(error) {
|
} else if (json.accounts[0] && acct[1]) {
|
||||||
todo(error);
|
var accts = ''
|
||||||
console.error(error);
|
Object.keys(json.accounts).forEach(function(key3) {
|
||||||
}).then(function(json) {
|
var acct = json.accounts[key3]
|
||||||
console.log(json);
|
if (acct.acct != q) {
|
||||||
if (json[0]) {
|
//Instance Actorって…
|
||||||
var tags = "";
|
if (acct.username.indexOf('.') < 0) {
|
||||||
Object.keys(json).forEach(function(key4) {
|
accts =
|
||||||
var tag = json[key4];
|
accts +
|
||||||
tags = tags + '<a onclick="cgNP(\''+json[key4]+'\')" class="pointer">' + json[key4] + '</a> ';
|
`<a onclick="tagInsert('@${acct.acct}','@${q}')" class="pointer">@${acct.acct}</a><br>`
|
||||||
});
|
}
|
||||||
$("#suggest").html("Cinderella NowPlaying:" + tags);
|
}
|
||||||
}else{
|
})
|
||||||
$("#suggest").html("Cinderella NowPlaying:Not Found");
|
$('#right-side').show()
|
||||||
}
|
$('#right-side').css('width', '200px')
|
||||||
});
|
$('#left-side').css('width', 'calc(100% - 200px)')
|
||||||
|
var width = localStorage.getItem('postbox-width')
|
||||||
|
if (width) {
|
||||||
|
width = width.replace('px', '') * 1 + 200
|
||||||
|
} else {
|
||||||
|
width = 500
|
||||||
|
}
|
||||||
|
$('#post-box').css('width', width + 'px')
|
||||||
|
$('#suggest').html(accts)
|
||||||
|
$('#poll').addClass('hide')
|
||||||
|
$('#emoji').addClass('hide')
|
||||||
|
} else {
|
||||||
|
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
|
||||||
|
$('#right-side').hide()
|
||||||
|
$('#right-side').css('width', '300px')
|
||||||
|
$('#left-side').css('width', '100%')
|
||||||
|
var width = localStorage.getItem('postbox-width')
|
||||||
|
if (width) {
|
||||||
|
width = width.replace('px', '') * 1
|
||||||
|
} else {
|
||||||
|
width = 300
|
||||||
|
}
|
||||||
|
$('#post-box').css('width', width + 'px')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
oldSuggest = suggest
|
||||||
|
prev_value = new_val
|
||||||
|
}, 1000)
|
||||||
|
},
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
input.addEventListener(
|
||||||
|
'blur',
|
||||||
|
function() {
|
||||||
|
window.clearInterval(timer)
|
||||||
|
favTag()
|
||||||
|
},
|
||||||
|
false
|
||||||
|
)
|
||||||
|
function tagInsert(code, del) {
|
||||||
|
var blankBefore = ' '
|
||||||
|
var blankAfter = ' '
|
||||||
|
var textarea = document.querySelector('#textarea')
|
||||||
|
var sentence = textarea.value
|
||||||
|
var len = sentence.length
|
||||||
|
var pos = textarea.selectionStart
|
||||||
|
if (del) {
|
||||||
|
var delLen = del.length
|
||||||
|
} else {
|
||||||
|
var delLen = 0
|
||||||
|
}
|
||||||
|
var before = sentence.substr(0, pos - delLen)
|
||||||
|
var last = before.substr(-1, 1)
|
||||||
|
if (last == ' ') blankBefore = ''
|
||||||
|
var after = sentence.substr(pos, len)
|
||||||
|
var start = after.substr(0, 1)
|
||||||
|
if (start == ' ') blankAfter = ''
|
||||||
|
if (len == 0) {
|
||||||
|
var word = code
|
||||||
|
} else if (len == pos) {
|
||||||
|
var word = blankBefore + code
|
||||||
|
} else if (pos == 0) {
|
||||||
|
var word = code + blankAfter
|
||||||
|
} else {
|
||||||
|
var word = blankBefore + code + blankAfter
|
||||||
|
}
|
||||||
|
sentence = before + word + after
|
||||||
|
textarea.value = sentence
|
||||||
|
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
|
||||||
|
$('#right-side').hide()
|
||||||
|
$('#right-side').css('width', '300px')
|
||||||
|
$('#left-side').css('width', '50%')
|
||||||
|
var width = localStorage.getItem('postbox-width').replace('px', '') * 1
|
||||||
|
if (!width) {
|
||||||
|
width = 300
|
||||||
|
}
|
||||||
|
$('#post-box').css('width', width + 'px')
|
||||||
|
}
|
||||||
|
$('#suggest').html('')
|
||||||
|
}
|
||||||
|
function cgNPs(q) {
|
||||||
|
suggest = 'https://cg.toot.app/api/v1/search/light?q=' + q
|
||||||
|
if (suggest != oldSuggest) {
|
||||||
|
console.log('Try to get suggest at ' + suggest)
|
||||||
|
fetch(suggest, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'content-type': 'application/json'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(function(response) {
|
||||||
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
if (json[0]) {
|
||||||
|
var tags = ''
|
||||||
|
Object.keys(json).forEach(function(key4) {
|
||||||
|
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')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,64 +1,81 @@
|
|||||||
/*リプライ*/
|
/*リプライ*/
|
||||||
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').material_select();
|
$('select').formSelect()
|
||||||
$("#textarea").attr("placeholder",lang.lang_usetxtbox_reply);
|
mdCheck()
|
||||||
$("#textarea").focus();
|
$('#textarea').attr('placeholder', lang.lang_usetxtbox_reply)
|
||||||
var profimg=localStorage.getItem("prof_"+acct_id);
|
$('#textarea').focus()
|
||||||
if(!profimg){
|
var profimg = localStorage.getItem('prof_' + acct_id)
|
||||||
profimg="../../img/missing.svg";
|
if (!profimg) {
|
||||||
|
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)
|
||||||
|
} else if (qt == 'apiQuote') {
|
||||||
|
clear()
|
||||||
|
localStorage.setItem('nohide', true)
|
||||||
|
show()
|
||||||
|
$('#quote').val(id)
|
||||||
|
$('#post-acct-sel').val(acct_id)
|
||||||
|
$('#post-acct-sel').prop('disabled', true)
|
||||||
|
$('select').formSelect()
|
||||||
|
$('#textarea').attr('placeholder', lang.lang_usetxtbox_reply)
|
||||||
|
$('#textarea').focus()
|
||||||
|
var profimg = localStorage.getItem('prof_' + acct_id)
|
||||||
|
if (!profimg) {
|
||||||
|
profimg = '../../img/missing.svg'
|
||||||
|
}
|
||||||
|
$('#acct-sel-prof').attr('src', profimg)
|
||||||
}
|
}
|
||||||
$("#textarea").focus();
|
$('#post-acct-sel').val(acct_id)
|
||||||
$("#post-acct-sel").val(acct_id);
|
$('select').formSelect()
|
||||||
$('select').material_select();
|
mdCheck()
|
||||||
|
$('#textarea').focus()
|
||||||
}
|
}
|
||||||
145
app/js/tl/announParse.js
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
function announParse(obj, acct_id, tlid) {
|
||||||
|
var template = ''
|
||||||
|
var datetype = localStorage.getItem('datetype')
|
||||||
|
var gif = localStorage.getItem('gif')
|
||||||
|
//Ticker
|
||||||
|
var tickerck = localStorage.getItem('ticker_ok')
|
||||||
|
if (tickerck == 'yes') {
|
||||||
|
var ticker = true
|
||||||
|
} else if (!ticker || ticker == 'no') {
|
||||||
|
var ticker = false
|
||||||
|
}
|
||||||
|
if (!datetype) {
|
||||||
|
datetype = 'absolute'
|
||||||
|
}
|
||||||
|
if (!gif) {
|
||||||
|
var gif = 'yes'
|
||||||
|
}
|
||||||
|
Object.keys(obj).forEach(function(key) {
|
||||||
|
var toot = obj[key]
|
||||||
|
var content = toot.content
|
||||||
|
if (toot.emojis) {
|
||||||
|
Object.keys(toot.emojis).forEach(function(key1) {
|
||||||
|
var emoji = toot.emojis[key1]
|
||||||
|
var shortcode = emoji.shortcode
|
||||||
|
if (gif == 'yes') {
|
||||||
|
var emoSource = emoji.url
|
||||||
|
} else {
|
||||||
|
var emoSource = emoji.static_url
|
||||||
|
}
|
||||||
|
var emoji_url = `
|
||||||
|
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
|
||||||
|
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle('bigemoji');">
|
||||||
|
`
|
||||||
|
var regExp = new RegExp(':' + shortcode + ':', 'g')
|
||||||
|
content = content.replace(regExp, emoji_url)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
content = twemoji.parse(content)
|
||||||
|
var reactions = ''
|
||||||
|
//既存のリアクション
|
||||||
|
if (toot.reactions) {
|
||||||
|
Object.keys(toot.reactions).forEach(function(key2) {
|
||||||
|
var reaction = toot.reactions[key2]
|
||||||
|
//普通の絵文字 or カスタム絵文字 は文字数判断。ただしスコットランド国旗みたいなやべぇやつに注意
|
||||||
|
var splitter = new GraphemeSplitter()
|
||||||
|
if (splitter.splitGraphemes(reaction.name).length > 1) {
|
||||||
|
//カスタム絵文字
|
||||||
|
var shortcode = reaction.shortcode
|
||||||
|
if (gif == 'yes') {
|
||||||
|
var emoSource = reaction.url
|
||||||
|
} else {
|
||||||
|
var emoSource = reaction.static_url
|
||||||
|
}
|
||||||
|
var emoji_url = `
|
||||||
|
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
|
||||||
|
alt=" :${shortcode}: " title="${shortcode}">`
|
||||||
|
} else {
|
||||||
|
emoji_url = twemoji.parse(reaction.name)
|
||||||
|
}
|
||||||
|
var addClass = ''
|
||||||
|
if (reaction.me) {
|
||||||
|
addClass = 'reactioned'
|
||||||
|
}
|
||||||
|
reactions =
|
||||||
|
reactions +
|
||||||
|
`<div class="announReaction ${addClass}" onclick="announReaction('${toot.id}', '${acct_id}', '${tlid}', ${reaction.me},'${reaction.name}')">
|
||||||
|
${emoji_url} ${reaction.count}
|
||||||
|
</div>`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (toot.ends_at) {
|
||||||
|
var ended = `<div class="announReaction" title="${date(toot.ends_at, 'absolute')}" style="width: auto; cursor: default;">
|
||||||
|
<i class="fas fa-arrow-right"></i>
|
||||||
|
${date(toot.ends_at, datetype)}
|
||||||
|
</div>`
|
||||||
|
} else {
|
||||||
|
var ended = ''
|
||||||
|
}
|
||||||
|
|
||||||
|
template =
|
||||||
|
template +
|
||||||
|
`<div class="announcement" data-id="${toot.id}">
|
||||||
|
${content}
|
||||||
|
<div class="reactionsPack">
|
||||||
|
${reactions}
|
||||||
|
<div class="announReaction add" onclick="announReactionNew('${toot.id}', '${acct_id}', '${tlid}')"><i class="fas fa-plus"></i></div>
|
||||||
|
${ended}
|
||||||
|
</div>
|
||||||
|
</div>`
|
||||||
|
})
|
||||||
|
return template
|
||||||
|
}
|
||||||
|
function announReaction(id, acct_id, tlid, del, name) {
|
||||||
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||||
|
var domain = localStorage.getItem('domain_' + acct_id)
|
||||||
|
var start = 'https://' + domain + '/api/v1/announcements/' + id + '/reactions/' + encodeURIComponent(name)
|
||||||
|
var httpreq = new XMLHttpRequest()
|
||||||
|
if(del) {
|
||||||
|
var method = 'DELETE'
|
||||||
|
} else {
|
||||||
|
var method = 'PUT'
|
||||||
|
}
|
||||||
|
httpreq.open(method, start, true)
|
||||||
|
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||||
|
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||||
|
httpreq.responseType = 'json'
|
||||||
|
httpreq.send()
|
||||||
|
httpreq.onreadystatechange = function() {
|
||||||
|
if (httpreq.readyState === 4) {
|
||||||
|
var json = httpreq.response
|
||||||
|
if (this.status !== 200) {
|
||||||
|
setLog(start, this.status, this.response)
|
||||||
|
}
|
||||||
|
announ(acct_id, tlid)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function announReactionNew(id, acct_id, tlid) {
|
||||||
|
$('#reply').val(id)
|
||||||
|
$('#media').val('announcement')
|
||||||
|
$('#unreact').hide()
|
||||||
|
$('#addreact').removeClass('hide')
|
||||||
|
$('#post-acct-sel').val(acct_id)
|
||||||
|
$('select').formSelect()
|
||||||
|
localStorage.setItem('nohide', true)
|
||||||
|
show()
|
||||||
|
emojiToggle(true)
|
||||||
|
$('#left-side').hide()
|
||||||
|
}
|
||||||
|
function emojiReactionDef(target) {
|
||||||
|
var emojiraw = newpack.filter(function(item, index) {
|
||||||
|
if (item.short_name == target) return true
|
||||||
|
})
|
||||||
|
var hex = emojiraw[0].unified.split('-')
|
||||||
|
if (hex.length === 2) {
|
||||||
|
emoji = twemoji.convert.fromCodePoint(hex[0]) + twemoji.convert.fromCodePoint(hex[1])
|
||||||
|
} else {
|
||||||
|
emoji = twemoji.convert.fromCodePoint(hex[0])
|
||||||
|
}
|
||||||
|
var acct_id = $('#post-acct-sel').val()
|
||||||
|
var id = $('#reply').val()
|
||||||
|
announReaction(id, acct_id, 0, false, emoji)
|
||||||
|
clear()
|
||||||
|
hide()
|
||||||
|
}
|
||||||
@@ -4,282 +4,389 @@ function additional(acct_id, tlid) {
|
|||||||
//メンション系
|
//メンション系
|
||||||
//$(".mention").attr("href", "");
|
//$(".mention").attr("href", "");
|
||||||
|
|
||||||
$(".mention").addClass("parsed");
|
$('#timeline-container .mention').addClass('parsed')
|
||||||
|
|
||||||
$(".hashtag").each(function(i, elem) {
|
|
||||||
var tags = $(this).attr("href").match(
|
|
||||||
/https?:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
|
|
||||||
);
|
|
||||||
$(this).attr("href","#");
|
|
||||||
if(tags){
|
|
||||||
if(tags[2]){
|
|
||||||
$(this).attr("onclick",'tagShow(\'' + tags[2] + '\')');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
$('#timeline-container .hashtag, #timeline-container [rel=tag]').each(function(i, elem) {
|
||||||
|
var tags = $(this)
|
||||||
|
.attr('href')
|
||||||
|
.match(/https?:\/\/([-a-zA-Z0-9@.]+)\/tags?\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/)
|
||||||
|
if (tags) {
|
||||||
|
var tagThis = tags[2]
|
||||||
|
} else {
|
||||||
|
var tagThis = $(this).attr('data-regTag')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tagThis) {
|
||||||
|
$(this).attr('href', "javascript:tagShow('" + tagThis + "')")
|
||||||
|
|
||||||
});
|
}
|
||||||
|
})
|
||||||
|
|
||||||
//トゥートサムネ
|
//トゥートサムネ
|
||||||
$("#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 text = $(this).attr('href')
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
if (text) {
|
||||||
var card = localStorage.getItem("card_" + tlid);
|
if (text.indexOf('twimg.com') === -1) {
|
||||||
var text = $(this).attr('href');
|
|
||||||
if(text){
|
|
||||||
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 {
|
||||||
var urls =[]
|
text = ''
|
||||||
|
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 {
|
||||||
var id = $(this).parents('.cvo').attr("toot-id");
|
$(this).attr('title', text)
|
||||||
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:" + json.title + "<br>" +
|
|
||||||
json.description + "</span>");
|
|
||||||
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
|
|
||||||
$("[toot-id=" + id + "]").addClass("parsed");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}else{
|
|
||||||
$(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.readyState === 4 && this.status === 200 ) {
|
if (this.response) {
|
||||||
if( this.response){
|
var json = this.response
|
||||||
var json=this.response;
|
if (this.status !== 200) {
|
||||||
var emojis=json.emojis;
|
setLog(start, this.status, this.response)
|
||||||
for (i = 0; i < emojis.length; i++) {
|
}
|
||||||
var emojie = emojis[i];
|
var emojis = json.emojis
|
||||||
var regExp = new RegExp(dem, "g");
|
for (i = 0; i < emojis.length; i++) {
|
||||||
if (emojie.emoji.match(regExp)) {
|
var emojie = emojis[i]
|
||||||
var sc=emojie.name;
|
var regExp = new RegExp(dem, 'g')
|
||||||
var sc="twa-"+sc.replace(/_/g,"-");
|
if (emojie.emoji.match(regExp)) {
|
||||||
dom.addClass(sc);
|
var sc = emojie.name
|
||||||
dom.text("");
|
var sc = 'twa-' + sc.replace(/_/g, '-')
|
||||||
dom.removeClass("unparsed");
|
dom.addClass(sc)
|
||||||
break;
|
dom.text('')
|
||||||
}
|
dom.removeClass('unparsed')
|
||||||
}
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xmlHttpRequest.open( 'GET', start, true );
|
}
|
||||||
xmlHttpRequest.responseType = 'json';
|
}
|
||||||
xmlHttpRequest.send( null );
|
xmlHttpRequest.open('GET', start, true)
|
||||||
});
|
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)
|
||||||
$(this).attr("href","#");
|
.parents('.cvo')
|
||||||
$(this).attr("onclick","imgv('"+id+"','"+i+"')");
|
.attr('toot-id')
|
||||||
$(this).attr("data-type","image");
|
$(this).attr('href', `javascript:imgv('${id}','${i}')`)
|
||||||
$(this).attr("id",id+"-image-"+i);
|
$(this).attr('data-type', 'image')
|
||||||
$(this).attr("data-url",ilink);
|
$(this).attr('id', id + '-image-' + i)
|
||||||
$(this).addClass("img-parsed");
|
$(this).attr('data-url', ilink)
|
||||||
});
|
$(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) {
|
||||||
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
if (json.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 {
|
||||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
var id = $('[toot-id=' + id + '] .toot a')
|
||||||
var start = "https://" + domain + "/url?url="+text;
|
.parents('.cvo')
|
||||||
fetch(start, {
|
.attr('toot-id')
|
||||||
method: 'GET',
|
var start = 'https://' + domain + '/api/v1/statuses/' + id
|
||||||
headers: {
|
fetch(start, {
|
||||||
'content-type': 'application/json'
|
method: 'GET',
|
||||||
},
|
headers: {
|
||||||
//body: JSON.stringify({})
|
'content-type': 'application/json',
|
||||||
}).then(function(response) {
|
Authorization: 'Bearer ' + at
|
||||||
return response.json();
|
}
|
||||||
}).catch(function(error) {
|
//body: JSON.stringify({})
|
||||||
todo(error);
|
})
|
||||||
console.error(error);
|
.then(function(response) {
|
||||||
}).then(function(json) {
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
cards = json.card
|
||||||
|
var analyze = cardHtml(cards, acct_id, id)
|
||||||
|
$('[toot-id=' + id + '] .additional').html(analyze)
|
||||||
if (json.title) {
|
if (json.title) {
|
||||||
$("[toot-id=" + id + "] .additional").html(
|
$('[toot-id=' + id + '] a:not(.parsed)').addClass('parsed')
|
||||||
"<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + json.title + "<br>" +
|
$('[toot-id=' + id + ']').addClass('parsed')
|
||||||
json.description + "</span>");
|
|
||||||
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
|
|
||||||
$("[toot-id=" + id + "]").addClass("parsed");
|
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}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) {
|
|
||||||
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
|
|
||||||
$("[toot-id=" + id + "]").addClass("parsed");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
function cardHtml(json, acct_id, id) {
|
||||||
|
var analyze = ''
|
||||||
|
var domain = json.url.match(/^https?:\/{2,}(.*?)(?:\/|\?|#|$)/)[1];
|
||||||
|
var ok = [
|
||||||
|
"pixiv.net",
|
||||||
|
"twitter.com",
|
||||||
|
"mobile.twitter.com",
|
||||||
|
"open.spotify.com",
|
||||||
|
"youtube.com",
|
||||||
|
"youtu.be",
|
||||||
|
"m.youtube.com",
|
||||||
|
"www.youtube.com",
|
||||||
|
"nicovideo.jp",
|
||||||
|
"twitcasting.tv"
|
||||||
|
]
|
||||||
|
var isHad = _.includes(ok, domain);
|
||||||
|
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 = ''
|
||||||
|
}
|
||||||
|
analyze = `<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) {
|
||||||
|
analyze = `<span class="gray">URL
|
||||||
|
${lang.lang_cards_check}
|
||||||
|
:<br>Title:
|
||||||
|
${escapeHTML(json.title)}
|
||||||
|
<br>
|
||||||
|
${escapeHTML(json.description)}
|
||||||
|
</span>`
|
||||||
|
}
|
||||||
|
|
||||||
|
if (json.html || json.provider_name == 'Twitter') {
|
||||||
|
if(isHad) {
|
||||||
|
var prved = `<img class="emoji" draggable="false" alt="✅"
|
||||||
|
src="https://twemoji.maxcdn.com/v/12.1.3/72x72/2705.png">`
|
||||||
|
var title = lang.lang_cards_trusted
|
||||||
|
}else{
|
||||||
|
var prved = '<img class="emoji" draggable="false" alt="⚠️" src="https://twemoji.maxcdn.com/v/12.1.4/72x72/26a0.png">'
|
||||||
|
var title = lang.lang_cards_untrusted
|
||||||
|
}
|
||||||
|
analyze =`<a onclick="cardHtmlShow('${acct_id}','${id}')" class="add-show pointer" title="${title}">
|
||||||
|
${lang.lang_parse_html}(${domain})${prved}
|
||||||
|
</a>${analyze}<br>`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return analyze
|
||||||
|
}
|
||||||
|
function cardHtmlShow(acct_id, id) {
|
||||||
|
var domain = localStorage.getItem('domain_' + acct_id)
|
||||||
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||||
|
var text = $('[toot-id=' + id + '] .toot a').attr('href')
|
||||||
|
var urls = text.match(
|
||||||
|
/https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
|
||||||
|
)
|
||||||
|
var id = $('[toot-id=' + id + '] .toot a')
|
||||||
|
.parents('.cvo')
|
||||||
|
.attr('toot-id')
|
||||||
|
var start = 'https://' + domain + '/api/v1/statuses/' + id
|
||||||
|
fetch(start, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'content-type': 'application/json',
|
||||||
|
Authorization: 'Bearer ' + at
|
||||||
|
}
|
||||||
|
//body: JSON.stringify({})
|
||||||
|
})
|
||||||
|
.then(function(response) {
|
||||||
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
json = json.card
|
||||||
|
if (json.html) {
|
||||||
|
analyze =
|
||||||
|
json.html +
|
||||||
|
`<i class="material-icons sml pointer" onclick="pip('
|
||||||
|
${id}
|
||||||
|
')" title="
|
||||||
|
${lang.lang_cards_pip}
|
||||||
|
">picture_in_picture_alt</i>`
|
||||||
|
}
|
||||||
|
if (json.provider_name == 'Twitter') {
|
||||||
|
var url = json.author_url
|
||||||
|
var status = json.url.match(/^https:\/\/twitter.com\/[_a-zA-Z0-9-]+\/status\/([0-9]+)/);
|
||||||
|
var statusId = false
|
||||||
|
if(status){
|
||||||
|
if(status.length > 0){
|
||||||
|
var statusId = status[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(statusId)
|
||||||
|
if(statusId){
|
||||||
|
url = json.url
|
||||||
|
analyze = `
|
||||||
|
<blockquote class="twitter-tweet" data-dnt="true"><strong>${json.author_name}</strong><br>${json.description}<a href="${url}">${json.url}</a></blockquote>
|
||||||
|
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$('[toot-id=' + id + '] .additional').html(analyze)
|
||||||
|
})
|
||||||
|
}
|
||||||
//各TL上方のLink[On/Off]
|
//各TL上方のLink[On/Off]
|
||||||
function cardToggle(tlid) {
|
function cardToggle(tlid) {
|
||||||
var card = localStorage.getItem("card_" + tlid);
|
var card = localStorage.getItem('card_' + 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]をチェック
|
||||||
function cardCheck(tlid) {
|
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"){
|
var click = false
|
||||||
var tlide="[data-notf="+acct_id+"]";
|
if (tlid == 'notf') {
|
||||||
}else if(tlid=="user"){
|
var tlide = '[data-notf=' + acct_id + ']'
|
||||||
var tlide="#his-data";
|
} else if (tlid == 'user') {
|
||||||
}else{
|
var tlide = '#his-data'
|
||||||
var tlide="[tlid="+tlid+"]";
|
} else {
|
||||||
|
var tlide = '[tlid=' + tlid + ']'
|
||||||
}
|
}
|
||||||
console.log(tlid)
|
var mouseover = localStorage.getItem('mouseover')
|
||||||
var mouseover=localStorage.getItem("mouseover");
|
if (!mouseover) {
|
||||||
if(!mouseover){
|
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"){
|
click = true
|
||||||
mouseover="";
|
} else if (mouseover == 'no') {
|
||||||
|
mouseover = ''
|
||||||
}
|
}
|
||||||
if(mouseover=="hide"){
|
if (mouseover == 'hide') {
|
||||||
$(tlide+" [toot-id="+id+"] .area-actions").toggleClass("hide")
|
if (click) {
|
||||||
$(tlide+" [toot-id="+id+"] .area-side").toggleClass("hide")
|
$(tlide + ' [toot-id=' + id + ']').toggleClass('hide-actions')
|
||||||
|
} else {
|
||||||
|
$(tlide + ' [toot-id=' + id + ']').removeClass('hide-actions')
|
||||||
|
}
|
||||||
|
|
||||||
|
//$(tlide + " [toot-id=" + id + "] .area-vis").toggleClass("hide")
|
||||||
|
//$(tlide + " [toot-id=" + id + "] .area-actions").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");
|
$('.cvo').addClass('hide-actions')
|
||||||
$(".area-side").addClass("hide");
|
//$(".area-vis").addClass("hide");
|
||||||
|
//$(".area-actions").addClass("hide");
|
||||||
|
//$(".area-side").addClass("hide");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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());
|
||||||
|
|||||||
76
app/js/tl/directory.js
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
//ディレクトリ
|
||||||
|
//ディレクトリトグル
|
||||||
|
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) {
|
||||||
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return response.json();
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
setLog(start, "JSON", error);
|
||||||
|
console.error(error);
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
if (json) {
|
||||||
|
$("#moreDir").removeClass("disabled");
|
||||||
|
var html = userparse(json, null, acct_id, "dir", null);
|
||||||
|
$("#dir-contents").append(html);
|
||||||
|
jQuery("time.timeago").timeago();
|
||||||
|
} else {
|
||||||
|
$("#moreDir").addClass("disabled");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
497
app/js/tl/dm.js
@@ -1,80 +1,97 @@
|
|||||||
//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) {
|
})
|
||||||
return response.json();
|
.then(function(response) {
|
||||||
}).catch(function(error) {
|
if (!response.ok) {
|
||||||
todo(error);
|
response.text().then(function(text) {
|
||||||
console.error(error);
|
setLog(response.url, response.status, text);
|
||||||
}).then(function(json) {
|
});
|
||||||
var templete = '<div id="convList'+tlid+'">'+dmListParse(json, type, acct_id, tlid, "", mute)+'</div>';
|
}
|
||||||
localStorage.setItem("lastobj_"+ tlid,json[0].id)
|
return response.json();
|
||||||
$("#timeline_" + tlid).html(templete);
|
})
|
||||||
additional(acct_id, tlid);
|
.catch(function(error) {
|
||||||
jQuery("time.timeago").timeago();
|
todo(error);
|
||||||
todc();
|
setLog(start, "JSON", error);
|
||||||
//reload(type, '', acct_id, tlid, data, mute, delc,voice);
|
console.error(error);
|
||||||
$(window).scrollTop(0);
|
})
|
||||||
});
|
.then(function(json) {
|
||||||
|
var templete = '<div id="convList' + tlid + '">' + dmListParse(json, type, acct_id, tlid, "", mute) + "</div>";
|
||||||
|
localStorage.setItem("lastobj_" + tlid, json[0].id);
|
||||||
|
$("#timeline_" + tlid).html(templete);
|
||||||
|
additional(acct_id, tlid);
|
||||||
|
jQuery("time.timeago").timeago();
|
||||||
|
todc();
|
||||||
|
//reload(type, '', acct_id, tlid, data, mute, delc,voice);
|
||||||
|
$(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")
|
||||||
var start = "https://" + domain + "/api/v1/conversations?max_id="+sid;
|
.last()
|
||||||
var type="dm";
|
.attr("unique-id");
|
||||||
|
var start = "https://" + domain + "/api/v1/conversations?max_id=" + sid;
|
||||||
|
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) {
|
})
|
||||||
return response.json();
|
.then(function(response) {
|
||||||
}).catch(function(error) {
|
if (!response.ok) {
|
||||||
todo(error);
|
response.text().then(function(text) {
|
||||||
console.error(error);
|
setLog(response.url, response.status, text);
|
||||||
}).then(function(json) {
|
});
|
||||||
var templete = '<div id="convList'+tlid+'">'+dmListParse(json, type, acct_id, tlid, "", mute)+'</div>';
|
}
|
||||||
$("#timeline_" + tlid).append(templete);
|
return response.json();
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error);
|
||||||
|
setLog(start, "JSON", error);
|
||||||
|
console.error(error);
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
var templete = '<div id="convList' + tlid + '">' + dmListParse(json, type, acct_id, tlid, "", mute) + "</div>";
|
||||||
|
$("#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");
|
||||||
@@ -85,48 +102,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);
|
||||||
@@ -157,117 +174,115 @@ 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="fa fa-lock red-text"></i>';
|
var locked = ' <i class="fas fa-lock red-text"></i>';
|
||||||
} else {
|
} else {
|
||||||
var locked = "";
|
var locked = "";
|
||||||
}
|
}
|
||||||
if (!toot.application) {
|
if (!toot.application) {
|
||||||
var via = '';
|
var via = "";
|
||||||
viashow="hide";
|
viashow = "hide";
|
||||||
} else {
|
} else {
|
||||||
var via = 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,20 +290,20 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
|||||||
var spoil = escapeHTML(toot.spoiler_text);
|
var spoil = escapeHTML(toot.spoiler_text);
|
||||||
var spoiler = "cw cw_hide_" + toot.id;
|
var spoiler = "cw cw_hide_" + toot.id;
|
||||||
var api_spoil = "gray";
|
var api_spoil = "gray";
|
||||||
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
|
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) + '</span><span class="gray">' + lang.lang_parse_autofold + "</span>";
|
||||||
toot.content), 0, 100) +
|
|
||||||
'</span><span class="gray">'+lang.lang_parse_autofold+'</span>';
|
|
||||||
var spoiler = "cw cw_hide_" + toot.id;
|
var spoiler = "cw cw_hide_" + toot.id;
|
||||||
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id +
|
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);
|
||||||
@@ -296,84 +311,77 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
|||||||
var spoiler_show = "";
|
var spoiler_show = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var urls = $.strip_tags(content).replace(/\n/g, " ").match(
|
var urls = $.strip_tags(content)
|
||||||
/https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/
|
.replace(/\n/g, " ")
|
||||||
);
|
.match(/https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/);
|
||||||
if (urls) {
|
if (urls) {
|
||||||
var analyze = '<a onclick="additionalIndv(\'' + tlid + '\',' + acct_id +
|
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";
|
||||||
} else {
|
} else {
|
||||||
var sense = ""
|
var sense = "";
|
||||||
}
|
}
|
||||||
viewer = viewer + '<a onclick="imgv(\'' + id + '\',\'' + key2 + '\',\'' +
|
viewer = viewer + "<a onclick=\"imgv('" + id + "','" + key2 + "','" + acct_id + '\')" id="' + id + "-image-" + key2 + '" data-url="' + url + '" data-type="' + media.type + '" class="img-parsed"><img src="' + purl + '" class="' + sense + ' toot-img pointer" style="width:' + cwdt + "%; height:" + imh + 'px;"></a></span>';
|
||||||
acct_id + '\')" id="' + id + '-image-' + key2 + '" data-url="' + url +
|
|
||||||
'" data-type="' + media.type + '" class="img-parsed"><img src="' +
|
|
||||||
purl + '" class="' + sense +
|
|
||||||
' toot-img pointer" style="width:' + cwdt + '%; height:'+imh+'px;"></a></span>';
|
|
||||||
});
|
});
|
||||||
media_ids = media_ids.slice(0, -1) ;
|
media_ids = media_ids.slice(0, -1);
|
||||||
} else {
|
} else {
|
||||||
viewer = "";
|
viewer = "";
|
||||||
hasmedia = "nomedia";
|
hasmedia = "nomedia";
|
||||||
@@ -385,10 +393,9 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
|||||||
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> ';
|
|
||||||
});
|
});
|
||||||
mentions = '<div style="float:right">' + mentions + '</div>';
|
mentions = '<div style="float:right">' + mentions + "</div>";
|
||||||
}
|
}
|
||||||
var tagck = toot.tags[0];
|
var tagck = toot.tags[0];
|
||||||
var tags = "";
|
var tags = "";
|
||||||
@@ -396,11 +403,9 @@ function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
|||||||
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> ' + "<a onclick=\"tagPin('" + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagpin.replace("{{tag}}", "#" + tag.name) + '">Pin</a></span> ';
|
||||||
',\'add\')" class="pointer" title="' +lang.lang_parse_tagTL.replace("{{tag}}" ,'#'+tag.name)+ '">TL</a> <a onclick="brInsert(\'#' + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}" ,'#'+tag.name) + '">Toot</a> '+
|
|
||||||
'<a onclick="tagPin(\'' + tag.name + '\')" class="pointer" title="' +lang.lang_parse_tagpin.replace("{{tag}}" ,'#'+tag.name)+ '">Pin</a></span> ';
|
|
||||||
});
|
});
|
||||||
tags = '<div style="float:right">' + tags + '</div>';
|
tags = '<div style="float:right">' + tags + "</div>";
|
||||||
}
|
}
|
||||||
//アニメ再生
|
//アニメ再生
|
||||||
if (gif == "yes") {
|
if (gif == "yes") {
|
||||||
@@ -409,38 +414,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">'+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";
|
||||||
@@ -451,73 +456,43 @@ 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 = '<blockquote class="twitter-tweet"><b>' + escapeHTML(cards.author_name) + "</b><br>" + escapeHTML(cards.description) + twiImg + "</blockquote>";
|
||||||
analyze="<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + escapeHTML(cards.title) + "<br>" +
|
}
|
||||||
escapeHTML(cards.description) + "</span>";
|
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>';
|
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;"> '+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 ' + boostback + " " + fav_app + " " + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="' + media_ids + ' " unixtime="' + date(obj[key].created_at, "unix") + '" ' + if_notf + ' onclick="dmStatus()">' + '<div class="area-notice"><span class="gray sharesta">' + notice + home + "</span></div>" + '<div class="area-icon"><a onclick="udg(\'' + toot.account.id + "'," + acct_id + ');" user="' + toot.account.acct + '" class="udg">' + '<img src="' + avatar + '" width="40" class="prof-img" user="' + toot.account.acct + '"></a>' + noticeavatar + "</div>" + '<div class="area-display_name"><div class="flex-name"><span class="user">' + dis_name + '</span><span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; cursor:text;"> @' + toot.account.acct + locked + "</span></div>" + '<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' + toot.url + '\');" title="' + date(toot.created_at, "absolute") + "(" + lang.lang_parse_clickcopyurl + ')"><i class="far fa-clock-o"></i>' + date(toot.created_at, datetype) + "</span>" + "</div></div>" + '<div class="area-toot">' + tickerdom + '<span class="' + api_spoil + " cw_text_" + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show + '</span><span class="toot ' + spoiler + '">' + content + "</span>" + "" + viewer + "" + "<br><a onclick=\"details('" + toot.id + "'," + acct_id + ",'" + tlid + "','dm')\" class=\"pointer waves-effect\">" + lang.lang_parse_thread + "</a></div>" + '<div class="area-vis"></div>' + "</div></div>";
|
||||||
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' +
|
|
||||||
boostback + ' ' + fav_app +
|
|
||||||
' ' + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="'+media_ids+' " unixtime="' + date(obj[
|
|
||||||
key].created_at, 'unix') + '" '+if_notf+' onclick="dmStatus()">' +
|
|
||||||
'<div class="area-notice"><span class="gray sharesta">' + notice + home +
|
|
||||||
'</span></div>' +
|
|
||||||
'<div class="area-icon"><a onclick="udg(\'' + toot.account.id +
|
|
||||||
'\',' + acct_id + ');" user="' + toot.account.acct + '" class="udg">' +
|
|
||||||
'<img src="' + avatar +
|
|
||||||
'" width="40" class="prof-img" user="' + toot.account.acct +
|
|
||||||
'"></a>'+noticeavatar+'</div>' +
|
|
||||||
'<div class="area-display_name"><div class="flex-name"><span class="user">' +
|
|
||||||
dis_name +
|
|
||||||
'</span><span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; cursor:text;"> @' +
|
|
||||||
toot.account.acct + locked + '</span></div>' +
|
|
||||||
'<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' +
|
|
||||||
toot.url + '\');" title="' + date(toot.created_at, 'absolute') +
|
|
||||||
'('+lang.lang_parse_clickcopyurl+')"><i class="fa fa-clock-o"></i>' +
|
|
||||||
date(toot.created_at, datetype) + '</span>' +
|
|
||||||
'</div></div>' +
|
|
||||||
'<div class="area-toot">'+tickerdom+'<span class="' +
|
|
||||||
api_spoil + ' cw_text_' + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show +
|
|
||||||
'</span><span class="toot ' + spoiler + '">' + content +
|
|
||||||
'</span>' +
|
|
||||||
'' + viewer + '' +
|
|
||||||
'<br><a onclick="details(\'' + toot.id + '\',' + acct_id +
|
|
||||||
',\''+tlid+'\',\'dm\')" class="pointer waves-effect">'+lang.lang_parse_thread+'</a></div>'+
|
|
||||||
'<div class="area-vis"></div>'+
|
|
||||||
'</div></div>';
|
|
||||||
});
|
});
|
||||||
return templete;
|
return templete;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,384 +1,448 @@
|
|||||||
/*メディアフィルター機能*/
|
/*メディアフィルター機能*/
|
||||||
//各TL上方のMedia[On/Off]
|
//各TL上方のMedia[On/Off]
|
||||||
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]をチェック
|
||||||
function mediaCheck(tlid) {
|
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();
|
parseColumn(tlid)
|
||||||
} 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();
|
parseColumn(tlid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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) {
|
})
|
||||||
return response.json();
|
.then(function(response) {
|
||||||
}).catch(function(error) {
|
if (!response.ok) {
|
||||||
todo(error);
|
response.text().then(function(text) {
|
||||||
console.error(error);
|
setLog(response.url, response.status, text)
|
||||||
}).then(function(json) {
|
})
|
||||||
console.log(json);
|
|
||||||
if (json) {
|
|
||||||
var filters = "";
|
|
||||||
Object.keys(json).forEach(function(key) {
|
|
||||||
var filterword = json[key];
|
|
||||||
var context = filterword.context.join(',');
|
|
||||||
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_del+'</a><br> ';
|
|
||||||
});
|
|
||||||
if(filters==""){
|
|
||||||
filters=lang.lang_filter_nodata+"<br>";
|
|
||||||
}
|
}
|
||||||
$("#filtered-words").html(filters);
|
return response.json()
|
||||||
}else{
|
})
|
||||||
$("#filtered-words").html(lang_filter_nodata);
|
.catch(function(error) {
|
||||||
}
|
todo(error)
|
||||||
});
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
if (json) {
|
||||||
|
var filters = ''
|
||||||
|
Object.keys(json).forEach(function(key) {
|
||||||
|
var filterword = json[key]
|
||||||
|
var context = filterword.context.join(',')
|
||||||
|
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_del}
|
||||||
|
</a><br> `
|
||||||
|
})
|
||||||
|
if (filters == '') {
|
||||||
|
filters = lang.lang_filter_nodata + '<br>'
|
||||||
|
}
|
||||||
|
$('#filtered-words').html(filters)
|
||||||
|
} else {
|
||||||
|
$('#filtered-words').html(lang_filter_nodata)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
function makeNewFilter(){
|
function filterTime(day, hour, min) {
|
||||||
var acct_id = $("#filter-acct-sel").val();
|
$('#days_filter').val(day)
|
||||||
var phr=$("#filter-add-word").val();
|
$('#hours_filter').val(hour)
|
||||||
var cont=[];
|
$('#mins_filter').val(min)
|
||||||
if($("#home_filter:checked").val()){
|
}
|
||||||
cont.push("home");
|
function makeNewFilter() {
|
||||||
|
var acct_id = $('#filter-acct-sel').val()
|
||||||
|
var phr = $('#filter-add-word').val()
|
||||||
|
var cont = []
|
||||||
|
if ($('#home_filter:checked').val()) {
|
||||||
|
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')
|
||||||
}
|
}
|
||||||
console.log(cont);
|
if (!cont.length) {
|
||||||
if(!cont.length){
|
$('#filtered-words').html('Error:' + lang.lang_filter_errordegree)
|
||||||
$("#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 =
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
$('#days_filter').val() * 24 * 60 * 60 +
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
$('#hours_filter').val() * 60 * 60 +
|
||||||
if($("#filter-edit-id").val()){
|
$('#mins_filter').val() * 60
|
||||||
var start = "https://" + domain + "/api/v1/filters/"+$("#filter-edit-id").val();
|
var domain = localStorage.getItem('domain_' + acct_id)
|
||||||
var method="PUT"
|
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||||
}else{
|
if ($('#filter-edit-id').val()) {
|
||||||
var start = "https://" + domain + "/api/v1/filters"
|
var start = 'https://' + domain + '/api/v1/filters/' + $('#filter-edit-id').val()
|
||||||
var method="POST"
|
var method = 'PUT'
|
||||||
|
} else {
|
||||||
|
var start = 'https://' + domain + '/api/v1/filters'
|
||||||
|
var method = 'POST'
|
||||||
}
|
}
|
||||||
|
|
||||||
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({
|
httpreq.send(
|
||||||
phrase: phr,
|
JSON.stringify({
|
||||||
context: cont,
|
phrase: phr,
|
||||||
irreversible: exc,
|
context: cont,
|
||||||
whole_word:who,
|
irreversible: exc,
|
||||||
expires_in:time
|
whole_word: who,
|
||||||
}));
|
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();
|
if (this.status !== 200) {
|
||||||
|
setLog(start, this.status, this.response)
|
||||||
|
}
|
||||||
|
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')
|
||||||
$("#add-filter-btn").text(lang.lang_add);
|
$('#add-filter-btn').text(lang.lang_add)
|
||||||
$("#filter-edit-id").val("")
|
$('#filter-edit-id').val('')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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) {
|
|
||||||
return response.json();
|
|
||||||
}).catch(function(error) {
|
|
||||||
todo(error);
|
|
||||||
console.error(error);
|
|
||||||
}).then(function(json) {
|
|
||||||
console.log(json);
|
|
||||||
if (json) {
|
|
||||||
var now = new Date() ;
|
|
||||||
now = now.getTime() ;
|
|
||||||
var now = Math.floor(now / 1000 ) ;
|
|
||||||
$("#filter-add-word").val(json.phrase);
|
|
||||||
Object.keys(json.context).forEach(function(key) {
|
|
||||||
var context = json.context[key];
|
|
||||||
$("[value="+context+"]").prop("checked",true);
|
|
||||||
});
|
|
||||||
if(json.irreversible){
|
|
||||||
$("#except_filter").prop("checked",true);
|
|
||||||
}
|
|
||||||
if(json.whole_word){
|
|
||||||
$("#wholeword_filter").prop("checked",true);
|
|
||||||
}
|
|
||||||
var expires=date(json.expires_at, 'unix')-now;
|
|
||||||
var mins=Math.floor(expires/60)%60;
|
|
||||||
var hours=Math.floor(expires/3600)%24;
|
|
||||||
var days=Math.floor(expires/3600/24);
|
|
||||||
$("#days_filter").val(days);
|
|
||||||
$("#hours_filter").val(hours);
|
|
||||||
$("#mins_filter").val(mins);
|
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
|
.then(function(response) {
|
||||||
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
if (json) {
|
||||||
|
var now = new Date()
|
||||||
|
now = now.getTime()
|
||||||
|
var now = Math.floor(now / 1000)
|
||||||
|
$('#filter-add-word').val(json.phrase)
|
||||||
|
Object.keys(json.context).forEach(function(key) {
|
||||||
|
var context = json.context[key]
|
||||||
|
$('[value=' + context + ']').prop('checked', true)
|
||||||
|
})
|
||||||
|
if (json.irreversible) {
|
||||||
|
$('#except_filter').prop('checked', true)
|
||||||
|
}
|
||||||
|
if (json.whole_word) {
|
||||||
|
$('#wholeword_filter').prop('checked', true)
|
||||||
|
}
|
||||||
|
var expires = date(json.expires_at, 'unix') - now
|
||||||
|
var mins = Math.floor(expires / 60) % 60
|
||||||
|
var hours = Math.floor(expires / 3600) % 24
|
||||||
|
var days = Math.floor(expires / 3600 / 24)
|
||||||
|
$('#days_filter').val(days)
|
||||||
|
$('#hours_filter').val(hours)
|
||||||
|
$('#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();
|
if (this.status !== 200) {
|
||||||
|
setLog(start, this.status, this.response)
|
||||||
|
}
|
||||||
|
filter()
|
||||||
filterUpdate(acct_id)
|
filterUpdate(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'
|
||||||
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();
|
if (!response.ok) {
|
||||||
}).catch(function(error) {
|
response.text().then(function(text) {
|
||||||
todo(error);
|
setLog(response.url, response.status, text)
|
||||||
console.error(error);
|
})
|
||||||
}).then(function(json) {
|
}
|
||||||
localStorage.setItem("filter_"+ acct_id ,JSON.stringify(json));
|
return response.json()
|
||||||
});
|
})
|
||||||
}else{
|
.catch(function(error) {
|
||||||
localStorage.setItem("filter_"+ acct_id ,JSON.stringify({}));
|
todo(error)
|
||||||
|
setLog(start, 'JSON', 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){
|
function getFilterType(json, type) {
|
||||||
if(!json){
|
if (!json) {
|
||||||
return [];
|
return []
|
||||||
}
|
}
|
||||||
if(type=="local"){
|
if (type == 'local') {
|
||||||
type="public";
|
type = 'public'
|
||||||
}else if(type=="list"){
|
} else if (type == 'list') {
|
||||||
type="home";
|
type = 'home'
|
||||||
}else if(type=="notf"){
|
} else if (type == 'notf') {
|
||||||
type="notifi";
|
type = 'notifi'
|
||||||
}
|
}
|
||||||
var mutedfilters=[];
|
var mutedfilters = []
|
||||||
Object.keys(json).forEach(function(key) {
|
Object.keys(json).forEach(function(key) {
|
||||||
var filterword = json[key];
|
var filterword = json[key]
|
||||||
var phrases = filterword.phrase;
|
var phrases = filterword.phrase
|
||||||
if(filterword.context.join(",").indexOf(type)!== -1){
|
var arr = filterword.context
|
||||||
mutedfilters.push(phrases);
|
if (arr.join(',').indexOf(type) !== -1) {
|
||||||
|
mutedfilters.push(phrases)
|
||||||
|
} else if (type == 'mix'){
|
||||||
|
if (arr.indexOf('home') !== -1 || arr.indexOf('public') !== -1) {
|
||||||
|
mutedfilters.push(phrases)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
return mutedfilters;
|
return mutedfilters
|
||||||
}
|
}
|
||||||
function filterUpdate(acct_id){
|
function getFilterTypeByAcct(acct_id, type) {
|
||||||
var domain = localStorage.getItem("domain_" + acct_id);
|
if (localStorage.getItem('filter_' + acct_id) != 'undefined') {
|
||||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
var mute = getFilterType(JSON.parse(localStorage.getItem('filter_' + acct_id)), type)
|
||||||
var start = "https://" + domain + "/api/v1/filters"
|
} else {
|
||||||
console.log(start)
|
var mute = []
|
||||||
|
}
|
||||||
|
return mute
|
||||||
|
}
|
||||||
|
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) {
|
})
|
||||||
return response.json();
|
.then(function(response) {
|
||||||
}).catch(function(error) {
|
if (!response.ok) {
|
||||||
todo(error);
|
response.text().then(function(text) {
|
||||||
console.error(error);
|
setLog(response.url, response.status, text)
|
||||||
}).then(function(json) {
|
})
|
||||||
localStorage.setItem("filter_"+ acct_id ,JSON.stringify(json));
|
}
|
||||||
filterUpdateInternal(json,"home");
|
return response.json()
|
||||||
filterUpdateInternal(json,"local");
|
})
|
||||||
filterUpdateInternal(json,"notf");
|
.catch(function(error) {
|
||||||
filterUpdateInternal(json,"pub");
|
todo(error)
|
||||||
});
|
setLog(start, 'JSON', 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)
|
||||||
Object.keys(home).forEach(function(key8) {
|
.find('.toot')
|
||||||
var word = home[key8];
|
.html()
|
||||||
var regExp = new RegExp( word, "g" );
|
Object.keys(home).forEach(function(key8) {
|
||||||
if($.strip_tags(text).match(regExp)){
|
var word = home[key8]
|
||||||
$("[toot-id="+id+"]").addClass("hide");
|
var regExp = new RegExp(word.replace(/[.*+?^=!:${}()|[\]\/\\]/g, '\\$&'), 'g')
|
||||||
}
|
if ($.strip_tags(text).match(regExp)) {
|
||||||
});
|
$('[toot-id=' + id + ']').addClass('hide')
|
||||||
});
|
}
|
||||||
}
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
<a onclick="catchToggle(' + key +
|
<a onclick="catchToggle(' + key +
|
||||||
@@ -387,63 +451,74 @@ function filterUpdateInternal(json,type){
|
|||||||
')" class="pointer">リセット</a><br>
|
')" class="pointer">リセット</a><br>
|
||||||
*/
|
*/
|
||||||
//通知フィルター
|
//通知フィルター
|
||||||
function exclude(key){
|
function exclude(key) {
|
||||||
var excludetxt="";
|
localStorage.setItem('exclude-' + key, '')
|
||||||
if($('#exc-reply-'+key+':checked').val()){
|
var excludetxt = localStorage.getItem('exclude-' + key)
|
||||||
excludetxt="?exclude_types[]=mention"
|
if ($('#exc-reply-' + key + ':checked').val()) {
|
||||||
var reply=true
|
excludetxt = '?exclude_types[]=mention'
|
||||||
}else{
|
|
||||||
var reply=false;
|
|
||||||
}
|
}
|
||||||
if($('#exc-fav-'+key+':checked').val()){
|
if ($('#exc-fav-' + key + ':checked').val()) {
|
||||||
if(reply){
|
if (excludetxt || excludetxt != '') {
|
||||||
excludetxt=excludetxt+"&exclude_types[]=favourite"
|
excludetxt = excludetxt + '&exclude_types[]=favourite'
|
||||||
}else{
|
} else {
|
||||||
excludetxt="?exclude_types[]=favourite"
|
excludetxt = '?exclude_types[]=favourite'
|
||||||
}
|
}
|
||||||
var fav=true
|
|
||||||
}else{
|
|
||||||
var fav=false;
|
|
||||||
}
|
}
|
||||||
if($('#exc-bt-'+key+':checked').val()){
|
if ($('#exc-bt-' + key + ':checked').val()) {
|
||||||
if(reply || fav){
|
if (excludetxt || excludetxt != '') {
|
||||||
excludetxt=excludetxt+"&exclude_types[]=reblog"
|
excludetxt = excludetxt + '&exclude_types[]=reblog'
|
||||||
}else{
|
} else {
|
||||||
excludetxt="?exclude_types[]=reblog"
|
excludetxt = '?exclude_types[]=reblog'
|
||||||
}
|
}
|
||||||
var bt=true
|
|
||||||
}else{
|
|
||||||
var bt=false;
|
|
||||||
}
|
}
|
||||||
if($('#exc-follow-'+key+':checked').val()){
|
if ($('#exc-follow-' + key + ':checked').val()) {
|
||||||
if(reply || bt || fav){
|
if (excludetxt || excludetxt != '') {
|
||||||
excludetxt=excludetxt+"&exclude_types[]=follow"
|
excludetxt = excludetxt + '&exclude_types[]=follow'
|
||||||
}else{
|
} else {
|
||||||
excludetxt="?exclude_types[]=follow"
|
excludetxt = '?exclude_types[]=follow'
|
||||||
}
|
}
|
||||||
var follow=true;
|
|
||||||
}else{
|
|
||||||
var follow=false;
|
|
||||||
}
|
}
|
||||||
if($('#exc-poll-'+key+':checked').val()){
|
if ($('#exc-poll-' + key + ':checked').val()) {
|
||||||
if(reply || bt || fav || follow){
|
if (excludetxt || excludetxt != '') {
|
||||||
excludetxt=excludetxt+"&exclude_types[]=poll"
|
excludetxt = excludetxt + '&exclude_types[]=poll'
|
||||||
}else{
|
} else {
|
||||||
excludetxt="?exclude_types[]=poll"
|
excludetxt = '?exclude_types[]=poll'
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
}
|
}
|
||||||
localStorage.setItem("exclude-"+key,excludetxt)
|
localStorage.setItem('exclude-' + key, excludetxt)
|
||||||
parseColumn();
|
parseColumn(key)
|
||||||
}
|
}
|
||||||
function excludeCk(key,target){
|
function excludeCk(key, target) {
|
||||||
var exc=localStorage.getItem("exclude-"+key);
|
var exc = localStorage.getItem('exclude-' + key)
|
||||||
if(!exc){
|
if (!exc) {
|
||||||
return "";
|
return ''
|
||||||
}
|
}
|
||||||
if(~exc.indexOf(target)){
|
if (~exc.indexOf(target)) {
|
||||||
return "checked"
|
return 'checked'
|
||||||
}else{
|
} else {
|
||||||
return "";
|
return ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function checkNotfFilter(tlid) {
|
||||||
|
var excludetxt = localStorage.getItem('exclude-' + tlid)
|
||||||
|
if (!excludetxt || excludetxt != '') {
|
||||||
|
return true
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function resetNotfFilter(tlid) {
|
||||||
|
localStorage.setItem('exclude-' + tlid, '')
|
||||||
|
parseColumn(tlid)
|
||||||
|
}
|
||||||
|
function notfFilter(id, tlid, acct_id) {
|
||||||
|
var excludetxt = localStorage.getItem('exclude-' + tlid)
|
||||||
|
if (excludetxt || excludetxt != '') {
|
||||||
|
excludetxt = excludetxt + '&account_id=' + id
|
||||||
|
} else {
|
||||||
|
excludetxt = '?account_id=' + id
|
||||||
|
}
|
||||||
|
localStorage.setItem('exclude-' + tlid, excludetxt)
|
||||||
|
parseColumn(tlid)
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,195 +1,384 @@
|
|||||||
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') {
|
||||||
var start = "https://" + domain + "/api/v1/lists"
|
var start = 'https://' + domain + '/api/users/lists/list'
|
||||||
console.log(start)
|
fetch(start, {
|
||||||
fetch(start, {
|
method: 'POST',
|
||||||
method: 'GET',
|
body: JSON.stringify({
|
||||||
headers: {
|
i: at
|
||||||
'content-type': 'application/json',
|
})
|
||||||
'Authorization': 'Bearer ' + at
|
})
|
||||||
},
|
.then(function(response) {
|
||||||
}).then(function(response) {
|
if (!response.ok) {
|
||||||
return response.json();
|
response.text().then(function(text) {
|
||||||
}).catch(function(error) {
|
setLog(response.url, response.status, text)
|
||||||
todo(error);
|
})
|
||||||
console.error(error);
|
}
|
||||||
}).then(function(json) {
|
return response.json()
|
||||||
if (json) {
|
})
|
||||||
var lists = "";
|
.catch(function(error) {
|
||||||
Object.keys(json).forEach(function(key) {
|
todo(error)
|
||||||
var list = json[key];
|
setLog(start, 'JSON', error)
|
||||||
lists = lists + list.title+':<a onclick="listShow(' + list.id + ',\'' + list.title + '\',\'' + acct_id +
|
console.error(error)
|
||||||
'\')" class="pointer">'+lang.lang_list_show+'</a>/<a onclick="listUser(' + list.id + ',' + acct_id +
|
})
|
||||||
')" class="pointer">'+lang.lang_list_users+'</a><br> ';
|
.then(function(json) {
|
||||||
});
|
if (json) {
|
||||||
$("#lists").html(lists);
|
var lists = ''
|
||||||
}else{
|
Object.keys(json).forEach(function(key) {
|
||||||
$("#lists").html(lang.lang_list_nodata);
|
var list = json[key]
|
||||||
}
|
lists =
|
||||||
});
|
lists +
|
||||||
|
escapeHTML(list.title) +
|
||||||
|
`:<a onclick="listShow('${list.id}','${escapeHTML(
|
||||||
|
list.title
|
||||||
|
)}','${acct_id}')" class="pointer">
|
||||||
|
${lang.lang_list_show}
|
||||||
|
</a><br>`
|
||||||
|
})
|
||||||
|
$('#lists').html(lists)
|
||||||
|
} else {
|
||||||
|
$('#lists').html(lang.lang_list_nodata)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
var start = 'https://' + domain + '/api/v1/lists'
|
||||||
|
fetch(start, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'content-type': 'application/json',
|
||||||
|
Authorization: 'Bearer ' + at
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(function(response) {
|
||||||
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
if (json) {
|
||||||
|
var lists = ''
|
||||||
|
Object.keys(json).forEach(function(key) {
|
||||||
|
var list = json[key]
|
||||||
|
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_users}
|
||||||
|
'</a><br>`
|
||||||
|
})
|
||||||
|
$('#lists').html(lists)
|
||||||
|
} else {
|
||||||
|
$('#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')
|
||||||
var start = "https://" + domain + "/api/v1/lists"
|
if (localStorage.getItem('mode_' + domain) != 'misskey') {
|
||||||
console.log(start)
|
var start = 'https://' + domain + '/api/v1/lists'
|
||||||
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({
|
httpreq.send(
|
||||||
title: text
|
JSON.stringify({
|
||||||
}));
|
title: text
|
||||||
httpreq.onreadystatechange = function() {
|
})
|
||||||
if (httpreq.readyState === 4) {
|
)
|
||||||
var json = httpreq.response;
|
httpreq.onreadystatechange = function() {
|
||||||
list();
|
if (httpreq.readyState === 4) {
|
||||||
$("#list-add").val("")
|
var json = httpreq.response
|
||||||
|
if (this.status !== 200) {
|
||||||
|
setLog(start, this.status, this.response)
|
||||||
|
}
|
||||||
|
list()
|
||||||
|
$('#list-add').val('')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var start = 'https://' + domain + '/api/users/lists/create'
|
||||||
|
var httpreq = new XMLHttpRequest()
|
||||||
|
httpreq.open('POST', start, true)
|
||||||
|
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||||
|
httpreq.responseType = 'json'
|
||||||
|
httpreq.send(
|
||||||
|
JSON.stringify({
|
||||||
|
i: at,
|
||||||
|
title: text
|
||||||
|
})
|
||||||
|
)
|
||||||
|
httpreq.onreadystatechange = function() {
|
||||||
|
if (httpreq.readyState === 4) {
|
||||||
|
var json = httpreq.response
|
||||||
|
if (this.status !== 200) {
|
||||||
|
setLog(start, this.status, this.response)
|
||||||
|
}
|
||||||
|
list()
|
||||||
|
$('#list-add').val('')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function listShow(id,title,acct_id){
|
function listShow(id, title, acct_id) {
|
||||||
localStorage.setItem("list_"+id+"_"+acct_id,title);
|
localStorage.setItem('list_' + id + '_' + acct_id, title)
|
||||||
tl('list',id,acct_id,'add');
|
tl('list', id, acct_id, 'add')
|
||||||
}
|
}
|
||||||
function listUser(id,acct_id){
|
function listUser(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/lists/"+id+"/accounts"
|
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) {
|
})
|
||||||
return response.json();
|
.then(function(response) {
|
||||||
}).catch(function(error) {
|
if (!response.ok) {
|
||||||
todo(error);
|
response.text().then(function(text) {
|
||||||
console.error(error);
|
setLog(response.url, response.status, text)
|
||||||
}).then(function(json) {
|
})
|
||||||
if (json) {
|
}
|
||||||
var lists = "";
|
return response.json()
|
||||||
var templete = userparse(json,'',acct_id);
|
})
|
||||||
if(!json[0]){
|
.catch(function(error) {
|
||||||
templete=lang.lang_list_nouser;
|
todo(error)
|
||||||
}
|
setLog(start, 'JSON', error)
|
||||||
$("#lists-user").html(templete);
|
console.error(error)
|
||||||
}else{
|
})
|
||||||
$("#lists-user").html(lang.lang_list_nouser);
|
.then(function(json) {
|
||||||
}
|
if (json) {
|
||||||
});
|
var lists = ''
|
||||||
|
var templete = userparse(json, '', acct_id)
|
||||||
|
if (!json[0]) {
|
||||||
|
templete = lang.lang_list_nouser
|
||||||
|
}
|
||||||
|
$('#lists-user').html(templete)
|
||||||
|
jQuery('time.timeago').timeago()
|
||||||
|
} else {
|
||||||
|
$('#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')
|
||||||
var start = "https://" + domain + "/api/v1/lists"
|
if (localStorage.getItem('mode_' + domain) != 'misskey') {
|
||||||
console.log(start)
|
var start = 'https://' + domain + '/api/v1/lists'
|
||||||
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) {
|
})
|
||||||
return response.json();
|
.then(function(response) {
|
||||||
}).catch(function(error) {
|
if (!response.ok) {
|
||||||
todo(error);
|
response.text().then(function(text) {
|
||||||
console.error(error);
|
setLog(response.url, response.status, text)
|
||||||
}).then(function(json) {
|
})
|
||||||
if (json) {
|
}
|
||||||
var lists = lang.lang_list_add+"<br>";
|
return response.json()
|
||||||
Object.keys(json).forEach(function(key) {
|
})
|
||||||
var list = json[key];
|
.catch(function(error) {
|
||||||
lists = lists + '<a onclick="listAdd(' + list.id + ',\'' + user + '\',\'' + acct_id +
|
todo(error)
|
||||||
'\')" class="pointer">'+escapeHTML(list.title)+'</a><br> ';
|
setLog(start, 'JSON', error)
|
||||||
});
|
console.error(error)
|
||||||
$("#his-lists-a").html(lists);
|
})
|
||||||
}else{
|
.then(function(json) {
|
||||||
$("#his-lists-a").html(lang.lang_list_nodata);
|
if (json) {
|
||||||
}
|
var lists = lang.lang_list_add + '<br>'
|
||||||
});
|
Object.keys(json).forEach(function(key) {
|
||||||
var start = "https://" + domain + "/api/v1/accounts/"+user+"/lists"
|
var list = json[key]
|
||||||
console.log(start)
|
lists =
|
||||||
fetch(start, {
|
lists +
|
||||||
method: 'GET',
|
`<a onclick="listAdd('${list.id}','${user}','${acct_id}')" class="pointer">
|
||||||
headers: {
|
${escapeHTML(list.title)}
|
||||||
'content-type': 'application/json',
|
</a><br> `
|
||||||
'Authorization': 'Bearer ' + at
|
})
|
||||||
},
|
$('#his-lists-a').html(lists)
|
||||||
}).then(function(response) {
|
} else {
|
||||||
return response.json();
|
$('#his-lists-a').html(lang.lang_list_nodata)
|
||||||
}).catch(function(error) {
|
}
|
||||||
todo(error);
|
})
|
||||||
console.error(error);
|
var start = 'https://' + domain + '/api/v1/accounts/' + user + '/lists'
|
||||||
}).then(function(json) {
|
fetch(start, {
|
||||||
if (json) {
|
method: 'GET',
|
||||||
var lists = lang.lang_list_remove+"<br>";
|
headers: {
|
||||||
Object.keys(json).forEach(function(key) {
|
'content-type': 'application/json',
|
||||||
var list = json[key];
|
Authorization: 'Bearer ' + at
|
||||||
lists = lists + '<a onclick="listRemove(' + list.id + ',\'' + user + '\',\'' + acct_id +
|
}
|
||||||
'\')" class="pointer">'+list.title+'</a><br> ';
|
})
|
||||||
});
|
.then(function(response) {
|
||||||
$("#his-lists-b").html(lists);
|
if (!response.ok) {
|
||||||
}else{
|
response.text().then(function(text) {
|
||||||
$("#his-lists-b").html(lang.lang_list_nodata);
|
setLog(response.url, response.status, text)
|
||||||
}
|
})
|
||||||
});
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
if (json) {
|
||||||
|
var lists = lang.lang_list_remove + '<br>'
|
||||||
|
Object.keys(json).forEach(function(key) {
|
||||||
|
var list = json[key]
|
||||||
|
lists =
|
||||||
|
lists +
|
||||||
|
`<a onclick="listRemove('${list.id}','${user}','${acct_id}')" class="pointer">
|
||||||
|
${escapeHTML(list.title)}
|
||||||
|
</a><br> `
|
||||||
|
})
|
||||||
|
$('#his-lists-b').html(lists)
|
||||||
|
} else {
|
||||||
|
$('#his-lists-b').html(lang.lang_list_nodata)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
var start = 'https://' + domain + '/api/users/lists/list'
|
||||||
|
fetch(start, {
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify({
|
||||||
|
i: at
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(function(response) {
|
||||||
|
if (!response.ok) {
|
||||||
|
response.text().then(function(text) {
|
||||||
|
setLog(response.url, response.status, text)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return response.json()
|
||||||
|
})
|
||||||
|
.catch(function(error) {
|
||||||
|
todo(error)
|
||||||
|
setLog(start, 'JSON', error)
|
||||||
|
console.error(error)
|
||||||
|
})
|
||||||
|
.then(function(json) {
|
||||||
|
if (json) {
|
||||||
|
var lists = ''
|
||||||
|
Object.keys(json).forEach(function(key) {
|
||||||
|
var list = json[key]
|
||||||
|
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_add}
|
||||||
|
${lang.lang_list_add_misskey}
|
||||||
|
'</a><br>`
|
||||||
|
})
|
||||||
|
$('#his-lists-a').html(lists)
|
||||||
|
} else {
|
||||||
|
$('#his-lists-a').html(lang.lang_list_nodata)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
$('#his-lists-b').html('')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
function listAdd(id,user,acct_id){
|
function listAdd(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')
|
||||||
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
||||||
console.log(start)
|
var start = 'https://' + domain + '/api/users/lists/push'
|
||||||
var httpreq = new XMLHttpRequest();
|
var i = {
|
||||||
httpreq.open('POST', start, true);
|
i: at,
|
||||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
listId: id,
|
||||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
userId: user
|
||||||
httpreq.responseType = "json";
|
}
|
||||||
httpreq.send(JSON.stringify({
|
} else {
|
||||||
account_ids: [user]
|
var start = 'https://' + domain + '/api/v1/lists/' + id + '/accounts'
|
||||||
}));
|
var i = {
|
||||||
httpreq.onreadystatechange = function() {
|
account_ids: [user]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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(JSON.stringify(i))
|
||||||
|
httpreq.onreadystatechange = function() {
|
||||||
if (httpreq.readyState === 4) {
|
if (httpreq.readyState === 4) {
|
||||||
var json = httpreq.response;
|
var json = httpreq.response
|
||||||
hisList(user,acct_id)
|
if (this.status !== 200) {
|
||||||
|
setLog(start, this.status, this.response)
|
||||||
|
}
|
||||||
|
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')
|
||||||
var start = "https://" + domain + "/api/v1/lists/"+id+"/accounts"
|
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
||||||
console.log(start)
|
var start = 'https://' + domain + '/api/users/lists/push'
|
||||||
var httpreq = new XMLHttpRequest();
|
var method = 'POST'
|
||||||
httpreq.open('DELETE', start, true);
|
var i = {
|
||||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
i: at,
|
||||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
listId: id,
|
||||||
httpreq.responseType = "json";
|
userId: user
|
||||||
httpreq.send(JSON.stringify({
|
}
|
||||||
account_ids: [user]
|
} else {
|
||||||
}));
|
var start = 'https://' + domain + '/api/v1/lists/' + id + '/accounts'
|
||||||
httpreq.onreadystatechange = function() {
|
var method = 'DELETE'
|
||||||
|
var i = {
|
||||||
|
account_ids: [user]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var httpreq = new XMLHttpRequest()
|
||||||
|
httpreq.open(method, start, true)
|
||||||
|
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||||
|
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||||
|
httpreq.responseType = 'json'
|
||||||
|
httpreq.send(JSON.stringify(i))
|
||||||
|
httpreq.onreadystatechange = function() {
|
||||||
if (httpreq.readyState === 4) {
|
if (httpreq.readyState === 4) {
|
||||||
var json = httpreq.response;
|
var json = httpreq.response
|
||||||
hisList(user,acct_id)
|
if (this.status !== 200) {
|
||||||
|
setLog(start, this.status, this.response)
|
||||||
|
}
|
||||||
|
hisList(user, acct_id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||