Compare commits
611 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a10a4d02b4 | ||
|
|
6805ed32fb | ||
|
|
1f2740b01e | ||
|
|
74af696ad5 | ||
|
|
ec3c2369bc | ||
|
|
c0a6ecec4d | ||
|
|
7169f1147b | ||
|
|
8873af4597 | ||
|
|
859acad27c | ||
|
|
44943e0e14 | ||
|
|
640847416a | ||
|
|
35122db142 | ||
|
|
994ec964d6 | ||
|
|
5508862ba1 | ||
|
|
075a120856 | ||
|
|
f34e2e6bbf | ||
|
|
64296c69d3 | ||
|
|
f4d250eeb3 | ||
|
|
750c74ae69 | ||
|
|
525dd5ec52 | ||
|
|
89bb8d6496 | ||
|
|
a7399db3f1 | ||
|
|
790ab2065c | ||
|
|
fa20278727 | ||
|
|
f2a4900f18 | ||
|
|
fd3afb6354 | ||
|
|
4a4dc82c40 | ||
|
|
54db978b6f | ||
|
|
1a35eda46f | ||
|
|
7d9ab19eef | ||
|
|
bdfeae20f2 | ||
|
|
9931ecd577 | ||
|
|
99c2f0fc8d | ||
|
|
58d9228aec | ||
|
|
85738d72ae | ||
|
|
2fe60a3b69 | ||
|
|
06c944a35d | ||
|
|
0f75972616 | ||
|
|
f55b08cbf3 | ||
|
|
51814e49d7 | ||
|
|
36d8a00a49 | ||
|
|
1c8ca3b5f9 | ||
|
|
1cbd6992e3 | ||
|
|
1f3a27325b | ||
|
|
890ec772f9 | ||
|
|
b072012976 | ||
|
|
8982058a25 | ||
|
|
fb95e077e9 | ||
|
|
dc08f46909 | ||
|
|
3e6a47d5f7 | ||
|
|
aabcfb230f | ||
|
|
ee99a660c2 | ||
|
|
5063061a70 | ||
|
|
c3ce7bd516 | ||
|
|
95efd96c3e | ||
|
|
abf5274c06 | ||
|
|
db5d3182bc | ||
|
|
0527c978ce | ||
|
|
b36de5dc26 | ||
|
|
92b47e56f7 | ||
|
|
fc967f92f3 | ||
|
|
1882bbf0b6 | ||
|
|
a3fed1f6f0 | ||
|
|
eae0fd1768 | ||
|
|
a7a99fc3a2 | ||
|
|
fedd80477b | ||
|
|
844d145e09 | ||
|
|
a817c14925 | ||
|
|
70e145eceb | ||
|
|
438f11c11d | ||
|
|
edf75d1915 | ||
|
|
9de26d9998 | ||
|
|
ab5a786197 | ||
|
|
272b613e18 | ||
|
|
35c10e0c7d | ||
|
|
7795adf173 | ||
|
|
dca2e5fdab | ||
|
|
eb6dcdfa5d | ||
|
|
9f4f788519 | ||
|
|
1d7588e4e4 | ||
|
|
81c476c1bb | ||
|
|
ccc44ca769 | ||
|
|
82c5a853cb | ||
|
|
e11af25ba6 | ||
|
|
16b68bb190 | ||
|
|
051dbb3b1b | ||
|
|
bdf2b9be71 | ||
|
|
0b6a76d01a | ||
|
|
bd1e1f7ee8 | ||
|
|
e9c7ffe825 | ||
|
|
9e735bc7df | ||
|
|
eefc03c4f3 | ||
|
|
135caffaec | ||
|
|
c1f7abac58 | ||
|
|
a325c50f1f | ||
|
|
37daa5638b | ||
|
|
8118806f4e | ||
|
|
3f7aaa7e99 | ||
|
|
700de676d0 | ||
|
|
52a8ec8033 | ||
|
|
40a884b4f5 | ||
|
|
62df4e2fac | ||
|
|
69d60a7372 | ||
|
|
9623b79197 | ||
|
|
ec1481aed0 | ||
|
|
1e76867fd1 | ||
|
|
7ff01413e5 | ||
|
|
48b3ed3aca | ||
|
|
e75d52f985 | ||
|
|
3f95e755b5 | ||
|
|
9d0f4096f8 | ||
|
|
e402e0e7a7 | ||
|
|
38c77fb39e | ||
|
|
3020adbe9d | ||
|
|
4df390713c | ||
|
|
bec4444388 | ||
|
|
2d249f6f19 | ||
|
|
4d1053ce99 | ||
|
|
0522331977 | ||
|
|
eb9520397c | ||
|
|
f0c93b8fce | ||
|
|
b3e9c3d6ce | ||
|
|
99793f2e20 | ||
|
|
f43bd64be2 | ||
|
|
fa440e8d9b | ||
|
|
db4d457325 | ||
|
|
d87245899e | ||
|
|
ac6260ab24 | ||
|
|
91bc8c8bdd | ||
|
|
74d756d43b | ||
|
|
2281d0ca35 | ||
|
|
31cc929c68 | ||
|
|
80ce93785a | ||
|
|
1710ab0035 | ||
|
|
dafc50bbd7 | ||
|
|
50f58f8d3b | ||
|
|
b9be1529cc | ||
|
|
fb3a89b547 | ||
|
|
c01915c397 | ||
|
|
e9a774c1d4 | ||
|
|
04d08ae6c1 | ||
|
|
0585f95a85 | ||
|
|
2300e02a12 | ||
|
|
fec4b61cb6 | ||
|
|
e1941ce621 | ||
|
|
3aeb47b039 | ||
|
|
73701be7c9 | ||
|
|
7941eb7e9d | ||
|
|
a8dedc94e9 | ||
|
|
26fd6a72d6 | ||
|
|
9d6f06cbde | ||
|
|
b0bd85ccc6 | ||
|
|
9fc570e183 | ||
|
|
695d812ecb | ||
|
|
ef6db98da5 | ||
|
|
cd38819a7a | ||
|
|
f207ed274b | ||
|
|
c3691783de | ||
|
|
7171831b14 | ||
|
|
fa14921421 | ||
|
|
475a80acdd | ||
|
|
9826c3f33e | ||
|
|
ecee949547 | ||
|
|
95eea7051f | ||
|
|
74e3ea41a7 | ||
|
|
dc27db920a | ||
|
|
b2724fe362 | ||
|
|
5d43a5b159 | ||
|
|
7435f3ddfd | ||
|
|
94b6de6d3f | ||
|
|
1eb49e9a26 | ||
|
|
0893aa4ee1 | ||
|
|
ccdd9fba88 | ||
|
|
01dc5ff700 | ||
|
|
346e8319df | ||
|
|
5ca7046d5c | ||
|
|
f39e851211 | ||
|
|
3747020876 | ||
|
|
5ed5a9ade3 | ||
|
|
04f157353f | ||
|
|
a1bbcc9be2 | ||
|
|
1266ef44ee | ||
|
|
0da36709d5 | ||
|
|
2b5637f388 | ||
|
|
6d478906a0 | ||
|
|
e436aed6c5 | ||
|
|
25867690f3 | ||
|
|
b5efbebadb | ||
|
|
e93f860c0c | ||
|
|
df04ebca4c | ||
|
|
d2aaf2c2cf | ||
|
|
8386cd675c | ||
|
|
ad7b3cf485 | ||
|
|
f9f2aeab23 | ||
|
|
ea735d279f | ||
|
|
fa616d56fd | ||
|
|
907e55e6d7 | ||
|
|
874be5bca8 | ||
|
|
f49907e5e5 | ||
|
|
da197340ec | ||
|
|
cf6e5b5dd5 | ||
|
|
917cd322fc | ||
|
|
bc616ba118 | ||
|
|
ea26648619 | ||
|
|
c2f1aec8b6 | ||
|
|
c005b546ba | ||
|
|
783ceec8de | ||
|
|
b1ccfa85ba | ||
|
|
7e6d03fd53 | ||
|
|
dd0e1279c4 | ||
|
|
1b3e676b30 | ||
|
|
a4582bb18a | ||
|
|
25e99725d2 | ||
|
|
da011cd302 | ||
|
|
53010751ee | ||
|
|
19401b61cb | ||
|
|
82271f1c17 | ||
|
|
a74d0ecf8d | ||
|
|
7ee4205f8a | ||
|
|
9aef043344 | ||
|
|
4dbc673719 | ||
|
|
d44cecf21f | ||
|
|
3c0ea8f40d | ||
|
|
06b806532e | ||
|
|
1983864294 | ||
|
|
c523a274e1 | ||
|
|
03563eb1f2 | ||
|
|
2f14d18126 | ||
|
|
d1309a82ec | ||
|
|
2a2607eb4b | ||
|
|
e9b5221f05 | ||
|
|
bb71a28375 | ||
|
|
af3e87b0e3 | ||
|
|
4728a59c33 | ||
|
|
f9a9c13dc5 | ||
|
|
1fa6abccf7 | ||
|
|
9aa68b8ee6 | ||
|
|
f90cfe221f | ||
|
|
b70a5d0053 | ||
|
|
9c4ba4da80 | ||
|
|
591dc1ba3c | ||
|
|
841afc5a33 | ||
|
|
3a2e3c7895 | ||
|
|
5e035dc239 | ||
|
|
2761cc23b0 | ||
|
|
cf00fefa6b | ||
|
|
039799083d | ||
|
|
f6f53f9729 | ||
|
|
219695f9ae | ||
|
|
34c189b3ed | ||
|
|
4a704bc257 | ||
|
|
2dc3ca51a3 | ||
|
|
b2564cfabb | ||
|
|
d0734ed5fe | ||
|
|
6ddc613b5a | ||
|
|
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 |
2
.github/FUNDING.yml
vendored
@@ -5,4 +5,4 @@ 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
|
||||
custom: https://cutls.fanbox.cc
|
||||
|
||||
4
.gitignore
vendored
@@ -14,11 +14,15 @@ app/node_modules
|
||||
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/view/it-IT
|
||||
app/git
|
||||
*.code-workspace
|
||||
releasenote.md
|
||||
app/yarn-error.log
|
||||
app/js/platform/aiscript.js
|
||||
|
||||
18
.travis.yml
@@ -6,15 +6,30 @@ language: node_js
|
||||
env:
|
||||
- YARN_GPG=no
|
||||
node_js:
|
||||
- '10.15.2'
|
||||
- '12.17.0'
|
||||
cache:
|
||||
yarn: true
|
||||
script: node -v
|
||||
before_deploy:
|
||||
- yarn global add electron-builder
|
||||
- yarn global add browserify
|
||||
- cd app
|
||||
- VERSION=$(cat package.json | grep version | head -1 | awk -F= "{ print $2 }" | sed 's/[version:,\",]//g' | tr -d '[[:space:]]')
|
||||
- yarn install --no-lockfile --prod
|
||||
- yarn construct:store
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ];then electron-builder --mac -p never;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ];then cd ../build;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ];then mv *.dmg TheDesk-$VERSION-store.dmg;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ];then cd ../app;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then electron-builder --linux snap:x64 -p never;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../build;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then mv *.snap TheDesk-$VERSION-store.snap;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../app;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then yarn add electron-builder;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win appx:x64 -p never ;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../build;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv *.appx TheDesk-$VERSION-store.appx;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../app;else :;fi
|
||||
- yarn construct
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ];then electron-builder --mac -p never;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then electron-builder --linux --x64 -p never;else :;fi
|
||||
@@ -22,7 +37,6 @@ before_deploy:
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then ls;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then mv thedesk-*.zip thedesk.zip;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../app;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then 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
|
||||
|
||||
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についてもそれらに則ります。
|
||||
|
||||
29
README.md
@@ -13,6 +13,9 @@ Mastodon/Misskey client for PC(Windows/Linux/macOS)
|
||||
|
||||
Download:[TheDesk](https://thedesk.top) [](https://status.cutls.com)
|
||||
|
||||
On GitHub Releases, `-store.*` assets are made for some application store or manager(Snapcraft, Homebrew, Microsoft Store).
|
||||
They do not check the latest version(Which you can get the latest ver or not depends on the store)
|
||||
|
||||
<a href="https://www.patreon.com/cutls"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160"></a>
|
||||
<a href="https://liberapay.com/cutls/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
|
||||

|
||||
@@ -28,7 +31,6 @@ The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.o
|
||||
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg)
|
||||
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico)
|
||||
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns)
|
||||
* [Illustrator .ai](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ai)
|
||||
|
||||
The default sounds of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/)
|
||||
|
||||
@@ -47,19 +49,6 @@ The default sounds of notifications is provided [Creative Commons BY](https://cr
|
||||
|
||||
Crowdin project is available! Visit: https://translate.thedesk.top
|
||||
|
||||
## Requirement and development
|
||||
|
||||
* Electron 4.2 or above(install yourself)
|
||||
* electron-dl(in package.json)
|
||||
* Jimp(in package.json)
|
||||
* font-manager(in package.json)
|
||||
* Python 2.x(install yourself)
|
||||
* VisualC++(Windows)(install yourself)
|
||||
* itunes-nowplaying-mac(for macOS)(in package.json)
|
||||
* node-notifier(in package.json)
|
||||
* sumchecker(in package.json)
|
||||
* Ability to read unformated files!(install yourself)
|
||||
|
||||
### Run on developer mode
|
||||
|
||||
`npm run dev` on `app` folder.
|
||||
@@ -159,6 +148,17 @@ Linux
|
||||
macOS
|
||||
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite`
|
||||
|
||||
### PWA support
|
||||
|
||||
TheDesk is a web-based app, so you can run it on a browser. Of course, the main stream is as Electron. Some features won't work as well as Electron.
|
||||
|
||||
You can run `npm run build:pwa` to build as PWA, including `manifest.json` and the ServiceWorker.
|
||||
|
||||
**You have to rename `node_modules` to `dependencies` to run as a web application. (restricted by Netlify)**
|
||||
|
||||
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
|
||||
|
||||
Did you find a bug with Pleroma accounts?
|
||||
@@ -168,4 +168,3 @@ Please write issues to improve TheDesk affinity with Pleroma.
|
||||
## 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.
|
||||
|
||||
|
||||
26
README_ja.md
@@ -14,6 +14,8 @@ Download:[TheDesk](https://thedesk.top) [
|
||||
|
||||
`-store.*`とあるアセットはストアやパッケージマネージャ向けのもので、アップデートの確認をソフト本体で行いません。
|
||||
|
||||

|
||||
|
||||
## ライセンス
|
||||
@@ -46,19 +48,6 @@ Download:[TheDesk](https://thedesk.top) [
|
||||
* electron-dl(in package.json)
|
||||
* Jimp(in package.json)
|
||||
* font-manager(in package.json)
|
||||
* Python 2.x(自分で入れて)
|
||||
* VisualC++(Windows)(自分で入れて)
|
||||
* itunes-nowplaying-mac(macOS向け)(in package.json)
|
||||
* node-notifier(in package.json)
|
||||
* sumchecker(in package.json)
|
||||
* Ability to read unformated files!(自分で入れて)
|
||||
|
||||
### デベロッパーモード
|
||||
|
||||
`npm run dev`を`app`フォルダ内で実行
|
||||
@@ -158,6 +147,17 @@ Linux
|
||||
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で不具合が発生することがあります。
|
||||
|
||||
5
app/.eslintignore
Normal file
@@ -0,0 +1,5 @@
|
||||
js/common/blurhash.js
|
||||
js/common/hammer.min.js
|
||||
js/common/sha256.js
|
||||
js/platform/punycode.js
|
||||
js/platform/tj-deck.js
|
||||
14
app/.eslintrc.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"extends": "eslint:recommended",
|
||||
"env": {"browser": true},
|
||||
"rules": {
|
||||
"no-console": "off",
|
||||
"semi": ["error", "never"]
|
||||
},
|
||||
"globals": {
|
||||
"$": false,
|
||||
"ver": true,
|
||||
"pwa": true,
|
||||
"lang": true
|
||||
}
|
||||
}
|
||||
242
app/about.html
@@ -1,135 +1,139 @@
|
||||
<!doctype html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<title>TheDesk</title>
|
||||
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
|
||||
<link href="./node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
|
||||
<link href="./css/font-awesome.css" rel="stylesheet" type="text/css" />
|
||||
<link href="./css/themes.css" type="text/css" rel="stylesheet" />
|
||||
<link href="./css/master.css" type="text/css" rel="stylesheet" />
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet" />
|
||||
<meta charset="utf-8" />
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Open Sans';
|
||||
-webkit-app-region: drag;
|
||||
cursor: move;
|
||||
padding: 5px;
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
<head>
|
||||
<title>TheDesk</title>
|
||||
<meta content="width=device-width,initial-scale=1.0" name="viewport">
|
||||
<link href="./node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet">
|
||||
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
|
||||
<link href="./css/themes.css" type="text/css" rel="stylesheet">
|
||||
<link href="./css/master.css" type="text/css" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet">
|
||||
<meta charset="utf-8">
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Open Sans';
|
||||
-webkit-app-region: drag;
|
||||
cursor: move;
|
||||
padding: 5px;
|
||||
padding-top: 15px;
|
||||
}
|
||||
a,
|
||||
button {
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
|
||||
a,
|
||||
button {
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
.container {
|
||||
width: 100%;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
grid-template-rows: 1fr 1fr 1fr 1fr 1fr;
|
||||
grid-template-areas: 'name1 data1' 'name2 data2' 'name3 data3' 'name4 data4' 'name5 data5' 'name6 data6';
|
||||
text-align: left;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.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''name6 data6';
|
||||
text-align: left;
|
||||
margin: 5px;
|
||||
}
|
||||
.area-name1 {
|
||||
grid-area: name1;
|
||||
}
|
||||
|
||||
.area-name1 {
|
||||
grid-area: name1;
|
||||
}
|
||||
.area-data1 {
|
||||
grid-area: data1;
|
||||
}
|
||||
|
||||
.area-data1 {
|
||||
grid-area: data1;
|
||||
}
|
||||
.area-name2 {
|
||||
grid-area: name2;
|
||||
}
|
||||
|
||||
.area-name2 {
|
||||
grid-area: name2;
|
||||
}
|
||||
.area-data2 {
|
||||
grid-area: data2;
|
||||
}
|
||||
|
||||
.area-data2 {
|
||||
grid-area: data2;
|
||||
}
|
||||
.area-name3 {
|
||||
grid-area: name3;
|
||||
}
|
||||
|
||||
.area-name3 {
|
||||
grid-area: name3;
|
||||
}
|
||||
.area-data3 {
|
||||
grid-area: data3;
|
||||
}
|
||||
|
||||
.area-data3 {
|
||||
grid-area: data3;
|
||||
}
|
||||
.area-name4 {
|
||||
grid-area: name4;
|
||||
}
|
||||
|
||||
.area-name4 {
|
||||
grid-area: name4;
|
||||
}
|
||||
.area-data4 {
|
||||
grid-area: data4;
|
||||
}
|
||||
|
||||
.area-data4 {
|
||||
grid-area: data4;
|
||||
}
|
||||
.area-name5 {
|
||||
grid-area: name5;
|
||||
}
|
||||
|
||||
.area-name5 {
|
||||
grid-area: name5;
|
||||
}
|
||||
.area-data5 {
|
||||
grid-area: data5;
|
||||
}
|
||||
|
||||
.area-data5 {
|
||||
grid-area: data5;
|
||||
}
|
||||
.area-name6 {
|
||||
grid-area: name6;
|
||||
}
|
||||
|
||||
.area-name6 {
|
||||
grid-area: name6;
|
||||
}
|
||||
.area-data6 {
|
||||
grid-area: data6;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
.area-data6 {
|
||||
grid-area: data6;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body class="center " style="overflow:hidden">
|
||||
<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>
|
||||
<body class="center" style="overflow: hidden;">
|
||||
<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>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
10
app/aiscript.js
Normal file
@@ -0,0 +1,10 @@
|
||||
const { AiScript, parse, values, utils } = require('@syuilo/aiscript')
|
||||
global.asValue = values
|
||||
global.AiScript = AiScript
|
||||
global.asParse = parse
|
||||
global.asCommon = {
|
||||
'TheDesk:console': values.FN_NATIVE((z) => {
|
||||
console.log(z[0].value)
|
||||
})
|
||||
}
|
||||
global.asUtil = utils
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.7 KiB |
91
app/css/acct.css
Normal file
@@ -0,0 +1,91 @@
|
||||
.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;
|
||||
}
|
||||
|
||||
#acct-list .btn-flat.white-text {
|
||||
color: inherit !important;
|
||||
}
|
||||
|
||||
#acct-list .btn-flat.red-text {
|
||||
background-color: white !important;
|
||||
}
|
||||
|
||||
|
||||
.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;
|
||||
}
|
||||
.hide-second {
|
||||
display: none;
|
||||
}
|
||||
.first .hide-second {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#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;
|
||||
}
|
||||
153
app/css/post.css
@@ -1,144 +1,149 @@
|
||||
/*トゥートボックス向けCSS*/
|
||||
#post-box {
|
||||
display: none;
|
||||
position: fixed;
|
||||
left: calc(50vw - 150px);
|
||||
top: 50vh;
|
||||
background-color: var(--postbox);
|
||||
border: thin solid gray;
|
||||
z-index: 501;
|
||||
max-width: 100%;
|
||||
padding: 5px;
|
||||
border-radius: 5px;
|
||||
overflow: hidden;
|
||||
display: none;
|
||||
position: fixed;
|
||||
left: calc(50vw - 150px);
|
||||
top: 50vh;
|
||||
background-color: var(--postbox);
|
||||
border: thin solid gray;
|
||||
z-index: 501;
|
||||
max-width: 100%;
|
||||
padding: 0.4rem;
|
||||
border-radius: 0.4rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
textarea {
|
||||
min-height: 100px !important;
|
||||
font-family: inherit;
|
||||
min-height: 7.7rem !important;
|
||||
font-family: inherit;
|
||||
}
|
||||
#post-box .ui-resizable-s, #post-box .ui-resizable-se{
|
||||
display: none !important;
|
||||
#post-box .ui-resizable-s,
|
||||
#post-box .ui-resizable-se {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.cancel {
|
||||
font-size: 0.5rem;
|
||||
color: gray;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
right: 2px;
|
||||
top: 4px;
|
||||
font-size: 0.5rem;
|
||||
color: gray;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
right: 2px;
|
||||
top: 4px;
|
||||
}
|
||||
.more-show {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
#drag {
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
}
|
||||
#post-btn {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
#vis {
|
||||
text-transform: capitalize;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
#cw-text {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
#sch-box {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
#sch-box input {
|
||||
width: auto;
|
||||
width: auto;
|
||||
}
|
||||
.picker__close,
|
||||
.picker__today,
|
||||
.picker__clear {
|
||||
color: #26a69a !important;
|
||||
color: #26a69a !important;
|
||||
}
|
||||
.cw {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
.sensitive {
|
||||
filter: blur(50px);
|
||||
filter: blur(50px);
|
||||
}
|
||||
#emoji {
|
||||
}
|
||||
#suggest {
|
||||
max-height: 300px;
|
||||
overflow-y: scroll;
|
||||
#suggest, #draft {
|
||||
max-height: 23rem;
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
#emoji-list {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
overflow-y: scroll;
|
||||
width: 100%;
|
||||
height: 15.4rem;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
#preview-field {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
.preview-img {
|
||||
width: 50px;
|
||||
max-height: 100px;
|
||||
width: 4rem;
|
||||
max-height: 7.6rem;
|
||||
}
|
||||
.pi-wrap {
|
||||
display: inline-block;
|
||||
width: 50px;
|
||||
max-height: 100px;
|
||||
display: inline-block;
|
||||
width: 3.8rem;
|
||||
max-height: 7.7rem;
|
||||
}
|
||||
#default-emoji a {
|
||||
color: var(--color);
|
||||
margin-right: 2px;
|
||||
color: var(--text);
|
||||
margin-right: 0.15rem;
|
||||
}
|
||||
.character-counter {
|
||||
position: relative;
|
||||
top: -25px;
|
||||
position: relative;
|
||||
top: -1.9rem;
|
||||
}
|
||||
.trendtag {
|
||||
overflow-y: scroll;
|
||||
max-height: 100px;
|
||||
overflow-y: scroll;
|
||||
max-height: 7.7rem;
|
||||
}
|
||||
#toot-btn-field {
|
||||
display: flex;
|
||||
display: flex;
|
||||
}
|
||||
#toot-post-btn {
|
||||
width: calc(100% - 10px);
|
||||
padding: 0;
|
||||
margin-top: 10px;
|
||||
width: calc(100% - 0.7rem);
|
||||
padding: 0;
|
||||
margin-top: 0.7rem;
|
||||
height: 2.7rem;
|
||||
}
|
||||
#toot-sec-btn {
|
||||
width: 30px;
|
||||
padding: 0;
|
||||
margin-top: 10px;
|
||||
width: 2.3rem;
|
||||
padding: 0;
|
||||
margin-top: 0.7rem;
|
||||
}
|
||||
#left-side {
|
||||
float: left;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 32px);
|
||||
float: left;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 2.5rem);
|
||||
}
|
||||
#right-side {
|
||||
display: none;
|
||||
float: left;
|
||||
width: 300px;
|
||||
padding: 5px;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 32px);
|
||||
display: none;
|
||||
float: left;
|
||||
width: 23rem;
|
||||
padding: 0.4rem;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 2.5rem);
|
||||
}
|
||||
#posttgl,#toot-post-btn {
|
||||
background-color: var(--accentbtn);
|
||||
#posttgl,
|
||||
#toot-post-btn {
|
||||
background-color: var(--active);
|
||||
color: var(--text);
|
||||
}
|
||||
/*mini*/
|
||||
.mini-post .mize {
|
||||
display: none !important;
|
||||
display: none !important;
|
||||
}
|
||||
.mini-post #textarea {
|
||||
padding: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.mini-post #post-box {
|
||||
width: 200px;
|
||||
min-width: 100px;
|
||||
width: 15.4rem;
|
||||
min-width: 7.7rem;
|
||||
}
|
||||
.mini-post #toot-field {
|
||||
padding: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.mini-post #toot-btn-field {
|
||||
padding: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
@@ -3,29 +3,29 @@
|
||||
cursor: move;
|
||||
user-select: none;
|
||||
background-color: var(--modalfooter);
|
||||
margin: 5px;
|
||||
border-radius: 5px;
|
||||
color: var(--color);
|
||||
margin: 0.4rem;
|
||||
border-radius: 0.4rem;
|
||||
color: var(--text);
|
||||
padding: 3px;
|
||||
display: grid;
|
||||
grid-template-columns: 43px 1fr 60px;
|
||||
grid-template-columns: 3.3rem 1fr 4.6rem;
|
||||
grid-template-areas: "sorticon sorttitle sorttitle" "sorticon sortacct sortaction";
|
||||
}
|
||||
.sorticon {
|
||||
grid-area: sorticon;
|
||||
}
|
||||
.sorticon i {
|
||||
font-size: 43px;
|
||||
font-size: 3.3rem;
|
||||
}
|
||||
.sorttitle {
|
||||
margin-left: 5px;
|
||||
margin-left: 0.4rem;
|
||||
grid-area: sorttitle;
|
||||
}
|
||||
.sortacct {
|
||||
margin-left: 5px;
|
||||
margin-left: 0.4rem;
|
||||
grid-area: sortacct;
|
||||
}
|
||||
.sortaction {
|
||||
margin-left: 5px;
|
||||
margin-left: 0.4rem;
|
||||
grid-area: sortaction;
|
||||
}
|
||||
|
||||
@@ -1,144 +1,22 @@
|
||||
:root {
|
||||
--bg: white;
|
||||
--drag: rgba(255, 255, 255, 0.8);
|
||||
--color: black;
|
||||
--beforehover: #757575;
|
||||
--modal: white;
|
||||
--subcolor: #e0e0e0;
|
||||
--box: white;
|
||||
--sidebar: #eeeeee;
|
||||
--shared: #cfd8dc;
|
||||
--notfbox: white;
|
||||
--emphasized: #81c784;
|
||||
--his-data: rgba(255, 255, 255, 0.9);
|
||||
--active: #e6ee9c;
|
||||
--postbox: white;
|
||||
--modalfooter: #fafafa;
|
||||
--accentbtn: #009688;
|
||||
--selected: #c0c0c0;
|
||||
--selectedWithShare: #b2babd;
|
||||
--gray: #757575;
|
||||
}
|
||||
#imagemodal {
|
||||
background: url("../img/pixel.white.svg");
|
||||
}
|
||||
.blacktheme {
|
||||
--bg: #212121;
|
||||
--drag: rgba(0, 0, 0, 0.8);
|
||||
--color: white;
|
||||
--text: white;
|
||||
--beforehover: #9e9e9e;
|
||||
--modal: black;
|
||||
--subcolor: #212121;
|
||||
--box: #424242;
|
||||
--sidebar: #424242;
|
||||
--shared: #004d40;
|
||||
--notfbox: #333333;
|
||||
--thirdColor: #212121;
|
||||
--bottom: #424242;
|
||||
--accent: #004d40;
|
||||
--subcolor: #333333;
|
||||
--emphasized: #4e342e;
|
||||
--his-data: rgba(0, 0, 0, 0.8);
|
||||
--active: #757575;
|
||||
--postbox: #424242;
|
||||
--modalfooter: #212121;
|
||||
--accentbtn: #3f51b5;
|
||||
--active: #3f51b5;
|
||||
--selected: #3f3f3f;
|
||||
--selectedWithShare: #003a30;
|
||||
--gray: #cccccc;
|
||||
}
|
||||
.blacktheme #imagemodal {
|
||||
#imagemodal {
|
||||
background: url("../img/pixel.svg");
|
||||
}
|
||||
.indigotheme {
|
||||
--bg: #031833;
|
||||
--drag: rgba(0, 0, 0, 0.8);
|
||||
--color: white;
|
||||
--beforehover: #9e9e9e;
|
||||
--modal: #0d1351;
|
||||
--subcolor: #0d1351;
|
||||
--shared: #004d40;
|
||||
--box: #0d1351;
|
||||
--sidebar: #0d1351;
|
||||
--notfbox: #0d47a1;
|
||||
--emphasized: #4e342e;
|
||||
--his-data: rgba(13, 19, 81, 0.8);
|
||||
--active: #757575;
|
||||
--postbox: #1a237e;
|
||||
--modalfooter: #031833;
|
||||
--accentbtn: #00acc1;
|
||||
--selected: #214f8a;
|
||||
--selectedWithShare: #003a30;
|
||||
--gray: #cccccc ;
|
||||
}
|
||||
.indigotheme #imagemodal {
|
||||
background: url("../img/pixel.svg");
|
||||
}
|
||||
.browntheme {
|
||||
--bg: #261411;
|
||||
--drag: rgba(0, 0, 0, 0.8);
|
||||
--color: white;
|
||||
--beforehover: #9e9e9e;
|
||||
--modal: #261411;
|
||||
--subcolor: #4e342e;
|
||||
--shared: #004d40;
|
||||
--box: #4e342e;
|
||||
--sidebar: #4e342e;
|
||||
--notfbox: #4e342e;
|
||||
--emphasized: #0d47a1;
|
||||
--his-data: rgba(62, 39, 35, 0.8);
|
||||
--active: #757575;
|
||||
--postbox: #4e342e;
|
||||
--modalfooter: #261411;
|
||||
--accentbtn: #827717;
|
||||
--selected: #6d352b;
|
||||
--selectedWithShare: #003a30;
|
||||
--gray: #cccccc;
|
||||
}
|
||||
.browntheme #imagemodal {
|
||||
background: url("../img/pixel.svg");
|
||||
}
|
||||
.greentheme {
|
||||
--bg: #c8e6c9;
|
||||
--drag: rgba(255, 255, 255, 0.8);
|
||||
--color: black;
|
||||
--beforehover: #757575;
|
||||
--modal: #81c784;
|
||||
--subcolor: #a5d6a7;
|
||||
--box: #81c784;
|
||||
--sidebar: #c5e1a5;
|
||||
--shared: #ffcc80;
|
||||
--notfbox: #a5d6a7;
|
||||
--emphasized: #9e9d24;
|
||||
--his-data: rgba(255, 255, 255, 0.9);
|
||||
--active: #e6ee9c;
|
||||
--postbox: #a5d6a7;
|
||||
--modalfooter: #81c784;
|
||||
--accentbtn: #33691e;
|
||||
--selected: #78c17a;
|
||||
--selectedWithShare: #caa266;
|
||||
--gray: #757575;
|
||||
}
|
||||
.greentheme #imagemodal {
|
||||
background: url("../img/pixel.white.svg");
|
||||
}
|
||||
.bluetheme {
|
||||
--bg: #c9e1ec;
|
||||
--drag: rgba(255, 255, 255, 0.8);
|
||||
--color: black;
|
||||
--beforehover: #757575;
|
||||
--modal: #b2ebf2;
|
||||
--subcolor: #90caf9;
|
||||
--box: #90caf9;
|
||||
--sidebar: #b6e6f5;
|
||||
--shared: #e0ffe4;
|
||||
--notfbox: #90caf9;
|
||||
--emphasized: #c5e1a5;
|
||||
--his-data: rgba(255, 255, 255, 0.9);
|
||||
--active: #b39ddb;
|
||||
--postbox: #dff1ff;
|
||||
--modalfooter: #2196f3;
|
||||
--accentbtn: #2f7bb7;
|
||||
--selected: #9dcade;
|
||||
--selectedWithShare: #c1dac4;
|
||||
--gray: #757575;
|
||||
}
|
||||
.bluetheme #imagemodal {
|
||||
background: url("../img/pixel.white.svg");
|
||||
}
|
||||
|
||||
1016
app/css/tl.css
@@ -1,151 +1,162 @@
|
||||
/*アイコンをクリックした時とかにでてくるユーザーデータ*/
|
||||
#his-data {
|
||||
background-repeat: no-repeat;
|
||||
background-image: url("../../loading.svg");
|
||||
overflow-y: hidden;
|
||||
background-repeat: no-repeat;
|
||||
background-image: url('../img/loading.svg');
|
||||
overflow-y: hidden;
|
||||
}
|
||||
#his-data .btn .material-icons{
|
||||
float:left;
|
||||
#his-data .btn .material-icons {
|
||||
float: left;
|
||||
}
|
||||
#his-data-content {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
#his-name {
|
||||
font-size: 1.5rem;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
#his-prof {
|
||||
float: left;
|
||||
width: 100px;
|
||||
margin-right: 5px;
|
||||
width: 7.7rem;
|
||||
margin-right: 0.4rem;
|
||||
}
|
||||
.his-float {
|
||||
overflow-y: scroll;
|
||||
padding: 5px;
|
||||
overflow-y: scroll;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
#his-float-data {
|
||||
height: 100%;
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
|
||||
}
|
||||
#his-leftside {
|
||||
width: 500px;
|
||||
width: 28.4rem;
|
||||
max-width: 30vw;
|
||||
}
|
||||
#his-float-timeline {
|
||||
max-width: 775px;
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
max-width: 47.5rem;
|
||||
min-width: calc(100% - 29.4rem);
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
#his-basic-prof {
|
||||
min-height: 130px;
|
||||
}
|
||||
#his-matching-list {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
display: flex;
|
||||
min-height: 10rem;
|
||||
}
|
||||
#his-field {
|
||||
vertical-align: baseline;
|
||||
text-align: center;
|
||||
padding: 0;
|
||||
vertical-align: baseline;
|
||||
text-align: center;
|
||||
padding: 0;
|
||||
}
|
||||
#his-field tr {
|
||||
height: 1.5rem;
|
||||
height: 1.5rem;
|
||||
}
|
||||
.his-field-title {
|
||||
height: 1.5rem;
|
||||
padding: 0;
|
||||
background-color: #757575;
|
||||
text-align: center;
|
||||
padding: 5px;
|
||||
margin-bottom: 1px;
|
||||
width: 30%;
|
||||
height: 1.5rem;
|
||||
padding: 0;
|
||||
background-color: #757575;
|
||||
text-align: center;
|
||||
padding: 0.4rem;
|
||||
margin-bottom: 1px;
|
||||
width: 30%;
|
||||
}
|
||||
.his-field-content {
|
||||
height: 1.5rem;
|
||||
padding: 0;
|
||||
padding-left: 5px;
|
||||
height: 1.5rem;
|
||||
padding: 0;
|
||||
padding-left: 0.4rem;
|
||||
}
|
||||
.his-var-content a span.ellipsis:after {
|
||||
content: "...";
|
||||
content: '...';
|
||||
}
|
||||
.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;
|
||||
display: inline !important;
|
||||
}
|
||||
#his-data-show {
|
||||
margin: 20px;
|
||||
margin-left: 50px;
|
||||
margin-right: 50px;
|
||||
background-color: var(--his-data);
|
||||
height: calc(100% - 20px);
|
||||
margin-bottom: 0;
|
||||
padding: 5px;
|
||||
margin: 1.5rem;
|
||||
margin-left: 3.8rem;
|
||||
margin-right: 3.8rem;
|
||||
background-color: var(--his-data);
|
||||
height: calc(100% - 1.5rem);
|
||||
margin-bottom: 0;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
#his-data-wrap {
|
||||
display: flex;
|
||||
display: flex;
|
||||
}
|
||||
.his-var-content {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 45px);
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 3.4rem);
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
#my-data-nav .btn {
|
||||
width: 140px;
|
||||
width: 10.6rem;
|
||||
}
|
||||
.active-back {
|
||||
background-color: var(--active);
|
||||
#my-data-nav .active-back {
|
||||
display: none;
|
||||
}
|
||||
#his-name .emojione,
|
||||
#his-name .emoji-img {
|
||||
width: 20px;
|
||||
width: 1.538rem;
|
||||
}
|
||||
#his-plus-action .btn {
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
padding-right: 0.4rem;
|
||||
padding-left: 0.4rem;
|
||||
}
|
||||
.tabs {
|
||||
display: flex;
|
||||
display: flex;
|
||||
}
|
||||
.tabs .tab a {
|
||||
padding: 8px 12px;
|
||||
padding: 0.6rem 0.9rem;
|
||||
}
|
||||
#his-des {
|
||||
max-height: 250px;
|
||||
overflow-y: scroll;
|
||||
max-height: 17.7rem;
|
||||
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;
|
||||
border: 1px solid;
|
||||
border-radius: 0.4rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-left: 0.75rem;
|
||||
padding-right: 0.75rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
#his-sign-action .btn {
|
||||
flex-basis: 31.2%;
|
||||
flex-basis: calc(50% - 10.6px);
|
||||
}
|
||||
#his-sign-action .dropdown-trigger {
|
||||
flex-basis: 100%;
|
||||
}
|
||||
#his-des .mention {
|
||||
color: #039be5;
|
||||
cursor: pointer;
|
||||
color: #039be5;
|
||||
cursor: pointer;
|
||||
}
|
||||
#his-table{
|
||||
max-height: 150px;
|
||||
overflow-y: scroll;
|
||||
#his-table {
|
||||
max-height: 11.538rem;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
#his-float-blocked {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 2rem;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 2rem;
|
||||
height: 100%;
|
||||
}
|
||||
#hisdropdown{
|
||||
background-color: var(--bg);
|
||||
#hisdropdown {
|
||||
background-color: var(--bg);
|
||||
}
|
||||
#hisdropdown li:hover{
|
||||
background-color: var(--active);
|
||||
#hisdropdown li a {
|
||||
color: white;
|
||||
}
|
||||
#hisdropdown li:hover {
|
||||
background-color: var(--active);
|
||||
}
|
||||
#his-data-title {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
BIN
app/fonts/OpenSans-Light.ttf
Normal file
69
app/img/2025.svg
Normal file
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 600 600" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g id="輝き" transform="matrix(0.892356,0,0,0.892356,36.941,-15.9516)">
|
||||
<g transform="matrix(2.39479,0,0,2.21494,-178.97,-182.183)">
|
||||
<ellipse cx="123.217" cy="151.049" rx="36.923" ry="35.804" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,8.39159,-32.1678)">
|
||||
<ellipse cx="120.479" cy="305.524" rx="112.5" ry="52" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.952046,-0.305955,0.305955,0.952046,-139.881,8.62199)">
|
||||
<ellipse cx="134.479" cy="430.524" rx="46.5" ry="84" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,2.39158,-65.1678)">
|
||||
<ellipse cx="130.479" cy="561.024" rx="72.5" ry="74.5" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,8.39159,-32.1678)">
|
||||
<ellipse cx="156.979" cy="651.76" rx="68" ry="60.235" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.954888,0.296965,-0.296965,0.954888,55.6063,-54.2336)">
|
||||
<ellipse cx="199.479" cy="158.995" rx="98.5" ry="51" style="fill:rgb(240,132,46);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.931851,0.362841,-0.362841,0.931851,63.1962,-89.0819)">
|
||||
<ellipse cx="344.979" cy="135.857" rx="74" ry="90.137" style="fill:rgb(240,132,46);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-56.6084,-45.1678)">
|
||||
<ellipse cx="493.479" cy="301.22" rx="126.5" ry="55.5" style="fill:rgb(240,132,46);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-14.6084,-70.1678)">
|
||||
<ellipse cx="531.479" cy="368.22" rx="58.5" ry="54.5" style="fill:rgb(240,132,46);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.973706,-0.227807,0.227807,0.973706,-124.722,44.48)">
|
||||
<ellipse cx="265.479" cy="614.97" rx="98.5" ry="37.5" style="fill:rgb(54,76,159);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.982834,-0.184492,0.184492,0.982834,-148.417,-31.379)">
|
||||
<ellipse cx="407.479" cy="676.47" rx="71.5" ry="96" style="fill:rgb(54,76,159);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-34.6084,-22.1678)">
|
||||
<ellipse cx="468.979" cy="511.47" rx="48" ry="31" style="fill:rgb(54,76,159);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.880625,0.473815,-0.473815,0.880625,260.236,-235.714)">
|
||||
<ellipse cx="533.979" cy="472.97" rx="46" ry="99.5" style="fill:rgb(54,76,159);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9.39159,-36.1678)">
|
||||
<circle cx="69.229" cy="310.72" r="24.25" style="fill:white;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,8.39159,-48.1678)">
|
||||
<circle cx="98.229" cy="417.72" r="25.25" style="fill:white;"/>
|
||||
</g>
|
||||
<g transform="matrix(0.76,0,0,0.76,96.9465,101.545)">
|
||||
<circle cx="375.229" cy="646.72" r="56.25" style="fill:white;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,8.39159,-32.1678)">
|
||||
<circle cx="427.729" cy="287.22" r="32.75" style="fill:white;"/>
|
||||
</g>
|
||||
<g id="cat" transform="matrix(0.0249784,0,0,0.0249784,346.146,563.341)">
|
||||
<path d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(5,127,254);"/>
|
||||
</g>
|
||||
<g id="cat1" serif:id="cat" transform="matrix(-0.0249784,0,0,0.0249784,147.519,318.341)">
|
||||
<path d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(5,127,254);"/>
|
||||
</g>
|
||||
<g id="cat2" serif:id="cat" transform="matrix(-0.0249784,0,0,0.0249784,120.519,222.341)">
|
||||
<path d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(5,127,254);"/>
|
||||
</g>
|
||||
<g id="cat3" serif:id="cat" transform="matrix(0.0249784,0,0,0.0249784,390.146,196.341)">
|
||||
<path d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(5,127,254);"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.8 KiB |
50
app/img/aiscript.svg
Normal file
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 687 72" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g id="アートボード1" transform="matrix(1,0,0,1,-168.896,-476)">
|
||||
<rect x="168.896" y="476" width="686.208" height="72" style="fill:none;"/>
|
||||
<clipPath id="_clip1">
|
||||
<rect x="168.896" y="476" width="686.208" height="72"/>
|
||||
</clipPath>
|
||||
<g clip-path="url(#_clip1)">
|
||||
<g transform="matrix(1,0,0,1,77.6363,162.413)">
|
||||
<g transform="matrix(96,0,0,96,88.3157,385.587)">
|
||||
<path d="M0.463,-0.571C0.452,-0.59 0.436,-0.602 0.415,-0.608C0.394,-0.613 0.374,-0.611 0.356,-0.6L0.08,-0.443C0.053,-0.428 0.04,-0.405 0.04,-0.374C0.04,-0.344 0.053,-0.321 0.08,-0.306L0.356,-0.148C0.368,-0.141 0.381,-0.138 0.395,-0.138C0.425,-0.138 0.448,-0.151 0.463,-0.178C0.474,-0.197 0.476,-0.217 0.47,-0.237C0.465,-0.259 0.453,-0.274 0.434,-0.285L0.278,-0.374L0.434,-0.464C0.453,-0.474 0.465,-0.49 0.47,-0.511C0.476,-0.532 0.474,-0.552 0.463,-0.571Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(96,0,0,96,137.468,385.587)">
|
||||
<path d="M0.197,-0.67C0.197,-0.691 0.189,-0.71 0.174,-0.725C0.159,-0.74 0.14,-0.748 0.118,-0.748C0.096,-0.748 0.078,-0.74 0.063,-0.725C0.047,-0.71 0.04,-0.691 0.04,-0.67C0.04,-0.648 0.047,-0.629 0.063,-0.614C0.078,-0.599 0.096,-0.591 0.118,-0.591C0.14,-0.591 0.159,-0.599 0.174,-0.614C0.189,-0.629 0.197,-0.648 0.197,-0.67ZM0.197,-0.079C0.197,-0.101 0.189,-0.119 0.174,-0.135C0.159,-0.15 0.14,-0.158 0.118,-0.158C0.096,-0.158 0.078,-0.15 0.063,-0.135C0.047,-0.119 0.04,-0.101 0.04,-0.079C0.04,-0.057 0.047,-0.038 0.063,-0.023C0.078,-0.008 0.096,0 0.118,0C0.14,0 0.159,-0.008 0.174,-0.023C0.189,-0.038 0.197,-0.057 0.197,-0.079Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(96,0,0,96,201.74,385.587)">
|
||||
<path d="M0.118,-0.75C0.097,-0.75 0.078,-0.742 0.063,-0.727C0.047,-0.712 0.04,-0.693 0.04,-0.671L0.04,-0.573C0.04,-0.551 0.047,-0.532 0.063,-0.517C0.078,-0.502 0.097,-0.494 0.118,-0.494C0.14,-0.494 0.159,-0.502 0.174,-0.517C0.189,-0.532 0.197,-0.551 0.197,-0.573L0.197,-0.671C0.197,-0.693 0.189,-0.712 0.174,-0.727C0.159,-0.742 0.14,-0.75 0.118,-0.75ZM0.355,-0.75C0.333,-0.75 0.314,-0.742 0.299,-0.727C0.284,-0.712 0.276,-0.693 0.276,-0.671L0.276,-0.573C0.276,-0.551 0.284,-0.532 0.299,-0.517C0.314,-0.502 0.333,-0.494 0.355,-0.494C0.377,-0.494 0.395,-0.502 0.41,-0.517C0.426,-0.532 0.434,-0.551 0.434,-0.573L0.434,-0.671C0.434,-0.693 0.426,-0.712 0.41,-0.727C0.395,-0.742 0.377,-0.75 0.355,-0.75Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(96,0,0,96,247.1,385.587)">
|
||||
<path d="M0.394,-0.494L0.488,-0.306L0.3,-0.306L0.394,-0.494ZM0.063,-0.009C0.082,0.001 0.102,0.002 0.123,-0.005C0.144,-0.011 0.159,-0.024 0.169,-0.044L0.221,-0.148L0.566,-0.148L0.619,-0.044C0.625,-0.03 0.635,-0.02 0.648,-0.012C0.661,-0.004 0.674,0 0.689,0C0.701,0 0.713,-0.003 0.724,-0.009C0.743,-0.018 0.756,-0.033 0.763,-0.054C0.771,-0.075 0.769,-0.095 0.759,-0.114L0.464,-0.705C0.457,-0.718 0.448,-0.729 0.435,-0.737C0.422,-0.745 0.408,-0.749 0.394,-0.749C0.379,-0.749 0.365,-0.745 0.352,-0.737C0.339,-0.729 0.33,-0.718 0.323,-0.705L0.028,-0.114C0.018,-0.095 0.017,-0.075 0.024,-0.054C0.03,-0.033 0.043,-0.018 0.063,-0.009Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(96,0,0,96,322.7,385.587)">
|
||||
<path d="M0.158,0C0.18,0 0.198,-0.008 0.214,-0.023C0.229,-0.038 0.236,-0.057 0.236,-0.079L0.236,-0.67C0.236,-0.691 0.229,-0.71 0.214,-0.725C0.198,-0.741 0.18,-0.749 0.158,-0.749C0.136,-0.749 0.117,-0.741 0.102,-0.725C0.087,-0.71 0.079,-0.691 0.079,-0.67L0.079,-0.079C0.079,-0.057 0.087,-0.038 0.102,-0.023C0.117,-0.008 0.136,0 0.158,0Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(96,0,0,96,352.988,385.587)">
|
||||
<path d="M0.118,-0.158C0.097,-0.158 0.078,-0.15 0.063,-0.135C0.047,-0.119 0.04,-0.101 0.04,-0.079C0.04,-0.057 0.047,-0.038 0.063,-0.023C0.078,-0.008 0.097,0 0.118,0L0.463,0C0.525,0 0.579,-0.022 0.623,-0.067C0.667,-0.111 0.69,-0.164 0.69,-0.227C0.69,-0.289 0.667,-0.342 0.623,-0.387C0.579,-0.431 0.525,-0.453 0.463,-0.453L0.266,-0.453C0.247,-0.453 0.231,-0.46 0.218,-0.473C0.204,-0.487 0.197,-0.503 0.197,-0.522C0.197,-0.541 0.204,-0.557 0.218,-0.571C0.231,-0.584 0.247,-0.591 0.266,-0.591L0.611,-0.591C0.632,-0.591 0.651,-0.599 0.667,-0.614C0.682,-0.629 0.69,-0.648 0.69,-0.67C0.69,-0.691 0.682,-0.71 0.667,-0.725C0.651,-0.741 0.632,-0.749 0.611,-0.749L0.266,-0.749C0.204,-0.749 0.15,-0.726 0.106,-0.682C0.062,-0.638 0.04,-0.584 0.04,-0.522C0.04,-0.459 0.062,-0.406 0.106,-0.362C0.15,-0.318 0.204,-0.296 0.266,-0.296L0.463,-0.296C0.482,-0.296 0.498,-0.289 0.511,-0.275C0.525,-0.262 0.532,-0.246 0.532,-0.227C0.532,-0.207 0.525,-0.191 0.511,-0.178C0.498,-0.164 0.482,-0.158 0.463,-0.158L0.118,-0.158Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(96,0,0,96,422.924,385.587)">
|
||||
<path d="M0.413,0C0.517,0 0.605,-0.037 0.678,-0.11C0.693,-0.125 0.701,-0.143 0.701,-0.166C0.701,-0.187 0.693,-0.206 0.678,-0.221C0.663,-0.236 0.644,-0.244 0.623,-0.244C0.601,-0.244 0.582,-0.236 0.567,-0.221C0.524,-0.179 0.473,-0.158 0.413,-0.158C0.354,-0.158 0.303,-0.179 0.261,-0.221C0.218,-0.263 0.197,-0.314 0.197,-0.374C0.197,-0.434 0.218,-0.485 0.261,-0.528C0.303,-0.57 0.354,-0.591 0.413,-0.591C0.473,-0.591 0.524,-0.57 0.567,-0.528C0.582,-0.512 0.601,-0.504 0.623,-0.504C0.644,-0.504 0.663,-0.512 0.678,-0.528C0.693,-0.543 0.701,-0.561 0.701,-0.583C0.701,-0.605 0.693,-0.623 0.678,-0.639C0.605,-0.712 0.517,-0.749 0.413,-0.749C0.31,-0.749 0.222,-0.712 0.149,-0.639C0.076,-0.566 0.04,-0.478 0.04,-0.374C0.04,-0.271 0.076,-0.183 0.149,-0.11C0.222,-0.037 0.31,0 0.413,0Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(96,0,0,96,492.86,385.587)">
|
||||
<path d="M0.572,-0.472C0.572,-0.44 0.56,-0.412 0.537,-0.389C0.514,-0.366 0.486,-0.355 0.453,-0.355L0.236,-0.355L0.236,-0.591L0.453,-0.591C0.486,-0.591 0.514,-0.579 0.537,-0.556C0.56,-0.533 0.572,-0.505 0.572,-0.472ZM0.421,-0.197L0.595,-0.023C0.61,-0.008 0.628,0 0.65,0C0.672,0 0.69,-0.008 0.706,-0.023C0.721,-0.038 0.729,-0.057 0.729,-0.079C0.729,-0.101 0.721,-0.119 0.706,-0.135L0.601,-0.24C0.64,-0.265 0.671,-0.298 0.694,-0.338C0.717,-0.38 0.729,-0.425 0.729,-0.472C0.729,-0.549 0.702,-0.614 0.648,-0.668C0.594,-0.722 0.529,-0.749 0.453,-0.749L0.158,-0.749C0.136,-0.749 0.117,-0.741 0.102,-0.725C0.087,-0.71 0.079,-0.691 0.079,-0.67L0.079,-0.079C0.079,-0.057 0.087,-0.038 0.102,-0.023C0.117,-0.008 0.136,0 0.158,0C0.18,0 0.198,-0.008 0.214,-0.023C0.229,-0.038 0.236,-0.057 0.236,-0.079L0.236,-0.197L0.421,-0.197Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(96,0,0,96,566.588,385.587)">
|
||||
<path d="M0.158,0C0.18,0 0.198,-0.008 0.214,-0.023C0.229,-0.038 0.236,-0.057 0.236,-0.079L0.236,-0.67C0.236,-0.691 0.229,-0.71 0.214,-0.725C0.198,-0.741 0.18,-0.749 0.158,-0.749C0.136,-0.749 0.117,-0.741 0.102,-0.725C0.087,-0.71 0.079,-0.691 0.079,-0.67L0.079,-0.079C0.079,-0.057 0.087,-0.038 0.102,-0.023C0.117,-0.008 0.136,0 0.158,0Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(96,0,0,96,596.876,385.587)">
|
||||
<path d="M0.572,-0.472C0.572,-0.44 0.56,-0.412 0.537,-0.389C0.514,-0.366 0.486,-0.355 0.453,-0.355L0.236,-0.355L0.236,-0.591L0.453,-0.591C0.486,-0.591 0.514,-0.579 0.537,-0.556C0.56,-0.533 0.572,-0.505 0.572,-0.472ZM0.158,0C0.18,0 0.198,-0.008 0.214,-0.023C0.229,-0.038 0.236,-0.057 0.236,-0.079L0.236,-0.197L0.453,-0.197C0.529,-0.197 0.594,-0.224 0.648,-0.278C0.702,-0.332 0.729,-0.397 0.729,-0.472C0.729,-0.549 0.702,-0.614 0.648,-0.668C0.594,-0.722 0.529,-0.749 0.453,-0.749L0.158,-0.749C0.136,-0.749 0.117,-0.741 0.102,-0.725C0.087,-0.71 0.079,-0.691 0.079,-0.67L0.079,-0.079C0.079,-0.057 0.087,-0.038 0.102,-0.023C0.117,-0.008 0.136,0 0.158,0Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(96,0,0,96,670.604,385.587)">
|
||||
<path d="M0.266,-0.591L0.266,-0.079C0.266,-0.057 0.273,-0.038 0.289,-0.023C0.304,-0.008 0.323,0 0.344,0C0.366,0 0.385,-0.008 0.4,-0.023C0.415,-0.038 0.423,-0.057 0.423,-0.079L0.423,-0.591L0.591,-0.591C0.612,-0.591 0.631,-0.599 0.647,-0.614C0.662,-0.629 0.67,-0.648 0.67,-0.67C0.67,-0.691 0.662,-0.71 0.647,-0.725C0.631,-0.741 0.612,-0.749 0.591,-0.749L0.099,-0.749C0.077,-0.749 0.058,-0.741 0.043,-0.725C0.027,-0.71 0.02,-0.691 0.02,-0.67C0.02,-0.648 0.027,-0.629 0.043,-0.614C0.058,-0.599 0.077,-0.591 0.099,-0.591L0.266,-0.591Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(96,0,0,96,736.748,385.587)">
|
||||
<path d="M0.118,-0.75C0.097,-0.75 0.078,-0.742 0.063,-0.727C0.047,-0.712 0.04,-0.693 0.04,-0.671L0.04,-0.573C0.04,-0.551 0.047,-0.532 0.063,-0.517C0.078,-0.502 0.097,-0.494 0.118,-0.494C0.14,-0.494 0.159,-0.502 0.174,-0.517C0.189,-0.532 0.197,-0.551 0.197,-0.573L0.197,-0.671C0.197,-0.693 0.189,-0.712 0.174,-0.727C0.159,-0.742 0.14,-0.75 0.118,-0.75ZM0.355,-0.75C0.333,-0.75 0.314,-0.742 0.299,-0.727C0.284,-0.712 0.276,-0.693 0.276,-0.671L0.276,-0.573C0.276,-0.551 0.284,-0.532 0.299,-0.517C0.314,-0.502 0.333,-0.494 0.355,-0.494C0.377,-0.494 0.395,-0.502 0.41,-0.517C0.426,-0.532 0.434,-0.551 0.434,-0.573L0.434,-0.671C0.434,-0.693 0.426,-0.712 0.41,-0.727C0.395,-0.742 0.377,-0.75 0.355,-0.75Z" style="fill:rgb(129,201,196);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 10 KiB |
37
app/img/desk-animation.svg
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 4096 4096" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g id="TheDesk">
|
||||
<g id="back">
|
||||
<g transform="matrix(1,0,0,1.53232,-11.8871,-1144.65)">
|
||||
<rect x="1044.02" y="1686.36" width="2335.77" height="782.558" style="fill:rgba(255,255,255,0);">
|
||||
<animate attributeName="fill" begin="0.5s" dur="0.1s" fill="freeze" values="rgba(255,255,255,0);rgba(255,255,255,1)" />
|
||||
</rect>
|
||||
</g>
|
||||
<rect x="1058.89" y="609.971" width="711.146" height="2885.69" style="fill:rgba(255,255,255,0);">
|
||||
<animate attributeName="fill" begin="0.5s" dur="0.1s" fill="freeze" values="rgba(255,255,255,0);rgba(255,255,255,1)" />
|
||||
</rect>
|
||||
<g transform="matrix(1.08582,0,0,1,-142.973,0)">
|
||||
<rect x="1665.9" y="1021.89" width="776.607" height="2050.26" style="fill:rgba(255,255,255,0);">
|
||||
<animate attributeName="fill" begin="0.5s" dur="0.1s" fill="freeze" values="rgba(255,255,255,0);rgba(255,255,255,1)" />
|
||||
</rect>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,0.998821,0,4.65666)" id="gray">
|
||||
<rect x="678.5" y="128.48" width="450" height="3821.5" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.999978,-5.55112e-17,-2.20005e-08,0.996112,-1237.17,972.039)" id="orange">
|
||||
<rect x="1915.71" y="-583.55" width="450" height="3117.62" style="fill:rgb(240,132,46);" r="3117.62">
|
||||
<animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0,1915.71,-583.55" to="-60,1915.71,-583.55" dur="0.5s" repeatCount="1" fill="freeze" />
|
||||
</rect>
|
||||
</g>
|
||||
<g transform="matrix(0.999978,5.55112e-17,-5.55112e-17,0.999978,-1236.96,-1164.58)" id="blue">
|
||||
<rect x="1915.5" y="1775.41" width="450" height="3105.58" style="fill:rgb(54,76,159);" r="3117.62">
|
||||
<animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0,1915.71,4881" to="60,1915.71,4881" dur="0.5s" repeatCount="1" fill="freeze" />
|
||||
</rect>
|
||||
</g>
|
||||
<path id="cat" d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgba(0,0,0,0);">
|
||||
<animate attributeName="fill" begin="0.6s" dur="0.5s" fill="freeze" values="rgba(0,0,0,0);rgba(0,0,0,1)" repeatCount="1" />
|
||||
</path>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
BIN
app/img/desk.png
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 22 KiB |
@@ -1,35 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{display:none;}
|
||||
.st1{fill:#FFFFFF;}
|
||||
.st2{fill:#545251;stroke:#040000;stroke-miterlimit:10;}
|
||||
.st3{fill:#F0842E;}
|
||||
.st4{fill:#364C9F;}
|
||||
.st5{fill:#FFFFFF;stroke:#040000;stroke-miterlimit:10;}
|
||||
.st6{fill-rule:evenodd;clip-rule:evenodd;fill:#040000;}
|
||||
.st7{fill-rule:evenodd;clip-rule:evenodd;fill:none;}
|
||||
</style>
|
||||
<g id="レイヤー_1" class="st0">
|
||||
</g>
|
||||
<g id="レイヤー_2">
|
||||
<polyline class="st1" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
|
||||
<rect x="678.5" y="128.48" class="st2" width="450" height="3821.5"/>
|
||||
|
||||
<rect x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st3" width="450" height="3117.62"/>
|
||||
|
||||
<rect x="1915.5" y="1555.41" transform="matrix(0.5 0.866 -0.866 0.5 3762.031 -299.6245)" class="st4" width="450" height="3105.58"/>
|
||||
<path class="st5" d="M714.5,2953.5"/>
|
||||
<path id="path1891" class="st6" d="M1592.47,2584h456.47c0-64.89-4.63-77.76-112.1-77.76c17.17-51.5,86.95-176.11,125.73-176.11
|
||||
c34.31,0,75.24,1.89,75.24,80.17c0,88.87,149.56,232.16,185.82,173.7c54.04-87.12-92.91-60.55-92.91-270.65
|
||||
c0-287.43,167.74-246.51,167.74-407.99c0-80.79-22.32-91.7-22.32-149.46c0-76.34,67.25-71.91,54.17-135.2
|
||||
c-9.04-43.72-16.11-78.78-21.38-131.65c-3.74-37.51-4.93-77.5-43.9-75.89c-45.78,1.89-63.15,82.47-134.31,88.25
|
||||
c-71.02,5.77-131.57-60.46-159.06-51c-27.25,9.38-18.68,83.32-2.52,135.83c25.4,82.54,80.79,189.86-20.2,206.02
|
||||
c-100.99,16.16-274.69,32.32-399.92,197.94s-120.6,359.99-169.66,420.11C1314.72,2612.08,1146,2529.23,1146,2697.11
|
||||
c0,75.16,127.35,129.27,147.55,105.03c20.2-24.24-171.62-96.46,43.01-181.78C1519.91,2547.46,1536.28,2532.58,1592.47,2584z"/>
|
||||
<rect class="st7" width="4096" height="4096"/>
|
||||
<path class="st1" d="M-58,1122"/>
|
||||
</g>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 4096 4096" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g id="TheDesk">
|
||||
<g>
|
||||
<g transform="matrix(1,0,0,1.53232,-11.8871,-1144.65)">
|
||||
<rect x="1044.02" y="1686.36" width="2335.77" height="782.558" style="fill:white;"/>
|
||||
</g>
|
||||
<rect x="1058.89" y="609.971" width="711.146" height="2885.69" style="fill:white;"/>
|
||||
<g transform="matrix(1.08582,0,0,1,-142.973,0)">
|
||||
<rect x="1665.9" y="1021.89" width="776.607" height="2050.26" style="fill:white;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,0.998821,0,4.65666)">
|
||||
<rect x="678.5" y="128.48" width="450" height="3821.5" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.5,-0.866,0.862652,0.498067,224.046,2340.41)">
|
||||
<rect x="1915.71" y="-583.55" width="450" height="3117.62" style="fill:rgb(240,132,46);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.5,0.866,-0.866,0.5,3757.17,-299.625)">
|
||||
<rect x="1915.5" y="1555.41" width="450" height="3105.58" style="fill:rgb(54,76,159);"/>
|
||||
</g>
|
||||
<path id="cat" d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(4,0,0);"/>
|
||||
<rect x="0" y="0" width="4096" height="4096" style="fill:none;"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.5 KiB |
@@ -1,5 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!--
|
||||
TheDesk icon, Cutls P.
|
||||
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
|
||||
-->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
|
||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.3 KiB |
BIN
app/img/icons/icon-128x128.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
app/img/icons/icon-144x144.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
app/img/icons/icon-152x152.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
app/img/icons/icon-192x192.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
app/img/icons/icon-384x384.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
app/img/icons/icon-512x512.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
app/img/icons/icon-72x72.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
app/img/icons/icon-96x96.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
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 |
@@ -1,4 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
ThinkingDesk: Cutls P's icon, Cutls P.
|
||||
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
|
||||
-->
|
||||
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<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">
|
||||
|
||||
|
Before Width: | Height: | Size: 7.6 KiB 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,3 +1,4 @@
|
||||
//@ts-check
|
||||
//このソフトについて
|
||||
function about() {
|
||||
postMessage(["sendSinmpleIpc", "about"], "*")
|
||||
|
||||
@@ -1,191 +1,204 @@
|
||||
selectedColumn = 0
|
||||
selectedToot = 0
|
||||
$(function ($) {
|
||||
$(function($) {
|
||||
//キーボードショートカット
|
||||
$(window).keydown(function (e) {
|
||||
var hasFocus = $('input').is(':focus');
|
||||
var hasFocus2 = $('textarea').is(':focus');
|
||||
if (document.getElementById("webview")) {
|
||||
if ($("#webviewsel:checked").val()) {
|
||||
var wv = false;
|
||||
$(window).keydown(function(e) {
|
||||
var hasFocus = $('input').is(':focus')
|
||||
var hasFocus2 = $('textarea').is(':focus')
|
||||
if (document.getElementById('webview')) {
|
||||
if ($('#webviewsel:checked').val()) {
|
||||
var wv = false
|
||||
} else {
|
||||
var wv = true;
|
||||
var wv = true
|
||||
}
|
||||
} else {
|
||||
var wv = true;
|
||||
var wv = true
|
||||
}
|
||||
//Enter
|
||||
if (e.keyCode === 13) {
|
||||
if($("#src").is(':focus')){
|
||||
if ($('#src').is(':focus')) {
|
||||
src()
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
if($("#list-add").is(':focus')){
|
||||
if ($('#list-add').is(':focus')) {
|
||||
makeNewList()
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+Shift+Enter:Lgen
|
||||
if (event.metaKey || event.ctrlKey && wv) {
|
||||
if (event.metaKey || (event.ctrlKey && wv)) {
|
||||
if (event.shiftKey) {
|
||||
if (e.keyCode === 13) {
|
||||
post('local');
|
||||
return false;
|
||||
post('local')
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
//Ctrl+Enter:投稿
|
||||
if (event.metaKey || event.ctrlKey && wv) {
|
||||
if (event.metaKey || (event.ctrlKey && wv)) {
|
||||
if (e.keyCode === 13) {
|
||||
post();
|
||||
return false;
|
||||
post()
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Alt+Enter:セカンダリー
|
||||
if (event.metaKey || event.altKey && wv) {
|
||||
if (event.metaKey || (event.altKey && wv)) {
|
||||
if (e.keyCode === 13) {
|
||||
sec();
|
||||
return false;
|
||||
sec()
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Esc:消す
|
||||
if (e.keyCode === 27 && wv) {
|
||||
hide();
|
||||
return false;
|
||||
hide()
|
||||
return false
|
||||
}
|
||||
//F5リロード
|
||||
if (e.keyCode === 116 && wv) {
|
||||
location.href = "index.html";
|
||||
return false;
|
||||
location.href = 'index.html'
|
||||
return false
|
||||
}
|
||||
//Ctrl+Sift+C:全消し
|
||||
if (((event.metaKey || event.ctrlKey) && event.shiftKey) && wv) {
|
||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey && wv) {
|
||||
if (e.keyCode === 67) {
|
||||
clear();
|
||||
return false;
|
||||
clear()
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+Sift+N:NowPlaying
|
||||
if (((event.metaKey || event.ctrlKey) && event.shiftKey) && wv) {
|
||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey && wv) {
|
||||
if (e.keyCode === 78) {
|
||||
show();
|
||||
show()
|
||||
nowplaying()
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
}
|
||||
//input/textareaにフォーカスなし時
|
||||
if ((!hasFocus && !hasFocus2) && wv) {
|
||||
if (!hasFocus && !hasFocus2 && wv) {
|
||||
if (!wv) {
|
||||
return true;
|
||||
return true
|
||||
}
|
||||
//Ctrl+V:いつもの
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
if (e.keyCode === 86) {
|
||||
show();
|
||||
show()
|
||||
}
|
||||
}
|
||||
//Ctrl+F:検索
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
if (e.keyCode === 70) {
|
||||
srcBox()
|
||||
}
|
||||
}
|
||||
//X:開閉
|
||||
if (e.keyCode === 88) {
|
||||
if (!$("#post-box").hasClass("appear")) {
|
||||
show();
|
||||
$('textarea').focus();
|
||||
if (!$('#post-box').hasClass('appear')) {
|
||||
show()
|
||||
$('textarea').focus()
|
||||
} else {
|
||||
hide();
|
||||
hide()
|
||||
}
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
//N:新トゥート
|
||||
if (e.keyCode === 78) {
|
||||
if (!$("#post-box").hasClass("appear")) {
|
||||
show();
|
||||
if (!$('#post-box').hasClass('appear')) {
|
||||
show()
|
||||
}
|
||||
$('textarea').focus();
|
||||
return false;
|
||||
$('textarea').focus()
|
||||
return false
|
||||
}
|
||||
//Ctrl+E:全ての通知未読を既読にする
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
if (e.keyCode === 69) {
|
||||
allNotfRead();
|
||||
return false;
|
||||
allNotfRead()
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+K:メニュー開閉
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
if (e.keyCode === 75) {
|
||||
menu()
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+Space:読み込み
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
if (e.keyCode === 32) {
|
||||
parseColumn();
|
||||
return false;
|
||||
parseColumn()
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+Sift+S:設定
|
||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
||||
if (e.keyCode === 83) {
|
||||
location.href = "setting.html";
|
||||
return false;
|
||||
location.href = 'setting.html'
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+Sift+M:アカマネ
|
||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
||||
if (e.keyCode === 77) {
|
||||
location.href = "acct.html";
|
||||
return false;
|
||||
location.href = 'acct.html'
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+Sift+P:プロフ
|
||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
||||
if (e.keyCode === 80) {
|
||||
profShow()
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
}
|
||||
//数字:TL
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
if (e.keyCode >= 49 && e.keyCode <= 57) {
|
||||
var kz = e.keyCode - 49;
|
||||
goColumn(kz);
|
||||
return false;
|
||||
var kz = e.keyCode - 49
|
||||
goColumn(kz)
|
||||
return false
|
||||
}
|
||||
}
|
||||
//矢印:選択
|
||||
if (e.code == "ArrowLeft") {
|
||||
if (e.code == 'ArrowLeft') {
|
||||
//left
|
||||
if ($("#imagemodal").hasClass("open")) {
|
||||
imgCont('prev');
|
||||
return false;
|
||||
if ($('#imagemodal').hasClass('open')) {
|
||||
imgCont('prev')
|
||||
return false
|
||||
}
|
||||
if (selectedColumn > 0) {
|
||||
selectedColumn--
|
||||
}
|
||||
tootSelector(selectedColumn, selectedToot)
|
||||
return false;
|
||||
} else if (e.code == "ArrowUp") {
|
||||
return false
|
||||
} else if (e.code == 'ArrowUp') {
|
||||
//up
|
||||
if ($("#imagemodal").hasClass("open")) {
|
||||
return false;
|
||||
if ($('#imagemodal').hasClass('open')) {
|
||||
return false
|
||||
}
|
||||
if (selectedToot > 0) {
|
||||
selectedToot--
|
||||
}
|
||||
tootSelector(selectedColumn, selectedToot)
|
||||
return false;
|
||||
} else if (e.code == "ArrowRight") {
|
||||
return false
|
||||
} else if (e.code == 'ArrowRight') {
|
||||
//right
|
||||
if ($("#imagemodal").hasClass("open")) {
|
||||
imgCont('next');
|
||||
return false;
|
||||
if ($('#imagemodal').hasClass('open')) {
|
||||
imgCont('next')
|
||||
return false
|
||||
}
|
||||
if (selectedColumn < $(".tl-box").length - 1) {
|
||||
if (selectedColumn < $('.tl-box').length - 1) {
|
||||
selectedColumn++
|
||||
}
|
||||
tootSelector(selectedColumn, selectedToot)
|
||||
return false;
|
||||
} else if (e.code == "ArrowDown") {
|
||||
return false
|
||||
} else if (e.code == 'ArrowDown') {
|
||||
//down
|
||||
if ($("#imagemodal").hasClass("open")) {
|
||||
return false;
|
||||
if ($('#imagemodal').hasClass('open')) {
|
||||
return false
|
||||
}
|
||||
selectedToot++
|
||||
tootSelector(selectedColumn, selectedToot)
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
//Ctrl+U:0,0選択
|
||||
if (event.ctrlKey || event.metaKey) {
|
||||
@@ -193,29 +206,30 @@ $(function ($) {
|
||||
selectedToot = 0
|
||||
selectedColumn = 0
|
||||
tootSelector(0, 0)
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
}
|
||||
//選択時
|
||||
if (e.keyCode == 70) {
|
||||
var id = $(".selectedToot").attr('unique-id')
|
||||
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
|
||||
var id = $('.selectedToot').attr('unique-id')
|
||||
var acct_id = $('#timeline_' + selectedColumn).attr('data-acct')
|
||||
fav(id, acct_id, false)
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
if (e.keyCode == 66) {
|
||||
var id = $(".selectedToot").attr('unique-id')
|
||||
var acct_id = $('#timeline_' + selectedColumn).attr("data-acct")
|
||||
var id = $('.selectedToot').attr('unique-id')
|
||||
var acct_id = $('#timeline_' + selectedColumn).attr('data-acct')
|
||||
rt(id, acct_id, false)
|
||||
return 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;
|
||||
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')
|
||||
var cwTxt = $('#cw-text').val()
|
||||
re(id, ats_cm, acct_id, mode, cwTxt)
|
||||
return false
|
||||
}
|
||||
}
|
||||
//textareaフォーカス時
|
||||
@@ -224,23 +238,27 @@ $(function ($) {
|
||||
//C+S+(No):ワンクリ
|
||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
||||
if (e.keyCode >= 49 && e.keyCode <= 51) {
|
||||
var no = e.keyCode - 48;
|
||||
if (localStorage.getItem("oks-" + no)) { $("#textarea").val($("#textarea").val() + localStorage.getItem("oks-" + no)) }
|
||||
return false;
|
||||
var no = e.keyCode - 48
|
||||
if (localStorage.getItem('oks-' + no)) {
|
||||
$('#textarea').val($('#textarea').val() + localStorage.getItem('oks-' + no))
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
//クリアボタン
|
||||
$("#clear").click(function () {
|
||||
clear();
|
||||
});
|
||||
});
|
||||
$('#clear').click(function() {
|
||||
clear()
|
||||
})
|
||||
})
|
||||
//選択する
|
||||
function tootSelector(column, toot) {
|
||||
$('.cvo').removeClass("selectedToot")
|
||||
$('#timeline_' + column + ' .cvo').eq(toot).addClass("selectedToot")
|
||||
$('.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
|
||||
|
||||
@@ -10,7 +10,7 @@ $(document).ready(function () {
|
||||
belowOrigin: false, // Displays dropdown below the button
|
||||
alignment: 'left', // Displays dropdown with edge aligned to the left of button
|
||||
stopPropagation: false
|
||||
});
|
||||
})
|
||||
$('.dropdown-trigger').dropdown({
|
||||
inDuration: 300,
|
||||
outDuration: 225,
|
||||
@@ -21,9 +21,9 @@ $(document).ready(function () {
|
||||
alignment: 'left', // Displays dropdown with edge aligned to the left of button
|
||||
stopPropagation: false // Stops event propagation
|
||||
}
|
||||
);
|
||||
$('.collapsible').collapsible();
|
||||
)
|
||||
$('.collapsible').collapsible()
|
||||
$('#videomodal').modal({
|
||||
onCloseEnd: stopVideo
|
||||
});
|
||||
});
|
||||
})
|
||||
})
|
||||
@@ -17,26 +17,26 @@
|
||||
(function (factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['jquery'], factory);
|
||||
define(['jquery'], factory)
|
||||
} else if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
factory(require('jquery'));
|
||||
factory(require('jquery'))
|
||||
} else {
|
||||
// Browser globals
|
||||
factory(jQuery);
|
||||
factory(jQuery)
|
||||
}
|
||||
}(function ($) {
|
||||
$.timeago = function (timestamp) {
|
||||
if (timestamp instanceof Date) {
|
||||
return inWords(timestamp);
|
||||
return inWords(timestamp)
|
||||
} else if (typeof timestamp === "string") {
|
||||
return inWords($.timeago.parse(timestamp));
|
||||
return inWords($.timeago.parse(timestamp))
|
||||
} else if (typeof timestamp === "number") {
|
||||
return inWords(new Date(timestamp));
|
||||
return inWords(new Date(timestamp))
|
||||
} else {
|
||||
return inWords($.timeago.datetime(timestamp));
|
||||
return inWords($.timeago.datetime(timestamp))
|
||||
}
|
||||
};
|
||||
var $t = $.timeago;
|
||||
}
|
||||
var $t = $.timeago
|
||||
$.extend($.timeago, {
|
||||
settings: {
|
||||
refreshMillis: 60000,
|
||||
@@ -69,33 +69,33 @@
|
||||
|
||||
inWords: function (distanceMillis) {
|
||||
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 prefix = $l.prefixAgo;
|
||||
var suffix = $l.suffixAgo;
|
||||
var $l = this.settings.strings
|
||||
var prefix = $l.prefixAgo
|
||||
var suffix = $l.suffixAgo
|
||||
if (this.settings.allowFuture) {
|
||||
if (distanceMillis < 0) {
|
||||
prefix = $l.prefixFromNow;
|
||||
suffix = $l.suffixFromNow;
|
||||
prefix = $l.prefixFromNow
|
||||
suffix = $l.suffixFromNow
|
||||
}
|
||||
}
|
||||
|
||||
if (!this.settings.allowPast && distanceMillis >= 0) {
|
||||
return this.settings.strings.inPast;
|
||||
return this.settings.strings.inPast
|
||||
}
|
||||
|
||||
var seconds = Math.abs(distanceMillis) / 1000;
|
||||
var minutes = seconds / 60;
|
||||
var hours = minutes / 60;
|
||||
var days = hours / 24;
|
||||
var years = days / 365;
|
||||
var seconds = Math.abs(distanceMillis) / 1000
|
||||
var minutes = seconds / 60
|
||||
var hours = minutes / 60
|
||||
var days = hours / 24
|
||||
var years = days / 365
|
||||
|
||||
function substitute(stringOrFunction, number) {
|
||||
var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
|
||||
var value = ($l.numbers && $l.numbers[number]) || number;
|
||||
return string.replace(/%d/i, value);
|
||||
var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction
|
||||
var value = ($l.numbers && $l.numbers[number]) || number
|
||||
return string.replace(/%d/i, value)
|
||||
}
|
||||
|
||||
var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
|
||||
@@ -108,124 +108,124 @@
|
||||
days < 45 && substitute($l.month, 1) ||
|
||||
days < 365 && substitute($l.months, Math.round(days / 30)) ||
|
||||
years < 1.5 && substitute($l.year, 1) ||
|
||||
substitute($l.years, Math.round(years));
|
||||
substitute($l.years, Math.round(years))
|
||||
|
||||
var separator = $l.wordSeparator || "";
|
||||
if ($l.wordSeparator === undefined) { separator = " "; }
|
||||
return $.trim([prefix, words, suffix].join(separator));
|
||||
var separator = $l.wordSeparator || ""
|
||||
if ($l.wordSeparator === undefined) { separator = " " }
|
||||
return $.trim([prefix, words, suffix].join(separator))
|
||||
},
|
||||
|
||||
parse: function (iso8601) {
|
||||
var s = $.trim(iso8601);
|
||||
s = s.replace(/\.\d+/, ""); // remove milliseconds
|
||||
s = s.replace(/-/, "/").replace(/-/, "/");
|
||||
s = s.replace(/T/, " ").replace(/Z/, " UTC");
|
||||
s = s.replace(/([\+\-]\d\d)\:?(\d\d)/, " $1$2"); // -04:00 -> -0400
|
||||
s = s.replace(/([\+\-]\d\d)$/, " $100"); // +09 -> +0900
|
||||
return new Date(s);
|
||||
var s = $.trim(iso8601)
|
||||
s = s.replace(/\.\d+/, "") // remove milliseconds
|
||||
s = s.replace(/-/, "/").replace(/-/, "/")
|
||||
s = s.replace(/T/, " ").replace(/Z/, " UTC")
|
||||
s = s.replace(/([\+\-]\d\d)\:?(\d\d)/, " $1$2") // -04:00 -> -0400
|
||||
s = s.replace(/([\+\-]\d\d)$/, " $100") // +09 -> +0900
|
||||
return new Date(s)
|
||||
},
|
||||
datetime: function (elem) {
|
||||
var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
|
||||
return $t.parse(iso8601);
|
||||
var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title")
|
||||
return $t.parse(iso8601)
|
||||
},
|
||||
isTime: function (elem) {
|
||||
// jQuery's `is()` doesn't play well with HTML5 in IE
|
||||
return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
|
||||
return $(elem).get(0).tagName.toLowerCase() === "time" // $(elem).is("time");
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
// functions that can be called via $(el).timeago('action')
|
||||
// init is default when no action is given
|
||||
// functions are called with context of a single element
|
||||
var functions = {
|
||||
init: function () {
|
||||
functions.dispose.call(this);
|
||||
var refresh_el = $.proxy(refresh, this);
|
||||
refresh_el();
|
||||
var $s = $t.settings;
|
||||
functions.dispose.call(this)
|
||||
var refresh_el = $.proxy(refresh, this)
|
||||
refresh_el()
|
||||
var $s = $t.settings
|
||||
if ($s.refreshMillis > 0) {
|
||||
this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis);
|
||||
this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis)
|
||||
}
|
||||
},
|
||||
update: function (timestamp) {
|
||||
var date = (timestamp instanceof Date) ? timestamp : $t.parse(timestamp);
|
||||
$(this).data('timeago', { datetime: date });
|
||||
var date = (timestamp instanceof Date) ? timestamp : $t.parse(timestamp)
|
||||
$(this).data('timeago', { datetime: date })
|
||||
if ($t.settings.localeTitle) {
|
||||
$(this).attr("title", date.toLocaleString());
|
||||
$(this).attr("title", date.toLocaleString())
|
||||
}
|
||||
refresh.apply(this);
|
||||
refresh.apply(this)
|
||||
},
|
||||
updateFromDOM: function () {
|
||||
$(this).data('timeago', { datetime: $t.parse($t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title")) });
|
||||
refresh.apply(this);
|
||||
$(this).data('timeago', { datetime: $t.parse($t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title")) })
|
||||
refresh.apply(this)
|
||||
},
|
||||
dispose: function () {
|
||||
if (this._timeagoInterval) {
|
||||
window.clearInterval(this._timeagoInterval);
|
||||
this._timeagoInterval = null;
|
||||
window.clearInterval(this._timeagoInterval)
|
||||
this._timeagoInterval = null
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
$.fn.timeago = function (action, options) {
|
||||
var fn = action ? functions[action] : functions.init;
|
||||
var fn = action ? functions[action] : functions.init
|
||||
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
|
||||
this.each(function () {
|
||||
fn.call(this, options);
|
||||
});
|
||||
return this;
|
||||
};
|
||||
fn.call(this, options)
|
||||
})
|
||||
return this
|
||||
}
|
||||
|
||||
function refresh() {
|
||||
var $s = $t.settings;
|
||||
var $s = $t.settings
|
||||
|
||||
//check if it's still visible
|
||||
if ($s.autoDispose && !$.contains(document.documentElement, this)) {
|
||||
//stop if it has been removed
|
||||
$(this).timeago("dispose");
|
||||
return this;
|
||||
$(this).timeago("dispose")
|
||||
return this
|
||||
}
|
||||
|
||||
var data = prepareData(this);
|
||||
var data = prepareData(this)
|
||||
|
||||
if (!isNaN(data.datetime)) {
|
||||
if ($s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) {
|
||||
$(this).text(inWords(data.datetime));
|
||||
$(this).text(inWords(data.datetime))
|
||||
} else {
|
||||
if ($(this).attr('title').length > 0) {
|
||||
$(this).text($(this).attr('title'));
|
||||
$(this).text($(this).attr('title'))
|
||||
}
|
||||
}
|
||||
}
|
||||
return this;
|
||||
return this
|
||||
}
|
||||
|
||||
function prepareData(element) {
|
||||
element = $(element);
|
||||
element = $(element)
|
||||
if (!element.data("timeago")) {
|
||||
element.data("timeago", { datetime: $t.datetime(element) });
|
||||
var text = $.trim(element.text());
|
||||
element.data("timeago", { datetime: $t.datetime(element) })
|
||||
var text = $.trim(element.text())
|
||||
if ($t.settings.localeTitle) {
|
||||
element.attr("title", element.data('timeago').datetime.toLocaleString());
|
||||
element.attr("title", element.data('timeago').datetime.toLocaleString())
|
||||
} else if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
|
||||
element.attr("title", text);
|
||||
element.attr("title", text)
|
||||
}
|
||||
}
|
||||
return element.data("timeago");
|
||||
return element.data("timeago")
|
||||
}
|
||||
|
||||
function inWords(date) {
|
||||
return $t.inWords(distance(date));
|
||||
return $t.inWords(distance(date))
|
||||
}
|
||||
|
||||
function distance(date) {
|
||||
return (new Date().getTime() - date.getTime());
|
||||
return (new Date().getTime() - date.getTime())
|
||||
}
|
||||
|
||||
// fix for IE6 suckage
|
||||
document.createElement("abbr");
|
||||
document.createElement("time");
|
||||
}));
|
||||
document.createElement("abbr")
|
||||
document.createElement("time")
|
||||
}))
|
||||
@@ -1,346 +1,335 @@
|
||||
//バージョンチェッカー
|
||||
function verck(ver, jp) {
|
||||
console.log("%c Welcome😊", "color: red;font-size:200%;");
|
||||
var date = new Date();
|
||||
var show = false;
|
||||
if (localStorage.getItem("ver") != ver && localStorage.getItem("winstore")) {
|
||||
//ちょっと削除とリンク解析の都合上アレ(s)
|
||||
//対象外のアプデ:storageが20の最初まで"Usamin (18.6.5)"
|
||||
if (!localStorage.getItem("usamin_18_6_5_flag")) {
|
||||
localStorage.setItem("usamin_18_6_5_flag", true);
|
||||
var multi = localStorage.getItem("column");
|
||||
var obj = JSON.parse(multi);
|
||||
for (var i = 0; i < obj.length; i++) {
|
||||
localStorage.removeItem("card_" + i);
|
||||
}
|
||||
if (store) return false
|
||||
console.log('%c Welcome😊 ' + ver, 'color: red;font-size:200%;')
|
||||
$('body').addClass(localStorage.getItem('platform'))
|
||||
var date = new Date()
|
||||
var showVer = false
|
||||
//Spotify
|
||||
if (localStorage.getItem('spotify')) {
|
||||
localStorage.removeItem('spotify')
|
||||
localStorage.removeItem('spotify-refresh')
|
||||
var spDc = 'Spotify NowPlaying sysytem was changed, please re-login to Spotify'
|
||||
if(lang.language == 'ja') {
|
||||
spDc = 'Spotify NowPlayingの機能が変更されたため、もう一度ログインしてください'
|
||||
}
|
||||
//ちょっと削除とリンク解析の都合上アレ(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();
|
||||
}
|
||||
});
|
||||
Swal.fire({
|
||||
type: 'info',
|
||||
title: spDc,
|
||||
})
|
||||
}
|
||||
localStorage.setItem("ver", ver);
|
||||
if (!show) {
|
||||
console.log(show);
|
||||
if (date.getMonth() + 1 >= localStorage.getItem("showSupportMe") || !localStorage.getItem("showSupportMe")) {
|
||||
if (date.getMonth() == 11) {
|
||||
var nextmonth = 1;
|
||||
//Spotify(e)
|
||||
if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) {
|
||||
showVer = true
|
||||
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
|
||||
$(document).ready(function() {
|
||||
if (localStorage.getItem('winstore') && !pwa) {
|
||||
$('#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 {
|
||||
var nextmonth = date.getMonth() + 2;
|
||||
$('#release-en').show()
|
||||
}
|
||||
if (lang.language != "ja") {
|
||||
$("#support-btm-ja").addClass("hide");
|
||||
$("#support-btm-en").removeClass("hide");
|
||||
})
|
||||
}
|
||||
localStorage.setItem('ver', ver)
|
||||
if (!showVer) {
|
||||
console.log(showVer)
|
||||
if (
|
||||
date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe') ||
|
||||
!localStorage.getItem('showSupportMe')
|
||||
) {
|
||||
if (date.getMonth() == 11) {
|
||||
var yrs = date.getFullYear() + 1
|
||||
var nextmonth = yrs * 100 + 1
|
||||
} else {
|
||||
var yrs = date.getFullYear()
|
||||
var nextmonth = yrs * 100 + date.getMonth() + 2
|
||||
}
|
||||
localStorage.setItem("showSupportMe", nextmonth);
|
||||
$("#support-btm").removeClass("hide");
|
||||
$("#support-btm").animate(
|
||||
if (lang.language != 'ja') {
|
||||
$('#support-btm-ja').addClass('hide')
|
||||
$('#support-btm-en').removeClass('hide')
|
||||
}
|
||||
localStorage.setItem('showSupportMe', nextmonth)
|
||||
$('#support-btm').removeClass('hide')
|
||||
$('#support-btm').animate(
|
||||
{
|
||||
bottom: "0"
|
||||
bottom: '0'
|
||||
},
|
||||
{
|
||||
duration: 300
|
||||
}
|
||||
);
|
||||
)
|
||||
}
|
||||
}
|
||||
var platform = localStorage.getItem("platform");
|
||||
console.log("Your platform:" + platform);
|
||||
if (!localStorage.getItem("winstore")) {
|
||||
$("#start").css("display", "flex");
|
||||
var platform = localStorage.getItem('platform')
|
||||
console.log('Your platform:' + platform)
|
||||
if (!localStorage.getItem('winstore') && !pwa) {
|
||||
$('#start').css('display', 'flex')
|
||||
}
|
||||
if (localStorage.getItem("winstore") == "brewcask" || localStorage.getItem("winstore") == "snapcraft" || localStorage.getItem("winstore") == "winstore") {
|
||||
var winstore = true;
|
||||
if (
|
||||
localStorage.getItem('winstore') == 'brewcask' ||
|
||||
localStorage.getItem('winstore') == 'snapcraft' ||
|
||||
localStorage.getItem('winstore') == 'winstore'
|
||||
) {
|
||||
var winstore = true
|
||||
} else {
|
||||
var winstore = false;
|
||||
var winstore = false
|
||||
}
|
||||
var l = 5;
|
||||
var l = 5
|
||||
// 生成する文字列に含める文字セット
|
||||
var c = "abcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var cl = c.length;
|
||||
var r = "";
|
||||
var c = 'abcdefghijklmnopqrstuvwxyz0123456789'
|
||||
var cl = c.length
|
||||
var r = ''
|
||||
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, {
|
||||
method: "GET"
|
||||
method: 'GET'
|
||||
})
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);setLog(start, "JSON", error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(mess) {
|
||||
console.table(mess);
|
||||
console.table(mess)
|
||||
if (mess) {
|
||||
//askjp_jp_ua: 2019年10月24日、mstdn.jpによるユーザーエージェントアクセス制限
|
||||
if (jp && mess.jp_ua && !localStorage.getItem("askjp_jp_ua")) {
|
||||
localStorage.setItem("askjp_jp_ua", true);
|
||||
$("#askjp_jp_ua").removeClass("hide");
|
||||
if (jp && mess.jp_ua && !localStorage.getItem('askjp_jp_ua')) {
|
||||
localStorage.setItem('askjp_jp_ua', true)
|
||||
$('#askjp_jp_ua').removeClass('hide')
|
||||
}
|
||||
var platform = localStorage.getItem("platform");
|
||||
if (platform == "darwin") {
|
||||
var newest = mess.desk_mac;
|
||||
var platform = localStorage.getItem('platform')
|
||||
if (platform == 'darwin') {
|
||||
var newest = mess.desk_mac
|
||||
} else {
|
||||
var newest = mess.desk;
|
||||
var newest = mess.desk
|
||||
}
|
||||
if (newest == ver) {
|
||||
todo(lang.lang_version_usever.replace("{{ver}}", mess.desk));
|
||||
todo(lang.lang_version_usever.replace('{{ver}}', mess.desk))
|
||||
//betaかWinstoreならアプデチェックしない
|
||||
} else if (ver.indexOf("beta") != -1 || 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"], "*");
|
||||
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);
|
||||
console.warn(lang.lang_version_skipver)
|
||||
todo(lang.lang_version_skipver)
|
||||
}
|
||||
} else {
|
||||
postMessage(["sendSinmpleIpc", "update"], "*");
|
||||
postMessage(['sendSinmpleIpc', 'update'], '*')
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
if (!localStorage.getItem("last-notice-id")) {
|
||||
localStorage.setItem("last-notice-id", 0);
|
||||
})
|
||||
if (!localStorage.getItem('last-notice-id')) {
|
||||
localStorage.setItem('last-notice-id', 0)
|
||||
}
|
||||
var start = "https://thedesk.top/notice?since_id=" + localStorage.getItem("last-notice-id");
|
||||
var start = 'https://thedesk.top/notice/index.php?since_id=' + localStorage.getItem('last-notice-id')
|
||||
fetch(start, {
|
||||
method: "GET"
|
||||
method: 'GET',
|
||||
cors: true
|
||||
})
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(mess) {
|
||||
if (mess.length < 1) {
|
||||
return false;
|
||||
return false
|
||||
} else {
|
||||
var last = localStorage.getItem("last-notice-id");
|
||||
localStorage.setItem("last-notice-id", mess[0].ID);
|
||||
var last = localStorage.getItem('last-notice-id')
|
||||
localStorage.setItem('last-notice-id', mess[0].ID)
|
||||
for (i = 0; i < mess.length; i++) {
|
||||
var obj = mess[i];
|
||||
var obj = mess[i]
|
||||
if (obj.ID * 1 <= last) {
|
||||
break;
|
||||
break
|
||||
} else {
|
||||
if (obj.type == "textv2") {
|
||||
if (obj.type == 'textv2') {
|
||||
if (~obj.languages.indexOf(lang.language)) {
|
||||
var show = true;
|
||||
if (obj.toot != "") {
|
||||
var toot = '<button class="btn-flat toast-action" onclick="detEx(\'' + obj.toot + "','main')\">Show</button>";
|
||||
var showVer = true
|
||||
if (obj.toot != '') {
|
||||
var toot =
|
||||
'<button class="btn-flat toast-action" onclick="detEx(\'' +
|
||||
obj.toot +
|
||||
"','main')\">Show</button>"
|
||||
} else {
|
||||
var toot = "";
|
||||
var toot = ''
|
||||
}
|
||||
if (obj.ver != "") {
|
||||
if (obj.ver != '') {
|
||||
if (obj.ver == ver) {
|
||||
show = true;
|
||||
showVer = true
|
||||
} else {
|
||||
show = false;
|
||||
showVer = false
|
||||
}
|
||||
}
|
||||
if (obj.domain != "") {
|
||||
var multi = localStorage.getItem("multi");
|
||||
if (obj.domain != '') {
|
||||
var multi = localStorage.getItem('multi')
|
||||
if (multi) {
|
||||
show = false;
|
||||
var accts = JSON.parse(multi);
|
||||
showVer = false
|
||||
var accts = JSON.parse(multi)
|
||||
Object.keys(accts).forEach(function(key) {
|
||||
var acct = accts[key];
|
||||
var acct = accts[key]
|
||||
if (acct.domain == obj.domain) {
|
||||
show = true;
|
||||
showVer = true
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
}
|
||||
if (show) {
|
||||
M.toast({ html: escapeHTML(obj.text) + toot + '<span class="sml grey-text">(スライドして消去)</span>', displayLength: 86400 });
|
||||
if (showVer) {
|
||||
M.toast({
|
||||
html:
|
||||
escapeHTML(obj.text) +
|
||||
toot +
|
||||
'<span class="sml grey-text">(スライドして消去)</span>',
|
||||
displayLength: 86400
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
var infostreaming = false;
|
||||
var infostreaming = false
|
||||
function infowebsocket() {
|
||||
infows = new WebSocket("wss://thedesk.top/ws/");
|
||||
infows = new WebSocket('wss://thedesk.top/ws/')
|
||||
infows.onopen = function(mess) {
|
||||
console.log([tlid, ":Connect Streaming Info:", mess]);
|
||||
infostreaming = true;
|
||||
};
|
||||
console.log([tlid, ':Connect Streaming Info:', mess])
|
||||
infostreaming = true
|
||||
}
|
||||
infows.onmessage = function(mess) {
|
||||
console.log([tlid, ":Receive Streaming:", JSON.parse(mess.data)]);
|
||||
var obj = JSON.parse(mess.data);
|
||||
if (obj.type != "counter") {
|
||||
if (obj.type == "textv2") {
|
||||
console.log([tlid, ':Receive Streaming:', JSON.parse(mess.data)])
|
||||
var obj = JSON.parse(mess.data)
|
||||
if (obj.type != 'counter') {
|
||||
if (obj.type == 'textv2') {
|
||||
if (~obj.languages.indexOf(lang.language)) {
|
||||
localStorage.setItem("last-notice-id", obj.id);
|
||||
var show = true;
|
||||
if (obj.toot != "") {
|
||||
var toot = '<button class="btn-flat toast-action" onclick="detEx(\'' + obj.toot + "','main')\">Show</button>";
|
||||
localStorage.setItem('last-notice-id', obj.id)
|
||||
var showVer = true
|
||||
if (obj.toot != '') {
|
||||
var toot =
|
||||
'<button class="btn-flat toast-action" onclick="detEx(\'' +
|
||||
obj.toot +
|
||||
"','main')\">Show</button>"
|
||||
} else {
|
||||
var toot = "";
|
||||
var toot = ''
|
||||
}
|
||||
if (obj.ver != "") {
|
||||
if (obj.ver != '') {
|
||||
if (obj.ver == ver) {
|
||||
show = true;
|
||||
showVer = true
|
||||
} else {
|
||||
show = false;
|
||||
showVer = false
|
||||
}
|
||||
}
|
||||
if (obj.domain != "") {
|
||||
var multi = localStorage.getItem("multi");
|
||||
if (obj.domain != '') {
|
||||
var multi = localStorage.getItem('multi')
|
||||
if (multi) {
|
||||
show = false;
|
||||
var accts = JSON.parse(multi);
|
||||
showVer = false
|
||||
var accts = JSON.parse(multi)
|
||||
Object.keys(accts).forEach(function(key) {
|
||||
var acct = accts[key];
|
||||
var acct = accts[key]
|
||||
if (acct.domain == obj.domain) {
|
||||
show = true;
|
||||
showVer = 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 (showVer) {
|
||||
console.log(obj.text)
|
||||
console.log(escapeHTML(obj.text))
|
||||
M.toast({
|
||||
html:
|
||||
escapeHTML(obj.text) +
|
||||
toot +
|
||||
'<span class="sml grey-text">(スライドして消去)</span>',
|
||||
displayLength: 86400
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$("#persons").text(obj.text);
|
||||
$('#persons').text(obj.text)
|
||||
}
|
||||
};
|
||||
}
|
||||
infows.onerror = function(error) {
|
||||
infostreaming = false;
|
||||
console.error("Error closing:info");
|
||||
console.error(error);
|
||||
return false;
|
||||
};
|
||||
infostreaming = false
|
||||
console.error('Error closing:info')
|
||||
console.error(error)
|
||||
return false
|
||||
}
|
||||
infows.onclose = function() {
|
||||
infostreaming = false;
|
||||
console.error("Closing:info");
|
||||
};
|
||||
infostreaming = false
|
||||
console.error('Closing:info')
|
||||
}
|
||||
}
|
||||
setInterval(function() {
|
||||
if (!infostreaming) {
|
||||
console.log("try to connect to base-streaming");
|
||||
infowebsocket();
|
||||
console.log('try to connect to base-streaming')
|
||||
infowebsocket()
|
||||
}
|
||||
}, 10000);
|
||||
}, 10000)
|
||||
function openRN() {
|
||||
$("#releasenote").modal("open");
|
||||
if (lang.language == "ja") {
|
||||
verp = ver.replace("(", "");
|
||||
verp = verp.replace(".", "-");
|
||||
verp = verp.replace(".", "-");
|
||||
verp = verp.replace("[", "-");
|
||||
verp = verp.replace("]", "");
|
||||
verp = verp.replace(")", "");
|
||||
verp = verp.replace(" ", "_");
|
||||
$("#release-" + verp).show();
|
||||
$('#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();
|
||||
$('#release-en').show()
|
||||
}
|
||||
}
|
||||
function closeSupport() {
|
||||
$("#support-btm").animate(
|
||||
$('#support-btm').animate(
|
||||
{
|
||||
bottom: "-300px"
|
||||
bottom: '-300px'
|
||||
},
|
||||
{
|
||||
duration: 300,
|
||||
complete: function() {
|
||||
$("#support-btm").addClass("hide");
|
||||
$('#support-btm').addClass('hide')
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
function storeDialog(platform, ver) {
|
||||
if (platform == "win32") {
|
||||
var mes = lang.lang_version_platform;
|
||||
} else if (platform == "linux") {
|
||||
var mes = lang.lang_version_platform_linux;
|
||||
} else if (platform == "darwin") {
|
||||
var mes = lang.lang_version_platform_mac;
|
||||
}
|
||||
Swal.fire({
|
||||
title: "Select your platform",
|
||||
text: mes,
|
||||
type: "info",
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: "#3085d6",
|
||||
cancelButtonColor: "#3085d6",
|
||||
confirmButtonText: lang.lang_no,
|
||||
cancelButtonText: lang.lang_yesno
|
||||
}).then(result => {
|
||||
//逆にしてる
|
||||
if (!result.value) {
|
||||
localStorage.setItem("winstore", "winstore");
|
||||
} else {
|
||||
localStorage.setItem("winstore", "localinstall");
|
||||
}
|
||||
localStorage.setItem("ver", ver);
|
||||
show = true;
|
||||
console.log("%c Thank you for your update🎉", "color: red;font-size:200%;");
|
||||
$(document).ready(function() {
|
||||
$("#releasenote").modal("open");
|
||||
verp = ver.replace("(", "");
|
||||
verp = verp.replace(".", "-");
|
||||
verp = verp.replace(".", "-");
|
||||
verp = verp.replace("[", "-");
|
||||
verp = verp.replace("]", "");
|
||||
verp = verp.replace(")", "");
|
||||
verp = verp.replace(" ", "_");
|
||||
console.log("%c " + verp, "color: red;font-size:200%;");
|
||||
if (lang.language == "ja") {
|
||||
$("#release-" + verp).show();
|
||||
} else {
|
||||
$("#release-en").show();
|
||||
}
|
||||
});
|
||||
});
|
||||
)
|
||||
}
|
||||
function closeStart() {
|
||||
$("#start").css("display", "none");
|
||||
var platform = localStorage.getItem("platform");
|
||||
var ver = localStorage.getItem("ver");
|
||||
storeDialog(platform, ver);
|
||||
$('#start').css('display', 'none')
|
||||
var platform = localStorage.getItem('platform')
|
||||
var ver = localStorage.getItem('ver')
|
||||
}
|
||||
|
||||
@@ -1,84 +1,105 @@
|
||||
var defaultemojiList = ["activity", "flag", "food", "nature", "object", "people", "place", "symbol"];
|
||||
var defaultemojiList = ['activity', 'flag', 'food', 'nature', 'object', 'people', 'place', 'symbol']
|
||||
var defaultemoji = {
|
||||
activity: activity,
|
||||
flag: flag,
|
||||
food: food,
|
||||
nature: nature,
|
||||
object: object,
|
||||
people: people,
|
||||
place: place,
|
||||
symbol: symbol
|
||||
};
|
||||
if (lang == "ja") {
|
||||
var defaultemojiname = {
|
||||
activity: "活動",
|
||||
flag: "国旗",
|
||||
food: "食べ物",
|
||||
nature: "自然",
|
||||
object: "もの",
|
||||
people: "ひと",
|
||||
place: "場所",
|
||||
symbol: "記号"
|
||||
};
|
||||
activity: activity,
|
||||
flag: flag,
|
||||
food: food,
|
||||
nature: nature,
|
||||
object: object,
|
||||
people: people,
|
||||
place: place,
|
||||
symbol: symbol
|
||||
}
|
||||
if (lang == 'ja') {
|
||||
var defaultemojiname = {
|
||||
activity: '活動',
|
||||
flag: '国旗',
|
||||
food: '食べ物',
|
||||
nature: '自然',
|
||||
object: 'もの',
|
||||
people: 'ひと',
|
||||
place: '場所',
|
||||
symbol: '記号'
|
||||
}
|
||||
} else {
|
||||
var defaultemojiname = {
|
||||
activity: "Activities",
|
||||
flag: "Flags",
|
||||
food: "Foods",
|
||||
nature: "Nature",
|
||||
object: "Tools",
|
||||
people: "People",
|
||||
place: "Places",
|
||||
symbol: "Symbols"
|
||||
};
|
||||
var defaultemojiname = {
|
||||
activity: 'Activities',
|
||||
flag: 'Flags',
|
||||
food: 'Foods',
|
||||
nature: 'Nature',
|
||||
object: 'Tools',
|
||||
people: 'People',
|
||||
place: 'Places',
|
||||
symbol: 'Symbols'
|
||||
}
|
||||
}
|
||||
|
||||
function defaultEmoji(target) {
|
||||
var json = defaultemoji[target];
|
||||
var emojis = "";
|
||||
Object.keys(json).forEach(function (key) {
|
||||
var emoji = json[key];
|
||||
emojis = emojis + '<a onclick="defEmoji(\'' + emoji["shortcode"] + '\')" class="pointer"><span style="width: 20px; height: 20px; display: inline-block; background-image: url(\'../../img/sheet.png\'); background-size: 4900%; background-position: ' + emoji["css"] + ';"></span></a>';
|
||||
});
|
||||
$("#emoji-list").html(emojis);
|
||||
$("#now-emoji").text(lang.lang_defaultemojis_text.replace("{{cat}}", defaultemojiname[target]));
|
||||
$(".emoji-control").addClass("hide");
|
||||
var announcement = false
|
||||
if ($('#media').val() == 'announcement') {
|
||||
announcement = true
|
||||
}
|
||||
var json = defaultemoji[target]
|
||||
var emojis = ''
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var emoji = json[key]
|
||||
if (announcement) {
|
||||
var def = `<a onclick="emojiReactionDef('${emoji['shortcode']}')" class="pointer">`
|
||||
} else {
|
||||
var def = `<a onclick="defEmoji('${emoji['shortcode']}')" class="pointer">`
|
||||
}
|
||||
emojis =
|
||||
emojis +
|
||||
`${def}
|
||||
<span style="
|
||||
width: 20px; height: 20px; display: inline-block; background-image: url('../../img/sheet.png'); background-size: 4900%;
|
||||
background-position:${emoji['css']};"></span>
|
||||
</a>`
|
||||
})
|
||||
$('#emoji-list').html(emojis)
|
||||
$('#now-emoji').text(lang.lang_defaultemojis_text.replace('{{cat}}', defaultemojiname[target]))
|
||||
$('.emoji-control').addClass('hide')
|
||||
}
|
||||
function customEmoji() {
|
||||
$("#emoji-suggest").val("");
|
||||
$(".emoji-control").removeClass("hide");
|
||||
emojiList('home')
|
||||
$('#emoji-suggest').val('')
|
||||
$('.emoji-control').removeClass('hide')
|
||||
emojiList('home')
|
||||
}
|
||||
function defEmoji(target) {
|
||||
var selin = $("#textarea").prop('selectionStart');
|
||||
if (!selin) {
|
||||
selin = 0;
|
||||
}
|
||||
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 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();
|
||||
var selin = $('#textarea').prop('selectionStart')
|
||||
if (!selin) {
|
||||
selin = 0
|
||||
}
|
||||
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 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");
|
||||
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')
|
||||
}
|
||||
@@ -92,7 +92,7 @@ var activity=[
|
||||
{shortcode:"man-rowing-boat",css:"95.8333% 14.5833%"},
|
||||
{shortcode:"man-biking",css:"95.8333% 39.5833%"},
|
||||
{shortcode:"man-mountain-biking",css:"95.8333% 64.5833%"}
|
||||
];
|
||||
]
|
||||
var flag=[
|
||||
{shortcode:"checkered_flag",css:"16.6667% 58.3333%"},
|
||||
{shortcode:"crossed_flags",css:"14.5833% 60.4167%"},
|
||||
@@ -356,7 +356,7 @@ var flag=[
|
||||
{shortcode:"rainbow-flag",css:"83.3333% 100%"},
|
||||
{shortcode:"triangular_flag_on_post",css:"54.1667% 6.25%"},
|
||||
{shortcode:"waving_black_flag",css:"20.8333% 29.1667%"},
|
||||
{shortcode:"waving_white_flag",css:"20.8333% 27.0833%"}];
|
||||
{shortcode:"waving_white_flag",css:"20.8333% 27.0833%"}]
|
||||
var food=[
|
||||
{shortcode:"green_apple",css:"12.5% 25%"},
|
||||
{shortcode:"apple",css:"12.5% 22.9167%"},
|
||||
@@ -444,7 +444,7 @@ var food=[
|
||||
{shortcode:"spoon",css:"62.5% 14.5833%"},
|
||||
{shortcode:"fork_and_knife",css:"14.5833% 0%"},
|
||||
{shortcode:"knife_fork_plate",css:"14.5833% 18.75%"}
|
||||
];
|
||||
]
|
||||
var nature=[
|
||||
{shortcode:"dog",css:"22.9167% 62.5%"},
|
||||
{shortcode:"cat",css:"22.9167% 52.0833%"},
|
||||
@@ -605,7 +605,7 @@ var nature=[
|
||||
{shortcode:"droplet",css:"35.4167% 39.5833%"},
|
||||
{shortcode:"sweat_drops",css:"35.4167% 37.5%"},
|
||||
{shortcode:"umbrella_with_rain_drops",css:"0% 100%"}
|
||||
];
|
||||
]
|
||||
var object=[
|
||||
{shortcode:"watch",css:"0% 29.1667%"},
|
||||
{shortcode:"iphone",css:"39.5833% 0%"},
|
||||
@@ -780,7 +780,7 @@ var object=[
|
||||
{shortcode:"closed_lock_with_key",css:"39.5833% 62.5%"},
|
||||
{shortcode:"lock",css:"39.5833% 66.6667%"},
|
||||
{shortcode:"unlock",css:"39.5833% 68.75%"}
|
||||
];
|
||||
]
|
||||
var people=[
|
||||
{shortcode:"grinning",css:"45.8333% 68.75%"},
|
||||
{shortcode:"smiley",css:"45.8333% 75%"},
|
||||
@@ -1096,7 +1096,7 @@ var people=[
|
||||
{shortcode:"woman-raising-hand",css:"93.75% 29.1667%"},
|
||||
{shortcode:"woman-frowning",css:"93.75% 54.1667%"},
|
||||
{shortcode:"woman-pouting",css:"93.75% 79.1667%"}
|
||||
];
|
||||
]
|
||||
var place=[
|
||||
{shortcode:"car",css:"52.0833% 60.4167%"},
|
||||
{shortcode:"taxi",css:"52.0833% 56.25%"},
|
||||
@@ -1217,7 +1217,7 @@ var place=[
|
||||
{shortcode:"milky_way",css:"8.33333% 93.75%"},
|
||||
{shortcode:"bridge_at_night",css:"8.33333% 87.5%"},
|
||||
{shortcode:"foggy",css:"8.33333% 70.8333%"}
|
||||
];
|
||||
]
|
||||
var symbol=[
|
||||
{shortcode:"heart",css:"6.25% 62.5%"},
|
||||
{shortcode:"yellow_heart",css:"35.4167% 14.5833%"},
|
||||
@@ -1492,7 +1492,7 @@ var symbol=[
|
||||
{shortcode:"female_sign",css:"2.08333% 37.5%"},
|
||||
{shortcode:"male_sign",css:"2.08333% 39.5833%"},
|
||||
{shortcode:"staff_of_aesculapius",css:"2.08333% 87.5%"}
|
||||
];
|
||||
]
|
||||
var faicons=[
|
||||
"fa-500px",
|
||||
"fa-address-book",
|
||||
|
||||
@@ -83,6 +83,6 @@ var idata = {
|
||||
"nitiasa.com_quote":"enabled",
|
||||
"biwakodon.com_quote":"enabled",
|
||||
"comm.cx_quote":"enabled"
|
||||
};
|
||||
}
|
||||
|
||||
localStorage.setItem("instance", JSON.stringify(idata));
|
||||
localStorage.setItem("instance", JSON.stringify(idata))
|
||||
|
||||
@@ -2,128 +2,140 @@
|
||||
//最初に読むやつ
|
||||
//アスタルテ判定初期化
|
||||
|
||||
localStorage.removeItem("kirishima");
|
||||
localStorage.removeItem("quoters");
|
||||
localStorage.removeItem("imas");
|
||||
localStorage.removeItem("image");
|
||||
localStorage.removeItem("stable");
|
||||
localStorage.setItem("mode_misskey.xyz", "misskey");
|
||||
localStorage.removeItem('kirishima')
|
||||
localStorage.removeItem('quoters')
|
||||
localStorage.removeItem('imas')
|
||||
localStorage.removeItem('image')
|
||||
localStorage.removeItem('stable')
|
||||
localStorage.setItem('mode_misskey.xyz', 'misskey')
|
||||
function ck() {
|
||||
var main = localStorage.getItem("main");
|
||||
var main = localStorage.getItem('main')
|
||||
if (!main) {
|
||||
localStorage.setItem("main", 0);
|
||||
localStorage.setItem('main', 0)
|
||||
}
|
||||
|
||||
//コード受信
|
||||
if (location.search) {
|
||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
|
||||
var mode = m[1];
|
||||
var codex = m[2];
|
||||
if (mode == "manager" || mode == "login") {
|
||||
code(codex, mode);
|
||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/)
|
||||
var mode = m[1]
|
||||
var codex = m[2]
|
||||
if (mode == 'manager' || mode == 'login') {
|
||||
code(codex, mode)
|
||||
} else {
|
||||
}
|
||||
}
|
||||
var multi = localStorage.getItem("multi");
|
||||
if (!multi || multi == "[]") {
|
||||
var date = new Date();
|
||||
localStorage.setItem("showSupportMe", date.getMonth() + 2);
|
||||
location.href = "acct.html?mode=first&code=true";
|
||||
var multi = localStorage.getItem('multi')
|
||||
if (!multi || multi == '[]') {
|
||||
var date = new Date()
|
||||
localStorage.setItem('showSupportMe', date.getMonth() + 2)
|
||||
location.href = 'acct.html?mode=first&code=true'
|
||||
} else {
|
||||
var obj = JSON.parse(multi);
|
||||
var jp = false;
|
||||
var obj = JSON.parse(multi)
|
||||
var jp = false
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
var acct = obj[key];
|
||||
var acct = obj[key]
|
||||
if (acct.domain) {
|
||||
refresh(key, true);
|
||||
refresh(key, true)
|
||||
}
|
||||
if (acct.domain == "mstdn.jp") {
|
||||
jp = true;
|
||||
if (acct.domain == 'mstdn.jp') {
|
||||
jp = true
|
||||
}
|
||||
});
|
||||
})
|
||||
if (obj[0].domain) {
|
||||
$("#tl").show();
|
||||
ticker();
|
||||
multiSelector(false);
|
||||
verck(ver, jp);
|
||||
$(".stw").show();
|
||||
$("#something-wrong img").attr("src", "../../img/thinking.svg");
|
||||
$('#tl').show()
|
||||
ticker()
|
||||
multiSelector(false)
|
||||
verck(ver, jp)
|
||||
$('.stw').show()
|
||||
if (localStorage.getItem('tips')) {
|
||||
tips(localStorage.getItem('tips'))
|
||||
}
|
||||
$('#something-wrong img').attr('src', '../../img/thinking.svg')
|
||||
}
|
||||
}
|
||||
}
|
||||
ck();
|
||||
ck()
|
||||
|
||||
//ログインポップアップ
|
||||
function login(url) {
|
||||
if ($("#linux:checked").val() == "on") {
|
||||
var red = "urn:ietf:wg:oauth:2.0:oob";
|
||||
if ($('#linux:checked').val() == 'on') {
|
||||
var red = 'urn:ietf:wg:oauth:2.0:oob'
|
||||
} else {
|
||||
var red = "thedesk://login";
|
||||
var red = 'thedesk://login'
|
||||
}
|
||||
localStorage.setItem("redirect", red);
|
||||
var start = "https://" + url + "/api/v1/apps";
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open("POST", start, true);
|
||||
httpreq.setRequestHeader("Content-Type", "application/json");
|
||||
httpreq.responseType = "json";
|
||||
localStorage.setItem('redirect', red)
|
||||
var start = 'https://' + url + '/api/v1/apps'
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(
|
||||
JSON.stringify({
|
||||
scopes: "read write follow",
|
||||
client_name: "TheDesk(PC)",
|
||||
scopes: 'read write follow',
|
||||
client_name: 'TheDesk(PC)',
|
||||
redirect_uris: red,
|
||||
website: "https://thedesk.top"
|
||||
website: 'https://thedesk.top'
|
||||
})
|
||||
);
|
||||
)
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response;
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, json);
|
||||
setLog(start, this.status, json)
|
||||
}
|
||||
var auth = "https://" + url + "/oauth/authorize?client_id=" + json["client_id"] + "&client_secret=" + json["client_secret"] + "&response_type=code&redirect_uri=" + red + "&scope=read+write+follow";
|
||||
localStorage.setItem("domain_" + acct_id, url);
|
||||
localStorage.setItem("client_id", json["client_id"]);
|
||||
localStorage.setItem("client_secret", json["client_secret"]);
|
||||
$("#auth").show();
|
||||
$("#masara").hide();
|
||||
postMessage(["openUrl", auth], "*");
|
||||
var auth =
|
||||
'https://' +
|
||||
url +
|
||||
'/oauth/authorize?client_id=' +
|
||||
json['client_id'] +
|
||||
'&client_secret=' +
|
||||
json['client_secret'] +
|
||||
'&response_type=code&redirect_uri=' +
|
||||
red +
|
||||
'&scope=read+write+follow'
|
||||
localStorage.setItem('domain_' + acct_id, url)
|
||||
localStorage.setItem('client_id', json['client_id'])
|
||||
localStorage.setItem('client_secret', json['client_secret'])
|
||||
$('#auth').show()
|
||||
$('#masara').hide()
|
||||
postMessage(['openUrl', auth], '*')
|
||||
|
||||
if ($("#linux:checked").val() == "on") {
|
||||
if ($('#linux:checked').val() == 'on') {
|
||||
} else {
|
||||
postMessage(["sendSinmpleIpc", "quit"], "*");
|
||||
postMessage(['sendSinmpleIpc', 'quit'], '*')
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
//テキストボックスにURL入れた
|
||||
function instance() {
|
||||
var url = $("#url").val();
|
||||
login(url);
|
||||
var url = $('#url').val()
|
||||
login(url)
|
||||
}
|
||||
|
||||
//コードを入れた後認証
|
||||
function code(code, mode) {
|
||||
var red = localStorage.getItem("redirect");
|
||||
localStorage.removeItem("redirect");
|
||||
var red = localStorage.getItem('redirect')
|
||||
localStorage.removeItem('redirect')
|
||||
if (!code) {
|
||||
var code = $("#code").val();
|
||||
var code = $('#code').val()
|
||||
}
|
||||
if (localStorage.getItem("domain_tmp")) {
|
||||
var url = localStorage.getItem("domain_tmp");
|
||||
if (localStorage.getItem('domain_tmp')) {
|
||||
var url = localStorage.getItem('domain_tmp')
|
||||
} else {
|
||||
var url = localStorage.getItem("domain_" + acct_id);
|
||||
var url = localStorage.getItem('domain_' + acct_id)
|
||||
}
|
||||
var start = "https://" + url + "/oauth/token";
|
||||
var id = localStorage.getItem("client_id");
|
||||
var secret = localStorage.getItem("client_secret");
|
||||
var start = 'https://' + url + '/oauth/token'
|
||||
var id = localStorage.getItem('client_id')
|
||||
var secret = localStorage.getItem('client_secret')
|
||||
fetch(start, {
|
||||
method: "POST",
|
||||
method: 'POST',
|
||||
headers: {
|
||||
"content-type": "application/json"
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
grant_type: "authorization_code",
|
||||
grant_type: 'authorization_code',
|
||||
redirect_uri: red,
|
||||
client_id: id,
|
||||
client_secret: secret,
|
||||
@@ -133,451 +145,474 @@ function code(code, mode) {
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
todo(json);
|
||||
if (json["access_token"]) {
|
||||
localStorage.setItem(url + "_at", json["access_token"]);
|
||||
if (mode == "manager") {
|
||||
getdataAdv(url, json["access_token"]);
|
||||
todo(json)
|
||||
if (json['access_token']) {
|
||||
localStorage.setItem(url + '_at', json['access_token'])
|
||||
if (mode == 'manager') {
|
||||
getdataAdv(url, json['access_token'])
|
||||
} else {
|
||||
getdata();
|
||||
getdata()
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
//ユーザーデータ取得(最初)
|
||||
function getdata() {
|
||||
var acct_id = 0;
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/accounts/verify_credentials";
|
||||
var acct_id = 0
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/v1/accounts/verify_credentials'
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
method: 'GET',
|
||||
headers: {
|
||||
"content-type": "application/json",
|
||||
Authorization: "Bearer " + at
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
})
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
if (json.error) {
|
||||
console.error("Error:" + json.error);
|
||||
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 });
|
||||
return;
|
||||
console.error('Error:' + json.error)
|
||||
M.toast({ html: lang.lang_fatalerroroccured + 'Error:' + json.error, displayLength: 5000 })
|
||||
return
|
||||
}
|
||||
var avatar = json["avatar"];
|
||||
var avatar = json['avatar']
|
||||
//missingがmissingなやつ
|
||||
if (avatar == "/avatars/original/missing.png") {
|
||||
avatar = "./img/missing.svg";
|
||||
if (avatar == '/avatars/original/missing.png') {
|
||||
avatar = './img/missing.svg'
|
||||
}
|
||||
var obj = [
|
||||
{
|
||||
at: at,
|
||||
name: json["display_name"],
|
||||
name: json['display_name'],
|
||||
domain: domain,
|
||||
user: json["acct"],
|
||||
user: json['acct'],
|
||||
prof: avatar,
|
||||
id: json["id"],
|
||||
vis: json["source"]["privacy"]
|
||||
id: json['id'],
|
||||
vis: json['source']['privacy']
|
||||
}
|
||||
];
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("multi", json);
|
||||
localStorage.setItem("name_" + acct_id, json["display_name"]);
|
||||
localStorage.setItem("user_" + acct_id, json["acct"]);
|
||||
localStorage.setItem("user-id_" + acct_id, json["id"]);
|
||||
localStorage.setItem("prof_" + acct_id, avatar);
|
||||
$("#masara").hide();
|
||||
$("#auth").hide();
|
||||
$("#tl").show();
|
||||
parseColumn();
|
||||
ckdb();
|
||||
});
|
||||
]
|
||||
var json = JSON.stringify(obj)
|
||||
localStorage.setItem('multi', json)
|
||||
localStorage.setItem('name_' + acct_id, json['display_name'])
|
||||
localStorage.setItem('user_' + acct_id, json['acct'])
|
||||
localStorage.setItem('user-id_' + acct_id, json['id'])
|
||||
localStorage.setItem('prof_' + acct_id, avatar)
|
||||
$('#masara').hide()
|
||||
$('#auth').hide()
|
||||
$('#tl').show()
|
||||
parseColumn()
|
||||
ckdb()
|
||||
})
|
||||
}
|
||||
//ユーザーデータ取得(追加)
|
||||
function getdataAdv(domain, at) {
|
||||
var start = "https://" + domain + "/api/v1/accounts/verify_credentials";
|
||||
var start = 'https://' + domain + '/api/v1/accounts/verify_credentials'
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
method: 'GET',
|
||||
headers: {
|
||||
"content-type": "application/json",
|
||||
Authorization: "Bearer " + at
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
})
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
if (json.error) {
|
||||
console.error("Error:" + json.error);
|
||||
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 });
|
||||
return;
|
||||
console.error('Error:' + json.error)
|
||||
M.toast({ html: lang.lang_fatalerroroccured + 'Error:' + json.error, displayLength: 5000 })
|
||||
return
|
||||
}
|
||||
var avatar = json["avatar"];
|
||||
var avatar = json['avatar']
|
||||
//missingがmissingなやつ
|
||||
if (avatar == "/avatars/original/missing.png") {
|
||||
avatar = "../../img/missing.svg";
|
||||
if (avatar == '/avatars/original/missing.png') {
|
||||
avatar = '../../img/missing.svg'
|
||||
}
|
||||
if (json["source"]["privacy"]) {
|
||||
var priv = json["source"]["privacy"];
|
||||
if (json['source']['privacy']) {
|
||||
var priv = json['source']['privacy']
|
||||
} else {
|
||||
var priv = "public";
|
||||
var priv = 'public'
|
||||
}
|
||||
var add = {
|
||||
at: at,
|
||||
name: json["display_name"],
|
||||
name: json['display_name'],
|
||||
domain: domain,
|
||||
user: json["acct"],
|
||||
user: json['acct'],
|
||||
prof: avatar,
|
||||
id: json["id"],
|
||||
id: json['id'],
|
||||
vis: priv
|
||||
};
|
||||
var multi = localStorage.getItem("multi");
|
||||
var obj = JSON.parse(multi);
|
||||
var target = obj.lengtth;
|
||||
obj.push(add);
|
||||
localStorage.setItem("name_" + target, json["display_name"]);
|
||||
localStorage.setItem("user_" + target, json["acct"]);
|
||||
localStorage.setItem("user-id_" + target, json["id"]);
|
||||
localStorage.setItem("prof_" + target, avatar);
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("multi", json);
|
||||
location.href = "index.html";
|
||||
});
|
||||
}
|
||||
var multi = localStorage.getItem('multi')
|
||||
var obj = JSON.parse(multi)
|
||||
var target = obj.lengtth
|
||||
obj.push(add)
|
||||
localStorage.setItem('name_' + target, json['display_name'])
|
||||
localStorage.setItem('user_' + target, json['acct'])
|
||||
localStorage.setItem('user-id_' + target, json['id'])
|
||||
localStorage.setItem('prof_' + target, avatar)
|
||||
var json = JSON.stringify(obj)
|
||||
localStorage.setItem('multi', json)
|
||||
location.href = 'index.html'
|
||||
})
|
||||
}
|
||||
//ユーザーデータ更新
|
||||
function refresh(target, loadskip) {
|
||||
var multi = localStorage.getItem("multi");
|
||||
var obj = JSON.parse(multi);
|
||||
if (obj[target].mode == "misskey") {
|
||||
return;
|
||||
var multi = localStorage.getItem('multi')
|
||||
var obj = JSON.parse(multi)
|
||||
if (obj[target].mode == 'misskey') {
|
||||
return
|
||||
}
|
||||
var start = "https://" + obj[target].domain + "/api/v1/accounts/verify_credentials";
|
||||
var start = 'https://' + obj[target].domain + '/api/v1/accounts/verify_credentials'
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
method: 'GET',
|
||||
headers: {
|
||||
"content-type": "application/json",
|
||||
Authorization: "Bearer " + obj[target].at
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + obj[target].at
|
||||
}
|
||||
})
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
if (json.error) {
|
||||
console.error("Error:" + json.error);
|
||||
M.toast({ html: lang.lang_fatalerroroccured + "Error:" + json.error, displayLength: 5000 });
|
||||
return;
|
||||
console.error('Error:' + json.error)
|
||||
M.toast({ html: lang.lang_fatalerroroccured + 'Error:' + json.error, displayLength: 5000 })
|
||||
return
|
||||
}
|
||||
var avatar = json["avatar"];
|
||||
var avatar = json['avatar']
|
||||
//missingがmissingなやつ
|
||||
if (avatar == "/avatars/original/missing.png" || !avatar) {
|
||||
avatar = "./img/missing.svg";
|
||||
if (avatar == '/avatars/original/missing.png' || !avatar) {
|
||||
avatar = './img/missing.svg'
|
||||
}
|
||||
var ref = {
|
||||
at: obj[target].at,
|
||||
name: json["display_name"],
|
||||
name: json['display_name'],
|
||||
domain: obj[target].domain,
|
||||
user: json["acct"],
|
||||
user: json['acct'],
|
||||
prof: avatar,
|
||||
id: json["id"],
|
||||
vis: json["source"]["privacy"]
|
||||
};
|
||||
localStorage.setItem("name_" + target, json["display_name"]);
|
||||
localStorage.setItem("user_" + target, json["acct"]);
|
||||
localStorage.setItem("user-id_" + target, json["id"]);
|
||||
localStorage.setItem("prof_" + target, avatar);
|
||||
localStorage.setItem("follow_" + target, json["following_count"]);
|
||||
if (json["source"]["sensitive"]) {
|
||||
localStorage.setItem("nsfw_" + target, "true");
|
||||
id: json['id'],
|
||||
vis: json['source']['privacy']
|
||||
}
|
||||
if (obj[target].background) {
|
||||
ref.background = obj[target].background
|
||||
}
|
||||
if (obj[target].text) {
|
||||
ref.text = obj[target].text
|
||||
}
|
||||
localStorage.setItem('name_' + target, json['display_name'])
|
||||
localStorage.setItem('user_' + target, json['acct'])
|
||||
localStorage.setItem('user-id_' + target, json['id'])
|
||||
localStorage.setItem('prof_' + target, avatar)
|
||||
localStorage.setItem('follow_' + target, json['following_count'])
|
||||
if (json['source']['sensitive']) {
|
||||
localStorage.setItem('nsfw_' + target, 'true')
|
||||
} else {
|
||||
localStorage.removeItem("nsfw_" + target);
|
||||
localStorage.removeItem('nsfw_' + target)
|
||||
}
|
||||
obj[target] = ref;
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("multi", json);
|
||||
obj[target] = ref
|
||||
var json = JSON.stringify(obj)
|
||||
localStorage.setItem('multi', json)
|
||||
if (!loadskip) {
|
||||
load();
|
||||
load()
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
//MarkdownやBBCodeの対応、文字数制限をチェック
|
||||
//絶対ストリーミングを閉じさせないマン
|
||||
function ckdb(acct_id) {
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
localStorage.removeItem("home_" + acct_id);
|
||||
localStorage.removeItem("bb_" + acct_id);
|
||||
localStorage.removeItem("md_" + acct_id);
|
||||
localStorage.removeItem("local_" + acct_id);
|
||||
localStorage.removeItem("public_" + acct_id);
|
||||
localStorage.removeItem("notification_" + acct_id);
|
||||
localStorage.removeItem("post_" + acct_id);
|
||||
localStorage.removeItem("fav_" + acct_id);
|
||||
localStorage.removeItem("bt_" + acct_id);
|
||||
localStorage.removeItem("followlocale_" + acct_id);
|
||||
if (domain == "kirishima.cloud") {
|
||||
localStorage.setItem("kirishima", "true");
|
||||
} else if (domain == "imastodon.net") {
|
||||
localStorage.setItem("imas", "true");
|
||||
$(".imasonly").show();
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
localStorage.removeItem('home_' + acct_id)
|
||||
localStorage.removeItem('bb_' + acct_id)
|
||||
localStorage.removeItem('md_' + acct_id)
|
||||
localStorage.removeItem('local_' + acct_id)
|
||||
localStorage.removeItem('public_' + acct_id)
|
||||
localStorage.removeItem('notification_' + acct_id)
|
||||
localStorage.removeItem('post_' + acct_id)
|
||||
localStorage.removeItem('fav_' + acct_id)
|
||||
localStorage.removeItem('bt_' + acct_id)
|
||||
localStorage.removeItem('followlocale_' + acct_id)
|
||||
if (domain == 'kirishima.cloud') {
|
||||
localStorage.setItem('kirishima', 'true')
|
||||
} else if (domain == 'imastodon.net') {
|
||||
localStorage.setItem('imas', 'true')
|
||||
$('.imasonly').show()
|
||||
}
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||
var bbcode = domain + "_bbcode";
|
||||
var letters = domain + "_letters";
|
||||
var quoteMarker = domain + "_quote";
|
||||
if (localStorage.getItem("instance")) {
|
||||
var json = JSON.parse(localStorage.getItem("instance"));
|
||||
if (json[quoteMarker] == "enabled") {
|
||||
localStorage.setItem("quoters", "true");
|
||||
localStorage.setItem("quote_" + acct_id, "true");
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var bbcode = domain + '_bbcode'
|
||||
var letters = domain + '_letters'
|
||||
var quoteMarker = domain + '_quote'
|
||||
if (localStorage.getItem('instance')) {
|
||||
var json = JSON.parse(localStorage.getItem('instance'))
|
||||
if (json[quoteMarker] == 'enabled') {
|
||||
localStorage.setItem('quoters', 'true')
|
||||
localStorage.setItem('quote_' + acct_id, 'true')
|
||||
}
|
||||
if (json[bbcode]) {
|
||||
if (json[bbcode] == "enabled") {
|
||||
localStorage.setItem("bb_" + acct_id, "true");
|
||||
if (json[bbcode] == 'enabled') {
|
||||
localStorage.setItem('bb_' + acct_id, 'true')
|
||||
} else {
|
||||
localStorage.removeItem("bb_" + acct_id);
|
||||
$("[data-activates='bbcode']").addClass("disabled");
|
||||
$("[data-activates='bbcode']").prop("disabled", true);
|
||||
localStorage.removeItem('bb_' + acct_id)
|
||||
$("[data-activates='bbcode']").addClass('disabled')
|
||||
$("[data-activates='bbcode']").prop('disabled', true)
|
||||
}
|
||||
} else {
|
||||
localStorage.removeItem("bb_" + acct_id);
|
||||
$("[data-activates='bbcode']").addClass("disabled");
|
||||
$("[data-activates='bbcode']").addClass("disabled", true);
|
||||
localStorage.removeItem('bb_' + acct_id)
|
||||
$("[data-activates='bbcode']").addClass('disabled')
|
||||
$("[data-activates='bbcode']").addClass('disabled', true)
|
||||
}
|
||||
|
||||
if (json[domain + "_markdown"] == "enabled") {
|
||||
localStorage.setItem("md_" + acct_id, "true");
|
||||
$(".markdown").show();
|
||||
if (json[domain + '_markdown'] == 'enabled') {
|
||||
localStorage.setItem('md_' + acct_id, 'true')
|
||||
$('.markdown').show()
|
||||
} else {
|
||||
$(".anti-markdown").hide();
|
||||
$(".markdown").hide();
|
||||
localStorage.removeItem("bb_" + acct_id);
|
||||
$('.anti-markdown').hide()
|
||||
$('.markdown').hide()
|
||||
localStorage.removeItem('bb_' + acct_id)
|
||||
}
|
||||
if (json[domain + "_home"]) {
|
||||
localStorage.setItem("home_" + acct_id, json[domain + "_home"]);
|
||||
if (json[domain + '_home']) {
|
||||
localStorage.setItem('home_' + acct_id, json[domain + '_home'])
|
||||
}
|
||||
if (json[domain + "_local"]) {
|
||||
localStorage.setItem("local_" + acct_id, json[domain + "_local"]);
|
||||
if (json[domain + '_local']) {
|
||||
localStorage.setItem('local_' + acct_id, json[domain + '_local'])
|
||||
}
|
||||
if (json[domain + "_public"]) {
|
||||
localStorage.setItem("public_" + acct_id, json[domain + "_public"]);
|
||||
if (json[domain + '_public']) {
|
||||
localStorage.setItem('public_' + acct_id, json[domain + '_public'])
|
||||
}
|
||||
if (json[domain + "_notification"]) {
|
||||
localStorage.setItem("notification_" + acct_id, json[domain + "_notification"]);
|
||||
if (json[domain + '_notification']) {
|
||||
localStorage.setItem('notification_' + acct_id, json[domain + '_notification'])
|
||||
}
|
||||
if (json[domain + "_post"]) {
|
||||
localStorage.setItem("post_" + acct_id, json[domain + "_post"]);
|
||||
if (json[domain + '_post']) {
|
||||
localStorage.setItem('post_' + acct_id, json[domain + '_post'])
|
||||
}
|
||||
if (json[domain + "_fav"]) {
|
||||
localStorage.setItem("fav_" + acct_id, json[domain + "_fav"]);
|
||||
if (json[domain + '_fav']) {
|
||||
localStorage.setItem('fav_' + acct_id, json[domain + '_fav'])
|
||||
}
|
||||
if (json[domain + "_bt"]) {
|
||||
localStorage.setItem("bt_" + acct_id, json[domain + "_bt"]);
|
||||
if (json[domain + '_bt']) {
|
||||
localStorage.setItem('bt_' + acct_id, json[domain + '_bt'])
|
||||
}
|
||||
if (json[domain + "_follow"]) {
|
||||
localStorage.setItem("followlocale_" + acct_id, json[domain + "_follow"]);
|
||||
if (json[domain + '_follow']) {
|
||||
localStorage.setItem('followlocale_' + acct_id, json[domain + '_follow'])
|
||||
}
|
||||
}
|
||||
if (localStorage.getItem("mode_" + domain) != "misskey") {
|
||||
var start = "https://" + domain + "/api/v1/instance";
|
||||
if (localStorage.getItem('mode_' + domain) != 'misskey') {
|
||||
var start = 'https://' + domain + '/api/v1/instance'
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
method: 'GET',
|
||||
headers: {
|
||||
"content-type": "application/json"
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
})
|
||||
.then(function(response) {
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.error(error);
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
if (json.error) {
|
||||
console.error(json.error);
|
||||
return;
|
||||
console.error(json.error)
|
||||
return
|
||||
}
|
||||
if (json) {
|
||||
if (json["max_toot_chars"]) {
|
||||
localStorage.setItem("letters_" + acct_id, json["max_toot_chars"]);
|
||||
if (json['max_toot_chars']) {
|
||||
localStorage.setItem('letters_' + acct_id, json['max_toot_chars'])
|
||||
}
|
||||
if (json["urls"]["streaming_api"]) {
|
||||
localStorage.setItem("streaming_" + acct_id, json["urls"]["streaming_api"]);
|
||||
if (json['urls']['streaming_api']) {
|
||||
localStorage.setItem('streaming_' + acct_id, json['urls']['streaming_api'])
|
||||
} else {
|
||||
localStorage.removeItem("streaming_" + acct_id);
|
||||
localStorage.removeItem('streaming_' + acct_id)
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
} else {
|
||||
}
|
||||
}
|
||||
|
||||
//アカウントを選択…を実装
|
||||
function multiSelector(parseC) {
|
||||
var multi = localStorage.getItem("multi");
|
||||
var multi = localStorage.getItem('multi')
|
||||
if (!multi) {
|
||||
var obj = [];
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("multi", json);
|
||||
var obj = []
|
||||
var json = JSON.stringify(obj)
|
||||
localStorage.setItem('multi', json)
|
||||
} else {
|
||||
var obj = JSON.parse(multi);
|
||||
var obj = JSON.parse(multi)
|
||||
}
|
||||
var templete;
|
||||
if (localStorage.getItem("mainuse") == "main") {
|
||||
var last = localStorage.getItem("main");
|
||||
} else if (localStorage.getItem("last-use")) {
|
||||
var last = localStorage.getItem("last-use");
|
||||
if (last == "webview" || last == "noauth") {
|
||||
last = "0";
|
||||
var templete
|
||||
if (localStorage.getItem('mainuse') == 'main') {
|
||||
var last = localStorage.getItem('main')
|
||||
} else if (localStorage.getItem('last-use')) {
|
||||
var last = localStorage.getItem('last-use')
|
||||
if (last == 'webview' || last == 'noauth') {
|
||||
last = '0'
|
||||
}
|
||||
} else {
|
||||
var last = "0";
|
||||
var last = '0'
|
||||
}
|
||||
last = last + "";
|
||||
var sel;
|
||||
last = last + ''
|
||||
var sel
|
||||
if (obj.length < 1) {
|
||||
$("#src-acct-sel").html('<option value="tootsearch">Tootsearch</option>');
|
||||
$("#add-acct-sel").html('<option value="noauth">' + lang.lang_login_noauth + "</option>");
|
||||
$('#src-acct-sel').html('<option value="tootsearch">Tootsearch</option>')
|
||||
$('#add-acct-sel').html('<option value="noauth">' + lang.lang_login_noauth + '</option>')
|
||||
} else {
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
var acct = obj[key];
|
||||
var list = key * 1 + 1;
|
||||
if (key + "" === last) {
|
||||
sel = "selected";
|
||||
var domain = acct.domain;
|
||||
localStorage.setItem("domain_" + key, domain);
|
||||
if (idata[domain + "_letters"]) {
|
||||
$("#textarea").attr("data-length", idata[domain + "_letters"]);
|
||||
var acct = obj[key]
|
||||
var list = key * 1 + 1
|
||||
if (key + '' === last) {
|
||||
sel = 'selected'
|
||||
var domain = acct.domain
|
||||
localStorage.setItem('domain_' + key, domain)
|
||||
if (idata[domain + '_letters']) {
|
||||
$('#textarea').attr('data-length', idata[domain + '_letters'])
|
||||
} else {
|
||||
var maxletters = localStorage.getItem("letters_" + key);
|
||||
var maxletters = localStorage.getItem('letters_' + key)
|
||||
if (maxletters > 0) {
|
||||
$("#textarea").attr("data-length", maxletters);
|
||||
$('#textarea').attr('data-length', maxletters)
|
||||
} else {
|
||||
$("#textarea").attr("data-length", 500);
|
||||
$('#textarea').attr('data-length', 500)
|
||||
}
|
||||
}
|
||||
if (idata[domain + "_glitch"]) {
|
||||
$("#local-button").removeClass("hide");
|
||||
if (idata[domain + '_glitch']) {
|
||||
$('#local-button').removeClass('hide')
|
||||
}
|
||||
var profimg = acct.prof;
|
||||
var profimg = acct.prof
|
||||
//localStorage.setItem("prof_" + key, profimg);
|
||||
if (!profimg) {
|
||||
profimg = "../../img/missing.svg";
|
||||
profimg = '../../img/missing.svg'
|
||||
}
|
||||
$("#acct-sel-prof").attr("src", profimg);
|
||||
$('#acct-sel-prof').attr('src', profimg)
|
||||
if (domain) {
|
||||
var cc = "(" + domain + ")";
|
||||
var cc = '(' + domain + ')'
|
||||
} else {
|
||||
var cc = "";
|
||||
var cc = ''
|
||||
}
|
||||
$("#toot-post-btn").text(lang.lang_toot + cc);
|
||||
if (acct.background && acct.background != "def" && acct.text && acct.text != "def") {
|
||||
$("#toot-post-btn").removeClass("indigo");
|
||||
$("#toot-post-btn").css("background-color", "#" + acct.background);
|
||||
$("#toot-post-btn").css("color", acct.text);
|
||||
$('#toot-post-btn').text(lang.lang_toot + cc)
|
||||
if (acct.background && acct.background != 'def' && acct.text && acct.text != 'def') {
|
||||
$('#toot-post-btn').removeClass('indigo')
|
||||
$('#toot-post-btn').css('background-color', '#' + acct.background)
|
||||
$('#toot-post-btn').css('color', acct.text)
|
||||
} else {
|
||||
}
|
||||
if (domain == "kirishima.cloud") {
|
||||
$("#faicon-btn").show();
|
||||
if (domain == 'kirishima.cloud') {
|
||||
$('#faicon-btn').show()
|
||||
} else {
|
||||
$("#faicon-btn").hide();
|
||||
$('#faicon-btn').hide()
|
||||
}
|
||||
if (domain == "imastodon.net") {
|
||||
trendTag();
|
||||
if (domain == 'imastodon.net') {
|
||||
trendTag()
|
||||
} else {
|
||||
$("#trendtag").html("");
|
||||
$('#trendtag').html('')
|
||||
}
|
||||
} else {
|
||||
sel = "";
|
||||
sel = ''
|
||||
}
|
||||
templete = '<option value="' + key + '" data-icon="' + acct.prof + '" class="left circle" ' + sel + ">" + acct.user + "@" + acct.domain + "</option>";
|
||||
$(".acct-sel").append(templete);
|
||||
});
|
||||
$("#src-acct-sel").append('<option value="tootsearch">Tootsearch</option>');
|
||||
$("#add-acct-sel").append('<option value="noauth">' + lang.lang_login_noauth + '</option><option value="webview">Twitter</option>');
|
||||
$("#dir-acct-sel").append('<option value="noauth">' + lang.lang_login_noauth + "</option>");
|
||||
templete =
|
||||
'<option value="' +
|
||||
key +
|
||||
'" data-icon="' +
|
||||
acct.prof +
|
||||
'" class="left circle" ' +
|
||||
sel +
|
||||
'>' +
|
||||
acct.user +
|
||||
'@' +
|
||||
acct.domain +
|
||||
'</option>'
|
||||
$('.acct-sel').append(templete)
|
||||
})
|
||||
$('#src-acct-sel').append('<option value="tootsearch">Tootsearch</option>')
|
||||
$('#add-acct-sel').append(
|
||||
'<option value="noauth">' +
|
||||
lang.lang_login_noauth +
|
||||
'</option><option value="webview">Twitter</option>'
|
||||
)
|
||||
$('#dir-acct-sel').append('<option value="noauth">' + lang.lang_login_noauth + '</option>')
|
||||
}
|
||||
$("select").formSelect();
|
||||
$('select').formSelect()
|
||||
if (!parseC) {
|
||||
parseColumn(null, true);
|
||||
parseColumn(null, true)
|
||||
}
|
||||
}
|
||||
|
||||
//バージョンエンコ
|
||||
function enc(ver) {
|
||||
var ver = ver.replace(/\s/g, "");
|
||||
var ver = ver.replace(/\(/g, "-");
|
||||
var ver = ver.replace(/\)/g, "");
|
||||
var ver = ver.replace(/\[/g, "_");
|
||||
var ver = ver.replace(/\]/g, "");
|
||||
return ver;
|
||||
var ver = ver.replace(/\s/g, '')
|
||||
var ver = ver.replace(/\(/g, '-')
|
||||
var ver = ver.replace(/\)/g, '')
|
||||
var ver = ver.replace(/\[/g, '_')
|
||||
var ver = ver.replace(/\]/g, '')
|
||||
return ver
|
||||
}
|
||||
//インスタンスティッカー
|
||||
function ticker() {
|
||||
var start = "https://toot.app/toot/";
|
||||
var start = 'https://s.0px.io/json'
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
method: 'GET',
|
||||
cors: true,
|
||||
headers: {
|
||||
"content-type": "application/json"
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
})
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.error(error);
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
if (json) {
|
||||
localStorage.setItem("ticker", JSON.stringify(json));
|
||||
localStorage.removeItem('ticker')
|
||||
localStorage.setItem('sticker', JSON.stringify(json))
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//ログアウトします
|
||||
function logout() {
|
||||
localStorage.removeItem("acct_" + acct_id + "_at");
|
||||
localStorage.removeItem("domain_" + acct_id);
|
||||
location.href = "index.html";
|
||||
todc();
|
||||
localStorage.removeItem("acct_" + acct_id + "_at")
|
||||
localStorage.removeItem("domain_" + acct_id)
|
||||
location.href = "index.html"
|
||||
todc()
|
||||
}
|
||||
@@ -33,7 +33,9 @@ function load() {
|
||||
}
|
||||
|
||||
console.table(obj)
|
||||
var domains = []
|
||||
var templete
|
||||
$('#acct-list').html('')
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
var acct = obj[key]
|
||||
var list = key * 1 + 1
|
||||
@@ -47,6 +49,7 @@ function load() {
|
||||
} else {
|
||||
var name = acct.user
|
||||
}
|
||||
domains.push(acct.domain)
|
||||
templete = `
|
||||
<div id="acct_${key}" class="card" ${style}>
|
||||
<div class="card-content ">
|
||||
@@ -54,15 +57,12 @@ function load() {
|
||||
<span class="card-title">${name}</span>${escapeHTML(acct.user)}@${acct.domain}
|
||||
</div>
|
||||
<div class="card-action">
|
||||
<a class="waves-effect disTar pointer white-text" onclick="data('${acct.domain}')">
|
||||
<i class="material-icons">info</i>${lang.lang_manager_info}
|
||||
</a>
|
||||
<a class="waves-effect disTar pointer white-text" onclick="refresh('${key}')">
|
||||
<i class="material-icons">refresh</i>${lang.lang_manager_refresh}
|
||||
</a>
|
||||
<a class="waves-effect disTar pointer red-text" onclick="multiDel('${key}')">
|
||||
<i class="material-icons">delete</i>${lang.lang_manager_delete}"
|
||||
</a><br />${lang.lang_manager_color}
|
||||
<button class="btn-flat waves-effect disTar pointer white-text" onclick="refresh('${key}')">
|
||||
<i class="material-icons left">refresh</i>${lang.lang_manager_refresh}
|
||||
</button>
|
||||
<button class="btn-flat waves-effect disTar pointer red-text" onclick="multiDel('${key}')">
|
||||
<i class="material-icons left">delete</i>${lang.lang_manager_delete}
|
||||
</button><br />${lang.lang_manager_color}
|
||||
<div id="colorsel_${key}" class="colorsel"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -70,6 +70,30 @@ function load() {
|
||||
$('#acct-list').append(templete)
|
||||
colorpicker(key)
|
||||
})
|
||||
domains = _.uniq(domains)
|
||||
$('#domain-list').html('')
|
||||
Object.keys(domains).forEach(function(key2) {
|
||||
var domain = domains[key2]
|
||||
if (localStorage.getItem('letters_' + key2)) {
|
||||
var maxChars = localStorage.getItem('letters_' + key2)
|
||||
} else {
|
||||
var maxChars = 500
|
||||
}
|
||||
var templete = `
|
||||
<li class="collection-item transparent">
|
||||
<div>
|
||||
<p class="title">${domain}</p>
|
||||
${lang.lang_manager_maxChars} <input style="width: 100px" value="${maxChars}" id="maxChars${key2}">
|
||||
<button class="btn-flat waves-effect" onclick="maxChars('${domain}', '${key2}')">
|
||||
<i class="material-icons">send</i>
|
||||
</button>
|
||||
<button class="btn-flat waves-effect secondary-content" onclick="data('${domain}', '${key2}')">
|
||||
<i class="material-icons left">info</i>${lang.lang_manager_info}
|
||||
</button>
|
||||
</div></li>
|
||||
`
|
||||
$('#domain-list').append(templete)
|
||||
})
|
||||
multisel()
|
||||
var acctN = localStorage.getItem('acct')
|
||||
if (!acctN) {
|
||||
@@ -82,9 +106,35 @@ function load() {
|
||||
//最初に読む
|
||||
load()
|
||||
support()
|
||||
|
||||
function maxChars(domain, uid) {
|
||||
var value = $('#maxChars' + uid).val()
|
||||
if(value*1 < 1 || !Number.isInteger(value*1)) {
|
||||
Swal.fire({
|
||||
type: 'error',
|
||||
title: 'Error'
|
||||
})
|
||||
return false
|
||||
}
|
||||
var multi = localStorage.getItem('multi')
|
||||
if (!multi) {
|
||||
var obj = []
|
||||
} else {
|
||||
var obj = JSON.parse(multi)
|
||||
}
|
||||
if (obj[0]) {
|
||||
if (!obj[0].at) {
|
||||
obj = []
|
||||
localStorage.removeItem('multi')
|
||||
}
|
||||
}
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
if(obj[key].domain == domain) localStorage.setItem('letters_' + key, value)
|
||||
})
|
||||
console.log('#maxChars' + uid, value)
|
||||
load()
|
||||
}
|
||||
//instances.social/instances API
|
||||
function data(domain) {
|
||||
async function data(domain, acct_id) {
|
||||
$('#ins-upd').text('Loading...')
|
||||
$('#ins-add').text('Loading...')
|
||||
$('#ins-connect').text('Loading...')
|
||||
@@ -96,7 +146,7 @@ function data(domain) {
|
||||
$('#ins-name').text('Loading...')
|
||||
$('#ins-prof').attr('src', '../../img/loading.svg')
|
||||
var start = 'https://instances.social/api/1.0/instances/show?name=' + domain
|
||||
fetch(start, {
|
||||
let promise = await fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
@@ -104,74 +154,42 @@ function data(domain) {
|
||||
'Bearer tC8F6xWGWBUwGScyNevYlx62iO6fdQ4oIK0ad68Oo7ZKB8GQdGpjW9TKxBnIh8grAhvd5rw3iyP9JPamoDpeLQdz62EToPJUW99hDx8rfuJfGdjQuimZPTbIOx0woA5M'
|
||||
}
|
||||
})
|
||||
.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.error) {
|
||||
$('#ins-name').text(json.name)
|
||||
$('#ins-upd').text(date(json.checked_at, 'full'))
|
||||
$('#ins-add').text(date(json.added_at, 'full'))
|
||||
$('#ins-connect').text(json.connections)
|
||||
$('#ins-toot').text(json.statuses)
|
||||
$('#ins-sys').text(date(json.updated_at, 'full'))
|
||||
$('#ins-per').text(json.uptime * 100)
|
||||
$('#ins-user').text(json.users)
|
||||
$('#ins-ver').text(json.version)
|
||||
} else {
|
||||
console.error(json.error)
|
||||
}
|
||||
})
|
||||
var json = await promise.json()
|
||||
$('#ins-name').text(json.name)
|
||||
$('#ins-upd').text(date(json.checked_at, 'full'))
|
||||
$('#ins-add').text(date(json.added_at, 'full'))
|
||||
$('#ins-connect').text(json.connections)
|
||||
$('#ins-toot').text(json.statuses)
|
||||
$('#ins-sys').text(date(json.updated_at, 'full'))
|
||||
$('#ins-per').text(json.uptime * 100)
|
||||
$('#ins-user').text(json.users)
|
||||
$('#ins-ver').text(json.version)
|
||||
var start = 'https://' + domain + '/api/v1/instance'
|
||||
fetch(start, {
|
||||
let promise2 = await fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
})
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
if (!json.error) {
|
||||
$('#ins-title').text(json.title)
|
||||
$('#ins-desc').html(json.description)
|
||||
$('#ins-email').text(json.email)
|
||||
$('#ins-toot').text(json.stats.status_count)
|
||||
$('#ins-user').text(json.stats.user_count)
|
||||
$('#ins-ver').text(json.version)
|
||||
$('#ins-prof').attr('src', json.thumbnail)
|
||||
$('#ins-admin').text(
|
||||
escapeHTML(json.contact_account.display_name) + '(' + json.contact_account.acct + ')'
|
||||
)
|
||||
$('#ins-admin').attr(
|
||||
'href',
|
||||
'index.html?mode=user&code=' + json.contact_account.username + '@' + domain
|
||||
)
|
||||
} else {
|
||||
console.error(json.error)
|
||||
}
|
||||
})
|
||||
var json = await promise2.json()
|
||||
$('#ins-title').text(json.title)
|
||||
$('#ins-desc').html(json.description)
|
||||
$('#ins-email').text(json.email)
|
||||
$('#ins-toot').text(json.stats.status_count)
|
||||
$('#ins-user').text(json.stats.user_count)
|
||||
$('#ins-ver').text(json.version)
|
||||
$('#ins-prof').attr('src', json.thumbnail)
|
||||
$('#ins-admin').text(
|
||||
escapeHTML(json.contact_account.display_name) + '(' + json.contact_account.acct + ')'
|
||||
)
|
||||
$('#ins-admin').attr(
|
||||
'href',
|
||||
'index.html?mode=user&code=' + json.contact_account.username + '@' + domain
|
||||
)
|
||||
if (json['max_toot_chars']) {
|
||||
localStorage.setItem('letters_' + acct_id, json['max_toot_chars'])
|
||||
load()
|
||||
}
|
||||
}
|
||||
|
||||
//アカウントデータ 消す
|
||||
@@ -234,11 +252,31 @@ function multiDel(target) {
|
||||
var newdom = oldcol.domain
|
||||
}
|
||||
var type = oldcol.type
|
||||
var data = null
|
||||
if(oldcol.data) {
|
||||
data = oldcol.data
|
||||
}
|
||||
var background = null
|
||||
if(oldcol.background) {
|
||||
background = oldcol.background
|
||||
}
|
||||
var text = null
|
||||
if(oldcol.text) {
|
||||
text = oldcol.text
|
||||
}
|
||||
var left_fold = false
|
||||
if(oldcol.left_fold) {
|
||||
left_fold = true
|
||||
}
|
||||
//消した垢のコラムじゃないときコピー
|
||||
if (target != oldcol.domain) {
|
||||
var add = {
|
||||
domain: newdom,
|
||||
type: type
|
||||
type: type,
|
||||
data: data,
|
||||
background: background,
|
||||
text: text,
|
||||
left_fold: left_fold
|
||||
}
|
||||
newcols.push(add)
|
||||
}
|
||||
@@ -488,7 +526,7 @@ function misskeyLogin(url) {
|
||||
if (!url) {
|
||||
var url = $('#misskey-url').val()
|
||||
}
|
||||
var start = 'http://' + url + '/api/app/create'
|
||||
var start = 'https://' + url + '/api/app/create'
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
@@ -862,6 +900,12 @@ function refresh(target) {
|
||||
id: json['id'],
|
||||
vis: json['source']['privacy']
|
||||
}
|
||||
if (obj[target].background) {
|
||||
ref.background = obj[target].background
|
||||
}
|
||||
if (obj[target].text) {
|
||||
ref.text = obj[target].text
|
||||
}
|
||||
localStorage.setItem('name_' + target, json['display_name'])
|
||||
localStorage.setItem('user_' + target, json['acct'])
|
||||
localStorage.setItem('user-id_' + target, json['id'])
|
||||
|
||||
@@ -46,10 +46,17 @@ $(document).on('click', 'a', e => {
|
||||
udgEx(url, 'main')
|
||||
return false
|
||||
} else {
|
||||
postMessage(['openUrl', url], '*')
|
||||
if(pwa) {
|
||||
return true
|
||||
} else {
|
||||
postMessage(['openUrl', url], '*')
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(pwa) {
|
||||
return true
|
||||
}
|
||||
//hrefがhttp/httpsならブラウザで
|
||||
if (urls) {
|
||||
if (urls[0]) {
|
||||
@@ -123,11 +130,6 @@ function playSound() {
|
||||
volumeControl.gain.value = vol
|
||||
source.start(0)
|
||||
soundFile = source
|
||||
|
||||
function newFunction() {
|
||||
var source
|
||||
return source
|
||||
}
|
||||
}
|
||||
function nano() {
|
||||
postMessage(['nano', null], '*')
|
||||
@@ -138,14 +140,14 @@ onmessage = function(e) {
|
||||
} 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])
|
||||
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}${
|
||||
var showTxt = `${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 })
|
||||
}<button class="btn-flat toast-action" onclick="openFinder('${e.data[1][1]}')">Show</button>`
|
||||
M.toast({ html: showTxt, displayLength: 5000 })
|
||||
} else if (e.data[0] == 'parseColumn') {
|
||||
parseColumn(e.data[1])
|
||||
} else if (e.data[0] == 'exportSettingsCore') {
|
||||
@@ -168,7 +170,7 @@ onmessage = function(e) {
|
||||
} 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])
|
||||
renderMem(e.data[1][0], e.data[1][1], e.data[1][2], e.data[1][3], e.data[1][4])
|
||||
} else if (e.data[0] == 'updateProg') {
|
||||
updateProg(e.data[1])
|
||||
} else if (e.data[0] == 'updateMess') {
|
||||
@@ -179,6 +181,10 @@ onmessage = function(e) {
|
||||
asRead()
|
||||
} else if (e.data[0] == 'asReadEnd') {
|
||||
asReadEnd()
|
||||
} else if (e.data[0] == 'accessibility') {
|
||||
console.log('atrue')
|
||||
$('body').addClass('accessibility')
|
||||
$('.window-title').before('<div class="accessMark">Screen Reader Optimized</div>')
|
||||
} else if (e.data[0] == 'logData') {
|
||||
$('#logs').val(e.data[1])
|
||||
var obj = document.getElementById('logs')
|
||||
@@ -190,3 +196,35 @@ onmessage = function(e) {
|
||||
})
|
||||
}
|
||||
}
|
||||
/* PWA */
|
||||
if(pwa) {
|
||||
function postMessage(e) {
|
||||
if (e[0] == 'openUrl') {
|
||||
urls = e[1].match(/https?:\/\/(.+)/)
|
||||
if (urls) {
|
||||
Swal.fire({
|
||||
title: 'Open URL',
|
||||
icon: 'info',
|
||||
html:
|
||||
`If you are OK, click: <a href="${urls[0]}" target="_blank" class="btn waves-effect">Here</a>`,
|
||||
showCloseButton: false,
|
||||
showCancelButton: true,
|
||||
focusConfirm: false,
|
||||
confirmButtonText: 'Close'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const connection = function (event) {
|
||||
console.log(navigator.onLine, 'network state')
|
||||
if(!navigator.onLine) {
|
||||
$('#re-online').addClass('hide')
|
||||
$('#offline').removeClass('hide')
|
||||
} else if(!$('#offline').hasClass('hide')) {
|
||||
$('#offline').addClass('hide')
|
||||
$('#re-online').removeClass('hide')
|
||||
}
|
||||
}
|
||||
window.onoffline = connection
|
||||
window.ononline = connection
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
document.title = 'TheDesk'
|
||||
$.strip_tags = function(str, allowed) {
|
||||
window.onload = function () {
|
||||
console.log('loaded')
|
||||
initPostbox()
|
||||
connection()
|
||||
initPlugin(plugins)
|
||||
}
|
||||
$.strip_tags = function (str, allowed) {
|
||||
if (!str) {
|
||||
return ''
|
||||
}
|
||||
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('')
|
||||
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
|
||||
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi
|
||||
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
|
||||
return str.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
|
||||
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''
|
||||
})
|
||||
}
|
||||
@@ -89,17 +94,18 @@ function formattimeutc(date) {
|
||||
}
|
||||
postMessage(['sendSinmpleIpc', 'custom-css-request'], '*')
|
||||
function makeCID() {
|
||||
return (
|
||||
randomStr(8) +
|
||||
'-' +
|
||||
randomStr(4) +
|
||||
'-' +
|
||||
randomStr(4) +
|
||||
'-' +
|
||||
randomStr(4) +
|
||||
'-' +
|
||||
randomStr(12)
|
||||
)
|
||||
let chars = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("")
|
||||
for (let i = 0, len = chars.length; i < len; i++) {
|
||||
switch (chars[i]) {
|
||||
case "x":
|
||||
chars[i] = Math.floor(Math.random() * 16).toString(16)
|
||||
break
|
||||
case "y":
|
||||
chars[i] = (Math.floor(Math.random() * 4) + 8).toString(16)
|
||||
break
|
||||
}
|
||||
}
|
||||
return chars.join("")
|
||||
}
|
||||
function randomStr(l) {
|
||||
// 生成する文字列に含める文字セット
|
||||
@@ -148,37 +154,25 @@ function rgbToHex(color) {
|
||||
console.error(color + ':第1引数はRGB形式で入力')
|
||||
}
|
||||
/*マルチバイト用切り出し*/
|
||||
$.isSurrogatePear = function(upper, lower) {
|
||||
$.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_strlen = function (str) {
|
||||
var splitter = new GraphemeSplitter()
|
||||
var arr = splitter.splitGraphemes(str)
|
||||
return arr.length
|
||||
}
|
||||
$.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
|
||||
$.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 ret
|
||||
return newarr.join('')
|
||||
}
|
||||
//ソートするやつ
|
||||
function object_array_sort(data, key, order, fn) {
|
||||
@@ -188,7 +182,7 @@ function object_array_sort(data, key, order, fn) {
|
||||
num_a = 1
|
||||
num_b = -1
|
||||
}
|
||||
data = data.sort(function(a, b) {
|
||||
data = data.sort(function (a, b) {
|
||||
var x = a[key]
|
||||
var y = b[key]
|
||||
if (x > y) return num_a
|
||||
@@ -217,9 +211,81 @@ function escapeCsv(str) {
|
||||
return str
|
||||
}
|
||||
var result
|
||||
result = str.replace(/\"/g, '""')
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
140
app/js/platform/plugin.js
Normal file
@@ -0,0 +1,140 @@
|
||||
|
||||
var plugins = getPlugin()
|
||||
function getPlugin() {
|
||||
const json = localStorage.getItem('plugins')
|
||||
let ret = {
|
||||
buttonOnPostbox: [],
|
||||
buttonOnToot: []
|
||||
}
|
||||
if(!json) return ret
|
||||
const plugins = JSON.parse(json)
|
||||
for (let plugin of plugins) {
|
||||
const meta = getMeta(plugin.content)
|
||||
if (!meta) continue
|
||||
const type = meta.event
|
||||
ret[type] ? ret[type].push(plugin) : ret[type] = [plugin]
|
||||
}
|
||||
return ret
|
||||
}
|
||||
function initPlugin() {
|
||||
asCommon['TheDesk:dialog'] = asValue.FN_NATIVE((z) => {
|
||||
Swal.fire({
|
||||
title: z[0].value,
|
||||
icon: z[2] ? z[2].value : 'info',
|
||||
text: z[1] ? z[1].value : ''
|
||||
})
|
||||
})
|
||||
asCommon['TheDesk:confirm'] = asValue.FN_NATIVE(async (z) => {
|
||||
const alert = await Swal.fire({
|
||||
title: z[0].value,
|
||||
text: z[1].value,
|
||||
icon: z[2] ? z[2].value : 'info',
|
||||
showCancelButton: true
|
||||
})
|
||||
return asUtil.jsToVal(!!(alert.value && alert.value === true))
|
||||
})
|
||||
asCommon['TheDesk:css'] = asValue.FN_NATIVE((z) => {
|
||||
$(escapeHTML(z[0].value)).css(escapeHTML(z[1].value), escapeHTML(z[2].value))
|
||||
})
|
||||
asCommon['TheDesk:api'] = asValue.FN_NATIVE(async (z) => {
|
||||
try {
|
||||
if (!getMeta(exe).apiGet && z[0].value == "GET") return asUtil.jsToVal(false)
|
||||
if (!getMeta(exe).apiPost && (z[0].value == "POST" || z[0].value == "DELETE" || z[0].value == "PUT")) return asUtil.jsToVal(false)
|
||||
const domain = localStorage.getItem(`domain_${z[3].value}`)
|
||||
const at = localStorage.getItem(`acct_${z[3].value}_at`)
|
||||
const start = `https://${domain}/api/${z[1].value}`
|
||||
const q = {
|
||||
method: z[0].value,
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
Authorization:
|
||||
`Bearer ${at}`
|
||||
}
|
||||
}
|
||||
if (z[2]) q.body = z[2].value
|
||||
const promise = await fetch(start, q)
|
||||
const json = await promise.json()
|
||||
return asUtil.jsToVal(json)
|
||||
} catch (e) {
|
||||
return asUtil.jsToVal(e)
|
||||
}
|
||||
|
||||
})
|
||||
const { buttonOnPostbox, init } = plugins
|
||||
for (let target of buttonOnPostbox) {
|
||||
const meta = getMeta(target.content)
|
||||
$('#dropdown2').append(`<li><a onclick="execPlugin('${target.id}','buttonOnPostbox', null);">${escapeHTML(meta.name)}</a></li>`)
|
||||
}
|
||||
for (let target of init) {
|
||||
const as = new AiScript(asCommon)
|
||||
const meta = getMeta(target.content)
|
||||
M.toast({ html: `${escapeHTML(meta.name)}を実行しました`, displayLength: 1000 })
|
||||
if (target) as.exec(asParse(target.content))
|
||||
}
|
||||
}
|
||||
function getMeta(plugin) {
|
||||
try {
|
||||
return AiScript.collectMetadata(asParse(plugin)).get(null)
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
return null
|
||||
}
|
||||
}
|
||||
async function execPlugin(id, source, args) {
|
||||
const coh = plugins[source]
|
||||
let exe = null
|
||||
for (let plugin of coh) {
|
||||
if (plugin.id == id) {
|
||||
exe = plugin.content
|
||||
break
|
||||
}
|
||||
}
|
||||
const common = _.cloneDeep(asCommon)
|
||||
if (source == 'buttonOnToot') {
|
||||
common.DATA = args
|
||||
const domain = localStorage.getItem(`domain_${args.acct_id}`)
|
||||
const at = localStorage.getItem(`acct_${args.acct_id}_at`)
|
||||
const start = `https://${domain}/api/v1/statuses/${args.id}`
|
||||
const promise = await fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
Authorization:
|
||||
`Bearer ${at}`
|
||||
}
|
||||
})
|
||||
const json = await promise.json()
|
||||
common.TOOT = asUtil.jsToVal(json)
|
||||
common['TheDesk:changeText'] = asValue.FN_NATIVE((z) => {
|
||||
if (getMeta(exe).dangerHtml) $(`[unique-id=${args.id}] .toot`).html(z[0].value)
|
||||
})
|
||||
} else if (source == 'buttonOnPostbox') {
|
||||
const postDt = post(null, false, true)
|
||||
common.POST = asUtil.jsToVal(postDt)
|
||||
common.ACCT_ID = asUtil.jsToVal(postDt.TheDeskAcctId)
|
||||
common['TheDesk:postText'] = asValue.FN_NATIVE((z) => {
|
||||
$('#textarea').val(z[0].value)
|
||||
})
|
||||
common['TheDesk:postCW'] = asValue.FN_NATIVE((z) => {
|
||||
if (z[1]) $('#cw-text').val(z[1].value)
|
||||
cw(z[0] ? z[0].value : false)
|
||||
})
|
||||
common['TheDesk:postNSFW'] = asValue.FN_NATIVE((z) => {
|
||||
nsfw(z[0] ? z[0].value : false)
|
||||
})
|
||||
common['TheDesk:postVis'] = asValue.FN_NATIVE((z) => {
|
||||
vis(z[0].value)
|
||||
})
|
||||
common['TheDesk:postClearbox'] = asValue.FN_NATIVE(() => {
|
||||
clear()
|
||||
})
|
||||
common['TheDesk:postExec'] = asValue.FN_NATIVE(() => {
|
||||
if (getMeta(exe).apiPost) post()
|
||||
})
|
||||
}
|
||||
common['TheDesk:console'] = asValue.FN_NATIVE((z) => {
|
||||
console.log(z[0].value)
|
||||
})
|
||||
const as = new AiScript(common)
|
||||
if (exe) as.exec(asParse(exe))
|
||||
}
|
||||
@@ -1,6 +1,12 @@
|
||||
var electron = require('electron')
|
||||
const shell = electron.shell
|
||||
var ipc = electron.ipcRenderer
|
||||
//title bar
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
document.title = 'TheDesk'
|
||||
ipc.send('acsCheck', '')
|
||||
})
|
||||
|
||||
onmessage = function(e) {
|
||||
if (e.data[0] == 'openUrl') {
|
||||
urls = e.data[1].match(/https?:\/\/(.+)/)
|
||||
@@ -13,6 +19,10 @@ onmessage = function(e) {
|
||||
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') {
|
||||
@@ -23,7 +33,7 @@ onmessage = function(e) {
|
||||
} 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])
|
||||
ipc.send('openFinder', e.data[1])
|
||||
} else if (e.data[0] == 'columnDel') {
|
||||
ipc.send('column-del', e.data[1])
|
||||
} else if (e.data[0] == 'lang') {
|
||||
@@ -44,6 +54,8 @@ onmessage = function(e) {
|
||||
ipc.send('theme-json-request', e.data[1])
|
||||
} else if (e.data[0] == 'ha') {
|
||||
ipc.send('ha', e.data[1])
|
||||
} else if (e.data[0] == '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') {
|
||||
@@ -112,14 +124,38 @@ ipc.on('theme-css-response', function(event, arg) {
|
||||
})
|
||||
//img.js
|
||||
ipc.on('bmp-img-comp', function(event, b64) {
|
||||
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
|
||||
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[0], resize])
|
||||
} else {
|
||||
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
|
||||
}
|
||||
}
|
||||
element.src = 'data:image/png;base64,' + b64[0]
|
||||
} 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, '\\\\') + '\\\\.'
|
||||
var argC = arg.replace(/\\/g, '\\\\')
|
||||
console.log('saved')
|
||||
postMessage(['toastSaved', [arg, argC]], '*')
|
||||
})
|
||||
@@ -155,6 +191,7 @@ ipc.on('theme-json-response', function(event, args) {
|
||||
postMessage(['customConnect', args], '*')
|
||||
})
|
||||
ipc.on('theme-json-create-complete', function(event, args) {
|
||||
if(args != '') alert(args)
|
||||
postMessage(['clearCustomImport', ''], '*')
|
||||
postMessage(['ctLoad', ''], '*')
|
||||
})
|
||||
@@ -167,7 +204,7 @@ ipc.on('memory', function(event, arg) {
|
||||
var use = arg[0]
|
||||
var cpu = arg[1]
|
||||
var total = arg[2]
|
||||
postMessage(['renderMem', [use, cpu, total]], '*')
|
||||
postMessage(['renderMem', [use, cpu, total, arg[3], arg[4]]], '*')
|
||||
})
|
||||
//log
|
||||
ipc.on('logData', function(event, args) {
|
||||
@@ -180,12 +217,16 @@ ipc.on('prog', function(event, arg) {
|
||||
ipc.on('mess', function(event, arg) {
|
||||
postMessage(['updateMess', arg], '*')
|
||||
})
|
||||
//misc
|
||||
ipc.on('asRead', function(event, arg) {
|
||||
postMessage(['asRead', ''], '*')
|
||||
})
|
||||
ipc.on('asReadEnd', function(event, arg) {
|
||||
postMessage(['asReadEnd', ''], '*')
|
||||
})
|
||||
ipc.on('accessibility', function(event, arg) {
|
||||
postMessage(['accessibility', 'true'], '*')
|
||||
})
|
||||
var webviewDom = document.getElementById('webview')
|
||||
if (webviewDom) {
|
||||
webviewDom.addEventListener('new-window', function(e) {
|
||||
|
||||
@@ -50,7 +50,12 @@ function mdCheck() {
|
||||
if (idata[domain + '_letters']) {
|
||||
$('#textarea').attr('data-length', idata[domain + '_letters'])
|
||||
} else {
|
||||
$('#textarea').attr('data-length', 500)
|
||||
var maxletters = localStorage.getItem('letters_' + acct_id)
|
||||
if (maxletters > 0) {
|
||||
$('#textarea').attr('data-length', maxletters)
|
||||
} else {
|
||||
$('#textarea').attr('data-length', 500)
|
||||
}
|
||||
}
|
||||
if (idata[domain + '_glitch'] === 'true') {
|
||||
$('#local-button').removeClass('hide')
|
||||
|
||||
@@ -23,6 +23,7 @@ function emojiToggle(reaction) {
|
||||
}
|
||||
$('#post-box').css('width', width + 'px')
|
||||
$('#suggest').html('')
|
||||
$('#draft').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)
|
||||
@@ -31,10 +32,12 @@ function emojiToggle(reaction) {
|
||||
}
|
||||
} else {
|
||||
$('#poll').addClass('hide')
|
||||
$('#draft').addClass('hide')
|
||||
$('#right-side').hide()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#emoji').addClass('hide')
|
||||
$('#suggest').html('')
|
||||
$('#draft').html('')
|
||||
$('#left-side').css('width', '100%')
|
||||
var width = localStorage.getItem('postbox-width')
|
||||
if (width) {
|
||||
@@ -193,7 +196,15 @@ function emojiGet(parse, started) {
|
||||
function emojiList(target, reaction) {
|
||||
$('#now-emoji').text(lang.lang_emoji_custom)
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
if (reaction && localStorage.getItem('emojiReaction_' + acct_id) != 'true') {
|
||||
if(reaction && $('#media').val() == 'misskey') {
|
||||
var misskeyReact = true
|
||||
} else {
|
||||
var misskeyReact = false
|
||||
}
|
||||
if (
|
||||
misskeyReact &&
|
||||
localStorage.getItem('emojiReaction_' + acct_id) != 'true'
|
||||
) {
|
||||
console.error('Disabled')
|
||||
clear()
|
||||
hide()
|
||||
@@ -263,9 +274,20 @@ function emojiList(target, reaction) {
|
||||
var emoji = obj[i]
|
||||
if (emoji) {
|
||||
if (reaction) {
|
||||
html =
|
||||
html +
|
||||
`<a onclick="emojiReaction(':${emoji.shortcode}:')" class="pointer"><img src="${emoji.url}" width="20" title="${emoji.shortcode}"></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>'
|
||||
@@ -284,32 +306,39 @@ function emojiList(target, reaction) {
|
||||
|
||||
//絵文字など様々なものをテキストボックスに挿入
|
||||
function emojiInsert(code, del) {
|
||||
var now = $('#textarea').val()
|
||||
var selin = $('#textarea').prop('selectionStart')
|
||||
if (localStorage.getItem('emoji-zero-width') == 'yes') {
|
||||
var blank = ''
|
||||
var blankBefore = ''
|
||||
var blankAfter = ''
|
||||
} else {
|
||||
var blank = ' '
|
||||
var blankBefore = ' '
|
||||
var blankAfter = ' '
|
||||
}
|
||||
var before = now.substr(0, selin)
|
||||
if (before.slice(-1) != ' ') {
|
||||
before = before + blank
|
||||
}
|
||||
var after = now.substr(selin, now.length)
|
||||
if (after.slice(-1) != ' ') {
|
||||
after = blank + after
|
||||
}
|
||||
newt = before + code + after
|
||||
if (!del) {
|
||||
$('#textarea').val(newt)
|
||||
//emoji();
|
||||
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 regExp = new RegExp(del.replace(/[.*+?^=!:${}()|[\]\/\\]/g, '\\$&'), 'g')
|
||||
var now = now.replace(regExp, '')
|
||||
$('#textarea').val(now + blank + code)
|
||||
var delLen = 0
|
||||
}
|
||||
|
||||
$('#textarea').focus()
|
||||
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) {
|
||||
|
||||
@@ -60,6 +60,24 @@ function handleFileUpload(files, obj, no) {
|
||||
var fr = new FileReader()
|
||||
fr.onload = function(evt) {
|
||||
var b64 = evt.target.result
|
||||
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) {
|
||||
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)
|
||||
}
|
||||
@@ -68,7 +86,14 @@ function handleFileUpload(files, obj, no) {
|
||||
}
|
||||
|
||||
//ファイルアップロード
|
||||
function media(b64, type, no) {
|
||||
async function media(b64, type, no, stamped) {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var user = localStorage.getItem('user_' + acct_id)
|
||||
if ($('#stamp').hasClass('stamp-avail') && !stamped) {
|
||||
postMessage(['stampImage', [b64, user + '@' + domain]], '*')
|
||||
return false
|
||||
}
|
||||
var l = 4
|
||||
var c = 'abcdefghijklmnopqrstuvwxyz0123456789'
|
||||
var cl = c.length
|
||||
@@ -88,8 +113,6 @@ function media(b64, type, no) {
|
||||
var media = toBlob(b64, type)
|
||||
var fd = new FormData()
|
||||
fd.append('file', media)
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var httpreq = new XMLHttpRequest()
|
||||
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
||||
@@ -104,22 +127,60 @@ function media(b64, type, no) {
|
||||
}
|
||||
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)
|
||||
//v2/media
|
||||
try {
|
||||
var id = await v2MediaUpload(domain, at, fd)
|
||||
if(!id) {
|
||||
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)
|
||||
} else {
|
||||
var mediav = $('#media').val()
|
||||
var regExp = new RegExp('tmp_' + r, 'g')
|
||||
mediav = mediav.replace(regExp, id)
|
||||
$('#media').val(mediav)
|
||||
var html = `<img src="../../img/picture.svg" class="preview-img pointer unknown" data-media="${id}" oncontextmenu="deleteImage('${id}')" onclick="altImage('${acct_id}','${id}')" title="${lang.lang_postimg_delete}">`
|
||||
$('#preview').append(html)
|
||||
todc()
|
||||
if (localStorage.getItem('nsfw_' + acct_id)) {
|
||||
$('#nsfw').addClass('yellow-text')
|
||||
$('#nsfw').html('visibility')
|
||||
$('#nsfw').addClass('nsfw-avail')
|
||||
}
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
$('select').formSelect()
|
||||
$('#mec').text(lang.lang_there)
|
||||
M.toast({ html: '<span>' + lang.lang_postimg_sync + '</span><button class="btn-flat toast-action" onclick="syncDetail()">Click</button>', displayLength: 3000 })
|
||||
$('#imgup').text('')
|
||||
$('#imgsel').show()
|
||||
localStorage.removeItem('image')
|
||||
}
|
||||
} catch {
|
||||
var start = 'https://' + domain + '/api/v1/media'
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.upload.addEventListener('progress', progshow, false)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.send(fd)
|
||||
}
|
||||
}
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, json)
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
$('select').formSelect()
|
||||
$('#mec').text(lang.lang_there)
|
||||
M.toast({ html: this.status + ':' +json, displayLength: 2000 })
|
||||
$('#imgup').text('')
|
||||
$('#imgsel').show()
|
||||
}
|
||||
if (!json.id) {
|
||||
todc()
|
||||
@@ -131,13 +192,13 @@ function media(b64, type, no) {
|
||||
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}">`
|
||||
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 {
|
||||
$('#preview').append(lang.lang_postimg_previewdis)
|
||||
@@ -151,22 +212,9 @@ function media(b64, type, no) {
|
||||
mediav = mediav.replace(regExp, json['id'])
|
||||
$('#media').val(mediav)
|
||||
}
|
||||
if (img == 'url') {
|
||||
if (img == 'url' && json['text_url']) {
|
||||
$('#textarea').val($('#textarea').val() + ' ' + json['text_url'])
|
||||
}
|
||||
todc()
|
||||
if (localStorage.getItem('nsfw_' + acct_id)) {
|
||||
$('#nsfw').addClass('yellow-text')
|
||||
$('#nsfw').html('visibility')
|
||||
$('#nsfw').addClass('nsfw-avail')
|
||||
}
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
$('select').formSelect()
|
||||
$('#mec').text(lang.lang_there)
|
||||
M.toast({ html: lang.lang_postimg_aftupload, displayLength: 1000 })
|
||||
$('#imgup').text('')
|
||||
$('#imgsel').show()
|
||||
localStorage.removeItem('image')
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -251,52 +299,129 @@ 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_postimg_desc,
|
||||
text: lang.lang_postimg_leadContext,
|
||||
input: 'text',
|
||||
inputAttributes: {
|
||||
autocapitalize: 'off'
|
||||
},
|
||||
title: lang.lang_post_unfinishedMedia,
|
||||
type: 'error',
|
||||
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()
|
||||
confirmButtonText: lang.lang_post_retry,
|
||||
cancelButtonText: lang.lang_no
|
||||
}).then(result => {
|
||||
if (result.value) {
|
||||
Swal.fire({
|
||||
title: 'Complete'
|
||||
})
|
||||
post()
|
||||
}
|
||||
})
|
||||
}
|
||||
function syncDetail() {
|
||||
Swal.fire({
|
||||
title: lang.lang_post_syncDetail,
|
||||
text: lang.lang_post_syncDetailText,
|
||||
type: 'info'
|
||||
})
|
||||
}
|
||||
@@ -116,6 +116,7 @@ function reactiontoggle(id, acct_id, tlid) {
|
||||
//reactioncustom
|
||||
function reactioncustom(acct_id, id) {
|
||||
$('#reply').val(id)
|
||||
$('#media').val('misskey')
|
||||
$('#unreact').hide()
|
||||
$('#addreact').removeClass('hide')
|
||||
$('#post-acct-sel').val(acct_id)
|
||||
@@ -186,9 +187,14 @@ function reactRefreshCore(json) {
|
||||
}
|
||||
}
|
||||
function emojiReaction(emoji) {
|
||||
var media = $('#media').val()
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var id = $('#reply').val()
|
||||
reaction(emoji, id, acct_id, null)
|
||||
if(media == 'announcement') {
|
||||
announReaction(id, acct_id, 0, false, emoji)
|
||||
} else {
|
||||
reaction(emoji, id, acct_id, null)
|
||||
}
|
||||
clear()
|
||||
hide()
|
||||
}
|
||||
|
||||
@@ -9,7 +9,16 @@ function sec() {
|
||||
}
|
||||
post(null, mode)
|
||||
}
|
||||
function post(mode, postvis) {
|
||||
function post(mode, postvis, dry) {
|
||||
if(!navigator.onLine && !dry) {
|
||||
draftToggle(true)
|
||||
addToDraft()
|
||||
M.toast({
|
||||
html: lang.lang_post_offline,
|
||||
displayLength: 3000
|
||||
})
|
||||
return false
|
||||
}
|
||||
if ($('#toot-post-btn').prop('disabled')) {
|
||||
return false
|
||||
}
|
||||
@@ -17,6 +26,13 @@ function post(mode, postvis) {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
localStorage.setItem('last-use', acct_id)
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
if ($('#ideKey').val() != '') {
|
||||
var ideKey = $('#ideKey').val()
|
||||
} else {
|
||||
var user = localStorage.getItem('user_' + acct_id)
|
||||
var ideKey = Math.floor(Date.now() / 1000) + '/TheDesk/' + user + '@' + domain
|
||||
$('#ideKey').val(ideKey)
|
||||
}
|
||||
if (!localStorage.getItem('cw_sentence')) {
|
||||
var cw_sent = 500
|
||||
} else {
|
||||
@@ -115,12 +131,16 @@ function post(mode, postvis) {
|
||||
console.log('This toot will be posted at:' + scheduled)
|
||||
schedule()
|
||||
toot.scheduled_at = scheduled
|
||||
if ($('#sch-box').hasClass('expire')) {
|
||||
toot.scheduled_at = null
|
||||
toot.expires_at = scheduled
|
||||
}
|
||||
} else {
|
||||
var scheduled = ''
|
||||
}
|
||||
if (!$('#poll').hasClass('hide')) {
|
||||
var options = []
|
||||
$('.mastodon-choice').map(function() {
|
||||
$('.mastodon-choice').map(function () {
|
||||
var choice = $(this).val()
|
||||
if (choice != '') {
|
||||
options.push(choice)
|
||||
@@ -148,29 +168,67 @@ function post(mode, postvis) {
|
||||
}
|
||||
}
|
||||
console.table(toot)
|
||||
if (dry) {
|
||||
$('#ideKey').val('')
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
todc()
|
||||
toot['TheDeskAcctId'] = acct_id
|
||||
return toot
|
||||
}
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.setRequestHeader('Idempotency-Key', ideKey)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(JSON.stringify(toot))
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, json)
|
||||
if (media && this.status == 422) {
|
||||
$('#ideKey').val('')
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
alertProcessUnfinished()
|
||||
} else {
|
||||
setLog(start, this.status, json)
|
||||
var box = localStorage.getItem('box')
|
||||
if (box == 'yes' || !box) {
|
||||
$('#textarea').blur()
|
||||
hide()
|
||||
}
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
todc()
|
||||
clear()
|
||||
}
|
||||
} else {
|
||||
$('#ideKey').val('')
|
||||
var box = localStorage.getItem('box')
|
||||
if (box == 'yes' || !box) {
|
||||
$('#textarea').blur()
|
||||
hide()
|
||||
}
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
todc()
|
||||
clear()
|
||||
}
|
||||
var box = localStorage.getItem('box')
|
||||
if (box == 'yes' || !box) {
|
||||
$('#textarea').blur()
|
||||
hide()
|
||||
}
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
todc()
|
||||
clear()
|
||||
}
|
||||
}
|
||||
}
|
||||
function expPostMode() {
|
||||
$('#sch-box').toggleClass('expire')
|
||||
if ($('#sch-box').hasClass('expire')) {
|
||||
Swal.fire({
|
||||
type: 'info',
|
||||
title: 'Expiring toot On'
|
||||
})
|
||||
} else {
|
||||
Swal.fire({
|
||||
type: 'info',
|
||||
title: 'Expireing toot Off'
|
||||
})
|
||||
}
|
||||
}
|
||||
function misskeyPost() {
|
||||
var str = $('#textarea').val()
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
@@ -228,7 +286,7 @@ function misskeyPost() {
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(JSON.stringify(toot))
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
if (str.indexOf(localStorage.getItem('stable')) == -1) {
|
||||
localStorage.removeItem('stable')
|
||||
@@ -255,6 +313,7 @@ function misskeyPost() {
|
||||
//クリア(Shift+C)
|
||||
function clear() {
|
||||
$('#textarea').val('')
|
||||
$('#ideKey').val('')
|
||||
if (localStorage.getItem('stable')) {
|
||||
$('#textarea').val('#' + localStorage.getItem('stable') + ' ')
|
||||
}
|
||||
@@ -284,6 +343,8 @@ function clear() {
|
||||
$('#nsfw').removeClass('yellow-text')
|
||||
$('#nsfw').html('visibility_off')
|
||||
$('#nsfw').removeClass('nsfw-avail')
|
||||
$('#stamp').html('Off')
|
||||
$('#stamp').removeClass('stamp-avail')
|
||||
$('#nsc').text(lang.lang_nothing)
|
||||
$('#drag').css('background-color', '#e0e0e0')
|
||||
$('#preview').html('')
|
||||
@@ -294,7 +355,7 @@ function clear() {
|
||||
$('#mins_poll').val(6)
|
||||
$('#poll').addClass('hide')
|
||||
$('#pollsta').text(lang.lang_no)
|
||||
$('.mastodon-choice').map(function() {
|
||||
$('.mastodon-choice').map(function () {
|
||||
$(this).val('')
|
||||
})
|
||||
localStorage.removeItem('image')
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
/*保護系*/
|
||||
//画像保護
|
||||
function nsfw() {
|
||||
if ($('#nsfw').hasClass('nsfw-avail')) {
|
||||
$('#nsfw').removeClass('yellow-text')
|
||||
$('#nsfw').html('visibility_off')
|
||||
$('#nsfw').removeClass('nsfw-avail')
|
||||
} else {
|
||||
function nsfw(force) {
|
||||
if (force || !$('#nsfw').hasClass('nsfw-avail')) {
|
||||
$('#nsfw').addClass('yellow-text')
|
||||
$('#nsfw').html('visibility')
|
||||
$('#nsfw').addClass('nsfw-avail')
|
||||
} else {
|
||||
$('#nsfw').removeClass('yellow-text')
|
||||
$('#nsfw').html('visibility_off')
|
||||
$('#nsfw').removeClass('nsfw-avail')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,13 +79,8 @@ function loadVis() {
|
||||
loadVis()
|
||||
|
||||
//コンテントワーニング
|
||||
function cw() {
|
||||
if ($('#cw').hasClass('cw-avail')) {
|
||||
$('#cw-text').val()
|
||||
$('#cw-text').hide()
|
||||
$('#cw').removeClass('yellow-text')
|
||||
$('#cw').removeClass('cw-avail')
|
||||
} else {
|
||||
function cw(force) {
|
||||
if (force || !$('#cw').hasClass('cw-avail')) {
|
||||
$('#cw-text').show()
|
||||
$('#cw').addClass('yellow-text')
|
||||
$('#cw').addClass('cw-avail')
|
||||
@@ -93,15 +88,20 @@ function cw() {
|
||||
if (cwt) {
|
||||
$('#cw-text').val(cwt)
|
||||
}
|
||||
} else {
|
||||
$('#cw-text').val()
|
||||
$('#cw-text').hide()
|
||||
$('#cw').removeClass('yellow-text')
|
||||
$('#cw').removeClass('cw-avail')
|
||||
}
|
||||
}
|
||||
//TLでコンテントワーニングを表示トグル
|
||||
function cw_show(id) {
|
||||
$('.cw_hide_' + id).toggleClass('cw')
|
||||
$('.cw-long-' + id).toggleClass('hide')
|
||||
function cw_show(e) {
|
||||
$(e).parent().parent().find('.cw_hide').toggleClass('cw')
|
||||
$(e).parent().find('.cw_long').toggleClass('hide')
|
||||
}
|
||||
$(function() {
|
||||
$('#cw-text').on('change', function(event) {
|
||||
$(function () {
|
||||
$('#cw-text').on('change', function (event) {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var cwlen = $('#cw-text').val().length
|
||||
@@ -126,3 +126,79 @@ function schedule() {
|
||||
$('#sch-box').addClass('sch-avail')
|
||||
}
|
||||
}
|
||||
|
||||
//下書き機能
|
||||
function draftToggle(force) {
|
||||
if ($('#draft').hasClass('hide') || force) {
|
||||
$('#draft').removeClass('hide')
|
||||
$('#right-side').show()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#left-side').css('width', 'calc(100% - 300px)')
|
||||
var width = localStorage.getItem('postbox-width')
|
||||
if (width) {
|
||||
width = width.replace('px', '') * 1 + 300
|
||||
} else {
|
||||
width = 600
|
||||
}
|
||||
$('#post-box').css('width', width + 'px')
|
||||
$('#suggest').html('')
|
||||
$('#draft').html('')
|
||||
draftDraw()
|
||||
} else {
|
||||
$('#poll').addClass('hide')
|
||||
$('#draft').addClass('hide')
|
||||
$('#right-side').hide()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#emoji').addClass('hide')
|
||||
$('#suggest').html('')
|
||||
$('#draft').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 draftDraw() {
|
||||
var draft = localStorage.getItem('draft')
|
||||
var html = `<button class="btn waves-effect green" style="width:100%; padding:0; margin-top:0;" onclick="addToDraft();">${lang.lang_secure_draft}</button>`
|
||||
if (draft) {
|
||||
var draftObj = JSON.parse(draft)
|
||||
for (let i = 0; i < draftObj.length; i++) {
|
||||
var toot = draftObj[i]
|
||||
html = html + `<div class="tootInDraft">
|
||||
<i class="waves-effect gray material-icons" onclick="useThisDraft(${i})" title="${lang.lang_secure_userThis}">reply</i>
|
||||
<i class="waves-effect gray material-icons" onclick="deleteThisDraft(${i})" title="${lang.lang_secure_deleteThis}">cancel</i>
|
||||
${escapeHTML(toot.status).replace(/\n/, '').substr(0, 10)}
|
||||
</div>`
|
||||
}
|
||||
}
|
||||
$('#draft').html(html)
|
||||
}
|
||||
function addToDraft() {
|
||||
var json = post(null, null, true)
|
||||
var draft = localStorage.getItem('draft')
|
||||
var draftObj = []
|
||||
if (draft) draftObj = JSON.parse(draft)
|
||||
draftObj.push(json)
|
||||
draft = JSON.stringify(draftObj)
|
||||
localStorage.setItem('draft', draft)
|
||||
draftDraw()
|
||||
}
|
||||
function useThisDraft(i) {
|
||||
var draft = localStorage.getItem('draft')
|
||||
var draftObj = JSON.parse(draft)
|
||||
draftToPost(draftObj[i], draftObj[i]['TheDeskAcctId'], 0)
|
||||
draftToggle()
|
||||
}
|
||||
function deleteThisDraft(i) {
|
||||
var draft = localStorage.getItem('draft')
|
||||
var draftObj = JSON.parse(draft)
|
||||
draftObj.splice(i, 1)
|
||||
draft = JSON.stringify(draftObj)
|
||||
localStorage.setItem('draft', draft)
|
||||
draftDraw()
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
//お気に入り登録やブースト等、フォローやブロック等
|
||||
//お気に入り登録
|
||||
function fav(id, acct_id, remote) {
|
||||
if ($('#pub_' + id).hasClass('faved')) {
|
||||
if ($(`.cvo[unique-id=${id}]`).hasClass('faved')) {
|
||||
var flag = 'unfavourite'
|
||||
} else {
|
||||
var flag = 'favourite'
|
||||
@@ -15,7 +15,7 @@ function fav(id, acct_id, remote) {
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send()
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
@@ -57,7 +57,7 @@ function fav(id, acct_id, remote) {
|
||||
|
||||
//ブースト
|
||||
function rt(id, acct_id, remote, vis) {
|
||||
if ($('#pub_' + id).hasClass('rted')) {
|
||||
if ($(`.cvo[toot-id=${id}]`).hasClass('rted')) {
|
||||
var flag = 'unreblog'
|
||||
} else {
|
||||
var flag = 'reblog'
|
||||
@@ -75,7 +75,7 @@ function rt(id, acct_id, remote, vis) {
|
||||
} else {
|
||||
httpreq.send()
|
||||
}
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
@@ -85,7 +85,7 @@ function rt(id, acct_id, remote, vis) {
|
||||
json = json.reblog
|
||||
}
|
||||
console.log(['Success: boost', json])
|
||||
$('[unique-id=' + id + '] .fav_ct').text(json.favourites_count)
|
||||
$('[toot-id=' + id + '] .fav_ct').text(json.favourites_count)
|
||||
if (!json.reblog) {
|
||||
if (flag == 'unreblog') {
|
||||
var rt = json.reblogs_count - 1
|
||||
@@ -95,16 +95,16 @@ function rt(id, acct_id, remote, vis) {
|
||||
} else {
|
||||
var rt = json.reblogs_count
|
||||
}
|
||||
$('[unique-id=' + id + '] .rt_ct').text(rt)
|
||||
$('[toot-id=' + id + '] .rt_ct').text(rt)
|
||||
} else {
|
||||
$('[unique-id=' + id + '] .rt_ct').text(json.reblogs_count)
|
||||
$('[toot-id=' + id + '] .rt_ct').text(json.reblogs_count)
|
||||
}
|
||||
|
||||
if ($('[unique-id=' + id + ']').hasClass('rted')) {
|
||||
$('[unique-id=' + id + ']').removeClass('rted')
|
||||
if ($('[toot-id=' + id + ']').hasClass('rted')) {
|
||||
$('[toot-id=' + id + ']').removeClass('rted')
|
||||
$('.rt_' + id).removeClass('light-blue-text')
|
||||
} else {
|
||||
$('[unique-id=' + id + ']').addClass('rted')
|
||||
$('[toot-id=' + id + ']').addClass('rted')
|
||||
$('.rt_' + id).addClass('light-blue-text')
|
||||
}
|
||||
}
|
||||
@@ -115,11 +115,59 @@ function boostWith(vis) {
|
||||
var acct_id = $('#tootmodal').attr('data-acct')
|
||||
rt(id, acct_id, false, vis)
|
||||
}
|
||||
//ブックマーク
|
||||
function bkm(id, acct_id, tlid) {
|
||||
if ($(`.cvo[unique-id=${id}]`).hasClass('bkmed')) {
|
||||
var flag = 'unbookmark'
|
||||
} else {
|
||||
var flag = 'bookmark'
|
||||
}
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/v1/statuses/' + id + '/' + flag
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send()
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, json)
|
||||
}
|
||||
if (json.reblog) {
|
||||
json = json.reblog
|
||||
}
|
||||
var fav = json.favourites_count
|
||||
$('[toot-id=' + id + '] .fav_ct').text(fav)
|
||||
$('[toot-id=' + id + '] .rt_ct').text(json.reblogs_count)
|
||||
if (flag == 'unbookmark') {
|
||||
$('.bkmStr_' + id).text(lang.lang_parse_bookmark)
|
||||
$('.bkm_' + id).removeClass('red-text')
|
||||
$('[toot-id=' + id + ']').removeClass('bkmed')
|
||||
} else {
|
||||
$('.bkmStr_' + id).text(lang.lang_parse_unbookmark)
|
||||
$('.bkm_' + id).addClass('red-text')
|
||||
$('[toot-id=' + id + ']').addClass('bkmed')
|
||||
}
|
||||
var tlidTar = $(`.bookmark-timeline[data-acct=${acct_id}]`).attr('tlid')
|
||||
columnReload(tlidTar, 'bookmark')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//フォロー
|
||||
async function follow(acct_id, resolve) {
|
||||
if ($('#his-data').hasClass('locked')) {
|
||||
locked = true
|
||||
} else {
|
||||
locked = false
|
||||
}
|
||||
if (!acct_id && acct_id != 'selector') {
|
||||
var acct_id = $('#his-data').attr('use-acct')
|
||||
|
||||
} else if (acct_id == 'selector') {
|
||||
var acct_id = $('#user-acct-sel').val()
|
||||
}
|
||||
@@ -130,6 +178,7 @@ async function follow(acct_id, resolve) {
|
||||
var flag = 'follow'
|
||||
var flagm = 'create'
|
||||
}
|
||||
|
||||
var id = $('#his-data').attr('user-id')
|
||||
if (resolve == 'selector') {
|
||||
var fullacct = $('#his-acct').attr('fullname')
|
||||
@@ -151,7 +200,7 @@ async function follow(acct_id, resolve) {
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(JSON.stringify(ent))
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
@@ -163,7 +212,11 @@ async function follow(acct_id, resolve) {
|
||||
$('#his-follow-btn-text').text(lang.lang_status_follow)
|
||||
} else {
|
||||
$('#his-data').addClass('following')
|
||||
$('#his-follow-btn-text').text(lang.lang_status_unfollow)
|
||||
if (locked) {
|
||||
$('#his-follow-btn-text').text(lang.lang_status_requesting)
|
||||
} else {
|
||||
$('#his-follow-btn-text').text(lang.lang_status_unfollow)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -225,7 +278,7 @@ function block(acct_id) {
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send()
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, this.response)
|
||||
@@ -285,7 +338,7 @@ function muteDo(acct_id) {
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(rq)
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, this.response)
|
||||
@@ -325,7 +378,7 @@ function del(id, acct_id) {
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send()
|
||||
}
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, this.response)
|
||||
@@ -347,45 +400,95 @@ function redraft(id, acct_id) {
|
||||
}).then(result => {
|
||||
if (result.value) {
|
||||
show()
|
||||
del(id, acct_id)
|
||||
$('#post-acct-sel').prop('disabled', true)
|
||||
$('#post-acct-sel').val(acct_id)
|
||||
$('select').formSelect()
|
||||
mdCheck()
|
||||
var medias = $('[toot-id=' + id + ']').attr('data-medias')
|
||||
var vismode = $('[toot-id=' + id + '] .vis-data').attr('data-vis')
|
||||
vis(vismode)
|
||||
$('#media').val(medias)
|
||||
var ct = medias.split(',').length
|
||||
$('[toot-id=' + id + '] img.toot-img').each(function(i, elem) {
|
||||
if (i < ct) {
|
||||
var url = $(elem).attr('src')
|
||||
console.log('Play back image data:' + url)
|
||||
$('#preview').append('<img src="' + url + '" style="width:50px; max-height:100px;">')
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
||||
var start = 'https://' + domain + '/api/notes/delete'
|
||||
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 }))
|
||||
$('[toot-id=' + id + ']').hide()
|
||||
$('[toot-id=' + id + ']').remove()
|
||||
} else {
|
||||
var start = 'https://' + domain + '/api/v1/statuses/' + id
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('DELETE', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send()
|
||||
}
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, this.response)
|
||||
}
|
||||
var json = httpreq.response
|
||||
draftToPost(json, acct_id, id)
|
||||
}
|
||||
})
|
||||
var html = $('[toot-id=' + id + '] .toot').html()
|
||||
html = html.replace(/^<p>(.+)<\/p>$/, '$1')
|
||||
html = html.replace(/<br\s?\/?>/, '\n')
|
||||
html = html.replace(/<p>/, '\n')
|
||||
html = html.replace(/<\/p>/, '\n')
|
||||
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, '$1')
|
||||
html = $.strip_tags(html)
|
||||
localStorage.setItem('nohide', true)
|
||||
show()
|
||||
$('#textarea').val(html)
|
||||
var cwtxt = $('[toot-id=' + id + '] .cw_text').html()
|
||||
if (cwtxt != '') {
|
||||
cwtxt = $.strip_tags(cwtxt)
|
||||
cw()
|
||||
$('#cw-text').val(cwtxt)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
function draftToPost(json, acct_id, id) {
|
||||
$('#post-acct-sel').prop('disabled', true)
|
||||
$('#post-acct-sel').val(acct_id)
|
||||
$('select').formSelect()
|
||||
mdCheck()
|
||||
mediack = null
|
||||
if(json.media_attachments) mediack = json.media_attachments[0]
|
||||
//メディアがあれば
|
||||
var media_ids = []
|
||||
if (mediack) {
|
||||
for (var i = 0; i <= 4; i++) {
|
||||
if (json.media_attachments[i]) {
|
||||
media_ids.push(json.media_attachments[i].id)
|
||||
$('#preview').append(
|
||||
'<img src="' +
|
||||
json.media_attachments[i].preview_url +
|
||||
'" style="width:50px; max-height:100px;">'
|
||||
)
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
var vismode = json.visibility
|
||||
vis(vismode)
|
||||
var medias = media_ids.join(',')
|
||||
$('#media').val(medias)
|
||||
localStorage.setItem('nohide', true)
|
||||
show()
|
||||
if (json.text) {
|
||||
var html = json.text
|
||||
} else {
|
||||
var html = json.status
|
||||
html = html.replace(/^<p>(.+)<\/p>$/, '$1')
|
||||
html = html.replace(/<br\s?\/?>/, '\n')
|
||||
html = html.replace(/<p>/, '\n')
|
||||
html = html.replace(/<\/p>/, '\n')
|
||||
html = html.replace(/<img[\s\S]*alt="(.+?)"[\s\S]*?>/g, '$1')
|
||||
html = $.strip_tags(html)
|
||||
}
|
||||
$('#textarea').val(html)
|
||||
if (json.spoiler_text) {
|
||||
cw(true)
|
||||
$('#cw-text').val(json.spoiler_text)
|
||||
}
|
||||
if (json.sensitive) {
|
||||
$('#nsfw').addClass('yellow-text')
|
||||
$('#nsfw').html('visibility')
|
||||
$('#nsfw').addClass('nsfw-avail')
|
||||
}
|
||||
if (json.in_reply_to_id) {
|
||||
$('#reply').val(json.in_reply_to_id)
|
||||
}
|
||||
}
|
||||
//ピン留め
|
||||
function pin(id, acct_id) {
|
||||
if ($('#pub_' + id).hasClass('pined')) {
|
||||
if ($(`.cvo[unique-id=${id}]`).hasClass('pined')) {
|
||||
var flag = 'unpin'
|
||||
} else {
|
||||
var flag = 'pin'
|
||||
@@ -399,19 +502,21 @@ function pin(id, acct_id) {
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send()
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, this.response)
|
||||
}
|
||||
console.log(['Success: pinned', json])
|
||||
if ($('[toot-id=' + id + ']').hasClass('pined')) {
|
||||
if (flag == 'unpin') {
|
||||
$('[toot-id=' + id + ']').removeClass('pined')
|
||||
$('.pin_' + id).removeClass('blue-text')
|
||||
$('.pinStr_' + id).text(lang.lang_parse_pin)
|
||||
} else {
|
||||
$('[toot-id=' + id + ']').addClass('pined')
|
||||
$('.pin_' + id).addClass('blue-text')
|
||||
$('.pinStr_' + id).text(lang.lang_parse_unpin)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -428,7 +533,7 @@ function request(id, flag, acct_id) {
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send()
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
@@ -454,7 +559,7 @@ function domainblock(add, flag, acct_id) {
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send()
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
@@ -481,7 +586,7 @@ function empUser() {
|
||||
M.toast({ html: id + lang.lang_status_emphas, displayLength: 4000 })
|
||||
} else {
|
||||
var can
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
Object.keys(obj).forEach(function (key) {
|
||||
var usT = obj[key]
|
||||
if (usT != id && !can) {
|
||||
can = false
|
||||
@@ -513,7 +618,7 @@ function pinUser() {
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send()
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
@@ -549,48 +654,38 @@ function staEx(mode) {
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
})
|
||||
.then(function(response) {
|
||||
.then(function (response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
response.text().then(function (text) {
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
.catch(function (error) {
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
var id = json.statuses[0].id
|
||||
if (mode == 'rt') {
|
||||
rt(id, acct_id, 'remote')
|
||||
} else if (mode == 'fav') {
|
||||
fav(id, acct_id, 'remote')
|
||||
} else if (mode == 'reply') {
|
||||
reEx(id)
|
||||
.then(function (json) {
|
||||
if (json.statuses) {
|
||||
if (json.statuses[0]) {
|
||||
var id = json.statuses[0].id
|
||||
if (mode == 'rt') {
|
||||
rt(id, acct_id, 'remote')
|
||||
} else if (mode == 'fav') {
|
||||
fav(id, acct_id, 'remote')
|
||||
} else if (mode == 'reply') {
|
||||
reEx(id)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
return
|
||||
}
|
||||
function toggleAction(id, tlid, acct_id) {
|
||||
if (tlid == 'notf') {
|
||||
var tlide = '[data-acct=' + acct_id + '] .notf-timeline'
|
||||
} else if (tlid == 'user') {
|
||||
var tlide = '#his-tl-contents'
|
||||
} else {
|
||||
var tlide = '[tlid=' + tlid + ']'
|
||||
}
|
||||
if (!$(tlide + ' [toot-id=' + id + ']').hasClass('ext-mode')) {
|
||||
$(tlide + ' [toot-id=' + id + '] .type-a').hide()
|
||||
$(tlide + ' [toot-id=' + id + '] .type-b').show()
|
||||
$(tlide + ' [toot-id=' + id + ']').addClass('ext-mode')
|
||||
$(tlide + ' [toot-id=' + id + '] .act-icon').text('expand_less')
|
||||
} else {
|
||||
$(tlide + ' [toot-id=' + id + '] .type-b').hide()
|
||||
$(tlide + ' [toot-id=' + id + '] .type-a').show()
|
||||
$(tlide + ' [toot-id=' + id + ']').removeClass('ext-mode')
|
||||
$(tlide + ' [toot-id=' + id + '] .act-icon').text('expand_more')
|
||||
}
|
||||
function toggleAction(elm) {
|
||||
console.log(elm)
|
||||
const instance = M.Dropdown.init(elm)
|
||||
console.log(instance.isOpen)
|
||||
instance.open()
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ input.addEventListener(
|
||||
var new_val = input.value
|
||||
if (new_val == '') {
|
||||
$('#suggest').html('')
|
||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
|
||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
|
||||
$('#right-side').hide()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#left-side').css('width', '100%')
|
||||
@@ -41,7 +41,7 @@ input.addEventListener(
|
||||
var q = acct[1]
|
||||
} else {
|
||||
$('#suggest').html('')
|
||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
|
||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
|
||||
$('#right-side').hide()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#left-side').css('width', '100%')
|
||||
@@ -97,7 +97,9 @@ input.addEventListener(
|
||||
his[4].uses * 1 +
|
||||
his[5].uses * 1 +
|
||||
his[6].uses * 1
|
||||
tagHTML = `<br><a onclick="tagInsert('#${escapeHTML(tag.name)}','#${escapeHTML(tag.name)}')" class="pointer">#${escapeHTML(tag.name)}</a> ${uses}toot(s)`
|
||||
tagHTML = `<br><a onclick="tagInsert('#${escapeHTML(
|
||||
tag.name
|
||||
)}','#${q}')" class="pointer">#${escapeHTML(tag.name)}</a> ${uses}toot(s)`
|
||||
|
||||
var item = {
|
||||
uses: uses,
|
||||
@@ -136,6 +138,7 @@ input.addEventListener(
|
||||
$('#post-box').css('width', width + 'px')
|
||||
$('#poll').addClass('hide')
|
||||
$('#emoji').addClass('hide')
|
||||
$('#draft').addClass('hide')
|
||||
}
|
||||
} else if (json.accounts[0] && acct[1]) {
|
||||
var accts = ''
|
||||
@@ -144,7 +147,9 @@ input.addEventListener(
|
||||
if (acct.acct != q) {
|
||||
//Instance Actorって…
|
||||
if (acct.username.indexOf('.') < 0) {
|
||||
accts = accts + `<a onclick="tagInsert('@${acct.acct}','@${q}')" class="pointer">@${acct.acct}</a><br>`
|
||||
accts =
|
||||
accts +
|
||||
`<a onclick="tagInsert('@${acct.acct}','@${q}')" class="pointer">@${acct.acct}</a><br>`
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -161,8 +166,9 @@ input.addEventListener(
|
||||
$('#suggest').html(accts)
|
||||
$('#poll').addClass('hide')
|
||||
$('#emoji').addClass('hide')
|
||||
$('#draft').addClass('hide')
|
||||
} else {
|
||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
|
||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
|
||||
$('#right-side').hide()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#left-side').css('width', '100%')
|
||||
@@ -194,24 +200,35 @@ input.addEventListener(
|
||||
false
|
||||
)
|
||||
function tagInsert(code, del) {
|
||||
var now = $('#textarea').val()
|
||||
var selin = $('#textarea').prop('selectionStart')
|
||||
if (!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 regExp = new RegExp(del.replace(/[.*+?^=!:${}()|[\]\/\\]/g, '\\$&'), 'g')
|
||||
var now = now.replace(regExp, '')
|
||||
selin = selin - del.length
|
||||
var delLen = 0
|
||||
}
|
||||
if (selin > 0) {
|
||||
var before = now.substr(0, selin)
|
||||
var after = now.substr(selin, now.length)
|
||||
newt = before + ' ' + code + ' ' + after
|
||||
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 {
|
||||
newt = code + ' ' + now
|
||||
var word = blankBefore + code + blankAfter
|
||||
}
|
||||
$('#textarea').val(newt)
|
||||
$('#textarea').focus()
|
||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
|
||||
sentence = before + word + after
|
||||
textarea.value = sentence
|
||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide') && $('#draft').hasClass('hide')) {
|
||||
$('#right-side').hide()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#left-side').css('width', '50%')
|
||||
@@ -251,7 +268,9 @@ function cgNPs(q) {
|
||||
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>`
|
||||
tags =
|
||||
tags +
|
||||
`<a onclick="cgNp('${json[key4]}')" class="pointer">${escapeHTML(json[key4])}</a>`
|
||||
})
|
||||
$('#suggest').html('Cinderella NowPlaying:' + tags)
|
||||
} else {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*リプライ*/
|
||||
function re(id, ats_cm, acct_id, mode) {
|
||||
function re(id, ats_cm, acct_id, mode, cwTxt) {
|
||||
clear()
|
||||
var ats = ats_cm.split(',')
|
||||
localStorage.setItem('nohide', true)
|
||||
@@ -25,13 +25,18 @@ function re(id, ats_cm, acct_id, mode) {
|
||||
}
|
||||
$('#acct-sel-prof').attr('src', profimg)
|
||||
vis(mode)
|
||||
if(localStorage.getItem('cw-continue') == 'yes') {
|
||||
cw(true)
|
||||
$('#cw-text').val(cwTxt)
|
||||
}
|
||||
}
|
||||
function reEx(id) {
|
||||
$('#tootmodal').modal('close')
|
||||
var at = $('#tootmodal').attr('data-user')
|
||||
var acct_id = $('#status-acct-sel').val()
|
||||
var mode = $('#tootmodal .vis-data').attr('data-vis')
|
||||
re(id, at, acct_id, mode)
|
||||
var cwTxt = $('#cw-text').val()
|
||||
re(id, at, acct_id, mode, cwTxt)
|
||||
}
|
||||
//引用
|
||||
function qt(id, acct_id, at, url) {
|
||||
|
||||
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()
|
||||
}
|
||||
@@ -9,24 +9,21 @@ function additional(acct_id, tlid) {
|
||||
$('#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;\/?:\@&=+\$,%#]+)/)
|
||||
.match(/https?:\/\/([-a-zA-Z0-9@.]+)\/tags?\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/)
|
||||
if (tags) {
|
||||
var tagThis = tags[2]
|
||||
} else {
|
||||
var tagThis = $(this).attr('data-tag')
|
||||
var tagThis = $(this).attr('data-regTag')
|
||||
}
|
||||
|
||||
if (tagThis) {
|
||||
$(this).attr('onclick', "tagShow('" + tagThis + "')")
|
||||
$(this).attr('href', '#')
|
||||
$(this).attr('href', "javascript:tagShow('" + tagThis + "')")
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
//トゥートサムネ
|
||||
$('#timeline_' + tlid + ' .toot a:not(.parsed)').each(function(i, elem) {
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var card = localStorage.getItem('card_' + tlid)
|
||||
var text = $(this).attr('href')
|
||||
if (text) {
|
||||
if (text.indexOf('twimg.com') === -1) {
|
||||
@@ -48,48 +45,6 @@ function additional(acct_id, tlid) {
|
||||
}
|
||||
if (urls) {
|
||||
$(this).remove()
|
||||
} else if (!card) {
|
||||
var id = $(this)
|
||||
.parents('.cvo')
|
||||
.attr('toot-id')
|
||||
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 {
|
||||
$(this).attr('title', text)
|
||||
}
|
||||
@@ -139,8 +94,7 @@ function additional(acct_id, tlid) {
|
||||
var id = $(this)
|
||||
.parents('.cvo')
|
||||
.attr('toot-id')
|
||||
$(this).attr('href', '#')
|
||||
$(this).attr('onclick', "imgv('" + id + "','" + i + "')")
|
||||
$(this).attr('href', `javascript:imgv('${id}','${i}')`)
|
||||
$(this).attr('data-type', 'image')
|
||||
$(this).attr('id', id + '-image-' + i)
|
||||
$(this).attr('data-url', ilink)
|
||||
@@ -218,71 +172,9 @@ function additionalIndv(tlid, acct_id, id) {
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
json = json.card
|
||||
//このリンク鳥やんけ、ってとき
|
||||
if (json.provider_name == 'Twitter') {
|
||||
if (json.image) {
|
||||
var twiImg = `
|
||||
<br><img src="${json.image}" style="max-width:100%"
|
||||
onclick="imgv('twi_${id}',0,'twitter')" id="twi_${id}-image-0"
|
||||
data-url="${json.image}"
|
||||
data-type="image">
|
||||
`
|
||||
} else {
|
||||
var twiImg = ''
|
||||
}
|
||||
$('[toot-id=' + id + '] .additional').html(`
|
||||
<div class="twitter-tweet"><b>
|
||||
${escapeHTML(json.author_name)}
|
||||
</b><br>
|
||||
${escapeHTML(json.description)}
|
||||
${twiImg}
|
||||
</div>
|
||||
`)
|
||||
} else if (json.provider_name == 'pixiv') {
|
||||
if (json.image) {
|
||||
var pxvImg = `
|
||||
<br><img src="${json.image}" style="max-width:100%"
|
||||
onclick="imgv('pixiv_${id}',0,'pixiv')" id="pixiv_${id}-image-0"
|
||||
data-url="${json.embed_url}"
|
||||
data-type="image">
|
||||
`
|
||||
} else {
|
||||
var pxvImg = ''
|
||||
}
|
||||
$('[toot-id=' + id + '] .additional').html(
|
||||
`<div class="pixiv-post"><b><a href="
|
||||
${json.author_url}
|
||||
" target="_blank">
|
||||
${escapeHTML(json.author_name)}
|
||||
</a></b><br>
|
||||
${escapeHTML(json.title)}
|
||||
${pxvImg}
|
||||
</div>`
|
||||
)
|
||||
} else {
|
||||
if (json.title) {
|
||||
$('[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>`
|
||||
)
|
||||
}
|
||||
}
|
||||
cards = json.card
|
||||
var analyze = cardHtml(cards, acct_id, id)
|
||||
$('[toot-id=' + id + '] .additional').html(analyze)
|
||||
if (json.title) {
|
||||
$('[toot-id=' + id + '] a:not(.parsed)').addClass('parsed')
|
||||
$('[toot-id=' + id + ']').addClass('parsed')
|
||||
@@ -291,7 +183,132 @@ function additionalIndv(tlid, acct_id, id) {
|
||||
}
|
||||
}
|
||||
}
|
||||
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]
|
||||
function cardToggle(tlid) {
|
||||
var card = localStorage.getItem('card_' + tlid)
|
||||
@@ -317,7 +334,19 @@ function cardCheck(tlid) {
|
||||
}
|
||||
}
|
||||
|
||||
function mov(id, tlid, type) {
|
||||
function mov(id, tlid, type, rand, target) {
|
||||
const dropdownTrigger = `dropdown_${rand}`
|
||||
let elm = document.querySelector(`#timeline_${tlid} #${dropdownTrigger}`)
|
||||
if(tlid == 'notf') {
|
||||
const timeline = $(target).parents('.notf-indv-box').attr('id')
|
||||
elm = document.querySelector(`#${timeline} #${dropdownTrigger}`)
|
||||
console.log(`#${timeline} #${dropdownTrigger}`)
|
||||
}
|
||||
const instance = M.Dropdown.getInstance(elm)
|
||||
if(instance) {
|
||||
if(instance.isOpen) return false
|
||||
}
|
||||
|
||||
var click = false
|
||||
if (tlid == 'notf') {
|
||||
var tlide = '[data-notf=' + acct_id + ']'
|
||||
@@ -344,9 +373,9 @@ function mov(id, tlid, type) {
|
||||
}
|
||||
if (mouseover == 'hide') {
|
||||
if (click) {
|
||||
$(tlide + ' [toot-id=' + id + ']').toggleClass('hide-actions')
|
||||
$(tlide + ' [unique-id=' + id + ']').toggleClass('hide-actions')
|
||||
} else {
|
||||
$(tlide + ' [toot-id=' + id + ']').removeClass('hide-actions')
|
||||
$(tlide + ' [unique-id=' + id + ']').removeClass('hide-actions')
|
||||
}
|
||||
|
||||
//$(tlide + " [toot-id=" + id + "] .area-vis").toggleClass("hide")
|
||||
|
||||
@@ -577,8 +577,8 @@ function staCopy(id) {
|
||||
}
|
||||
}
|
||||
//翻訳
|
||||
function trans(tar, to) {
|
||||
var html = $('#toot-this .toot').html()
|
||||
function trans(tar, to, elem) {
|
||||
var html = elem.parents('.cvo').find('.toot').html()
|
||||
if (html.match(/^<p>(.+)<\/p>$/)) {
|
||||
html = html.match(/^<p>(.+)<\/p>$/)[1]
|
||||
}
|
||||
@@ -615,7 +615,7 @@ function trans(tar, to) {
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(text) {
|
||||
$('#toot-this .additional').html('<span class="gray translate">' + text.text + '</span>')
|
||||
elem.parents('.cvo').find('.toot').append('<span class="gray translate">' + text.text + '</span>')
|
||||
})
|
||||
}
|
||||
//ブラウザで開く
|
||||
@@ -630,7 +630,7 @@ function detEx(url, acct_id) {
|
||||
}
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + url
|
||||
var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + encodeURIComponent(url)
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
|
||||
@@ -1,95 +1,98 @@
|
||||
//日付パーサー
|
||||
function date(str, datetype) {
|
||||
if (datetype == "relative") {
|
||||
return '<time class="timeago" datetime="' + str + '"></time>';
|
||||
function date(str, datetype, lastStatus) {
|
||||
if (lastStatus) {
|
||||
var date = new Date(str)
|
||||
return date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate()
|
||||
} else if (datetype == "relative") {
|
||||
return '<time class="timeago" datetime="' + str + '"></time>'
|
||||
} else {
|
||||
var date = new Date(str);
|
||||
var date = new Date(str)
|
||||
if (datetype == "unix") {
|
||||
var unixm = date.getTime();
|
||||
return Math.floor(unixm / 1000);
|
||||
var unixm = date.getTime()
|
||||
return Math.floor(unixm / 1000)
|
||||
}
|
||||
var now = new Date();
|
||||
var month = date.getMonth() + 1;
|
||||
var now = new Date()
|
||||
var month = date.getMonth() + 1
|
||||
if (date.getMinutes() < 10) {
|
||||
var min = "0" + date.getMinutes();
|
||||
var min = "0" + date.getMinutes()
|
||||
} else {
|
||||
var min = date.getMinutes();
|
||||
var min = date.getMinutes()
|
||||
}
|
||||
var sec = null;
|
||||
var sec = null
|
||||
if (date.getSeconds() < 10) {
|
||||
sec = "0" + date.getSeconds();
|
||||
sec = "0" + date.getSeconds()
|
||||
} else {
|
||||
sec = date.getSeconds();
|
||||
sec = date.getSeconds()
|
||||
}
|
||||
if (datetype == "full") {
|
||||
var ret = date.getFullYear() + "/" + month + "/" + date.getDate() + "/ " +
|
||||
date.getHours() + ":" + min + ":" + sec;
|
||||
date.getHours() + ":" + min + ":" + sec
|
||||
}
|
||||
if (date.getFullYear() == now.getFullYear()) {
|
||||
if (date.getMonth() == now.getMonth()) {
|
||||
if (date.getDate() == now.getDate()) {
|
||||
if (datetype == "medium") {
|
||||
var ret = '<time class="timeago" datetime="' + str + '"></time>';
|
||||
var ret = '<time class="timeago" datetime="' + str + '"></time>'
|
||||
} else {
|
||||
var ret = date.getHours() + ":" + min + ":" + sec;
|
||||
var ret = date.getHours() + ":" + min + ":" + sec
|
||||
}
|
||||
|
||||
} else {
|
||||
var ret = month + "/" + date.getDate() + " " + date.getHours() + ":" +
|
||||
min + ":" + sec;
|
||||
min + ":" + sec
|
||||
}
|
||||
} else {
|
||||
var ret = month + "/" + date.getDate() + " " + date.getHours() + ":" + min +
|
||||
":" + sec;
|
||||
":" + sec
|
||||
}
|
||||
} else {
|
||||
var ret = date.getFullYear() + "/" + month + "/" + date.getDate() + " " +
|
||||
date.getHours() + ":" + min + ":" + sec;
|
||||
date.getHours() + ":" + min + ":" + sec
|
||||
}
|
||||
if (datetype == "double") {
|
||||
return '<time class="timeago" datetime="' + str + '"></time>/' + ret;
|
||||
return '<time class="timeago" datetime="' + str + '"></time>/' + ret
|
||||
} else {
|
||||
return ret;
|
||||
return ret
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//特殊フォーマット(インスタンス情報で利用)
|
||||
function crat(str) {
|
||||
var date = new Date(str);
|
||||
var mnt = null;
|
||||
var date = new Date(str)
|
||||
var mnt = null
|
||||
if (date.getMonth() < 9) {
|
||||
mnt = "0" + (date.getMonth() + 1);
|
||||
mnt = "0" + (date.getMonth() + 1)
|
||||
} else {
|
||||
mnt = date.getMonth() + 1;
|
||||
mnt = date.getMonth() + 1
|
||||
}
|
||||
if (date.getDate() < 10) {
|
||||
var dat = "0" + date.getDate();
|
||||
var dat = "0" + date.getDate()
|
||||
} else {
|
||||
var dat = date.getDate();
|
||||
var dat = date.getDate()
|
||||
}
|
||||
if (date.getHours() < 10) {
|
||||
var hrs = "0" + date.getHours();
|
||||
var hrs = "0" + date.getHours()
|
||||
} else {
|
||||
var hrs = date.getHours();
|
||||
var hrs = date.getHours()
|
||||
}
|
||||
if (date.getMinutes() < 10) {
|
||||
var mns = "0" + date.getMinutes();
|
||||
var mns = "0" + date.getMinutes()
|
||||
} else {
|
||||
var mns = date.getMinutes();
|
||||
var mns = date.getMinutes()
|
||||
}
|
||||
if (date.getSeconds() < 10) {
|
||||
var sec = "0" + date.getSeconds();
|
||||
var sec = "0" + date.getSeconds()
|
||||
} else {
|
||||
var sec = date.getSeconds();
|
||||
var sec = date.getSeconds()
|
||||
}
|
||||
format_str = 'YYYY-MM-DD hh:mm:ss';
|
||||
format_str = format_str.replace(/YYYY/g, date.getFullYear());
|
||||
format_str = format_str.replace(/MM/g, mnt);
|
||||
format_str = format_str.replace(/DD/g, dat);
|
||||
format_str = format_str.replace(/hh/g, hrs);
|
||||
format_str = format_str.replace(/mm/g, mns);
|
||||
format_str = format_str.replace(/ss/g, sec);
|
||||
format_str = 'YYYY-MM-DD hh:mm:ss'
|
||||
format_str = format_str.replace(/YYYY/g, date.getFullYear())
|
||||
format_str = format_str.replace(/MM/g, mnt)
|
||||
format_str = format_str.replace(/DD/g, dat)
|
||||
format_str = format_str.replace(/hh/g, hrs)
|
||||
format_str = format_str.replace(/mm/g, mns)
|
||||
format_str = format_str.replace(/ss/g, sec)
|
||||
|
||||
return format_str;
|
||||
return format_str
|
||||
}
|
||||
|
||||
@@ -1,49 +1,49 @@
|
||||
//ディレクトリ
|
||||
//ディレクトリトグル
|
||||
function dirMenu() {
|
||||
$("#dir-contents").html("");
|
||||
directory();
|
||||
$("#left-menu div").removeClass("active");
|
||||
$("#dirMenu").addClass("active");
|
||||
$(".menu-content").addClass("hide");
|
||||
$("#dir-box").removeClass("hide");
|
||||
$("#dir-contents").html("")
|
||||
directory()
|
||||
$("#left-menu a").removeClass("active")
|
||||
$("#dirMenu").addClass("active")
|
||||
$(".menu-content").addClass("hide")
|
||||
$("#dir-box").removeClass("hide")
|
||||
}
|
||||
function dirselCk() {
|
||||
var acct = $("#dir-acct-sel").val();
|
||||
var acct = $("#dir-acct-sel").val()
|
||||
if (acct == "noauth") {
|
||||
$("#dirNoAuth").removeClass("hide");
|
||||
$("#dirNoAuth").removeClass("hide")
|
||||
} else {
|
||||
$("#dirNoAuth").addClass("hide");
|
||||
directory();
|
||||
$("#dirNoAuth").addClass("hide")
|
||||
directory()
|
||||
}
|
||||
}
|
||||
function directory(isMore) {
|
||||
var order = $("[name=sort]:checked").val();
|
||||
var order = $("[name=sort]:checked").val()
|
||||
if (!order) {
|
||||
order = "active";
|
||||
order = "active"
|
||||
}
|
||||
var local_only = $("#local_only:checked").val();
|
||||
var local_only = $("#local_only:checked").val()
|
||||
if (local_only) {
|
||||
local_only = "true";
|
||||
local_only = "true"
|
||||
} else {
|
||||
local_only = "false";
|
||||
local_only = "false"
|
||||
}
|
||||
var acct_id = $("#dir-acct-sel").val();
|
||||
var acct_id = $("#dir-acct-sel").val()
|
||||
if (acct_id == "noauth") {
|
||||
var domain = $("#dirNoAuth-url").val();
|
||||
var at = "";
|
||||
var domain = $("#dirNoAuth-url").val()
|
||||
var at = ""
|
||||
} else {
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||
var domain = localStorage.getItem("domain_" + acct_id)
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
||||
}
|
||||
if (isMore) {
|
||||
var addOffset = $("#dir-contents .cvo").length;
|
||||
var addOffset = $("#dir-contents .cvo").length
|
||||
} else {
|
||||
var addOffset = 0;
|
||||
$("#dir-contents").html("");
|
||||
var addOffset = 0
|
||||
$("#dir-contents").html("")
|
||||
}
|
||||
var start = "https://" + domain + "/api/v1/directory?order=" + order + "&local=" + local_only + "&offset=" + addOffset;
|
||||
console.log(start);
|
||||
var start = "https://" + domain + "/api/v1/directory?order=" + order + "&local=" + local_only + "&offset=" + addOffset
|
||||
console.log(start)
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
@@ -54,23 +54,23 @@ function directory(isMore) {
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
setLog(start, "JSON", error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
if (json) {
|
||||
$("#moreDir").removeClass("disabled");
|
||||
var html = userparse(json, null, acct_id, "dir", null);
|
||||
$("#dir-contents").append(html);
|
||||
jQuery("time.timeago").timeago();
|
||||
$("#moreDir").removeClass("disabled")
|
||||
var html = userparse(json, null, acct_id, "dir", null)
|
||||
$("#dir-contents").append(html)
|
||||
jQuery("time.timeago").timeago()
|
||||
} else {
|
||||
$("#moreDir").addClass("disabled");
|
||||
$("#moreDir").addClass("disabled")
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
488
app/js/tl/dm.js
@@ -1,8 +1,8 @@
|
||||
//DM(Conv) TL
|
||||
function dm(acct_id, tlid, type, delc, voice) {
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/conversations";
|
||||
var domain = localStorage.getItem("domain_" + acct_id)
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
||||
var start = "https://" + domain + "/api/v1/conversations"
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
@@ -13,38 +13,38 @@ function dm(acct_id, tlid, type, delc, voice) {
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(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>";
|
||||
localStorage.setItem("lastobj_" + tlid, json[0].id);
|
||||
$("#timeline_" + tlid).html(templete);
|
||||
additional(acct_id, tlid);
|
||||
jQuery("time.timeago").timeago();
|
||||
todc();
|
||||
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);
|
||||
});
|
||||
$(window).scrollTop(0)
|
||||
})
|
||||
}
|
||||
function dmmore(tlid) {
|
||||
var multi = localStorage.getItem("column");
|
||||
var obj = JSON.parse(multi);
|
||||
var acct_id = obj[tlid].domain;
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||
var multi = localStorage.getItem("column")
|
||||
var obj = JSON.parse(multi)
|
||||
var acct_id = obj[tlid].domain
|
||||
var domain = localStorage.getItem("domain_" + acct_id)
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
||||
var sid = $("#timeline_" + tlid + " .cvo")
|
||||
.last()
|
||||
.attr("unique-id");
|
||||
var start = "https://" + domain + "/api/v1/conversations?max_id=" + sid;
|
||||
var type = "dm";
|
||||
.attr("unique-id")
|
||||
var start = "https://" + domain + "/api/v1/conversations?max_id=" + sid
|
||||
var type = "dm"
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
@@ -55,444 +55,444 @@ function dmmore(tlid) {
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(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);
|
||||
jQuery("time.timeago").timeago();
|
||||
moreloading = false;
|
||||
});
|
||||
var templete = '<div id="convList' + tlid + '">' + dmListParse(json, type, acct_id, tlid, "", mute) + "</div>"
|
||||
$("#timeline_" + tlid).append(templete)
|
||||
additional(acct_id, tlid)
|
||||
jQuery("time.timeago").timeago()
|
||||
moreloading = false
|
||||
})
|
||||
}
|
||||
//DMオブジェクトパーサー(トゥート)
|
||||
function dmListParse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
||||
var templete = "";
|
||||
var templete = ""
|
||||
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 = "re,rt,fav,qt,del,pin,red";
|
||||
var actb = localStorage.getItem("action_btns")
|
||||
var actb = "re,rt,fav,qt,del,pin,red"
|
||||
if (actb) {
|
||||
var actb = actb.split(",");
|
||||
var disp = {};
|
||||
var actb = actb.split(",")
|
||||
var disp = {}
|
||||
for (var k = 0; k < actb.length; k++) {
|
||||
if (k < 4) {
|
||||
var tp = "type-a";
|
||||
var tp = "type-a"
|
||||
} else {
|
||||
var tp = "type-b";
|
||||
var tp = "type-b"
|
||||
}
|
||||
disp[actb[k]] = tp;
|
||||
disp[actb[k]] = tp
|
||||
}
|
||||
}
|
||||
var datetype = localStorage.getItem("datetype");
|
||||
var nsfwtype = localStorage.getItem("nsfw");
|
||||
var sent = localStorage.getItem("sentence");
|
||||
var ltr = localStorage.getItem("letters");
|
||||
var gif = localStorage.getItem("gif");
|
||||
var imh = localStorage.getItem("img-height");
|
||||
var datetype = localStorage.getItem("datetype")
|
||||
var nsfwtype = localStorage.getItem("nsfw")
|
||||
var sent = localStorage.getItem("sentence")
|
||||
var ltr = localStorage.getItem("letters")
|
||||
var gif = localStorage.getItem("gif")
|
||||
var imh = localStorage.getItem("img-height")
|
||||
//独自ロケール
|
||||
var locale = localStorage.getItem("locale");
|
||||
var locale = localStorage.getItem("locale")
|
||||
if (locale == "yes") {
|
||||
var locale = false;
|
||||
var locale = false
|
||||
}
|
||||
//ネイティブ通知
|
||||
var native = localStorage.getItem("nativenotf");
|
||||
var native = localStorage.getItem("nativenotf")
|
||||
if (!native) {
|
||||
native = "yes";
|
||||
native = "yes"
|
||||
}
|
||||
//クライアント強調
|
||||
var emp = localStorage.getItem("client_emp");
|
||||
var emp = localStorage.getItem("client_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) {
|
||||
var mute = JSON.parse(mute);
|
||||
var mute = JSON.parse(mute)
|
||||
}
|
||||
//ユーザー強調
|
||||
var useremp = localStorage.getItem("user_emp");
|
||||
var useremp = localStorage.getItem("user_emp")
|
||||
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) {
|
||||
var wordemp = JSON.parse(wordemp);
|
||||
var wordemp = JSON.parse(wordemp)
|
||||
}
|
||||
//ワードミュート
|
||||
var wordmute = localStorage.getItem("word_mute");
|
||||
var wordmute = localStorage.getItem("word_mute")
|
||||
if (wordmute) {
|
||||
var wordmute = JSON.parse(wordmute);
|
||||
wordmute = wordmute.concat(mutefilter);
|
||||
var wordmute = JSON.parse(wordmute)
|
||||
wordmute = wordmute.concat(mutefilter)
|
||||
} else {
|
||||
wordmute = mutefilter;
|
||||
wordmute = mutefilter
|
||||
}
|
||||
//Ticker
|
||||
var tickerck = localStorage.getItem("ticker_ok");
|
||||
var tickerck = localStorage.getItem("ticker_ok")
|
||||
if (tickerck) {
|
||||
var ticker = true;
|
||||
var ticker = true
|
||||
} else {
|
||||
var ticker = false;
|
||||
var ticker = false
|
||||
}
|
||||
//Cards
|
||||
var card = localStorage.getItem("card_" + tlid);
|
||||
var card = localStorage.getItem("card_" + tlid)
|
||||
|
||||
if (!sent) {
|
||||
var sent = 500;
|
||||
var sent = 500
|
||||
}
|
||||
if (!ltr) {
|
||||
var ltr = 500;
|
||||
var ltr = 500
|
||||
}
|
||||
if (!nsfwtype || nsfwtype == "yes") {
|
||||
var nsfw = "ok";
|
||||
var nsfw = "ok"
|
||||
} else {
|
||||
var nsfw;
|
||||
var nsfw
|
||||
}
|
||||
var cwtype = localStorage.getItem("cw");
|
||||
var cwtype = localStorage.getItem("cw")
|
||||
if (!cwtype || cwtype == "yes") {
|
||||
var cw = "ok";
|
||||
var cw = "ok"
|
||||
} else {
|
||||
var cw;
|
||||
var cw
|
||||
}
|
||||
if (!datetype) {
|
||||
datetype = "absolute";
|
||||
datetype = "absolute"
|
||||
}
|
||||
if (!gif) {
|
||||
var gif = "yes";
|
||||
var gif = "yes"
|
||||
}
|
||||
if (!imh) {
|
||||
var imh = "200";
|
||||
var imh = "200"
|
||||
}
|
||||
if (!emp) {
|
||||
var emp = [];
|
||||
var emp = []
|
||||
}
|
||||
if (!mute) {
|
||||
var mute = [];
|
||||
var mute = []
|
||||
}
|
||||
if (!useremp) {
|
||||
var useremp = [];
|
||||
var useremp = []
|
||||
}
|
||||
if (!wordemp) {
|
||||
var wordemp = [];
|
||||
var wordemp = []
|
||||
}
|
||||
if (!wordmute) {
|
||||
var wordmute = [];
|
||||
var wordmute = []
|
||||
}
|
||||
//via通知
|
||||
var viashow = localStorage.getItem("viashow");
|
||||
var viashow = localStorage.getItem("viashow")
|
||||
if (!viashow) {
|
||||
viashow = "via-hide";
|
||||
viashow = "via-hide"
|
||||
}
|
||||
if (viashow == "hide") {
|
||||
viashow = "via-hide";
|
||||
viashow = "via-hide"
|
||||
}
|
||||
//認証なしTL
|
||||
if (mix == "noauth") {
|
||||
var noauth = "hide";
|
||||
var antinoauth = "";
|
||||
var noauth = "hide"
|
||||
var antinoauth = ""
|
||||
} else {
|
||||
var noauth = "";
|
||||
var antinoauth = "hide";
|
||||
var noauth = ""
|
||||
var antinoauth = "hide"
|
||||
}
|
||||
//マウスオーバーのみ
|
||||
var mouseover = localStorage.getItem("mouseover");
|
||||
var mouseover = localStorage.getItem("mouseover")
|
||||
if (!mouseover) {
|
||||
mouseover = "";
|
||||
mouseover = ""
|
||||
} else if (mouseover == "yes" || mouseover == "click") {
|
||||
mouseover = "hide";
|
||||
mouseover = "hide"
|
||||
} else if (mouseover == "no") {
|
||||
mouseover = "";
|
||||
mouseover = ""
|
||||
}
|
||||
var local = [];
|
||||
var times = [];
|
||||
var local = []
|
||||
var times = []
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
var conv_id = obj[key].id;
|
||||
var toot = obj[key].last_status;
|
||||
var dis_name = escapeHTML(toot.account.display_name);
|
||||
var conv_id = obj[key].id
|
||||
var toot = obj[key].last_status
|
||||
var dis_name = escapeHTML(toot.account.display_name)
|
||||
if (toot.account.emojis) {
|
||||
var actemojick = toot.account.emojis[0];
|
||||
var actemojick = toot.account.emojis[0]
|
||||
} else {
|
||||
var actemojick = false;
|
||||
var actemojick = false
|
||||
}
|
||||
//絵文字があれば
|
||||
if (actemojick) {
|
||||
Object.keys(toot.account.emojis).forEach(function(key5) {
|
||||
var emoji = toot.account.emojis[key5];
|
||||
var shortcode = emoji.shortcode;
|
||||
var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
|
||||
var regExp = new RegExp(":" + shortcode + ":", "g");
|
||||
dis_name = dis_name.replace(regExp, emoji_url);
|
||||
});
|
||||
var emoji = toot.account.emojis[key5]
|
||||
var shortcode = emoji.shortcode
|
||||
var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">'
|
||||
var regExp = new RegExp(":" + shortcode + ":", "g")
|
||||
dis_name = dis_name.replace(regExp, emoji_url)
|
||||
})
|
||||
}
|
||||
var noticeavatar = "";
|
||||
var if_notf = "";
|
||||
var uniqueid = toot.id;
|
||||
var notice = "";
|
||||
var boostback = "";
|
||||
var noticeavatar = ""
|
||||
var if_notf = ""
|
||||
var uniqueid = toot.id
|
||||
var notice = ""
|
||||
var boostback = ""
|
||||
//ユーザー強調
|
||||
if (toot.account.username != toot.account.acct) {
|
||||
var fullname = toot.account.acct;
|
||||
var fullname = toot.account.acct
|
||||
} else {
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var fullname = toot.account.acct + "@" + domain;
|
||||
var domain = localStorage.getItem("domain_" + acct_id)
|
||||
var fullname = toot.account.acct + "@" + domain
|
||||
}
|
||||
if (useremp) {
|
||||
Object.keys(useremp).forEach(function(key10) {
|
||||
var user = useremp[key10];
|
||||
var user = useremp[key10]
|
||||
if (user == fullname) {
|
||||
boostback = "emphasized";
|
||||
boostback = "emphasized"
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
var id = toot.id;
|
||||
var home = "";
|
||||
var id = toot.id
|
||||
var home = ""
|
||||
if (toot.account.locked) {
|
||||
var locked = ' <i class="fas fa-lock red-text"></i>';
|
||||
var locked = ' <i class="fas fa-lock red-text"></i>'
|
||||
} else {
|
||||
var locked = "";
|
||||
var locked = ""
|
||||
}
|
||||
if (!toot.application) {
|
||||
var via = "";
|
||||
viashow = "hide";
|
||||
var via = ""
|
||||
viashow = "hide"
|
||||
} else {
|
||||
var via = escapeHTML(toot.application.name);
|
||||
var via = escapeHTML(toot.application.name)
|
||||
//強調チェック
|
||||
Object.keys(emp).forEach(function(key6) {
|
||||
var cli = emp[key6];
|
||||
var cli = emp[key6]
|
||||
if (cli == via) {
|
||||
boostback = "emphasized";
|
||||
boostback = "emphasized"
|
||||
}
|
||||
});
|
||||
})
|
||||
//ミュートチェック
|
||||
Object.keys(mute).forEach(function(key7) {
|
||||
var cli = mute[key7];
|
||||
var cli = mute[key7]
|
||||
if (cli == via) {
|
||||
boostback = "hide";
|
||||
boostback = "hide"
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
if (mix == "pinned") {
|
||||
boostback = "emphasized";
|
||||
boostback = "emphasized"
|
||||
}
|
||||
if (toot.spoiler_text && cw) {
|
||||
var content = toot.content;
|
||||
var spoil = escapeHTML(toot.spoiler_text);
|
||||
var spoiler = "cw cw_hide_" + toot.id;
|
||||
var api_spoil = "gray";
|
||||
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id + '\')" class="nex parsed">' + lang.lang_parse_cwshow + "</a><br>";
|
||||
var content = toot.content
|
||||
var spoil = escapeHTML(toot.spoiler_text)
|
||||
var spoiler = "cw cw_hide_" + toot.id
|
||||
var api_spoil = "gray"
|
||||
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id + '\')" class="nex parsed">' + lang.lang_parse_cwshow + "</a><br>"
|
||||
} else {
|
||||
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 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
|
||||
if (ct1 > ct2) {
|
||||
var ct = ct1;
|
||||
var ct = ct1
|
||||
} else {
|
||||
var ct = ct2;
|
||||
var ct = ct2
|
||||
}
|
||||
if ((sent < ct && $.mb_strlen($.strip_tags(toot.content)) > 5) || ($.strip_tags(toot.content).length > ltr && $.mb_strlen($.strip_tags(toot.content)) > 5)) {
|
||||
var content = '<span class="gray">' + lang.lang_parse_fulltext + "</span><br>" + toot.content;
|
||||
var spoil = '<span class="cw-long-' + toot.id + '">' + $.mb_substr($.strip_tags(toot.content), 0, 100) + '</span><span class="gray">' + lang.lang_parse_autofold + "</span>";
|
||||
var spoiler = "cw cw_hide_" + toot.id;
|
||||
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id + '\')" class="nex parsed">' + lang.lang_parse_more + "</a><br>";
|
||||
var content = '<span class="gray">' + lang.lang_parse_fulltext + "</span><br>" + toot.content
|
||||
var spoil = '<span class="cw-long-' + toot.id + '">' + $.mb_substr($.strip_tags(toot.content), 0, 100) + '</span><span class="gray">' + lang.lang_parse_autofold + "</span>"
|
||||
var spoiler = "cw cw_hide_" + toot.id
|
||||
var spoiler_show = '<a href="#" onclick="cw_show(\'' + toot.id + '\')" class="nex parsed">' + lang.lang_parse_more + "</a><br>"
|
||||
} else {
|
||||
var content = toot.content;
|
||||
var spoil = escapeHTML(toot.spoiler_text);
|
||||
var spoiler = "";
|
||||
var spoiler_show = "";
|
||||
var content = toot.content
|
||||
var spoil = escapeHTML(toot.spoiler_text)
|
||||
var spoiler = ""
|
||||
var spoiler_show = ""
|
||||
}
|
||||
}
|
||||
var urls = $.strip_tags(content)
|
||||
.replace(/\n/g, " ")
|
||||
.match(/https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/);
|
||||
.match(/https?:\/\/([-a-zA-Z0-9@.]+)\/?(?!.*((media|tags)|mentions)).*([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)?/)
|
||||
if (urls) {
|
||||
var analyze = "<a onclick=\"additionalIndv('" + tlid + "'," + acct_id + ",'" + id + '\')" class="add-show pointer">' + lang.lang_parse_url + "</a><br>";
|
||||
var analyze = "<a onclick=\"additionalIndv('" + tlid + "'," + acct_id + ",'" + id + '\')" class="add-show pointer">' + lang.lang_parse_url + "</a><br>"
|
||||
} else {
|
||||
var analyze = "";
|
||||
var analyze = ""
|
||||
}
|
||||
var viewer = "";
|
||||
var hasmedia = "";
|
||||
var youtube = "";
|
||||
var viewer = ""
|
||||
var hasmedia = ""
|
||||
var youtube = ""
|
||||
if (toot.emojis) {
|
||||
var emojick = toot.emojis[0];
|
||||
var emojick = toot.emojis[0]
|
||||
} else {
|
||||
var emojick = false;
|
||||
var emojick = false
|
||||
}
|
||||
//絵文字があれば
|
||||
if (emojick) {
|
||||
Object.keys(toot.emojis).forEach(function(key5) {
|
||||
var emoji = toot.emojis[key5];
|
||||
var shortcode = emoji.shortcode;
|
||||
var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
|
||||
var regExp = new RegExp(":" + shortcode + ":", "g");
|
||||
content = content.replace(regExp, emoji_url);
|
||||
spoil = spoil.replace(regExp, emoji_url);
|
||||
});
|
||||
var emoji = toot.emojis[key5]
|
||||
var shortcode = emoji.shortcode
|
||||
var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">'
|
||||
var regExp = new RegExp(":" + shortcode + ":", "g")
|
||||
content = content.replace(regExp, emoji_url)
|
||||
spoil = spoil.replace(regExp, emoji_url)
|
||||
})
|
||||
}
|
||||
//ニコフレ絵文字
|
||||
if (toot.profile_emojis) {
|
||||
var nicoemojick = toot.profile_emojis[0];
|
||||
var nicoemojick = toot.profile_emojis[0]
|
||||
} else {
|
||||
var nicoemojick = false;
|
||||
var nicoemojick = false
|
||||
}
|
||||
//絵文字があれば
|
||||
if (nicoemojick) {
|
||||
Object.keys(toot.profile_emojis).forEach(function(keynico) {
|
||||
var emoji = toot.profile_emojis[keynico];
|
||||
var shortcode = emoji.shortcode;
|
||||
var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">';
|
||||
var regExp = new RegExp(":" + shortcode + ":", "g");
|
||||
content = content.replace(regExp, emoji_url);
|
||||
spoil = spoil.replace(regExp, emoji_url);
|
||||
});
|
||||
var emoji = toot.profile_emojis[keynico]
|
||||
var shortcode = emoji.shortcode
|
||||
var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" alt=" :' + shortcode + ': ">'
|
||||
var regExp = new RegExp(":" + shortcode + ":", "g")
|
||||
content = content.replace(regExp, emoji_url)
|
||||
spoil = spoil.replace(regExp, emoji_url)
|
||||
})
|
||||
}
|
||||
//デフォ絵文字
|
||||
content = twemoji.parse(content);
|
||||
content = twemoji.parse(content)
|
||||
if (dis_name) {
|
||||
dis_name = twemoji.parse(dis_name);
|
||||
dis_name = twemoji.parse(dis_name)
|
||||
}
|
||||
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) {
|
||||
hasmedia = "hasmedia";
|
||||
var cwdt = 100 / toot.media_attachments.length;
|
||||
hasmedia = "hasmedia"
|
||||
var cwdt = 100 / toot.media_attachments.length
|
||||
Object.keys(toot.media_attachments).forEach(function(key2) {
|
||||
var media = toot.media_attachments[key2];
|
||||
var purl = media.preview_url;
|
||||
media_ids = media_ids + media.id + ",";
|
||||
var url = media.url;
|
||||
var media = toot.media_attachments[key2]
|
||||
var purl = media.preview_url
|
||||
media_ids = media_ids + media.id + ","
|
||||
var url = media.url
|
||||
if (toot.sensitive && nsfw) {
|
||||
var sense = "sensitive";
|
||||
var sense = "sensitive"
|
||||
} else {
|
||||
var sense = "";
|
||||
var sense = ""
|
||||
}
|
||||
viewer = viewer + "<a onclick=\"imgv('" + id + "','" + key2 + "','" + acct_id + '\')" id="' + id + "-image-" + key2 + '" data-url="' + url + '" data-type="' + media.type + '" class="img-parsed"><img src="' + purl + '" class="' + sense + ' toot-img pointer" style="width:' + cwdt + "%; height:" + imh + 'px;"></a></span>';
|
||||
});
|
||||
media_ids = media_ids.slice(0, -1);
|
||||
viewer = viewer + "<a onclick=\"imgv('" + id + "','" + key2 + "','" + acct_id + '\')" id="' + id + "-image-" + key2 + '" data-url="' + url + '" data-type="' + media.type + '" class="img-parsed"><img src="' + purl + '" class="' + sense + ' toot-img pointer" style="width:' + cwdt + "%; height:" + imh + 'px;"></a></span>'
|
||||
})
|
||||
media_ids = media_ids.slice(0, -1)
|
||||
} else {
|
||||
viewer = "";
|
||||
hasmedia = "nomedia";
|
||||
viewer = ""
|
||||
hasmedia = "nomedia"
|
||||
}
|
||||
var menck = toot.mentions[0];
|
||||
var mentions = "";
|
||||
var menck = toot.mentions[0]
|
||||
var mentions = ""
|
||||
//メンションであれば
|
||||
if (menck) {
|
||||
mentions = "";
|
||||
mentions = ""
|
||||
Object.keys(toot.mentions).forEach(function(key3) {
|
||||
var mention = toot.mentions[key3];
|
||||
mentions = mentions + "<a onclick=\"udg('" + mention.id + "'," + acct_id + ')" class="pointer">@' + mention.acct + "</a> ";
|
||||
});
|
||||
mentions = '<div style="float:right">' + mentions + "</div>";
|
||||
var mention = toot.mentions[key3]
|
||||
mentions = mentions + "<a onclick=\"udg('" + mention.id + "'," + acct_id + ')" class="pointer">@' + mention.acct + "</a> "
|
||||
})
|
||||
mentions = '<div style="float:right">' + mentions + "</div>"
|
||||
}
|
||||
var tagck = toot.tags[0];
|
||||
var tags = "";
|
||||
var tagck = toot.tags[0]
|
||||
var tags = ""
|
||||
//タグであれば
|
||||
if (tagck) {
|
||||
Object.keys(toot.tags).forEach(function(key4) {
|
||||
var tag = toot.tags[key4];
|
||||
tags = tags + '<span class="hide" data-tag="' + tag.name + '">#' + tag.name + ":<a onclick=\"tl('tag','" + tag.name + "'," + acct_id + ',\'add\')" class="pointer" title="' + lang.lang_parse_tagTL.replace("{{tag}}", "#" + tag.name) + '">TL</a> <a onclick="brInsert(\'#' + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", "#" + tag.name) + '">Toot</a> ' + "<a onclick=\"tagPin('" + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagpin.replace("{{tag}}", "#" + tag.name) + '">Pin</a></span> ';
|
||||
});
|
||||
tags = '<div style="float:right">' + tags + "</div>";
|
||||
var tag = toot.tags[key4]
|
||||
tags = tags + '<span class="hide" data-tag="' + tag.name + '">#' + tag.name + ":<a onclick=\"tl('tag','" + tag.name + "'," + acct_id + ',\'add\')" class="pointer" title="' + lang.lang_parse_tagTL.replace("{{tag}}", "#" + tag.name) + '">TL</a> <a onclick="brInsert(\'#' + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagtoot.replace("{{tag}}", "#" + tag.name) + '">Toot</a> ' + "<a onclick=\"tagPin('" + tag.name + '\')" class="pointer" title="' + lang.lang_parse_tagpin.replace("{{tag}}", "#" + tag.name) + '">Pin</a></span> '
|
||||
})
|
||||
tags = '<div style="float:right">' + tags + "</div>"
|
||||
}
|
||||
//アニメ再生
|
||||
if (gif == "yes") {
|
||||
var avatar = toot.account.avatar;
|
||||
var avatar = toot.account.avatar
|
||||
} else {
|
||||
var avatar = toot.account.avatar_static;
|
||||
var avatar = toot.account.avatar_static
|
||||
}
|
||||
//ワードミュート
|
||||
if (wordmute) {
|
||||
Object.keys(wordmute).forEach(function(key8) {
|
||||
var worde = wordmute[key8];
|
||||
var worde = wordmute[key8]
|
||||
if (worde) {
|
||||
if (worde.tag) {
|
||||
var word = worde.tag;
|
||||
var word = worde.tag
|
||||
} 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)) {
|
||||
boostback = "hide by_filter";
|
||||
boostback = "hide by_filter"
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
//ワード強調
|
||||
if (wordemp) {
|
||||
Object.keys(wordemp).forEach(function(key9) {
|
||||
var word = wordemp[key9];
|
||||
var word = wordemp[key9]
|
||||
if (word) {
|
||||
var word = word.tag;
|
||||
var regExp = new RegExp(word, "g");
|
||||
content = content.replace(regExp, '<span class="emp">' + escapeHTML(word) + "</span>");
|
||||
var word = word.tag
|
||||
var regExp = new RegExp(word, "g")
|
||||
content = content.replace(regExp, '<span class="emp">' + escapeHTML(word) + "</span>")
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
//日本語じゃない
|
||||
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 {
|
||||
var trans = "";
|
||||
var trans = ""
|
||||
}
|
||||
if (toot.favourited) {
|
||||
var if_fav = " yellow-text";
|
||||
var fav_app = "faved";
|
||||
var if_fav = " yellow-text"
|
||||
var fav_app = "faved"
|
||||
} else {
|
||||
var if_fav = "";
|
||||
var fav_app = "";
|
||||
var if_fav = ""
|
||||
var fav_app = ""
|
||||
}
|
||||
//Cards
|
||||
if (!card && toot.card) {
|
||||
var cards = toot.card;
|
||||
var cards = toot.card
|
||||
if (cards.provider_name == "Twitter") {
|
||||
if (cards.image) {
|
||||
var twiImg = '<br><img src="' + cards.image + '">';
|
||||
var twiImg = '<br><img src="' + cards.image + '">'
|
||||
} else {
|
||||
var twiImg = "";
|
||||
var twiImg = ""
|
||||
}
|
||||
analyze = '<blockquote class="twitter-tweet"><b>' + escapeHTML(cards.author_name) + "</b><br>" + escapeHTML(cards.description) + twiImg + "</blockquote>";
|
||||
analyze = '<blockquote class="twitter-tweet"><b>' + escapeHTML(cards.author_name) + "</b><br>" + escapeHTML(cards.description) + twiImg + "</blockquote>"
|
||||
}
|
||||
if (cards.title) {
|
||||
analyze = '<span class="gray">URL' + lang.lang_cards_check + ":<br>Title:" + escapeHTML(cards.title) + "<br>" + escapeHTML(cards.description) + "</span>";
|
||||
analyze = '<span class="gray">URL' + lang.lang_cards_check + ":<br>Title:" + escapeHTML(cards.title) + "<br>" + escapeHTML(cards.description) + "</span>"
|
||||
}
|
||||
if (cards.html) {
|
||||
analyze = cards.html + '<i class="material-icons" onclick="pip(' + id + ')" title="' + lang.lang_cards_pip + '">picture_in_picture_alt</i>';
|
||||
analyze = cards.html + '<i class="material-icons" onclick="pip(' + id + ')" title="' + lang.lang_cards_pip + '">picture_in_picture_alt</i>'
|
||||
}
|
||||
}
|
||||
//Ticker
|
||||
var tickerdom = "";
|
||||
var tickerdom = ""
|
||||
if (ticker) {
|
||||
var tickerdata = localStorage.getItem("ticker");
|
||||
var tickerdata = localStorage.getItem("ticker")
|
||||
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) {
|
||||
thisdomain = thisdomain[1];
|
||||
thisdomain = thisdomain[1]
|
||||
}
|
||||
for (var i = 0; i < tickerdata.length; i++) {
|
||||
var value = tickerdata[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;
|
||||
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>";
|
||||
});
|
||||
return templete;
|
||||
templete = templete + '<div id="pub_' + toot.id + '" class="cvo ' + boostback + " " + fav_app + " " + hasmedia + '" toot-id="' + id + '" unique-id="' + uniqueid + '" data-medias="' + media_ids + ' " unixtime="' + date(obj[key].created_at, "unix") + '" ' + if_notf + ' onclick="dmStatus()">' + '<div class="area-notice"><span class="gray sharesta">' + notice + home + "</span></div>" + '<div class="area-icon"><a onclick="udg(\'' + toot.account.id + "'," + acct_id + ');" user="' + toot.account.acct + '" class="udg">' + '<img src="' + avatar + '" width="40" class="prof-img" user="' + toot.account.acct + '"></a>' + noticeavatar + "</div>" + '<div class="area-display_name"><div class="flex-name"><span class="user">' + dis_name + '</span><span class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; cursor:text;"> @' + toot.account.acct + locked + "</span></div>" + '<div class="flex-time"><span class="cbadge cbadge-hover pointer waves-effect" onclick="tootUriCopy(\'' + toot.url + '\');" title="' + date(toot.created_at, "absolute") + "(" + lang.lang_parse_clickcopyurl + ')"><i class="far fa-clock-o"></i>' + date(toot.created_at, datetype) + "</span>" + "</div></div>" + '<div class="area-toot">' + tickerdom + '<span class="' + api_spoil + " cw_text_" + toot.id + '"><span class="cw_text">' + spoil + "</span>" + spoiler_show + '</span><span class="toot ' + spoiler + '">' + content + "</span>" + "" + viewer + "" + "<br><a onclick=\"details('" + toot.id + "'," + acct_id + ",'" + tlid + "','dm')\" class=\"pointer waves-effect\">" + lang.lang_parse_thread + "</a></div>" + '<div class="area-vis"></div>' + "</div></div>"
|
||||
})
|
||||
return templete
|
||||
}
|
||||
|
||||
@@ -14,6 +14,46 @@ function mediaToggle(tlid) {
|
||||
$('#timeline_' + tlid).addClass('media-filter')
|
||||
}
|
||||
}
|
||||
/* Remote only */
|
||||
function remoteOnly(tlid, type) {
|
||||
var multi = localStorage.getItem('column')
|
||||
var obj = JSON.parse(multi)
|
||||
if (obj[tlid].data) {
|
||||
if (obj[tlid].data.remote) {
|
||||
obj[tlid].data.remote = false
|
||||
var json = JSON.stringify(obj)
|
||||
localStorage.setItem('column', json)
|
||||
$('#sta-remote-' + tlid).text('Off')
|
||||
$('#sta-remote-' + tlid).css('color', '#009688')
|
||||
} else {
|
||||
obj[tlid].data.remote = true
|
||||
var json = JSON.stringify(obj)
|
||||
localStorage.setItem('column', json)
|
||||
$('#sta-remote-' + tlid).text('On')
|
||||
$('#sta-remote-' + tlid).css('color', 'red')
|
||||
}
|
||||
} else {
|
||||
obj[tlid].data = {}
|
||||
obj[tlid].data.remote = true
|
||||
var json = JSON.stringify(obj)
|
||||
localStorage.setItem('column', json)
|
||||
$('#sta-remote-' + tlid).text('On')
|
||||
$('#sta-remote-' + tlid).css('color', 'red')
|
||||
}
|
||||
columnReload(tlid, type)
|
||||
}
|
||||
function remoteOnlyCk(tlid) {
|
||||
var multi = localStorage.getItem('column')
|
||||
var obj = JSON.parse(multi)
|
||||
if (obj[tlid].data) {
|
||||
if (obj[tlid].data.remote) {
|
||||
$('#sta-remote-' + tlid).text('On')
|
||||
$('#sta-remote-' + tlid).css('color', 'red')
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
//各TL上方のBT[BTOnly/BTExc/Off]
|
||||
function ebtToggle(tlid) {
|
||||
var ebt = localStorage.getItem('ebt_' + tlid)
|
||||
@@ -101,7 +141,7 @@ function delreset(tlid) {
|
||||
}
|
||||
/*ワードフィルター機能*/
|
||||
function filterMenu() {
|
||||
$('#left-menu div').removeClass('active')
|
||||
$('#left-menu a').removeClass('active')
|
||||
$('#filterMenu').addClass('active')
|
||||
$('.menu-content').addClass('hide')
|
||||
$('#filter-box').removeClass('hide')
|
||||
@@ -117,26 +157,26 @@ function filter() {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
Authorization: 'Bearer ' + at,
|
||||
},
|
||||
})
|
||||
.then(function(response) {
|
||||
.then(function (response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
response.text().then(function (text) {
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
.catch(function (error) {
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
.then(function (json) {
|
||||
if (json) {
|
||||
var filters = ''
|
||||
Object.keys(json).forEach(function(key) {
|
||||
Object.keys(json).forEach(function (key) {
|
||||
var filterword = json[key]
|
||||
var context = filterword.context.join(',')
|
||||
filters =
|
||||
@@ -180,6 +220,9 @@ function makeNewFilter() {
|
||||
if ($('#conv_filter:checked').val()) {
|
||||
cont.push('thread')
|
||||
}
|
||||
if ($('#prof_filter:checked').val()) {
|
||||
cont.push('profiles')
|
||||
}
|
||||
if (!cont.length) {
|
||||
$('#filtered-words').html('Error:' + lang.lang_filter_errordegree)
|
||||
}
|
||||
@@ -188,10 +231,7 @@ function makeNewFilter() {
|
||||
if (!who) {
|
||||
who = false
|
||||
}
|
||||
var time =
|
||||
$('#days_filter').val() * 24 * 60 * 60 +
|
||||
$('#hours_filter').val() * 60 * 60 +
|
||||
$('#mins_filter').val() * 60
|
||||
var time = $('#days_filter').val() * 24 * 60 * 60 + $('#hours_filter').val() * 60 * 60 + $('#mins_filter').val() * 60
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
if ($('#filter-edit-id').val()) {
|
||||
@@ -213,10 +253,10 @@ function makeNewFilter() {
|
||||
context: cont,
|
||||
irreversible: exc,
|
||||
whole_word: who,
|
||||
expires_in: time
|
||||
expires_in: time,
|
||||
})
|
||||
)
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
@@ -229,6 +269,7 @@ function makeNewFilter() {
|
||||
$('#local_filter').prop('checked', false)
|
||||
$('#notf_filter').prop('checked', false)
|
||||
$('#conv_filter').prop('checked', false)
|
||||
$('#prof_filter').prop('checked', false)
|
||||
$('#except_filter').prop('checked', false)
|
||||
$('#wholeword_filter').prop('checked', false)
|
||||
$('#days_filter').val('0')
|
||||
@@ -259,29 +300,29 @@ function filterEdit(id, acct_id) {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
Authorization: 'Bearer ' + at,
|
||||
},
|
||||
})
|
||||
.then(function(response) {
|
||||
.then(function (response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
response.text().then(function (text) {
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
.catch(function (error) {
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
.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) {
|
||||
Object.keys(json.context).forEach(function (key) {
|
||||
var context = json.context[key]
|
||||
$('[value=' + context + ']').prop('checked', true)
|
||||
})
|
||||
@@ -311,7 +352,7 @@ function filterDel(id, acct_id) {
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send()
|
||||
httpreq.onreadystatechange = function() {
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
@@ -331,23 +372,23 @@ function getFilter(acct_id) {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
Authorization: 'Bearer ' + at,
|
||||
},
|
||||
})
|
||||
.then(function(response) {
|
||||
.then(function (response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
response.text().then(function (text) {
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
.catch(function (error) {
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
.then(function (json) {
|
||||
localStorage.setItem('filter_' + acct_id, JSON.stringify(json))
|
||||
})
|
||||
} else {
|
||||
@@ -366,13 +407,13 @@ function getFilterType(json, type) {
|
||||
type = 'notifi'
|
||||
}
|
||||
var mutedfilters = []
|
||||
Object.keys(json).forEach(function(key) {
|
||||
Object.keys(json).forEach(function (key) {
|
||||
var filterword = json[key]
|
||||
var phrases = filterword.phrase
|
||||
var arr = filterword.context
|
||||
if (arr.join(',').indexOf(type) !== -1) {
|
||||
mutedfilters.push(phrases)
|
||||
} else if (type == 'mix'){
|
||||
} else if (type == 'mix') {
|
||||
if (arr.indexOf('home') !== -1 || arr.indexOf('public') !== -1) {
|
||||
mutedfilters.push(phrases)
|
||||
}
|
||||
@@ -396,23 +437,23 @@ function filterUpdate(acct_id) {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
Authorization: 'Bearer ' + at,
|
||||
},
|
||||
})
|
||||
.then(function(response) {
|
||||
.then(function (response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
response.text().then(function (text) {
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
.catch(function (error) {
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
.then(function (json) {
|
||||
localStorage.setItem('filter_' + acct_id, JSON.stringify(json))
|
||||
filterUpdateInternal(json, 'home')
|
||||
filterUpdateInternal(json, 'local')
|
||||
@@ -428,13 +469,11 @@ function filterUpdateInternal(json, type) {
|
||||
home = home.concat(wordmute)
|
||||
}
|
||||
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')
|
||||
$('[toot-id=' + id + ']').removeClass('hide')
|
||||
var text = $(elem)
|
||||
.find('.toot')
|
||||
.html()
|
||||
Object.keys(home).forEach(function(key8) {
|
||||
var text = $(elem).find('.toot').html()
|
||||
Object.keys(home).forEach(function (key8) {
|
||||
var word = home[key8]
|
||||
var regExp = new RegExp(word.replace(/[.*+?^=!:${}()|[\]\/\\]/g, '\\$&'), 'g')
|
||||
if ($.strip_tags(text).match(regExp)) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
function listMenu() {
|
||||
$('#left-menu div').removeClass('active')
|
||||
$('#left-menu a').removeClass('active')
|
||||
$('#listMenu').addClass('active')
|
||||
$('.menu-content').addClass('hide')
|
||||
$('#list-box').removeClass('hide')
|
||||
|
||||
@@ -19,7 +19,22 @@ async function mixtl(acct_id, tlid, type, delc, voice) {
|
||||
additional(acct_id, tlid)
|
||||
jQuery('time.timeago').timeago()
|
||||
todc()
|
||||
mixre(acct_id, tlid, 'mix', mute, voice, '')
|
||||
if(mastodonBaseWsStatus[domain] == 'cannotuse') {
|
||||
mixre(acct_id, tlid, 'mix', mute, voice, '')
|
||||
} else if (mastodonBaseWsStatus[domain] == 'undetected' || mastodonBaseWsStatus[domain] == 'connecting') {
|
||||
const mbws = setInterval(function () {
|
||||
if(mastodonBaseWsStatus[domain] == 'cannotuse') {
|
||||
mixre(acct_id, tlid, 'mix', mute, voice, '')
|
||||
clearInterval(mbws)
|
||||
} else if(mastodonBaseWsStatus[domain] == 'available') {
|
||||
mastodonBaseWs[domain].send(JSON.stringify({type: 'subscribe', stream: 'public:local'}))
|
||||
clearInterval(mbws)
|
||||
}
|
||||
}, 1000)
|
||||
} else if(mastodonBaseWsStatus[domain] == 'available') {
|
||||
mastodonBaseWs[domain].send(JSON.stringify({type: 'subscribe', stream: 'public:local'}))
|
||||
}
|
||||
|
||||
$(window).scrollTop(0)
|
||||
lastId = integrated[0].id
|
||||
beforeLastId = integrated[1].id
|
||||
@@ -87,8 +102,8 @@ function mixre(acct_id, tlid, TLtype, mute, voice, mode) {
|
||||
wsLocal[wslid].onerror = function(error) {
|
||||
console.error('WebSocketLocal Error')
|
||||
console.error(error)
|
||||
$('#notice_icon_' + tlid).addClass('red-text')
|
||||
if (mode == 'error') {
|
||||
$('#notice_icon_' + tlid).addClass('red-text')
|
||||
todo('WebSocket Error ' + error)
|
||||
} else {
|
||||
var errorct = localStorage.getItem('wserror_' + tlid) * 1 + 1
|
||||
@@ -100,8 +115,8 @@ function mixre(acct_id, tlid, TLtype, mute, voice, mode) {
|
||||
}
|
||||
wsLocal[wslid].onclose = function() {
|
||||
console.warn('WebSocketLocal Closing:' + tlid)
|
||||
$('#notice_icon_' + tlid).addClass('red-text')
|
||||
if (mode == 'error') {
|
||||
$('#notice_icon_' + tlid).addClass('red-text')
|
||||
todo('WebSocket Closed')
|
||||
} else {
|
||||
var errorct = localStorage.getItem('wserror_' + tlid) * 1 + 1
|
||||
@@ -113,8 +128,8 @@ function mixre(acct_id, tlid, TLtype, mute, voice, mode) {
|
||||
}
|
||||
wsHome[wshid].onerror = function(error) {
|
||||
console.error(['WebSocketHome Error', error])
|
||||
$('#notice_icon_' + tlid).addClass('red-text')
|
||||
if (mode == 'error') {
|
||||
$('#notice_icon_' + tlid).addClass('red-text')
|
||||
todo('WebSocket Error ' + error)
|
||||
} else {
|
||||
var errorct = localStorage.getItem('wserror_' + tlid) * 1 + 1
|
||||
@@ -126,8 +141,8 @@ function mixre(acct_id, tlid, TLtype, mute, voice, mode) {
|
||||
}
|
||||
wsHome[wshid].onclose = function() {
|
||||
console.warn('WebSocketHome Closing:' + tlid)
|
||||
$('#notice_icon_' + tlid).addClass('red-text')
|
||||
if (mode == 'error') {
|
||||
$('#notice_icon_' + tlid).addClass('red-text')
|
||||
todo('WebSocket Closed')
|
||||
} else {
|
||||
var errorct = localStorage.getItem('wserror_' + tlid) * 1 + 1
|
||||
@@ -183,7 +198,7 @@ async function mixmore(tlid, type) {
|
||||
.attr('unique-id')
|
||||
let startLocal = 'https://' + domain + '/api/v1/timelines/public?local=true&max_id=' + sid
|
||||
let local = await getTL(startLocal, acct_id)
|
||||
let startHome = 'https://' + domain + '/api/v1/timelines/home&max_id=' + sid
|
||||
let startHome = 'https://' + domain + '/api/v1/timelines/home?max_id=' + sid
|
||||
let home = await getTL(startHome, acct_id)
|
||||
let concated = _.concat(local, home)
|
||||
let uniqued = _.uniqBy(concated, 'id')
|
||||
|
||||
@@ -69,17 +69,20 @@ function notfColumn(acct_id, tlid, sys) {
|
||||
var n = new Notification('TheDesk:' + domain, options)
|
||||
}
|
||||
var mute = getFilterTypeByAcct(acct_id, 'notif')
|
||||
if (obj.type != 'follow') {
|
||||
//Pleromaにはmoveというtypeがあるらしい。何が互換APIじゃ
|
||||
if (obj.type != 'follow' && obj.type != 'move' && obj.type != 'follow_request') {
|
||||
if (misskey) {
|
||||
templete = templete + misskeyParse([obj], 'notf', acct_id, tlid, -1, mute)
|
||||
} else {
|
||||
templete = templete + parse([obj], 'notf', acct_id, tlid, -1, mute)
|
||||
}
|
||||
} else if (obj.type == 'follow_request') {
|
||||
templete = templete + userparse([obj.account], 'request', acct_id, tlid, -1)
|
||||
} else {
|
||||
if (misskey) {
|
||||
templete = templete + misskeyUserparse([obj], 'notf', acct_id, tlid, -1, mute)
|
||||
} else {
|
||||
templete = templete + userparse([obj.account], 'notf', acct_id, tlid, -1)
|
||||
templete = templete + userparse([obj.account], obj.type, acct_id, tlid, -1)
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -113,7 +116,7 @@ function notfColumn(acct_id, tlid, sys) {
|
||||
var start = 'wss://' + domain + '/?i=' + at
|
||||
}
|
||||
}
|
||||
function notfCommon(acct_id, tlid, sys) {
|
||||
function notfCommon(acct_id, tlid, sys, stream) {
|
||||
todo('Notifications Loading...')
|
||||
var native = localStorage.getItem('nativenotf')
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
@@ -144,6 +147,10 @@ function notfCommon(acct_id, tlid, sys) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if(stream == 'only') {
|
||||
notfWS(misskey, acct_id, tlid, domain, at)
|
||||
return false
|
||||
}
|
||||
fetch(start, i)
|
||||
.then(function(response) {
|
||||
console.log('header to get param:' + response.headers.get('link'))
|
||||
@@ -179,7 +186,8 @@ function notfCommon(acct_id, tlid, sys) {
|
||||
var n = new Notification('TheDesk:' + domain, options)
|
||||
}
|
||||
var mute = getFilterTypeByAcct(acct_id, 'notif')
|
||||
if (obj.type != 'follow') {
|
||||
//Pleromaにはmoveというtypeがあるらしい。何が互換APIじゃ
|
||||
if (obj.type != 'follow' && obj.type != 'move') {
|
||||
if (misskey) {
|
||||
templete = templete + misskeyParse([obj], 'notf', acct_id, 'notf', -1, mute)
|
||||
} else {
|
||||
@@ -189,7 +197,7 @@ function notfCommon(acct_id, tlid, sys) {
|
||||
if (misskey) {
|
||||
templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute)
|
||||
} else {
|
||||
templete = templete + userparse([obj.account], 'notf', acct_id, 'notf', -1)
|
||||
templete = templete + userparse([obj.account], obj.type, acct_id, 'notf', -1)
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -199,10 +207,11 @@ function notfCommon(acct_id, tlid, sys) {
|
||||
}
|
||||
$('#notf-box').addClass('fetched')
|
||||
todc()
|
||||
notfWS(misskey, acct_id, tlid, domain, at)
|
||||
if(stream != 'no') notfWS(misskey, acct_id, tlid, domain, at)
|
||||
})
|
||||
}
|
||||
function notfWS(misskey, acct_id, tlid, domain, at) {
|
||||
if(mastodonBaseWsStatus[domain] == 'available') return false
|
||||
if (!misskey) {
|
||||
if (localStorage.getItem('streaming_' + acct_id)) {
|
||||
var wss = localStorage.getItem('streaming_' + acct_id)
|
||||
@@ -235,10 +244,12 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
|
||||
localStorage.setItem('lastnotf_' + acct_id, obj.id)
|
||||
if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) {
|
||||
//markers show中はダメ
|
||||
if (obj.type != 'follow') {
|
||||
if (obj.type != 'follow' && obj.type != 'follow_request') {
|
||||
templete = parse([obj], 'notf', acct_id, 'notf', popup)
|
||||
} else if (obj.type == 'follow_request') {
|
||||
templete = userparse([obj.account], 'request', acct_id, 'notf', -1)
|
||||
} else {
|
||||
templete = userparse([obj], 'notf', acct_id, 'notf', popup)
|
||||
templete = userparse([obj], obj.type, acct_id, 'notf', popup)
|
||||
}
|
||||
if (!$('div[data-notfIndv=' + acct_id + '_' + obj.id + ']').length) {
|
||||
$('div[data-notf=' + acct_id + ']').prepend(templete)
|
||||
@@ -252,7 +263,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
|
||||
}
|
||||
}
|
||||
websocketNotf[acct_id].onerror = function(error) {
|
||||
console.error('WebSocket Error ' + error)
|
||||
console.error('WebSocket Error ', error)
|
||||
errorct++
|
||||
console.log(errorct)
|
||||
if (errorct < 3) {
|
||||
@@ -260,7 +271,7 @@ function notfWS(misskey, acct_id, tlid, domain, at) {
|
||||
}
|
||||
}
|
||||
websocketNotf[acct_id].onclose = function(error) {
|
||||
console.error('WebSocket Close ' + error)
|
||||
console.error('WebSocket Close ', error)
|
||||
errorct++
|
||||
console.log(errorct)
|
||||
if (errorct < 3) {
|
||||
@@ -338,7 +349,7 @@ function notfmore(tlid) {
|
||||
if (misskey) {
|
||||
templete = templete + misskeyUserparse([obj], 'notf', acct_id, 'notf', -1, mute)
|
||||
} else {
|
||||
templete = templete + userparse([obj.account], 'notf', acct_id, 'notf', -1)
|
||||
templete = templete + userparse([obj.account], obj.type, acct_id, 'notf', -1)
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -402,6 +413,11 @@ function notfCanceler(acct) {
|
||||
localStorage.removeItem('notf-follow_' + acct)
|
||||
$('.notf-follow_' + acct).addClass('hide')
|
||||
$('.notf-icon_' + acct).removeClass('red-text')
|
||||
var id = $('#announce_' + acct + ' .announcement').first().attr('data-id')
|
||||
$('.notf-announ_' + acct + '_ct').text("")
|
||||
if(id) {
|
||||
localStorage.setItem('announ_' + acct, id)
|
||||
}
|
||||
}
|
||||
function allNotfRead() {
|
||||
var multi = localStorage.getItem('multi')
|
||||
|
||||
@@ -25,6 +25,7 @@ function pollToggle() {
|
||||
}
|
||||
$('#post-box').css('width', width + 'px')
|
||||
$('#emoji').addClass('hide')
|
||||
$('#draft').addClass('hide')
|
||||
$('#poll').addClass('hide')
|
||||
$('#pollsta').text(lang.lang_no)
|
||||
}
|
||||
@@ -49,30 +50,25 @@ function pollCalc() {
|
||||
return days * 86400 + hrs * 3600 + mins * 60
|
||||
}
|
||||
//Vote
|
||||
function voteSelMastodon(acct_id, id, to, mul) {
|
||||
if ($('.vote_' + acct_id + '_' + id + '_' + to).hasClass('sel')) {
|
||||
$('.vote_' + acct_id + '_' + id + '_' + to).css('background-color', 'transparent')
|
||||
$('.vote_' + acct_id + '_' + id + '_' + to).removeClass('sel')
|
||||
function voteSelMastodon(acct_id, id, to, mul, elem) {
|
||||
if ($(elem).hasClass('sel')) {
|
||||
$(elem).css('background-color', 'transparent')
|
||||
$(elem).removeClass('sel')
|
||||
} else {
|
||||
if (!mul) {
|
||||
$('.vote_' + acct_id + '_' + id + ' div').each(function(i, elem) {
|
||||
if (i == to) {
|
||||
$(this).css('background-color', 'var(--emphasized)')
|
||||
$(this).addClass('sel')
|
||||
} else {
|
||||
$(this).css('background-color', 'transparent')
|
||||
$(this).removeClass('sel')
|
||||
}
|
||||
})
|
||||
$('.vote_' + acct_id + '_' + id + ' div').css('background-color', 'transparent')
|
||||
$('.vote_' + acct_id + '_' + id + ' div').removeClass('sel')
|
||||
$(elem).css('background-color', 'var(--emphasized)')
|
||||
$(elem).addClass('sel')
|
||||
} else {
|
||||
$('.vote_' + acct_id + '_' + id + '_' + to).css('background-color', 'var(--emphasized)')
|
||||
$('.vote_' + acct_id + '_' + id + '_' + to).addClass('sel')
|
||||
$(elem).css('background-color', 'var(--emphasized)')
|
||||
$(elem).addClass('sel')
|
||||
}
|
||||
}
|
||||
}
|
||||
function voteMastodon(acct_id, id) {
|
||||
function voteMastodon(acct_id, id, target) {
|
||||
var choice = []
|
||||
$('.vote_' + acct_id + '_' + id + ' div').each(function(i, elem) {
|
||||
$(`#vote${target} div`).each(function(i, elem) {
|
||||
if ($(this).hasClass('sel')) {
|
||||
choice.push(i + '')
|
||||
}
|
||||
@@ -90,13 +86,13 @@ function voteMastodon(acct_id, id) {
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(JSON.stringify({ choices: choice }))
|
||||
httpreq.onreadystatechange = function() {
|
||||
voteMastodonrefresh(acct_id, id)
|
||||
voteMastodonrefresh(acct_id, id, target)
|
||||
}
|
||||
}
|
||||
function showResult(acct_id, id) {
|
||||
$('.vote_' + acct_id + '_' + id + '_result').toggleClass('hide')
|
||||
}
|
||||
function voteMastodonrefresh(acct_id, id) {
|
||||
function voteMastodonrefresh(acct_id, id, target) {
|
||||
var datetype = localStorage.getItem('datetype')
|
||||
if (!datetype) {
|
||||
datetype = 'absolute'
|
||||
@@ -120,8 +116,8 @@ function voteMastodonrefresh(acct_id, id) {
|
||||
if (!json) {
|
||||
return false
|
||||
}
|
||||
var poll = pollParse(json, acct_id)
|
||||
$('.vote_' + acct_id + '_' + json.id).html(poll)
|
||||
var poll = pollParse(json, acct_id, json.emojis)
|
||||
$(`#vote${target}`).html(poll)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
148
app/js/tl/src.js
@@ -3,7 +3,7 @@
|
||||
function searchMenu() {
|
||||
$('#src-contents').html('')
|
||||
trend()
|
||||
$('#left-menu div').removeClass('active')
|
||||
$('#left-menu a').removeClass('active')
|
||||
$('#searchMenu').addClass('active')
|
||||
$('.menu-content').addClass('hide')
|
||||
$('#src-box').removeClass('hide')
|
||||
@@ -36,7 +36,7 @@ function src(mode, offset) {
|
||||
var user = $('#his-data').attr('user-id')
|
||||
}
|
||||
if (!mode) {
|
||||
var start = 'https://' + domain + '/api/v2/search?q=' + q + add
|
||||
var start = 'https://' + domain + '/api/v2/search?resolve=true&q=' + encodeURIComponent(q) + add
|
||||
} else {
|
||||
var start = 'https://' + domain + '/api/v1/search?q=' + q
|
||||
}
|
||||
@@ -116,8 +116,11 @@ function tsAdd(q) {
|
||||
parseColumn('add')
|
||||
}
|
||||
function tootsearch(tlid, q) {
|
||||
if(!q || q=='undefined') {
|
||||
return false
|
||||
}
|
||||
var start = 'https://tootsearch.chotto.moe/api/v1/search?from=0&sort=created_at%3Adesc&q=' + q
|
||||
console.log('Toot srrach at ' + start)
|
||||
console.log('Toot search at ' + start)
|
||||
$('#notice_' + tlid).text('tootsearch(' + q + ')')
|
||||
$('#notice_icon_' + tlid).text('search')
|
||||
fetch(start, {
|
||||
@@ -216,6 +219,9 @@ function moreTs(tlid, q) {
|
||||
function graphDraw(tag, acct_id) {
|
||||
var tags = ''
|
||||
var his = tag.history
|
||||
return graphDrawCore(his, tag, acct_id)
|
||||
}
|
||||
function graphDrawCore(his, tag, acct_id) {
|
||||
var max = Math.max.apply(null, [
|
||||
his[0].uses,
|
||||
his[1].uses,
|
||||
@@ -232,36 +238,34 @@ function graphDraw(tag, acct_id) {
|
||||
var two = 50 - (his[2].uses / max) * 50
|
||||
var one = 50 - (his[1].uses / max) * 50
|
||||
var zero = 50 - (his[0].uses / max) * 50
|
||||
if (max === 0) {
|
||||
tags =
|
||||
`<br><br><svg version="1.1" viewbox="0 0 60 50" width="60" height="50"></svg>
|
||||
<span style="font-size:200%">${his[0].uses}</span>
|
||||
toot(s)
|
||||
<a onclick=\"tl('tag','${escapeHTML(tag.name)}','${acct_id}','add')" class="pointer">
|
||||
#${escapeHTML(tag.name)}
|
||||
</a> ` +
|
||||
his[0].accounts +
|
||||
lang.lang_src_people
|
||||
} else {
|
||||
tags =
|
||||
`<br><br>
|
||||
<svg version="1.1" viewbox="0 0 60 50" width="60" height="50">
|
||||
<g>
|
||||
<path d="M0,${six} L10,${five} 20,${four} 30,${three} 40,${two} 50,${one} 60,${zero}"
|
||||
style="stroke: #0f8c0c;fill: rgba(13,113,19,.25); stroke-width: 1;">
|
||||
</path>
|
||||
</g>
|
||||
</svg>
|
||||
<span style="font-size:200%">${his[0].uses}</span>
|
||||
toot
|
||||
<a onclick="tl('tag','${escapeHTML(tag.name)}','${acct_id}','add')" class="pointer">
|
||||
#${escapeHTML(tag.name)}
|
||||
</a> ` +
|
||||
his[0].accounts +
|
||||
lang.lang_src_people
|
||||
}
|
||||
|
||||
return tags
|
||||
return `<div class="tagComp">
|
||||
<div class="tagCompSvg">
|
||||
<svg version="1.1" viewbox="0 0 60 50" width="60" height="50">
|
||||
<g>
|
||||
<path d="M0,${six} L10,${five} 20,${four} 30,${three} 40,${two} 50,${one} 60,${zero} 61,61 0,61"
|
||||
style="stroke: #0f8c0c;fill: rgba(13,113,19,.25); stroke-width: 1;">
|
||||
</path>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="tagCompToot">
|
||||
<span style="font-size:200%">${his[0].uses}</span>
|
||||
</div>
|
||||
<div class="tagCompToots">
|
||||
toot
|
||||
</div>
|
||||
<div class="tagCompTag">
|
||||
<a onclick="tl('tag','${escapeHTML(
|
||||
tag.name
|
||||
)}','${acct_id}','add')" class="pointer" title="${escapeHTML(tag.name)}">
|
||||
#${escapeHTML(tag.name)}
|
||||
</a>
|
||||
</div>
|
||||
<div class="tagCompUser">
|
||||
${his[0].accounts}
|
||||
${lang.lang_src_people}
|
||||
</div>
|
||||
</div>`
|
||||
}
|
||||
/*
|
||||
<svg version="1.1" viewbox="0 0 50 300" width="100%" height="50">
|
||||
@@ -303,40 +307,54 @@ function trend() {
|
||||
Object.keys(json).forEach(function(keye) {
|
||||
var tag = json[keye]
|
||||
var his = tag.history
|
||||
var max = Math.max.apply(null, [
|
||||
his[0].uses,
|
||||
his[1].uses,
|
||||
his[2].uses,
|
||||
his[3].uses,
|
||||
his[4].uses,
|
||||
his[5].uses,
|
||||
his[6].uses
|
||||
])
|
||||
var six = 50 - (his[6].uses / max) * 50
|
||||
var five = 50 - (his[5].uses / max) * 50
|
||||
var four = 50 - (his[4].uses / max) * 50
|
||||
var three = 50 - (his[3].uses / max) * 50
|
||||
var two = 50 - (his[2].uses / max) * 50
|
||||
var one = 50 - (his[1].uses / max) * 50
|
||||
var zero = 50 - (his[0].uses / max) * 50
|
||||
tags =
|
||||
`<svg version="1.1" viewbox="0 0 60 50" width="60" height="50">
|
||||
<g>
|
||||
<path d="M0,${six} L10,${five} 20,${four} 30,${three} 40,${two} 50,${one} 60,${zero}"
|
||||
style="stroke: #0f8c0c;fill: rgba(13,113,19,.25); stroke-width: 1;">
|
||||
</path>
|
||||
</g>
|
||||
</svg>
|
||||
<span style="font-size:200%">${his[0].uses}</span>
|
||||
toot
|
||||
<a onclick="tl('tag','${escapeHTML(tag.name)}','${acct_id}','add')" class="pointer">
|
||||
#${escapeHTML(tag.name)}
|
||||
</a> ` +
|
||||
his[0].accounts +
|
||||
lang.lang_src_people +
|
||||
'<br><br>'
|
||||
tags = graphDrawCore(his, tag, acct_id)
|
||||
|
||||
$('#src-contents').append(tags)
|
||||
})
|
||||
})
|
||||
}
|
||||
function srcBox(mode) {
|
||||
var selectedText = window.getSelection().toString()
|
||||
if (mode == 'open') {
|
||||
$('#pageSrc').removeClass('hide')
|
||||
} else if (mode == 'close') {
|
||||
if(!selectedText) {
|
||||
$('#pageSrc').addClass('hide')
|
||||
$('#pageSrc').removeClass('keep')
|
||||
}
|
||||
} else {
|
||||
$('#pageSrc').toggleClass('hide')
|
||||
}
|
||||
if(!$('#pageSrc').hasClass('keep')) {
|
||||
$('#pageSrcInput').val(selectedText)
|
||||
}
|
||||
}
|
||||
$('#pageSrcInput').click(function() {
|
||||
$('#pageSrc').addClass('keep')
|
||||
})
|
||||
$('#pageSrcInput').on('input', function(evt) {
|
||||
if(!$('#pageSrcInput').val()) {
|
||||
$('#pageSrc').removeClass('keep')
|
||||
}
|
||||
})
|
||||
document.addEventListener('selectionchange', function() {
|
||||
var selectedText = window.getSelection().toString()
|
||||
if (selectedText && !$('input').is(':focus') && !$('textarea').is(':focus')) {
|
||||
srcBox('open')
|
||||
}
|
||||
})
|
||||
function doSrc(type) {
|
||||
$('#pageSrc').addClass('hide')
|
||||
$('#pageSrc').removeClass('keep')
|
||||
var q = $('#pageSrcInput').val()
|
||||
if(type == 'web') {
|
||||
var start = localStorage.getItem('srcUrl')
|
||||
if(!start) {
|
||||
start = 'https://google.com/search?q={q}'
|
||||
}
|
||||
start = start.replace(/{q}/, q)
|
||||
postMessage(["openUrl", start], "*")
|
||||
} else if(type == 'ts') {
|
||||
tsAdd(q)
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,8 @@ if (location.search) {
|
||||
}
|
||||
//よく使うタグ
|
||||
function tagShow(tag) {
|
||||
$('[data-tag=' + decodeURI(tag).toLowerCase() + ']').toggleClass('hide')
|
||||
console.log('[data-regTag=' + decodeURI(tag).toLowerCase() + ']')
|
||||
$('[data-regTag=' + decodeURI(tag).toLowerCase() + ']').toggleClass('hide')
|
||||
}
|
||||
//タグ追加
|
||||
function tagPin(tag) {
|
||||
@@ -69,7 +70,7 @@ function favTag() {
|
||||
tags =
|
||||
tags +
|
||||
`<a onclick="tagShow('${tag}')" class="pointer">#${tag}</a>
|
||||
${nowon}<span class="hide" data-tag="${tag}">
|
||||
${nowon}<span class="hide" data-tag="${tag}" data-regTag="${tag.toLowerCase()}">
|
||||
<a onclick=\"tagTL('tag','${tag}',false,'add')" class="pointer" title="${lang.lang_parse_tagTL.replace('{{tag}}', '#' + tag)}">
|
||||
TL
|
||||
</a>
|
||||
@@ -124,7 +125,7 @@ function trendTag() {
|
||||
tags =
|
||||
tags +
|
||||
`<a onclick="tagShow('${tag}')" class="pointer">#${tag}</a>
|
||||
<span class="hide" data-tag="${tag}">
|
||||
<span class="hide" data-tag="${tag}" data-regTag="${tag.toLowerCase()}">
|
||||
<a onclick=\"tagTL('tag','${tag}',false,'add')" class="pointer" title="#${tag}のタイムライン">TL</a>
|
||||
<a onclick="show();brInsert('#${tag}')" class="pointer" title="#${tag}でトゥート">
|
||||
Toot
|
||||
@@ -197,3 +198,28 @@ function tagFeature(name, acct_id) {
|
||||
M.toast({ html: 'Complete: ' + escapeHTML(name), displayLength: 3000 })
|
||||
})
|
||||
}
|
||||
//タグのフィルタ
|
||||
function addTag(id) {
|
||||
var columns = JSON.parse(localStorage.getItem('column'))
|
||||
var column = columns[id]
|
||||
if(!column.data.name) {
|
||||
var name = column.data
|
||||
} else {
|
||||
var name = column.data.name
|
||||
}
|
||||
var col = localStorage.getItem('column')
|
||||
var o = JSON.parse(col)
|
||||
var obj = o[id]
|
||||
obj.data = {
|
||||
'name': name,
|
||||
'all': $(`#all_tm-${id}`).val(),
|
||||
'any': $(`#any_tm-${id}`).val(),
|
||||
'none': $(`#none_tm-${id}`).val(),
|
||||
}
|
||||
o[id] = obj
|
||||
var json = JSON.stringify(o)
|
||||
console.log(json)
|
||||
localStorage.setItem('column',json)
|
||||
columnReload(id, 'tag')
|
||||
}
|
||||
|
||||
|
||||
906
app/js/tl/tl.js
@@ -37,8 +37,6 @@ function imgv(id, key, acct_id) {
|
||||
}
|
||||
//イメージビューワーの送り
|
||||
function imgCont(type) {
|
||||
$('#imgprog').text(0)
|
||||
$('#imgsec').text(0)
|
||||
var key = $('#imagemodal').attr('data-key')
|
||||
var id = $('#imagemodal').attr('data-id')
|
||||
if (type == 'next') {
|
||||
@@ -55,10 +53,12 @@ function imgCont(type) {
|
||||
$('#imagemodal').attr('data-image', murl)
|
||||
//表示はリモートを使うか(どちらにしろコピーはオリジナル)
|
||||
var remote_img = localStorage.getItem('remote_img')
|
||||
if (remote_img == 'yes') {
|
||||
if (remote_img == 'yes' && ourl != 'null') {
|
||||
murl = ourl
|
||||
}
|
||||
if (murl) {
|
||||
$('#imgprog').text(0)
|
||||
$('#imgsec').text(0)
|
||||
$('#imgmodal').attr('src', '../../img/loading.svg')
|
||||
var type = $('#' + id + '-image-' + key).attr('data-type')
|
||||
$(document).ready(function() {
|
||||
@@ -95,12 +95,20 @@ function imageXhr(id, key, murl) {
|
||||
'loadend',
|
||||
function(event) {
|
||||
var total = event.total
|
||||
$('#imgbyte').text(Math.floor(total / 1024))
|
||||
var now = event.loaded
|
||||
var per = (now / total) * 100
|
||||
$('#imgprog').text(Math.floor(per))
|
||||
},
|
||||
false
|
||||
)
|
||||
xhr.addEventListener(
|
||||
'error',
|
||||
function(event) {
|
||||
$('#imgmodal').attr('src', murl)
|
||||
},
|
||||
false
|
||||
)
|
||||
xhr.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
r = new FileReader()
|
||||
@@ -111,19 +119,22 @@ function imageXhr(id, key, murl) {
|
||||
var width
|
||||
element.onload = function() {
|
||||
var width = element.naturalWidth
|
||||
if(width < 650) {
|
||||
width = 650
|
||||
}
|
||||
var height = element.naturalHeight
|
||||
var windowH = $(window).height()
|
||||
var windowW = $(window).width()
|
||||
$('#imagemodal').css('bottom', '0')
|
||||
$('#imagemodal img').css('width', 'auto')
|
||||
if (height < windowH) {
|
||||
$('#imagemodal').css('height', height + 60 + 'px')
|
||||
$('#imagemodal img').css('height', '100%')
|
||||
$('#imagemodal').css('height', height + 100 + 'px')
|
||||
$('#imagemodal img').css('height', height + 'px')
|
||||
if (width > windowW * 0.8) {
|
||||
$('#imagemodal').css('width', '80vw')
|
||||
$('#imagemodal img').css('width', '100%')
|
||||
$('#imagemodal img').css('width', 'auto')
|
||||
var heightS = ((windowW * 0.8) / width) * height
|
||||
$('#imagemodal').css('height', heightS + 60 + 'px')
|
||||
$('#imagemodal').css('height', heightS + 100 + 'px')
|
||||
} else {
|
||||
$('#imagemodal').css('width', width + 'px')
|
||||
}
|
||||
@@ -171,7 +182,7 @@ function zoom(z) {
|
||||
$('#imagewrap img').css('height', hgt + 'px')
|
||||
}
|
||||
//スマホ対応ドラッグ移動システム
|
||||
;(function() {
|
||||
(function() {
|
||||
$.fn.dragScroll = function() {
|
||||
var target = this
|
||||
$(this)
|
||||
@@ -265,9 +276,8 @@ function dlImg() {
|
||||
if (remote_img == 'yes') {
|
||||
murl = ourl
|
||||
}
|
||||
if (localStorage.getItem('savefolder')) {
|
||||
var save = localStorage.getItem('savefolder')
|
||||
} else {
|
||||
var save = localStorage.getItem('savefolder')
|
||||
if (!save || save == 'null') {
|
||||
var save = ''
|
||||
}
|
||||
postMessage(['generalDL', [murl, save, false]], '*')
|
||||
|
||||
@@ -8,13 +8,13 @@ var websocketNotf = []
|
||||
|
||||
//カラム追加ボックストグル
|
||||
function addColumnMenu() {
|
||||
$('#left-menu div').removeClass('active')
|
||||
$('#left-menu a').removeClass('active')
|
||||
$('#addColumnMenu').addClass('active')
|
||||
$('.menu-content').addClass('hide')
|
||||
$('#add-box').removeClass('hide')
|
||||
addselCk()
|
||||
}
|
||||
$('.type').click(function() {
|
||||
$('.type').click(function () {
|
||||
$('.type').removeClass('active')
|
||||
$(this).addClass('active')
|
||||
$('#type-sel').val($(this).attr('data-type'))
|
||||
@@ -42,18 +42,16 @@ function parseColumn(target, dontclose) {
|
||||
var multi = localStorage.getItem('multi')
|
||||
if (multi) {
|
||||
var obj = JSON.parse(multi)
|
||||
|
||||
var templete
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
Object.keys(obj).forEach(function (key) {
|
||||
var acct = obj[key]
|
||||
|
||||
localStorage.setItem('name_' + key, acct.name)
|
||||
localStorage.setItem('user_' + key, acct.user)
|
||||
localStorage.setItem('user-id_' + key, acct.id)
|
||||
localStorage.setItem('prof_' + key, acct.prof)
|
||||
localStorage.setItem('domain_' + key, acct.domain)
|
||||
localStorage.setItem('acct_' + key + '_at', acct.at)
|
||||
notf(key, 0)
|
||||
if(!target) mastodonBaseStreaming(key)
|
||||
ckdb(key)
|
||||
//フィルターデータ読もう
|
||||
getFilter(key)
|
||||
@@ -76,7 +74,11 @@ function parseColumn(target, dontclose) {
|
||||
var obj = [
|
||||
{
|
||||
domain: 0,
|
||||
type: 'local'
|
||||
type: 'home',
|
||||
},
|
||||
{
|
||||
domain: 0,
|
||||
type: 'local',
|
||||
}
|
||||
]
|
||||
var json = JSON.stringify(obj)
|
||||
@@ -122,10 +124,7 @@ function parseColumn(target, dontclose) {
|
||||
var if_notf = ''
|
||||
}
|
||||
if (localStorage.getItem('notification_' + acct.domain)) {
|
||||
var unique_notf = lang.lang_layout_thisacct.replace(
|
||||
'{{notf}}',
|
||||
localStorage.getItem('notification_' + acct.domain)
|
||||
)
|
||||
var unique_notf = lang.lang_layout_thisacct.replace('{{notf}}', localStorage.getItem('notification_' + acct.domain))
|
||||
} else {
|
||||
if (lang.language == 'ja') {
|
||||
var notflocale = '通知'
|
||||
@@ -150,7 +149,6 @@ function parseColumn(target, dontclose) {
|
||||
icnsert = ' style="color: #' + ichex + '" '
|
||||
}
|
||||
}
|
||||
console.log(acct)
|
||||
if (acctlist[acct.domain]) {
|
||||
if (acctlist[acct.domain].background != 'def') {
|
||||
insert = insert + ' border-bottom:medium solid #' + acctlist[acct.domain].background + ';'
|
||||
@@ -161,15 +159,21 @@ function parseColumn(target, dontclose) {
|
||||
} else {
|
||||
localStorage.removeItem('hasNotfC_' + acct.domain)
|
||||
}
|
||||
var css = ''
|
||||
var width = localStorage.getItem('width')
|
||||
if (width) {
|
||||
var css = ' min-width:' + width + 'px;'
|
||||
css = ' min-width:' + width + 'px;'
|
||||
}
|
||||
var maxWidth = localStorage.getItem('max-width')
|
||||
if (maxWidth) {
|
||||
css = css +'max-width:' + maxWidth + 'px;'
|
||||
}
|
||||
var margin = localStorage.getItem('margin')
|
||||
if (margin) {
|
||||
css = css +'margin-right:' + margin + 'px;'
|
||||
}
|
||||
if (acct.width) {
|
||||
var css = ' min-width:' + acct.width + 'px;max-width:' + acct.width + 'px;'
|
||||
}
|
||||
if (!css) {
|
||||
var css = ''
|
||||
css = css + ' min-width:' + acct.width + 'px !important;max-width:' + acct.width + 'px !important;'
|
||||
}
|
||||
if (acct.type == 'webview') {
|
||||
if (localStorage.getItem('fixwidth')) {
|
||||
@@ -191,17 +195,31 @@ function parseColumn(target, dontclose) {
|
||||
} else {
|
||||
var animecss = ''
|
||||
}
|
||||
unstreamingTL(
|
||||
acct.type,
|
||||
key,
|
||||
basekey,
|
||||
insert,
|
||||
icnsert,
|
||||
acct.left_fold,
|
||||
css,
|
||||
animecss,
|
||||
acct.data
|
||||
)
|
||||
unstreamingTL(acct.type, key, basekey, insert, icnsert, acct.left_fold, css, animecss, acct.data)
|
||||
} else if (acct.type == 'bookmark') {
|
||||
if (!acct.left_fold) {
|
||||
basekey = key
|
||||
}
|
||||
|
||||
var anime = localStorage.getItem('animation')
|
||||
if (anime == 'yes' || !anime) {
|
||||
var animecss = 'box-anime'
|
||||
} else {
|
||||
var animecss = ''
|
||||
}
|
||||
unstreamingTL(acct.type, key, basekey, insert, icnsert, acct.left_fold, css, animecss, acct.domain)
|
||||
} else if (acct.type == 'utl') {
|
||||
if (!acct.left_fold) {
|
||||
basekey = key
|
||||
}
|
||||
|
||||
var anime = localStorage.getItem('animation')
|
||||
if (anime == 'yes' || !anime) {
|
||||
var animecss = 'box-anime'
|
||||
} else {
|
||||
var animecss = ''
|
||||
}
|
||||
unstreamingTL(acct.type, key, basekey, insert, icnsert, acct.left_fold, css, animecss, { acct: acct.domain, data: acct.data })
|
||||
} else {
|
||||
var anime = localStorage.getItem('animation')
|
||||
if (anime == 'yes' || !anime) {
|
||||
@@ -209,66 +227,97 @@ function parseColumn(target, dontclose) {
|
||||
} else {
|
||||
var animecss = ''
|
||||
}
|
||||
var unread =
|
||||
`<a id="unread_${key}" onclick="showUnread('${key}','${acct.type}','${acct.domain}')"
|
||||
class="setting nex" title="${lang.lang_layout_unread}">
|
||||
<i class="material-icons waves-effect nex">more</i>
|
||||
var unread = `<a id="unread_${key}" onclick="showUnread('${key}','${acct.type}','${acct.domain}')"
|
||||
class="setting nex waves-effect" title="${lang.lang_layout_unread}">
|
||||
<i class="material-icons waves-effect nex">more</i><br />${lang.lang_layout_unread}
|
||||
</a>`
|
||||
var notfDomain = acct.domain
|
||||
var notfKey = key
|
||||
var if_tag = ''
|
||||
var if_tag_btn = ''
|
||||
if (acct.type == 'notf') {
|
||||
var exclude =
|
||||
lang.lang_excluded +
|
||||
`:<br>
|
||||
`<div style="border: 1px solid; padding: 5px; margin-top: 5px; margin-bottom: 5px;">${lang.lang_layout_excluded}:<br>
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="exc-reply-${key}" ${excludeCk(key, 'mention')} />
|
||||
<span>
|
||||
<i class="fas fa-share exc-icons"></i>
|
||||
${lang.lang_layout_mention}
|
||||
</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="exc-fav-${key}" ${excludeCk(key, 'favourite')} />
|
||||
<span>
|
||||
<i class="fas fa-star exc-icons"></i>
|
||||
${lang.lang_layout_fav}
|
||||
</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="exc-bt-${key}" ${excludeCk(key, 'reblog')} />
|
||||
<span>
|
||||
<i class="fas fa-retweet exc-icons"></i>
|
||||
${lang.lang_layout_bt}
|
||||
</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="exc-follow-${key}" ${excludeCk(key, 'follow')} />
|
||||
<span>
|
||||
<i class="fas fa-users exc-icons"></i>
|
||||
${lang.lang_status_follow}
|
||||
</span>
|
||||
</label>
|
||||
<label>
|
||||
<input type="checkbox" class="filled-in" id="exc-poll-${key}" ${excludeCk(key, 'poll')} />
|
||||
<span>
|
||||
<i class="fas fa-tasks exc-icons"></i>
|
||||
${lang.lang_layout_poll}
|
||||
</span>
|
||||
</label>
|
||||
<button class="btn waves-effect" style="width:60px; padding:0;" onclick="exclude('${key}')">Filter</button>`
|
||||
</label> <br />
|
||||
<button class="btn btn-flat waves-effect notf-exclude-btn waves-light" style="width:calc(50% - 11px); padding:0;" onclick="exclude('${key}')">Filter</button>`
|
||||
if (checkNotfFilter(key)) {
|
||||
exclude =
|
||||
exclude +
|
||||
`<button class="btn red waves-effect" style="width:60px; padding:0;" onclick="resetNotfFilter('${key}')">
|
||||
`<button class="btn btn-flat red-text waves-effect notf-exclude-btn waves-light" style="width:calc(50% - 11px); padding:0;" onclick="resetNotfFilter('${key}')">
|
||||
Clear all
|
||||
</button>`
|
||||
}
|
||||
exclude = exclude + '<br>'
|
||||
exclude = exclude + '</div>'
|
||||
notfDomain = 'dummy'
|
||||
notfKey = 'dummy'
|
||||
} else if (acct.type == 'home') {
|
||||
var exclude =
|
||||
`<a onclick="ebtToggle('${key}')" class="setting nex">
|
||||
<i class="fas fa-retweet waves-effect nex" title="${lang.lang_layout_excludingbt}" style="font-size:24px"></i>
|
||||
<span id="sta-bt-${key}">Off</span>
|
||||
</a>
|
||||
var exclude = `<a onclick="ebtToggle('${key}')" class="setting nex waves-effect">
|
||||
<i class="fas fa-retweet nex" title="${lang.lang_layout_excludingbt}" style="font-size: 24px"></i>
|
||||
<span id="sta-bt-${key}">Off</span><br />
|
||||
${lang.lang_layout_excludingbt}
|
||||
<br>`
|
||||
</a>`
|
||||
} else if (acct.type == 'tag') {
|
||||
if (acct.data.name) {
|
||||
var name = acct.data.name
|
||||
var all = acct.data.all
|
||||
var any = acct.data.any
|
||||
var none = acct.data.none
|
||||
} else {
|
||||
var name = acct.data
|
||||
var all = ''
|
||||
var any = ''
|
||||
var none = ''
|
||||
}
|
||||
if_tag = `<div class="column-hide notf-indv-box" id="tag-box_${key}" style="padding:5px;">
|
||||
Base: ${name}<br>
|
||||
<div id="tagManager-${key}">
|
||||
all: <input type="text" id="all_tm-${key}"" value="${all}">
|
||||
any: <input type="text" id="any_tm-${key}" value="${any}">
|
||||
none: <input type="text" id="none_tm-${key}"" value="${none}">
|
||||
</div>
|
||||
<button onclick="addTag('${key}')" class="btn waves-effect" style="width: 100%">Refresh</button>
|
||||
</div>`
|
||||
if_tag_btn = `<a onclick="setToggleTag('${key}')" class="setting nex"
|
||||
title="${lang.lang_layout_tagManager}" style="width:30px">
|
||||
<i class="material-icons waves-effect nex">note_add</i>
|
||||
</a>`
|
||||
unread = ''
|
||||
var exclude = ''
|
||||
var if_notf = 'hide'
|
||||
} else {
|
||||
var exclude = ''
|
||||
unread = ''
|
||||
}
|
||||
|
||||
var markers = localStorage.getItem('markers')
|
||||
if (markers == 'yes') {
|
||||
markers = true
|
||||
@@ -281,28 +330,21 @@ function parseColumn(target, dontclose) {
|
||||
if (!acct.left_fold) {
|
||||
basekey = key
|
||||
if (!numtarget) {
|
||||
var basehtml =
|
||||
`<div style="${css}" class="box ${animecss}" id="timeline_box_${basekey}_parentBox"></div>`
|
||||
var basehtml = `<div style="${css}" class="box ${animecss}" id="timeline_box_${basekey}_parentBox"></div>`
|
||||
$('#timeline-container').append(basehtml)
|
||||
}
|
||||
var left_hold =
|
||||
`<a onclick="leftFoldSet('${key}')" class="setting nex">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftFold}">view_agenda</i>
|
||||
</a>
|
||||
${lang.lang_layout_leftFold}<br>`
|
||||
var left_hold = `<a onclick="leftFoldSet('${key}')" class="setting nex waves-effect">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftFold}">view_agenda</i><br />
|
||||
${lang.lang_layout_leftFold}</a>`
|
||||
} else {
|
||||
var left_hold =
|
||||
`<a onclick="leftFoldRemove('${key}')" class="setting nex">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftUnfold}">view_column</i>
|
||||
</a>
|
||||
${lang.lang_layout_leftUnfold}<br>`
|
||||
var left_hold = `<a onclick="leftFoldRemove('${key}')" class="setting nex waves-effect">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftUnfold}">view_column</i><br />
|
||||
${lang.lang_layout_leftUnfold}</a>`
|
||||
}
|
||||
if (key === 0) {
|
||||
left_hold = ''
|
||||
}
|
||||
if (
|
||||
localStorage.getItem('mode_' + localStorage.getItem('domain_' + acct.domain)) == 'misskey'
|
||||
) {
|
||||
if (localStorage.getItem('mode_' + localStorage.getItem('domain_' + acct.domain)) == 'misskey') {
|
||||
var isMisRed = ''
|
||||
exclude = ''
|
||||
var if_misskey_hide = 'hide'
|
||||
@@ -315,15 +357,25 @@ function parseColumn(target, dontclose) {
|
||||
} else {
|
||||
var addHeight = ''
|
||||
}
|
||||
var html =
|
||||
`
|
||||
if (acct.type != 'pub' && acct.type != 'pub-media') {
|
||||
var mediaFil = `<a onclick="mediaToggle('${key}')" class="setting nex waves-effect">
|
||||
<i class="material-icons nex" title="${lang.lang_layout_mediafil}">perm_media</i>
|
||||
<span id="sta-media-${key}">On</span><br />
|
||||
${lang.lang_layout_mediafil}</a>`
|
||||
} else {
|
||||
var mediaFil = `<a onclick="remoteOnly('${key}','${acct.type}')" class="setting nex waves-effect">
|
||||
<i class="material-icons nex" title="${lang.lang_layout_remoteOnly}">perm_media</i><br />
|
||||
<span id="sta-remote-${key}">Off</span>
|
||||
${lang.lang_layout_remoteOnly}</a>`
|
||||
}
|
||||
var html = `
|
||||
<div class="boxIn" id="timeline_box_${key}_box" tlid="${key}" data-acct="${acct.domain}" style="${addHeight}">
|
||||
<div class="notice-box z-depth-2" id="menu_${key}" style="${insert}">
|
||||
<div class="area-notice">
|
||||
<i class="material-icons waves-effect ${isMisRed}" id="notice_icon_${key}" ${notf_attr}
|
||||
<i class="material-icons waves-effect ${isMisRed} notice_icon_acct_${acct.domain}" id="notice_icon_${key}" ${notf_attr}
|
||||
style="font-size:40px; padding-top:25%;"
|
||||
onclick="checkStr('${acct.type}','${data}','${acct.domain}', '${key}', '${delc}','${voice}',null)"
|
||||
title="${lang.lang_layout_gotop}">
|
||||
title="${lang.lang_layout_gotop}" aria-hidden="true">
|
||||
</i>
|
||||
</div>
|
||||
<div class="area-notice_name">
|
||||
@@ -332,61 +384,65 @@ function parseColumn(target, dontclose) {
|
||||
<div class="area-a1">
|
||||
<a onclick="notfToggle('${acct.domain}','${key}')" class="setting nex ${if_notf}"
|
||||
title="${unique_notf}" ${icnsert}>
|
||||
<i class="material-icons waves-effect nex notf-icon_${acct.domain}">notifications</i>
|
||||
<i class="material-icons waves-effect nex notf-icon_${acct.domain}" aria-hidden="true">notifications</i>
|
||||
<span class="voice">${unique_notf}</span>
|
||||
</a>
|
||||
${unread}
|
||||
<span class="cbadge hide notf-announ_${acct.domain}" style="margin-right:0"
|
||||
onclick="notfToggle('${acct.domain}','${key}')" title="${lang.lang_layout_announ}">
|
||||
<i class="fas fa-bullhorn"></i>
|
||||
<span class="notf-announ_${acct.domain}_ct"></span>
|
||||
<span class="voice">${lang.lang_layout_announ}</span>
|
||||
</span>
|
||||
${if_tag_btn}
|
||||
</div>
|
||||
<div class="area-sta">
|
||||
<span class="new badge teal notf-reply_${acct.domain} hide" data-badge-caption="Reply">0</span>
|
||||
<span class="new badge yellow black-text notf-fav_${acct.domain} hide" data-badge-caption="Fav">0</span>
|
||||
<span class="new badge blue notf-bt_${acct.domain} hide" data-badge-caption="BT">0</span>
|
||||
<span class="new badge orange notf-follow_${acct.domain} hide" data-badge-caption="Follow">0</span>
|
||||
<span class="new badge teal notf-reply_${acct.domain} hide" data-badge-caption="Reply" aria-hidden="true">0</span>
|
||||
<span class="new badge yellow black-text notf-fav_${acct.domain} hide" data-badge-caption="Fav" aria-hidden="true">0</span>
|
||||
<span class="new badge blue notf-bt_${acct.domain} hide" data-badge-caption="BT" aria-hidden="true">0</span>
|
||||
<span class="new badge orange notf-follow_${acct.domain} hide" data-badge-caption="Follow" aria-hidden="true">0</span>
|
||||
</div>
|
||||
<div class="area-a2">
|
||||
<a onclick="removeColumn('${key}')" class="setting nex">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_delthis}" ${icnsert}>cancel</i>
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_delthis}" ${icnsert} aria-hidden="true">cancel</i>
|
||||
<span class="voice">${lang.lang_layout_delthis}</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="area-a3">
|
||||
<a onclick="setToggle('${key}')" class="setting nex" title="${lang.lang_layout_setthis}" ${icnsert}>
|
||||
<i class="material-icons waves-effect nex">settings</i>
|
||||
<i class="material-icons waves-effect nex" aria-hidden="true">settings</i>
|
||||
<span class="voice">${lang.lang_layout_setthis}</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column-hide notf-indv-box z-depth-4" id="notf-box_${key}">
|
||||
<div id="notifications_${key}" data-notf="${acct.domain}" data-type="notf" class="notf-timeline">
|
||||
<div class="column-hide notf-indv-box z-depth-4" id="notf-box_${notfKey}">
|
||||
<div class="announce_${acct.domain}" style="border: 1px solid"></div>
|
||||
<div id="notifications_${notfKey}" data-notf="${notfDomain}" data-type="notf" class="notf-timeline">
|
||||
</div>
|
||||
</div>
|
||||
<div class="column-hide notf-indv-box" id="util-box_${key}" style="padding:5px;">
|
||||
${exclude}${left_hold}
|
||||
<a onclick="mediaToggle('${key}')" class="setting nex">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_mediafil}">perm_media</i>
|
||||
<span id="sta-media-${key}">On</span>
|
||||
</a>
|
||||
${lang.lang_layout_mediafil}<br>
|
||||
<a onclick="cardToggle(${key}')" class="setting nex">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_linkanades}">link</i>
|
||||
<span id="sta-card-${key}">On</span>
|
||||
</a>
|
||||
${exclude}
|
||||
${unread}
|
||||
${left_hold}
|
||||
${mediaFil}
|
||||
<a onclick="cardToggle('${key}')" class="setting nex waves-effect">
|
||||
<i class="material-icons nex" title="${lang.lang_layout_linkanades}">link</i>
|
||||
<span id="sta-card-${key}">On</span><br />
|
||||
${lang.lang_layout_linkana}
|
||||
<br>
|
||||
<a onclick="voiceToggle('${key}')" class="setting nex">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_tts}">hearing</i>
|
||||
<span id="sta-voice-${key}">On</span>
|
||||
</a>
|
||||
<a onclick="voiceToggle('${key}')" class="setting nex waves-effect">
|
||||
<i class="material-icons nex" title="${lang.lang_layout_tts}">hearing</i>
|
||||
<span id="sta-voice-${key}">On</span><br />
|
||||
${lang.lang_layout_tts}
|
||||
TL<br>
|
||||
<a onclick="columnReload('${key}','${acct.type}')" class="setting nex ${if_misskey_hide}">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_reconnect}">refresh</i>
|
||||
</a>
|
||||
<span>
|
||||
TL</a>
|
||||
<a onclick="columnReload('${key}','${acct.type}')" class="setting nex ${if_misskey_hide} waves-effect">
|
||||
<i class="material-icons nex" title="${lang.lang_layout_reconnect}">refresh</i>
|
||||
<br />
|
||||
${lang.lang_layout_reconnect}
|
||||
</span>
|
||||
<br>
|
||||
</a><br />
|
||||
${lang.lang_layout_headercolor}
|
||||
<br>
|
||||
<div id="picker_${key}" class="color-picker"></div>
|
||||
</div>
|
||||
</div>${if_tag}
|
||||
<div class="tl-box" tlid="${key}">
|
||||
<div id="timeline_${key}" class="tl ${acct.type}-timeline " tlid="${key}"
|
||||
data-type="${acct.type}" data-acct="${acct.domain}" data-const="${acct.type}_${acct.domain}">
|
||||
@@ -455,13 +511,13 @@ function parseColumn(target, dontclose) {
|
||||
minHeight: 50,
|
||||
minWidth: 50,
|
||||
grid: 50,
|
||||
resize: function(event, ui) {
|
||||
resize: function (event, ui) {
|
||||
$(this).css('min-width', ui.size.width + 'px')
|
||||
$(this).css('max-width', ui.size.width + 'px')
|
||||
$(this).css('min-height', ui.size.height + 'px')
|
||||
$(this).css('max-height', ui.size.height + 'px')
|
||||
},
|
||||
stop: function(event, ui) {
|
||||
stop: function (event, ui) {
|
||||
var col = localStorage.getItem('column')
|
||||
var o = JSON.parse(col)
|
||||
var width = ui.size.width
|
||||
@@ -476,16 +532,14 @@ function parseColumn(target, dontclose) {
|
||||
} else {
|
||||
//横幅。その縦幅を持つカラムのidは
|
||||
console.log('yoko')
|
||||
var key = $(this)
|
||||
.find('.boxIn')
|
||||
.attr('tlid')
|
||||
var key = $(this).find('.boxIn').attr('tlid')
|
||||
var obj = o[key]
|
||||
obj.width = width
|
||||
o[key] = obj
|
||||
}
|
||||
var json = JSON.stringify(o)
|
||||
localStorage.setItem('column', json)
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
function checkStr(type, data, acct_id, key, delc, voice) {
|
||||
@@ -535,7 +589,7 @@ function addColumn() {
|
||||
}
|
||||
var add = {
|
||||
domain: acct,
|
||||
type: type
|
||||
type: type,
|
||||
}
|
||||
var multi = localStorage.getItem('column')
|
||||
var obj = JSON.parse(multi)
|
||||
@@ -569,9 +623,7 @@ function addselCk() {
|
||||
$('#webview-add').addClass('hide')
|
||||
}
|
||||
if (domain == 'knzk.me' || domain == 'mstdn.y-zu.org') {
|
||||
$('#type-sel').append(
|
||||
'<option value="dm" data-trans="dm" id="direct-add">' + lang.layout_dm + '</option>'
|
||||
)
|
||||
$('#type-sel').append('<option value="dm" data-trans="dm" id="direct-add">' + lang.layout_dm + '</option>')
|
||||
} else {
|
||||
$('#direct-add').remove()
|
||||
}
|
||||
@@ -588,16 +640,20 @@ function removeColumn(tlid) {
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: lang.lang_yesno,
|
||||
cancelButtonText: lang.lang_no
|
||||
}).then(result => {
|
||||
cancelButtonText: lang.lang_no,
|
||||
}).then((result) => {
|
||||
if (result.value) {
|
||||
var multi = localStorage.getItem('column')
|
||||
var obj = JSON.parse(multi)
|
||||
var data = obj[tlid]
|
||||
obj.splice(tlid, 1)
|
||||
var json = JSON.stringify(obj)
|
||||
localStorage.setItem('column', json)
|
||||
sortLoad()
|
||||
$('#timeline_box_' + tlid + '_parentBox').remove()
|
||||
$('#timeline_box_' + tlid + '_box').remove()
|
||||
if (!data.left_fold) {
|
||||
$('#timeline_box_' + tlid + '_parentBox').remove()
|
||||
}
|
||||
}
|
||||
$('#sort-box').removeClass('hide')
|
||||
$('#sort-box').addClass('show')
|
||||
@@ -611,35 +667,67 @@ function setToggle(tlid) {
|
||||
$('#util-box_' + tlid).css('display', 'block')
|
||||
$('#util-box_' + tlid).animate(
|
||||
{
|
||||
height: '200px'
|
||||
height: '200px',
|
||||
},
|
||||
{
|
||||
duration: 300,
|
||||
complete: function() {
|
||||
complete: function () {
|
||||
$('#util-box_' + tlid).css('overflow-y', 'scroll')
|
||||
$('#util-box_' + tlid).removeClass('column-hide')
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
} else {
|
||||
$('#util-box_' + tlid).css('overflow-y', 'hidden')
|
||||
$('#util-box_' + tlid).animate(
|
||||
{
|
||||
height: '0'
|
||||
height: '0',
|
||||
},
|
||||
{
|
||||
duration: 300,
|
||||
complete: function() {
|
||||
complete: function () {
|
||||
$('#util-box_' + tlid).addClass('column-hide')
|
||||
$('#util-box_' + tlid).css('display', 'none')
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
//タグトグル
|
||||
//設定トグル
|
||||
function setToggleTag(tlid) {
|
||||
if ($('#tag-box_' + tlid).hasClass('column-hide')) {
|
||||
$('#tag-box_' + tlid).css('display', 'block')
|
||||
$('#tag-box_' + tlid).animate(
|
||||
{
|
||||
height: '200px',
|
||||
},
|
||||
{
|
||||
duration: 300,
|
||||
complete: function () {
|
||||
$('#tag-box_' + tlid).css('overflow-y', 'scroll')
|
||||
$('#tag-box_' + tlid).removeClass('column-hide')
|
||||
},
|
||||
}
|
||||
)
|
||||
} else {
|
||||
$('#tag-box_' + tlid).css('overflow-y', 'hidden')
|
||||
$('#tag-box_' + tlid).animate(
|
||||
{
|
||||
height: '0',
|
||||
},
|
||||
{
|
||||
duration: 300,
|
||||
complete: function () {
|
||||
$('#tag-box_' + tlid).addClass('column-hide')
|
||||
$('#tag-box_' + tlid).css('display', 'none')
|
||||
},
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
function colorpicker(key) {
|
||||
temp =
|
||||
`<div onclick="coloradd('${key}','def','def')" class="pointer">Default</div>
|
||||
temp = `<div onclick="coloradd('${key}','def','def')" class="pointer">Default</div>
|
||||
<div onclick="coloradd('${key}','f44336','white')" class="red white-text pointer">Red</div>
|
||||
<div onclick="coloradd('${key}','e91e63','white')" class="pink white-text pointer">Pink</div>
|
||||
<div onclick="coloradd('${key}','9c27b0','white')" class="purple white-text pointer">Purple</div>
|
||||
@@ -691,14 +779,14 @@ function coloradd(key, bg, txt) {
|
||||
}
|
||||
//禁断のTwitter
|
||||
function webviewParse(url, key, insert, icnsert, css) {
|
||||
var html =
|
||||
`<div class="box" id="timeline_box_${key}_box" tlid="${key}" style="${css}">
|
||||
var html = `<div class="box" id="timeline_box_${key}_box" tlid="${key}" style="${css}">
|
||||
<div class="notice-box z-depth-2" id="menu_${key}" style="${insert}">
|
||||
<div class="area-notice">
|
||||
<i class="fab fa-twitter waves-effect" id="notice_icon_${key}" style="font-size:40px; padding-top:25%;"></i>
|
||||
</div>
|
||||
<div class="area-notice_name tl-title">WebView('${url}')</div>
|
||||
<div class="area-sta"></div>
|
||||
<div class="area-sta">
|
||||
</div>
|
||||
<div class="area-a2">
|
||||
<a onclick="removeColumn('${key}')" class="setting nex">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_delthis}" ${icnsert}>cancel</i>
|
||||
@@ -724,105 +812,76 @@ function webviewParse(url, key, insert, icnsert, css) {
|
||||
</div>`
|
||||
return html
|
||||
}
|
||||
function unstreamingTL(type, key, basekey, insert, icnsert, left_fold, css, animecss, q) {
|
||||
function unstreamingTL(type, key, basekey, insert, icnsert, left_fold, css, animecss, data) {
|
||||
//type名が関数名
|
||||
if (!left_fold) {
|
||||
var basehtml =
|
||||
'<div style="' +
|
||||
css +
|
||||
'" class="box ' +
|
||||
animecss +
|
||||
'" id="timeline_box_' +
|
||||
basekey +
|
||||
'_parentBox"></div>'
|
||||
var basehtml = `<div style="${css}" class="box ${animecss}" id="timeline_box_${basekey}_parentBox"></div>`
|
||||
$('#timeline-container').append(basehtml)
|
||||
var left_hold =
|
||||
'<a onclick="leftFoldSet(' +
|
||||
key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="' +
|
||||
lang.lang_layout_leftFold +
|
||||
'">view_agenda</i></a>' +
|
||||
lang.lang_layout_leftFold +
|
||||
'</span><br>'
|
||||
var left_hold = `<a onclick="leftFoldSet('${key}')" class="setting nex">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftFold}">view_agenda</i>
|
||||
</a>
|
||||
${lang.lang_layout_leftFold}
|
||||
</span><br>`
|
||||
} else {
|
||||
var left_hold =
|
||||
'<a onclick="leftFoldRemove(' +
|
||||
key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="' +
|
||||
lang.lang_layout_leftUnfold +
|
||||
'">view_column</i></a>' +
|
||||
lang.lang_layout_leftUnfold +
|
||||
'</span><br>'
|
||||
var left_hold = `<a onclick="leftFoldRemove('${key}')" class="setting nex">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_leftUnfold}">view_column</i>
|
||||
</a>
|
||||
${lang.lang_layout_leftUnfold}
|
||||
</span><br>`
|
||||
}
|
||||
var html =
|
||||
'<div class="boxIn" id="timeline_box_' +
|
||||
key +
|
||||
'_box" tlid="' +
|
||||
key +
|
||||
'"><div class="notice-box z-depth-2" id="menu_' +
|
||||
key +
|
||||
'" style="' +
|
||||
insert +
|
||||
' ">' +
|
||||
'<div class="area-notice"><i class="material-icons waves-effect" id="notice_icon_' +
|
||||
key +
|
||||
'" style="font-size:40px; padding-top:25%;" onclick="tootsearch(' +
|
||||
key +
|
||||
",'" +
|
||||
q +
|
||||
'\');" title="' +
|
||||
lang.lang_layout_gotop +
|
||||
'"></i></div>' +
|
||||
'<div class="area-notice_name"><span id="notice_' +
|
||||
key +
|
||||
'" class="tl-title"></span></div>' +
|
||||
'<div class="area-a1"></div><div class="area-sta"></div>' +
|
||||
'<div class="area-a2"><a onclick="removeColumn(' +
|
||||
key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="' +
|
||||
lang.lang_layout_delthis +
|
||||
'"' +
|
||||
icnsert +
|
||||
'>cancel</i></a></div>' +
|
||||
'<div class="area-a3"><a onclick="setToggle(' +
|
||||
key +
|
||||
')" class="setting nex" title="' +
|
||||
lang.lang_layout_setthis +
|
||||
'"' +
|
||||
icnsert +
|
||||
'><i class="material-icons waves-effect nex">settings</i></a></div></div>' +
|
||||
'<div class="column-hide notf-indv-box" id="util-box_' +
|
||||
key +
|
||||
'" style="padding:5px;">' +
|
||||
left_hold +
|
||||
'<a onclick="mediaToggle(' +
|
||||
key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="' +
|
||||
lang.lang_layout_mediafil +
|
||||
'">perm_media</i><span id="sta-media-' +
|
||||
key +
|
||||
'">On</span></a>' +
|
||||
lang.lang_layout_mediafil +
|
||||
'<br>' +
|
||||
lang.lang_layout_headercolor +
|
||||
'<br><div id="picker_' +
|
||||
key +
|
||||
'" class="color-picker"></div></div><div class="tl-box" tlid="' +
|
||||
key +
|
||||
'"><div id="timeline_' +
|
||||
key +
|
||||
'" class="tl ' +
|
||||
type +
|
||||
'-timeline " tlid="' +
|
||||
key +
|
||||
'" data-type="' +
|
||||
type +
|
||||
'" data-acct="nostr"><div id="landing_' +
|
||||
key +
|
||||
'" style="text-align:center">' +
|
||||
lang.lang_layout_nodata +
|
||||
'</div></div></div>'
|
||||
if (type == 'utl') {
|
||||
var dataHtml = false
|
||||
} else {
|
||||
var dataHtml = data
|
||||
}
|
||||
var html = `<div class="boxIn" id="timeline_box_${key}_box" tlid="${key}">
|
||||
<div class="notice-box z-depth-2" id="menu_${key}" style="${insert} ">
|
||||
<div class="area-notice">
|
||||
<i class="material-icons waves-effect" id="notice_icon_${key}" style="font-size:40px; padding-top:25%;"
|
||||
onclick="${type}('${key}','${dataHtml}');" title="${lang.lang_layout_gotop}"></i>
|
||||
</div>
|
||||
<div class="area-notice_name">
|
||||
<span id="notice_${key}" class="tl-title"></span>
|
||||
</div>
|
||||
<div class="area-a1"></div>
|
||||
<div class="area-sta"></div>
|
||||
<div class="area-a2">
|
||||
<a onclick="removeColumn('${key}')" class="setting nex">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_delthis}"${icnsert}>cancel</i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="area-a3">
|
||||
<a onclick="setToggle('${key}')" class="setting nex" title="${lang.lang_layout_setthis}" ${icnsert}>
|
||||
<i class="material-icons waves-effect nex">settings</i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column-hide notf-indv-box" id="util-box_${key}" style="padding:5px;">
|
||||
${left_hold}
|
||||
<a onclick="mediaToggle('${key}')" class="setting nex">
|
||||
<i class="material-icons waves-effect nex" title="${lang.lang_layout_mediafil}">perm_media</i>
|
||||
<span id="sta-media-${key}">On</span>
|
||||
</a>
|
||||
${lang.lang_layout_mediafil}<br>
|
||||
${lang.lang_layout_headercolor}<br>
|
||||
<div id="picker_${key}" class="color-picker"></div>
|
||||
</div>
|
||||
<div class="tl-box" tlid="${key}">
|
||||
<div id="timeline_${key}" class="tl ${type}-timeline" tlid="${key}" data-type="${type}" data-acct="${data}">
|
||||
<div id="landing_${key}" style="text-align:center">
|
||||
${lang.lang_layout_nodata}
|
||||
</div>
|
||||
</div>
|
||||
</div>`
|
||||
$('#timeline_box_' + basekey + '_parentBox').append(html)
|
||||
tootsearch(key, q)
|
||||
if (type == 'tootsearch') {
|
||||
tootsearch(key, data)
|
||||
} else if (type == 'bookmark') {
|
||||
console.log(key, data)
|
||||
bookmark(key, data)
|
||||
} else if (type == 'utl') {
|
||||
utl(key, data.acct, data.data)
|
||||
}
|
||||
cardCheck(key)
|
||||
ebtCheck(key)
|
||||
mediaCheck(key)
|
||||
@@ -830,6 +889,31 @@ function unstreamingTL(type, key, basekey, insert, icnsert, left_fold, css, anim
|
||||
voiceCheck(key)
|
||||
return true
|
||||
}
|
||||
function bookmark(key, data) {
|
||||
console.log(key, data)
|
||||
if (localStorage.getItem('voice_' + key)) {
|
||||
var voice = true
|
||||
} else {
|
||||
var voice = false
|
||||
}
|
||||
tl('bookmark', '', data, key, 'false', voice, '')
|
||||
}
|
||||
function utl(key, acct_id, data) {
|
||||
if (!data) {
|
||||
var multi = localStorage.getItem('column')
|
||||
var obj = JSON.parse(multi)
|
||||
data = obj[key].data
|
||||
acct_id = obj[key].domain
|
||||
}
|
||||
|
||||
console.log(key, data)
|
||||
if (localStorage.getItem('voice_' + key)) {
|
||||
var voice = true
|
||||
} else {
|
||||
var voice = false
|
||||
}
|
||||
tl('utl', data, acct_id, key, 'false', voice, '')
|
||||
}
|
||||
function leftFoldSet(key) {
|
||||
var multi = localStorage.getItem('column')
|
||||
var obj = JSON.parse(multi)
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
function menu() {
|
||||
localStorage.setItem("menu-done", true);
|
||||
localStorage.setItem("menu-done", true)
|
||||
$("#fukidashi").addClass("hide")
|
||||
if (!$("#menu").hasClass("appear")) {
|
||||
$("#menu").addClass("appear")
|
||||
var left = localStorage.getItem("menu-left");
|
||||
var left = localStorage.getItem("menu-left")
|
||||
if (left > $('body').width() - $('#menu').width()) {
|
||||
left = $('body').width() - $('#menu').width();
|
||||
left = $('body').width() - $('#menu').width()
|
||||
} else if (left < 0) {
|
||||
left = 0;
|
||||
left = 0
|
||||
}
|
||||
var top = localStorage.getItem("menu-top");
|
||||
var top = localStorage.getItem("menu-top")
|
||||
if (top > $('body').height() - $('#menu').height()) {
|
||||
top = $('body').height() - $('#menu').height();
|
||||
top = $('body').height() - $('#menu').height()
|
||||
} else if (top < 0) {
|
||||
top = 0;
|
||||
top = 0
|
||||
}
|
||||
$('#menu').css("left", left + "px")
|
||||
$('#menu').css("top", top + "px")
|
||||
var height = localStorage.getItem("menu-height");
|
||||
var width = localStorage.getItem("menu-width");
|
||||
var height = localStorage.getItem("menu-height")
|
||||
var width = localStorage.getItem("menu-width")
|
||||
if(height){
|
||||
$('#menu').css("height", height + "px")
|
||||
}else{
|
||||
@@ -27,12 +27,13 @@ function menu() {
|
||||
if(width){
|
||||
$('#menu').css("width", width + "px")
|
||||
}
|
||||
$('#menu').fadeIn();
|
||||
$("#menu-bar").html("TheDesk " + localStorage.getItem("ver"));
|
||||
$(".menu-content").addClass("hide");
|
||||
$("#add-box").removeClass("hide");
|
||||
$("#left-menu div").removeClass("active");
|
||||
$("#addColumnMenu").addClass("active");
|
||||
$('#menu').fadeIn()
|
||||
$("#menu-bar").html("TheDesk " + localStorage.getItem("ver"))
|
||||
$(".menu-content").addClass("hide")
|
||||
$("#add-box").removeClass("hide")
|
||||
$("#left-menu div").removeClass("active")
|
||||
$("#addColumnMenu").addClass("active")
|
||||
$("#addColumnMenu").click()
|
||||
} else {
|
||||
$('#menu').fadeOut()
|
||||
$("#menu").removeClass("appear")
|
||||
@@ -43,35 +44,35 @@ $(function () {
|
||||
$("#menu").draggable({
|
||||
handle: "#menu-bar",
|
||||
stop: function () {
|
||||
var left = $('#menu').offset().left;
|
||||
var left = $('#menu').offset().left
|
||||
if (left > $('body').width() - $('#menu').width()) {
|
||||
left = $('body').width() - $('#menu').width();
|
||||
left = $('body').width() - $('#menu').width()
|
||||
} else if (left < 0) {
|
||||
left = 0;
|
||||
left = 0
|
||||
}
|
||||
var top = $('#menu').offset().top;
|
||||
var top = $('#menu').offset().top
|
||||
if (top > $('body').height() - $('#menu').height()) {
|
||||
top = $('body').height() - $('#menu').height();
|
||||
top = $('body').height() - $('#menu').height()
|
||||
} else if (top < 0) {
|
||||
top = 0;
|
||||
top = 0
|
||||
}
|
||||
localStorage.setItem("menu-left", left);
|
||||
localStorage.setItem("menu-top", top);
|
||||
localStorage.setItem("menu-left", left)
|
||||
localStorage.setItem("menu-top", top)
|
||||
}
|
||||
});
|
||||
})
|
||||
$("#menu").resizable({
|
||||
minHeight: 150,
|
||||
minWidth: 200,
|
||||
stop: function (event, ui) {
|
||||
localStorage.setItem("menu-height", ui.size.height);
|
||||
localStorage.setItem("menu-width", ui.size.width);
|
||||
localStorage.setItem("menu-height", ui.size.height)
|
||||
localStorage.setItem("menu-width", ui.size.width)
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
})
|
||||
function help() {
|
||||
$("#left-menu div").removeClass("active");
|
||||
$("#helpMenu").addClass("active");
|
||||
$(".menu-content").addClass("hide");
|
||||
$("#help-box").removeClass("hide");
|
||||
$("#left-menu a").removeClass("active")
|
||||
$("#helpMenu").addClass("active")
|
||||
$(".menu-content").addClass("hide")
|
||||
$("#help-box").removeClass("hide")
|
||||
postMessage(["sendSinmpleIpc", "getLogs"], "*")
|
||||
}
|
||||
@@ -1,32 +1,32 @@
|
||||
function pip(id) {
|
||||
$("#pip-content").html($("[toot-id=" + id + "] .additional").html());
|
||||
$("#pip").removeClass("hide");
|
||||
$("#pip-content").html($("[toot-id=" + id + "] .additional").html())
|
||||
$("#pip").removeClass("hide")
|
||||
}
|
||||
function endPip() {
|
||||
$("#pip-content").html("");
|
||||
$("#pip").addClass("hide");
|
||||
$("#pip-content").html("")
|
||||
$("#pip").addClass("hide")
|
||||
}
|
||||
|
||||
function pipHoriz() {
|
||||
if ($("#pip").hasClass("pip-left")) {
|
||||
$("#pip").removeClass("pip-left");
|
||||
$(".pip-horiz").text("chevron_left");
|
||||
$("#pip").addClass("pip-right");
|
||||
$("#pip").removeClass("pip-left")
|
||||
$(".pip-horiz").text("chevron_left")
|
||||
$("#pip").addClass("pip-right")
|
||||
} else {
|
||||
$("#pip").addClass("pip-left");
|
||||
$("#pip").removeClass("pip-right");
|
||||
$(".pip-horiz").text("chevron_right");
|
||||
$("#pip").addClass("pip-left")
|
||||
$("#pip").removeClass("pip-right")
|
||||
$(".pip-horiz").text("chevron_right")
|
||||
}
|
||||
}
|
||||
|
||||
function pipVert() {
|
||||
if ($("#pip").hasClass("pip-top")) {
|
||||
$("#pip").removeClass("pip-top");
|
||||
$("#pip").addClass("pip-bottom");
|
||||
$(".pip-vert").text("expand_less");
|
||||
$("#pip").removeClass("pip-top")
|
||||
$("#pip").addClass("pip-bottom")
|
||||
$(".pip-vert").text("expand_less")
|
||||
} else {
|
||||
$("#pip").addClass("pip-top");
|
||||
$("#pip").removeClass("pip-bottom");
|
||||
$(".pip-vert").text("expand_more");
|
||||
$("#pip").addClass("pip-top")
|
||||
$("#pip").removeClass("pip-bottom")
|
||||
$(".pip-vert").text("expand_more")
|
||||
}
|
||||
}
|
||||
@@ -1,135 +1,138 @@
|
||||
/*ささやきボックス(Cr民並感)*/
|
||||
//✕隠す
|
||||
function 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
|
||||
$('#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)
|
||||
$('#post-box').css('width', width)
|
||||
$('#post-box').fadeOut()
|
||||
$("#post-box").removeClass("appear")
|
||||
$("#emoji").addClass("hide")
|
||||
$("#left-side").show();
|
||||
$("#default-emoji").show();
|
||||
$("#unreact").show();
|
||||
$("#addreact").addClass("hide");
|
||||
$('#post-box').removeClass('appear')
|
||||
$('#emoji').addClass('hide')
|
||||
$('#left-side').show()
|
||||
$('#default-emoji').show()
|
||||
$('#unreact').show()
|
||||
$('#addreact').addClass('hide')
|
||||
}
|
||||
//最小化
|
||||
function mini() {
|
||||
$("body").toggleClass("mini-post");
|
||||
if ($("body").hasClass("mini-post")) {
|
||||
$(".mini-btn").text("expand_less");
|
||||
$('body').toggleClass('mini-post')
|
||||
if ($('body').hasClass('mini-post')) {
|
||||
$('.mini-btn').text('expand_less')
|
||||
} else {
|
||||
$(".mini-btn").text("expand_more");
|
||||
$('.mini-btn').text('expand_more')
|
||||
}
|
||||
}
|
||||
//最小化時に展開
|
||||
function show() {
|
||||
$("#post-box").addClass("appear")
|
||||
$("#textarea").focus();
|
||||
console.log("show" + localStorage.getItem("postbox-left"));
|
||||
var left = localStorage.getItem("postbox-left");
|
||||
$('#post-box').addClass('appear')
|
||||
$('#textarea').focus()
|
||||
console.log('show' + localStorage.getItem('postbox-left'))
|
||||
var left = localStorage.getItem('postbox-left')
|
||||
if (left > $('body').width() - $('#post-box').width()) {
|
||||
left = $('body').width() - $('#post-box').width();
|
||||
left = $('body').width() - $('#post-box').width()
|
||||
} else if (left < 0) {
|
||||
left = 0;
|
||||
left = 0
|
||||
}
|
||||
var top = localStorage.getItem("postbox-top");
|
||||
var top = localStorage.getItem('postbox-top')
|
||||
if (top > $('body').height() - $('#post-box').height()) {
|
||||
top = $('body').height() - $('#post-box').height();
|
||||
top = $('body').height() - $('#post-box').height()
|
||||
} else if (top < 0) {
|
||||
top = 0;
|
||||
top = 0
|
||||
}
|
||||
$('#post-box').css("left", left + "px")
|
||||
$('#post-box').css("top", top + "px")
|
||||
var width = localStorage.getItem("postbox-width");
|
||||
$('#post-box').css('left', left + 'px')
|
||||
$('#post-box').css('top', top + 'px')
|
||||
var width = localStorage.getItem('postbox-width')
|
||||
if (width) {
|
||||
$('#post-box').css("width", width + "px")
|
||||
$('#post-box').css('width', width + 'px')
|
||||
} else {
|
||||
$('#post-box').css("width", "300px")
|
||||
$('#post-box').css('width', '300px')
|
||||
}
|
||||
$('#post-box').fadeIn();
|
||||
$('#textarea').characterCounter();
|
||||
$('#post-box').fadeIn()
|
||||
$('#textarea').characterCounter()
|
||||
mdCheck()
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$("#post-box").draggable({
|
||||
handle: "#post-bar",
|
||||
$('#post-box').draggable({
|
||||
handle: '#post-bar',
|
||||
stop: function () {
|
||||
var left = $('#post-box').offset().left;
|
||||
var left = $('#post-box').offset().left
|
||||
if (left > $('body').width() - $('#post-box').width()) {
|
||||
left = $('body').width() - $('#post-box').width();
|
||||
left = $('body').width() - $('#post-box').width()
|
||||
} else if (left < 0) {
|
||||
left = 0;
|
||||
left = 0
|
||||
}
|
||||
var top = $('#post-box').offset().top;
|
||||
var top = $('#post-box').offset().top
|
||||
if (top > $('body').height() - $('#post-box').height()) {
|
||||
top = $('body').height() - $('#post-box').height();
|
||||
top = $('body').height() - $('#post-box').height()
|
||||
} else if (top < 0) {
|
||||
top = 0;
|
||||
top = 0
|
||||
}
|
||||
localStorage.setItem("postbox-left", left);
|
||||
localStorage.setItem("postbox-top", top);
|
||||
}
|
||||
});
|
||||
$("#post-box").resizable({
|
||||
localStorage.setItem('postbox-left', left)
|
||||
localStorage.setItem('postbox-top', top)
|
||||
},
|
||||
})
|
||||
$('#post-box').resizable({
|
||||
minHeight: 150,
|
||||
minWidth: 100,
|
||||
stop: function (event, ui) {
|
||||
$("#textarea").blur()
|
||||
localStorage.setItem("postbox-width", ui.size.width);
|
||||
}
|
||||
});
|
||||
});
|
||||
$('#textarea').blur()
|
||||
localStorage.setItem('postbox-width', ui.size.width)
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
//コード受信
|
||||
if (location.search) {
|
||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
|
||||
var mode = m[1];
|
||||
var codex = m[2];
|
||||
if (mode == "share") {
|
||||
$('textarea').focus();
|
||||
$("#textarea").val(decodeURI(codex));
|
||||
show();
|
||||
$("body").removeClass("mini-post");
|
||||
$(".mini-btn").text("expand_less");
|
||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/)
|
||||
var mode = m[1]
|
||||
var codex = m[2]
|
||||
if (mode == 'share') {
|
||||
$('textarea').focus()
|
||||
$('#textarea').val(decodeURI(codex))
|
||||
show()
|
||||
$('body').removeClass('mini-post')
|
||||
$('.mini-btn').text('expand_less')
|
||||
}
|
||||
}
|
||||
$('#posttgl').click(function (e) {
|
||||
if (!$('#post-box').hasClass("appear")) {
|
||||
show();
|
||||
} else {
|
||||
hide();
|
||||
}
|
||||
$('.cvo').removeClass("selectedToot")
|
||||
selectedColumn = 0
|
||||
selectedToot = 0
|
||||
});
|
||||
|
||||
$("#timeline-container,#group").click(function (e) {
|
||||
if (localStorage.getItem("box") != "absolute") {
|
||||
if ($('#post-box').hasClass("appear") && !localStorage.getItem("nohide")) {
|
||||
hide();
|
||||
function initPostbox() {
|
||||
$('#posttgl').click(function (e) {
|
||||
if (!$('#post-box').hasClass('appear')) {
|
||||
show()
|
||||
} else {
|
||||
hide()
|
||||
}
|
||||
}
|
||||
$('.cvo').removeClass("selectedToot")
|
||||
selectedColumn = 0
|
||||
selectedToot = 0
|
||||
localStorage.removeItem("nohide")
|
||||
});
|
||||
$('#textarea,#cw-text').focusout(function (e) {
|
||||
localStorage.setItem("nohide", true)
|
||||
var countup = function () {
|
||||
localStorage.removeItem("nohide")
|
||||
}
|
||||
//setTimeout(remove, 100);
|
||||
$('.cvo').removeClass("selectedToot")
|
||||
selectedColumn = 0
|
||||
selectedToot = 0
|
||||
});
|
||||
$('.cvo').removeClass('selectedToot')
|
||||
selectedColumn = 0
|
||||
selectedToot = 0
|
||||
})
|
||||
|
||||
$('#timeline-container,#group').click(function (e) {
|
||||
if (localStorage.getItem('box') != 'absolute') {
|
||||
if ($('#post-box').hasClass('appear') && !localStorage.getItem('nohide')) {
|
||||
hide()
|
||||
}
|
||||
}
|
||||
$('.cvo').removeClass('selectedToot')
|
||||
selectedColumn = 0
|
||||
selectedToot = 0
|
||||
localStorage.removeItem('nohide')
|
||||
srcBox('close')
|
||||
})
|
||||
$('#textarea,#cw-text').focusout(function (e) {
|
||||
localStorage.setItem('nohide', true)
|
||||
var countup = function () {
|
||||
localStorage.removeItem('nohide')
|
||||
}
|
||||
//setTimeout(remove, 100);
|
||||
$('.cvo').removeClass('selectedToot')
|
||||
selectedColumn = 0
|
||||
selectedToot = 0
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
var r = document.getElementById("radio");
|
||||
var r = document.getElementById("radio")
|
||||
function Rtoggle() {
|
||||
if ($("#radio").hasClass("play")) {
|
||||
Rstop();
|
||||
Rstop()
|
||||
} else {
|
||||
$("#radio-view").toggleClass("hide");
|
||||
$("#radio-view").toggleClass("show");
|
||||
$("#radio-input").addClass("hide");
|
||||
$("#radio-view").toggleClass("hide")
|
||||
$("#radio-view").toggleClass("show")
|
||||
$("#radio-input").addClass("hide")
|
||||
}
|
||||
}
|
||||
function Rplay(url, name) {
|
||||
$("#radio").attr('src', url);
|
||||
r.load();
|
||||
r.play();
|
||||
$("#radio").addClass("play");
|
||||
$("#radio-btn").addClass("teal-text");
|
||||
$("#radio-sta").html("<br>Now Playing:" + name);
|
||||
$("#radio").attr('src', url)
|
||||
r.load()
|
||||
r.play()
|
||||
$("#radio").addClass("play")
|
||||
$("#radio-btn").addClass("teal-text")
|
||||
$("#radio-sta").html("<br>Now Playing:" + name)
|
||||
}
|
||||
function Rstop() {
|
||||
$("#radio").attr("src", "");
|
||||
r.pause();
|
||||
$("#radio").removeClass("play");
|
||||
$("#radio-btn").removeClass("teal-text");
|
||||
$("#radio-sta").html("");
|
||||
$("#radio").attr("src", "")
|
||||
r.pause()
|
||||
$("#radio").removeClass("play")
|
||||
$("#radio-btn").removeClass("teal-text")
|
||||
$("#radio-sta").html("")
|
||||
}
|
||||
function Ryourself() {
|
||||
$("#radio-input").removeClass("hide");
|
||||
$("#radio-view").addClass("hide");
|
||||
$("#radio-input").removeClass("hide")
|
||||
$("#radio-view").addClass("hide")
|
||||
}
|
||||
function Rselect() {
|
||||
$("#radio-input").addClass("hide");
|
||||
$("#radio-view").removeClass("hide");
|
||||
$("#radio-input").addClass("hide")
|
||||
$("#radio-view").removeClass("hide")
|
||||
}
|
||||
function Rinput() {
|
||||
var url = $("#radio-url").val();
|
||||
var url = $("#radio-url").val()
|
||||
Rplay(url, url)
|
||||
}
|
||||
/*
|
||||
|
||||
@@ -1,62 +1,70 @@
|
||||
//スクロールで続きを読む
|
||||
function scrollevent() {
|
||||
$(".tl-box").scroll(function () {
|
||||
scrollck();
|
||||
});
|
||||
$('.tl-box').scroll(function() {
|
||||
scrollck()
|
||||
})
|
||||
}
|
||||
scrollevent();
|
||||
scrollevent()
|
||||
|
||||
function scrollck() {
|
||||
$(".tl-box").each(function (i, elem) {
|
||||
var tlid = $(this).attr('tlid');
|
||||
$('.tl-box').each(function(i, elem) {
|
||||
var tlid = $(this).attr('tlid')
|
||||
var len = $('#timeline_' + tlid + ' .cvo').length
|
||||
//一番上ならためていた新しいトゥートを表示ないしtealなら未読管理モード
|
||||
if ($(this).scrollTop() === 0) {
|
||||
if (!$("#unread_" + tlid + " .material-icons").hasClass("teal-text")) {
|
||||
var pool = localStorage.getItem("pool_" + tlid);
|
||||
if (!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')) {
|
||||
var pool = localStorage.getItem('pool_' + tlid)
|
||||
if (pool) {
|
||||
$("#timeline_" + tlid).prepend(pool);
|
||||
jQuery("time.timeago").timeago();
|
||||
localStorage.removeItem("pool_" + tlid);
|
||||
$('#timeline_' + tlid).prepend(pool)
|
||||
jQuery('time.timeago').timeago()
|
||||
localStorage.removeItem('pool_' + tlid)
|
||||
}
|
||||
} else {
|
||||
ueload(tlid)
|
||||
}
|
||||
//自動リフレッシュ
|
||||
if ($("#timeline_" + tlid + " .cvo").length > 30) {
|
||||
for (var i = 30; i < $("#timeline_" + tlid + " .cvo").length; i++) {
|
||||
$("#timeline_" + tlid + " .cvo").eq(i).remove();
|
||||
if (len > 30) {
|
||||
for (var i = 30; i < $('#timeline_' + tlid + ' .cvo').length; i++) {
|
||||
$('#timeline_' + tlid + ' .cvo')
|
||||
.eq(i)
|
||||
.remove()
|
||||
}
|
||||
}
|
||||
}
|
||||
//続きを読むトリガー
|
||||
var scrt = $(this).find(".tl").height() - $(window).height();
|
||||
var scr = $(this).scrollTop();
|
||||
if (scr > scrt) {
|
||||
console.log("kicked more loading:" + tlid);
|
||||
moreload('', tlid);
|
||||
var scrt =
|
||||
$(this)
|
||||
.find('.tl')
|
||||
.height() - $(window).height()
|
||||
var scr = $(this).scrollTop()
|
||||
if (scr > scrt && scrt > 0) {
|
||||
console.log('kicked more loading:' + tlid)
|
||||
moreload('', tlid)
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
function goTop(id) {
|
||||
if ($("#unread_" + id + " .material-icons").hasClass("teal-text")) {
|
||||
$("#unread_" + id + " .material-icons").removeClass("teal-text")
|
||||
var multi = localStorage.getItem("column")
|
||||
if ($('#unread_' + id + ' .material-icons').hasClass('teal-text')) {
|
||||
$('#unread_' + id + ' .material-icons').removeClass('teal-text')
|
||||
var multi = localStorage.getItem('column')
|
||||
var obj = JSON.parse(multi)
|
||||
var acct_id = obj[id * 1].domain
|
||||
var type = obj[id * 1].type
|
||||
console.log(id, type)
|
||||
columnReload(id, type)
|
||||
}
|
||||
if ($("#timeline_box_" + id + "_box .tl-box").scrollTop() > 500) {
|
||||
$("#timeline_box_" + id + "_box .tl-box").scrollTop(500)
|
||||
if ($('#timeline_box_' + id + '_box .tl-box').scrollTop() > 500) {
|
||||
$('#timeline_box_' + id + '_box .tl-box').scrollTop(500)
|
||||
}
|
||||
$("#timeline_box_" + id + "_box .tl-box").animate({ scrollTop: 0 });
|
||||
$('#timeline_box_' + id + '_box .tl-box').animate({ scrollTop: 0 })
|
||||
}
|
||||
function goColumn(key) {
|
||||
$("#sort-box").addClass("hide");
|
||||
$("#sort-box").removeClass("show");
|
||||
$('#sort-box').addClass('hide')
|
||||
$('#sort-box').removeClass('show')
|
||||
if ($('[tlid=' + key + ']').length) {
|
||||
$("#timeline-container").animate({ scrollLeft: $("#timeline-container").scrollLeft() + $('[tlid=' + key + ']').offset().left });
|
||||
$('#timeline-container').animate({
|
||||
scrollLeft: $('#timeline-container').scrollLeft() + $('[tlid=' + key + ']').offset().left
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,44 +1,44 @@
|
||||
//ソートデータ読み込み
|
||||
function sortLoad () {
|
||||
$("#sort").html("");
|
||||
var col = localStorage.getItem("column");
|
||||
$("#sort").html("")
|
||||
var col = localStorage.getItem("column")
|
||||
if (col) {
|
||||
var obj = JSON.parse(col);
|
||||
var obj = JSON.parse(col)
|
||||
}
|
||||
Object.keys(obj).forEach(function (key) {
|
||||
var acct = obj[key];
|
||||
var flag = "false";
|
||||
var acct = obj[key]
|
||||
var flag = "false"
|
||||
if (localStorage.getItem("card_" + key) == "true") {
|
||||
flag = "true"
|
||||
}
|
||||
var insert = "";
|
||||
var insert = ""
|
||||
|
||||
if (acct.background) {
|
||||
if (acct.text == "def") {
|
||||
|
||||
} else {
|
||||
if (acct.text == "black") {
|
||||
var txhex = "000000";
|
||||
var txhex = "000000"
|
||||
} else if (acct.text == "white") {
|
||||
var txhex = "ffffff";
|
||||
var txhex = "ffffff"
|
||||
}
|
||||
insert = ' style="background-color:#' + acct.background + '; color: #' + txhex + '" ';
|
||||
insert = ' style="background-color:#' + acct.background + '; color: #' + txhex + '" '
|
||||
}
|
||||
}
|
||||
var user = localStorage.getItem("user_" + acct.domain);
|
||||
var domain = localStorage.getItem("domain_" + acct.domain);
|
||||
var user = localStorage.getItem("user_" + acct.domain)
|
||||
var domain = localStorage.getItem("domain_" + acct.domain)
|
||||
if (!user || !domain) {
|
||||
var acctdata = "";
|
||||
var acctdata = ""
|
||||
} else {
|
||||
var acctdata = user + "@" + domain;
|
||||
var acctdata = user + "@" + domain
|
||||
}
|
||||
|
||||
var html = '<li class="drag-content" data-id="' + key + '" data-flag="' + flag + '"' + insert + '><div class="sorticon"><i class="material-icons">' + icon(acct.type) + '</i></div><div class="sorttitle">' + cap(acct.type, escapeHTML(acct.data), acct.domain) + '</div><div class="sortaction"><a onclick="goColumn(' + key +
|
||||
var html = '<li class="drag-content" data-id="' + key + '" data-flag="' + flag + '"' + insert + '><div class="sorticon"><i class="material-icons">' + icon(acct.type) + '</i></div><div class="sorttitle">' + cap(acct.type, acct.data, acct.domain) + '</div><div class="sortaction"><a onclick="goColumn(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_sort_gothis + '">forward</i></a> <a onclick="removeColumn(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムを削除">cancel</i></a></div><div class="sortacct">' + acctdata + '</div></li>';
|
||||
$("#sort").append(html);
|
||||
});
|
||||
drag();
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムを削除">cancel</i></a></div><div class="sortacct">' + acctdata + '</div></li>'
|
||||
$("#sort").append(html)
|
||||
})
|
||||
drag()
|
||||
}
|
||||
|
||||
//TLのタイトル
|
||||
@@ -62,59 +62,59 @@ function Scap(type, data) {
|
||||
} else if (type == "tootsearch") {
|
||||
return "tootsearch(" + data + ")"
|
||||
} else {
|
||||
console.error("unknown timeline type: " + type);
|
||||
console.error("unknown timeline type: " + type)
|
||||
}
|
||||
}
|
||||
|
||||
//jquery-ui依存
|
||||
function drag() {
|
||||
$('#sort').sortable();
|
||||
$('#sort').disableSelection();
|
||||
$('#sort').sortable()
|
||||
$('#sort').disableSelection()
|
||||
}
|
||||
|
||||
//ソート指定
|
||||
function sort() {
|
||||
var arr = [];
|
||||
var flags = [];
|
||||
var arr = []
|
||||
var flags = []
|
||||
$(".drag-content").each(function (i, elem) {
|
||||
var id = $(this).attr("data-id");
|
||||
var flag = $(this).attr("data-flag");
|
||||
var id = $(this).attr("data-id")
|
||||
var flag = $(this).attr("data-flag")
|
||||
arr.push(id)
|
||||
flags.push(flag);
|
||||
});
|
||||
var col = localStorage.getItem("column");
|
||||
var obj = JSON.parse(col);
|
||||
var newobj = [];
|
||||
flags.push(flag)
|
||||
})
|
||||
var col = localStorage.getItem("column")
|
||||
var obj = JSON.parse(col)
|
||||
var newobj = []
|
||||
for (i = 0; i < arr.length; i++) {
|
||||
var data = obj[arr[i]];
|
||||
var data = obj[arr[i]]
|
||||
var add = {
|
||||
domain: data.domain,
|
||||
type: data.type,
|
||||
data: data.data,
|
||||
background: data.background,
|
||||
text: data.text
|
||||
};
|
||||
newobj.push(add);
|
||||
}
|
||||
newobj.push(add)
|
||||
if (flags[i] == "true") {
|
||||
localStorage.setItem("card_" + i, "true");
|
||||
localStorage.setItem("card_" + i, "true")
|
||||
} else {
|
||||
localStorage.removeItem("card_" + i);
|
||||
localStorage.removeItem("card_" + i)
|
||||
}
|
||||
}
|
||||
var json = JSON.stringify(newobj);
|
||||
localStorage.setItem("column", json);
|
||||
$("#sort").html("");
|
||||
var json = JSON.stringify(newobj)
|
||||
localStorage.setItem("column", json)
|
||||
$("#sort").html("")
|
||||
M.toast({ html: "Sorted", displayLength: 3000 })
|
||||
sortLoad();
|
||||
parseColumn();
|
||||
sortLoad()
|
||||
parseColumn()
|
||||
sortMenu()
|
||||
}
|
||||
//ソートボタントグル
|
||||
function sortMenu() {
|
||||
$("#left-menu div").removeClass("active");
|
||||
$("#sortMenu").addClass("active");
|
||||
$(".menu-content").addClass("hide");
|
||||
$("#sort-box").removeClass("hide");
|
||||
$("#sort").html("");
|
||||
sortLoad();
|
||||
$("#left-menu a").removeClass("active")
|
||||
$("#sortMenu").addClass("active")
|
||||
$(".menu-content").addClass("hide")
|
||||
$("#sort-box").removeClass("hide")
|
||||
$("#sort").html("")
|
||||
sortLoad()
|
||||
}
|
||||
@@ -1,189 +1,310 @@
|
||||
function spotifyConnect() {
|
||||
var auth = "https://accounts.spotify.com/authorize?client_id=0f18e54abe0b4aedb4591e353d3aff69&redirect_uri=https://thedesk.top/spotify-connect&response_type=code&scope=user-read-currently-playing";
|
||||
var platform = localStorage.getItem("platform");
|
||||
if (platform == "win32") {
|
||||
postMessage(["openUrl", auth], "*");
|
||||
postMessage(["sendSinmpleIpc", "quit"], "*");
|
||||
} else {
|
||||
auth = auth + "&state=code";
|
||||
$("#spotify-code-show").removeClass("hide");
|
||||
postMessage(["openUrl", auth], "*");
|
||||
}
|
||||
var auth = 'https://spotify.thedesk.top/connect'
|
||||
$('#spotify-code-show').removeClass('hide')
|
||||
postMessage(['openUrl', auth], '*')
|
||||
}
|
||||
function spotifyAuth() {
|
||||
var code = $("#spotify-code").val();
|
||||
localStorage.setItem("spotify", "code");
|
||||
localStorage.setItem("spotify-refresh", code);
|
||||
$("#spotify-code-show").addClass("hide");
|
||||
$("#spotify-enable").addClass("disabled");
|
||||
$("#spotify-disable").removeClass("disabled");
|
||||
var code = $('#spotify-code').val()
|
||||
localStorage.setItem('spotify-token', code)
|
||||
$('#spotify-code-show').addClass('hide')
|
||||
$('#spotify-enable').addClass('disabled')
|
||||
$('#spotify-disable').removeClass('disabled')
|
||||
}
|
||||
function spotifyDisconnect() {
|
||||
localStorage.removeItem("spotify");
|
||||
localStorage.removeItem("spotify-refresh");
|
||||
checkSpotify();
|
||||
var start = 'https://spotify.thedesk.top/disconnect?code=' + localStorage.getItem('spotify-token')
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
})
|
||||
.then(function (response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function (text) {
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json()
|
||||
})
|
||||
.catch(function (error) {
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function (json) {
|
||||
if (!json.success) alert('error')
|
||||
localStorage.removeItem('spotify-token')
|
||||
checkSpotify()
|
||||
})
|
||||
}
|
||||
function checkSpotify() {
|
||||
if (localStorage.getItem("spotify")) {
|
||||
$("#spotify-enable").addClass("disabled");
|
||||
$("#spotify-disable").removeClass("disabled");
|
||||
if (localStorage.getItem('spotify-token')) {
|
||||
$('#spotify-enable').addClass('disabled')
|
||||
$('#spotify-disable').removeClass('disabled')
|
||||
} else {
|
||||
$("#spotify-enable").removeClass("disabled");
|
||||
$("#spotify-disable").addClass("disabled");
|
||||
$('#spotify-enable').removeClass('disabled')
|
||||
$('#spotify-disable').addClass('disabled')
|
||||
}
|
||||
var content = localStorage.getItem("np-temp");
|
||||
if (!content || content == "" || content == "null") {
|
||||
var content = "#NowPlaying {song} / {album} / {artist}\n{url} #SpotifyWithTheDesk";
|
||||
var content = localStorage.getItem('np-temp')
|
||||
if (!content || content == '' || content == 'null') {
|
||||
var content = '#NowPlaying {song} / {album} / {artist}\n{url} #SpotifyWithTheDesk'
|
||||
}
|
||||
$("#np-temp").val(content);
|
||||
var flag = localStorage.getItem("artwork");
|
||||
$('#np-temp').val(content)
|
||||
var flag = localStorage.getItem('artwork')
|
||||
if (flag) {
|
||||
$("#awk_yes").prop("checked", true);
|
||||
$('#awk_yes').prop('checked', true)
|
||||
} else {
|
||||
$("#awk_no").prop("checked", true);
|
||||
$('#awk_no').prop('checked', true)
|
||||
}
|
||||
var flag2 = localStorage.getItem('complete-artwork')
|
||||
if (flag2) {
|
||||
$('#amw_yes').prop('checked', true)
|
||||
} else {
|
||||
$('#amw_no').prop('checked', true)
|
||||
}
|
||||
}
|
||||
function spotifyFlagSave() {
|
||||
var awk = $("[name=awk]:checked").val();
|
||||
if (awk == "yes") {
|
||||
localStorage.setItem("artwork", "yes");
|
||||
M.toast({ html: lang.lang_spotify_img, displayLength: 3000 });
|
||||
var awk = $('[name=awk]:checked').val()
|
||||
if (awk == 'yes') {
|
||||
localStorage.setItem('artwork', 'yes')
|
||||
M.toast({ html: lang.lang_spotify_img, displayLength: 3000 })
|
||||
} else {
|
||||
localStorage.removeItem("artwork");
|
||||
M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 });
|
||||
localStorage.removeItem('artwork')
|
||||
M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 })
|
||||
}
|
||||
}
|
||||
function aMusicFlagSave() {
|
||||
var awk = $('[name=amw]:checked').val()
|
||||
if (awk == 'yes') {
|
||||
localStorage.setItem('complete-artwork', 'yes')
|
||||
M.toast({ html: lang.lang_spotify_img, displayLength: 3000 })
|
||||
} else {
|
||||
localStorage.removeItem('complete-artwork')
|
||||
M.toast({ html: lang.lang_spotify_imgno, displayLength: 3000 })
|
||||
}
|
||||
}
|
||||
function nowplaying(mode) {
|
||||
if (mode == "spotify") {
|
||||
var start = "https://thedesk.top/now-playing?at=" + localStorage.getItem("spotify") + "&rt=" + localStorage.getItem("spotify-refresh");
|
||||
var at = localStorage.getItem("spotify");
|
||||
if (mode == 'spotify') {
|
||||
var start = 'https://spotify.thedesk.top/current-playing?code=' + localStorage.getItem('spotify-token')
|
||||
var at = localStorage.getItem('spotify-token')
|
||||
if (at) {
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
method: 'GET',
|
||||
headers: {
|
||||
"content-type": "application/json"
|
||||
}
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
})
|
||||
.then(function(response) {
|
||||
.then(function (response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
response.text().then(function (text) {
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
.catch(function (error) {
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
console.table(json);
|
||||
.then(function (jsonRaw) {
|
||||
var code = jsonRaw.token
|
||||
localStorage.setItem('spotify-token', code)
|
||||
var json = jsonRaw.data
|
||||
console.table(json)
|
||||
if (json.length < 1) {
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
var item = json.item;
|
||||
var img = item.album.images[0].url;
|
||||
var flag = localStorage.getItem("artwork");
|
||||
var item = json.item
|
||||
var img = item.album.images[0].url
|
||||
var flag = localStorage.getItem('artwork')
|
||||
if (flag) {
|
||||
postMessage(["bmpImage", [img, 0]], "*");
|
||||
postMessage(['bmpImage', [img, 0]], '*')
|
||||
}
|
||||
var content = localStorage.getItem("np-temp");
|
||||
if (!content || content == "" || content == "null") {
|
||||
var content = "#NowPlaying {song} / {album} / {artist}\n{url}";
|
||||
var content = localStorage.getItem('np-temp')
|
||||
if (!content || content == '' || content == 'null') {
|
||||
var content = '#NowPlaying {song} / {album} / {artist}\n{url}'
|
||||
}
|
||||
var regExp = new RegExp("{song}", "g");
|
||||
content = content.replace(regExp, item.name);
|
||||
var regExp = new RegExp("{album}", "g");
|
||||
content = content.replace(regExp, item.album.name);
|
||||
var regExp = new RegExp("{artist}", "g");
|
||||
content = content.replace(regExp, item.artists[0].name);
|
||||
var regExp = new RegExp("{url}", "g");
|
||||
content = content.replace(regExp, item.external_urls.spotify);
|
||||
var regExp = new RegExp("{composer}", "g");
|
||||
content = content.replace(regExp, "");
|
||||
var regExp = new RegExp("{hz}", "g");
|
||||
content = content.replace(regExp, "");
|
||||
var regExp = new RegExp("{bitRate}", "g");
|
||||
content = content.replace(regExp, "");
|
||||
var regExp = new RegExp("{lyricist}", "g");
|
||||
content = content.replace(regExp, "");
|
||||
var regExp = new RegExp("{bpm}", "g");
|
||||
content = content.replace(regExp, "");
|
||||
var regExp = new RegExp("{genre}", "g");
|
||||
content = content.replace(regExp, "");
|
||||
$("#textarea").val(content);
|
||||
});
|
||||
var regExp = new RegExp('{song}', 'g')
|
||||
content = content.replace(regExp, item.name)
|
||||
var regExp = new RegExp('{album}', 'g')
|
||||
content = content.replace(regExp, item.album.name)
|
||||
var regExp = new RegExp('{artist}', 'g')
|
||||
content = content.replace(regExp, item.artists[0].name)
|
||||
var regExp = new RegExp('{url}', 'g')
|
||||
content = content.replace(regExp, item.external_urls.spotify)
|
||||
var regExp = new RegExp('{composer}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{hz}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{bitRate}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{lyricist}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{bpm}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{genre}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
$('#textarea').val(content)
|
||||
})
|
||||
} else {
|
||||
Swal.fire({
|
||||
type: "info",
|
||||
title: lang.lang_spotify_acct
|
||||
});
|
||||
type: 'info',
|
||||
title: lang.lang_spotify_acct,
|
||||
})
|
||||
}
|
||||
} else if (mode == 'itunes') {
|
||||
postMessage(['itunes', ''], '*')
|
||||
} else if (mode == 'lastFm') {
|
||||
var user = localStorage.getItem('lastFmUser')
|
||||
var start = 'https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=' + user + '&limit=1&api_key=8f113803bfea951b6dde9e56d32458b2&format=json'
|
||||
|
||||
if (user) {
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
})
|
||||
.then(function (response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function (text) {
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json()
|
||||
})
|
||||
.catch(function (error) {
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function (json) {
|
||||
console.table(json)
|
||||
if (!json || !json.recenttracks) {
|
||||
console.error('no data')
|
||||
return false
|
||||
}
|
||||
var item = json.recenttracks.track[0]
|
||||
if (!item['@attr']) return false
|
||||
var img = item.image[3]['#text']
|
||||
var flag = localStorage.getItem('artwork')
|
||||
if (flag && img != 'https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png' && img) {
|
||||
postMessage(['bmpImage', [img, 0]], '*')
|
||||
}
|
||||
var content = localStorage.getItem('np-temp')
|
||||
if (!content || content == '' || content == 'null') {
|
||||
var content = '#NowPlaying {song} / {album} / {artist}\n{url}'
|
||||
}
|
||||
var regExp = new RegExp('{song}', 'g')
|
||||
content = content.replace(regExp, item.name)
|
||||
var regExp = new RegExp('{album}', 'g')
|
||||
content = content.replace(regExp, item.album['#text'])
|
||||
var regExp = new RegExp('{artist}', 'g')
|
||||
content = content.replace(regExp, item.artist['#text'])
|
||||
var regExp = new RegExp('{url}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{composer}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{hz}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{bitRate}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{lyricist}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{bpm}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{genre}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
$('#textarea').val(content)
|
||||
})
|
||||
} else {
|
||||
Swal.fire({
|
||||
type: 'info',
|
||||
title: lang.lang_spotify_acct,
|
||||
})
|
||||
}
|
||||
} else if (mode == "itunes") {
|
||||
postMessage(["itunes", ""], "*");
|
||||
}
|
||||
}
|
||||
function npCore(arg) {
|
||||
if (arg.cmd) {
|
||||
console.error(arg);
|
||||
return;
|
||||
async function npCore(arg) {
|
||||
console.table(arg)
|
||||
var content = localStorage.getItem('np-temp')
|
||||
if (!content || content == '' || content == 'null') {
|
||||
var content = '#NowPlaying {song} / {album} / {artist}\n{url}'
|
||||
}
|
||||
console.table(arg);
|
||||
var content = localStorage.getItem("np-temp");
|
||||
if (!content || content == "" || content == "null") {
|
||||
var content = "#NowPlaying {song} / {album} / {artist}\n{url}";
|
||||
}
|
||||
var flag = localStorage.getItem("artwork");
|
||||
var platform = localStorage.getItem("platform");
|
||||
if (platform == "win32") {
|
||||
var flag = localStorage.getItem('artwork')
|
||||
var platform = localStorage.getItem('platform')
|
||||
var aaw = { aaw: '', album: '' }
|
||||
if (platform == 'win32') {
|
||||
if (flag && arg.path) {
|
||||
media(arg.path, "image/png", "new");
|
||||
media(arg.path, 'image/png', 'new')
|
||||
}
|
||||
} else if (platform == "darwin") {
|
||||
} else if (platform == 'darwin') {
|
||||
if (flag && arg.artwork) {
|
||||
media(arg.artwork, "image/png", "new");
|
||||
media(arg.artwork, 'image/png', 'new')
|
||||
} else if (flag && localStorage.getItem('complete-artwork')) {
|
||||
var q = arg.artist + ' ' + arg.album.name + ' ' + arg.name
|
||||
aaw = await getUnknownAA(q)
|
||||
postMessage(['bmpImage', [aaw.aaw, 0]], '*')
|
||||
}
|
||||
}
|
||||
var regExp = new RegExp("{song}", "g");
|
||||
content = content.replace(regExp, arg.name);
|
||||
var regExp = new RegExp("{album}", "g");
|
||||
var regExp = new RegExp('{song}', 'g')
|
||||
content = content.replace(regExp, arg.name)
|
||||
var regExp = new RegExp('{album}', 'g')
|
||||
if (arg.album) {
|
||||
if (arg.album.name) {
|
||||
content = content.replace(regExp, arg.album.name);
|
||||
content = content.replace(regExp, arg.album.name)
|
||||
} else {
|
||||
if (aaw.album) content = content.replace(regExp, aaw.album)
|
||||
content = content.replace(regExp, '-')
|
||||
}
|
||||
} else {
|
||||
if (aaw.album) content = content.replace(regExp, aaw.album)
|
||||
content = content.replace(regExp, '-')
|
||||
}
|
||||
var regExp = new RegExp("{artist}", "g");
|
||||
content = content.replace(regExp, arg.artist);
|
||||
var regExp = new RegExp("{url}", "g");
|
||||
content = content.replace(regExp, "");
|
||||
var regExp = new RegExp("{composer}", "g");
|
||||
content = content.replace(regExp, arg.composer);
|
||||
var regExp = new RegExp("{hz}", "g");
|
||||
content = content.replace(regExp, arg.sampleRate / 1000 + "kHz");
|
||||
var regExp = new RegExp("{lyricist}", "g");
|
||||
content = content.replace(regExp, "");
|
||||
var regExp = new RegExp("{bpm}", "g");
|
||||
content = content.replace(regExp, "");
|
||||
var regExp = new RegExp("{bitRate}", "g");
|
||||
content = content.replace(regExp, arg.bitRate + "kbps");
|
||||
var regExp = new RegExp("{genre}", "g");
|
||||
content = content.replace(regExp, arg.genre);
|
||||
$("#textarea").val(content);
|
||||
var regExp = new RegExp('{artist}', 'g')
|
||||
content = content.replace(regExp, arg.artist)
|
||||
var regExp = new RegExp('{url}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{composer}', 'g')
|
||||
content = content.replace(regExp, arg.composer)
|
||||
var regExp = new RegExp('{hz}', 'g')
|
||||
content = content.replace(regExp, arg.sampleRate / 1000 + 'kHz')
|
||||
var regExp = new RegExp('{lyricist}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{bpm}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{bitRate}', 'g')
|
||||
content = content.replace(regExp, arg.bitRate + 'kbps')
|
||||
var regExp = new RegExp('{genre}', 'g')
|
||||
content = content.replace(regExp, arg.genre)
|
||||
$('#textarea').val(content)
|
||||
}
|
||||
function spotifySave() {
|
||||
var temp = $("#np-temp").val();
|
||||
localStorage.setItem("np-temp", temp);
|
||||
M.toast({ html: lang.lang_spotify_np, displayLength: 3000 });
|
||||
var temp = $('#np-temp').val()
|
||||
localStorage.setItem('np-temp', temp)
|
||||
M.toast({ html: lang.lang_spotify_np, displayLength: 3000 })
|
||||
}
|
||||
if (location.search) {
|
||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
|
||||
var mode = m[1];
|
||||
var codex = m[2];
|
||||
if (mode == "spotify") {
|
||||
var coder = codex.split(":");
|
||||
localStorage.setItem("spotify", coder[0]);
|
||||
localStorage.setItem("spotify-refresh", coder[1]);
|
||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/)
|
||||
var mode = m[1]
|
||||
var codex = m[2]
|
||||
if (mode == 'spotify') {
|
||||
var coder = codex.split(':')
|
||||
localStorage.setItem('spotify', coder[0])
|
||||
localStorage.setItem('spotify-refresh', coder[1])
|
||||
} else {
|
||||
}
|
||||
}
|
||||
async function getUnknownAA(q) {
|
||||
const start = 'https://itunes.apple.com/search?term=' + q + '&country=JP&entity=song'
|
||||
let promise = await fetch(start, {
|
||||
method: 'GET',
|
||||
})
|
||||
const json = await promise.json()
|
||||
if (!json.resultCount) {
|
||||
return []
|
||||
}
|
||||
const data = json.results[0].artworkUrl100
|
||||
return { aaw: data.replace(/100x100/, '512x512'), album: json.results[0].collectionName }
|
||||
}
|
||||
|
||||
@@ -1,32 +1,20 @@
|
||||
//テーマ適用
|
||||
function themes(theme) {
|
||||
if (!theme) {
|
||||
var theme = localStorage.getItem("theme");
|
||||
var theme = localStorage.getItem('customtheme-id')
|
||||
if (!theme) {
|
||||
var theme = "black";
|
||||
localStorage.setItem("theme", "black");
|
||||
localStorage.setItem('customtheme-id', 'black')
|
||||
theme = 'black'
|
||||
}
|
||||
}
|
||||
var el = document.getElementsByTagName("html")[0]
|
||||
|
||||
el.classList.remove('indigotheme');
|
||||
el.classList.remove('greentheme');
|
||||
el.classList.remove('browntheme');
|
||||
el.classList.remove('blacktheme');
|
||||
el.classList.remove('bluetheme');
|
||||
el.classList.remove('customtheme');
|
||||
el.classList.add(theme + "theme");
|
||||
var font = localStorage.getItem("font");
|
||||
if (font) {
|
||||
el.style.fontFamily = font;
|
||||
postMessage(['themeCSSRequest', theme + '.thedesktheme'], '*')
|
||||
var el = document.getElementsByTagName('html')[0]
|
||||
el.style.backgroundColor = 'var(--bg)'
|
||||
var font = localStorage.getItem('font')
|
||||
if(font) {
|
||||
el.style.fontFamily = font
|
||||
} else {
|
||||
el.style.fontFamily = "";
|
||||
el.style.fontFamily = ''
|
||||
}
|
||||
if (theme == "custom") {
|
||||
if (localStorage.getItem("customtheme-id")) {
|
||||
postMessage(["themeCSSRequest", localStorage.getItem("customtheme-id")], "*")
|
||||
}
|
||||
}
|
||||
el.style.backgroundColor = "var(--bg)";
|
||||
}
|
||||
themes();
|
||||
themes()
|
||||
|
||||
@@ -1,218 +1,299 @@
|
||||
//左下のメッセージ
|
||||
var todcTrigger = null;
|
||||
var todcTrigger = null
|
||||
function todo(mes) {
|
||||
clearInterval(todcTrigger);
|
||||
$("#message").text(mes);
|
||||
$("#message").fadeIn();
|
||||
todcTrigger = setTimeout(todc, 4000);
|
||||
clearInterval(todcTrigger)
|
||||
$('#message').text(mes)
|
||||
$('#message').fadeIn()
|
||||
todcTrigger = setTimeout(todc, 4000)
|
||||
}
|
||||
function todc() {
|
||||
$("#message").fadeOut();
|
||||
$('#message').fadeOut()
|
||||
}
|
||||
//reverse
|
||||
function bottomReverse() {
|
||||
$("#bottom").toggleClass("reverse");
|
||||
$(".leftside").toggleClass("reverse");
|
||||
if ($("#bottom").hasClass("reverse")) {
|
||||
localStorage.removeItem("reverse");
|
||||
$('#bottom').toggleClass('reverse')
|
||||
$('.leftside').toggleClass('reverse')
|
||||
if ($('#bottom').hasClass('reverse')) {
|
||||
localStorage.removeItem('reverse')
|
||||
} else {
|
||||
localStorage.setItem("reverse", "true");
|
||||
localStorage.setItem('reverse', 'true')
|
||||
}
|
||||
}
|
||||
function tips(mode) {
|
||||
postMessage(["sendSinmpleIpc", "endmem"], "*");
|
||||
clearInterval(clockint);
|
||||
clearInterval(spotStart);
|
||||
if (mode == "ver") {
|
||||
tipsToggle();
|
||||
$("#tips-text").html('<img src="../../img/desk.png" width="20" onclick="todo(\'TheDesk is a nice client!: TheDesk ' + localStorage.getItem("ver") + " git: " + gitHash + "')\">TheDesk " + localStorage.getItem("ver") + " {" + gitHash.slice(0, 7) + '} [<i class="material-icons" style="font-size:1.2rem;top: 3px;position: relative;">supervisor_account</i><span id="persons">1+</span>]');
|
||||
localStorage.setItem("tips", "ver");
|
||||
} else if (mode == "clock") {
|
||||
tipsToggle();
|
||||
localStorage.setItem("tips", "clock");
|
||||
clock();
|
||||
} else if (mode == "memory") {
|
||||
tipsToggle();
|
||||
localStorage.setItem("tips", "memory");
|
||||
startmem();
|
||||
} else if (mode == "trend") {
|
||||
tipsToggle();
|
||||
localStorage.setItem("tips", "trend");
|
||||
trendTagonTip();
|
||||
} else if (mode == "spotify") {
|
||||
tipsToggle();
|
||||
localStorage.setItem("tips", "spotify");
|
||||
var json = nowplaying("spotifytips");
|
||||
spotifytips(json);
|
||||
postMessage(['sendSinmpleIpc', 'endmem'], '*')
|
||||
clearInterval(clockint)
|
||||
clearInterval(spotStart)
|
||||
if (mode == 'ver') {
|
||||
tipsToggle()
|
||||
$('#tips-text').html(
|
||||
'<img src="../../img/desk.png" width="20" onclick="todo(\'TheDesk is a nice client!: TheDesk ' +
|
||||
localStorage.getItem('ver') +
|
||||
' git: ' +
|
||||
gitHash +
|
||||
'\')"> ' +
|
||||
localStorage.getItem('ver') +
|
||||
' {' +
|
||||
gitHash.slice(0, 7) +
|
||||
'} [<i class="material-icons" style="font-size:1.2rem;top: 3px;position: relative;">supervisor_account</i><span id="persons">1+</span>]'
|
||||
)
|
||||
localStorage.setItem('tips', 'ver')
|
||||
} else if (mode == 'clock') {
|
||||
tipsToggle()
|
||||
localStorage.setItem('tips', 'clock')
|
||||
clock()
|
||||
} else if (mode == 'memory') {
|
||||
tipsToggle()
|
||||
localStorage.setItem('tips', 'memory')
|
||||
startmem()
|
||||
} else if (mode == 'trend') {
|
||||
tipsToggle()
|
||||
localStorage.setItem('tips', 'trend')
|
||||
trendTagonTip()
|
||||
} else if (mode == 'spotify') {
|
||||
tipsToggle()
|
||||
localStorage.setItem('tips', 'spotify')
|
||||
spotifytips()
|
||||
} else if (mode == 'itunes') {
|
||||
tipsToggle()
|
||||
localStorage.setItem('tips', 'itunes')
|
||||
itunestips()
|
||||
}
|
||||
}
|
||||
//メモリ
|
||||
function startmem() {
|
||||
postMessage(["sendSinmpleIpc", "startmem"], "*");
|
||||
postMessage(['sendSinmpleIpc', 'startmem'], '*')
|
||||
}
|
||||
function renderMem(use, cpu, total) {
|
||||
$("#tips-text").html(escapeHTML(cpu) + "<br>Memory:" + Math.floor(use / 1024 / 1024 / 102.4) / 10 + "/" + Math.floor(total / 1024 / 1024 / 102.4) / 10 + "GB(" + Math.floor((use / total) * 100) + "%)");
|
||||
function renderMem(use, cpu, total, core, uptime) {
|
||||
let day = Math.floor(uptime / 60 / 60 / 24)
|
||||
let hour = Math.floor(uptime / 60 /60 % 24)
|
||||
if(hour < 10) hour = '0' + hour
|
||||
let min = Math.floor(uptime / 60 % 60)
|
||||
if(min < 10) min = '0' + min
|
||||
let sec = Math.floor(uptime % 60)
|
||||
if(sec < 10) sec = '0' + sec
|
||||
let time = `${day ? day + ' days ' : ''}${hour ? hour + ':' : ''}${min}:${sec}`
|
||||
//Intel
|
||||
cpu = cpu.replace('Intel(R)', '').replace('(TM)', '').replace(' CPU', '')
|
||||
//AMD
|
||||
cpu = cpu.replace('AMD ', '').replace(/\s[0-9]{1,3}-Core\sProcessor/, '')
|
||||
$('#tips-text').html(
|
||||
`${escapeHTML(cpu)} x ${core}<br />RAM: ${Math.floor(use / 1024 / 1024 / 102.4) / 10}/${Math.floor(total / 1024 / 1024 / 102.4) / 10}GB(${Math.floor((use / total) * 100)}%) UP:${time}`
|
||||
)
|
||||
}
|
||||
//トレンドタグ
|
||||
function trendTagonTip() {
|
||||
$(".trendtag").remove();
|
||||
var domain = "imastodon.net";
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/trend_tags";
|
||||
$('.trendtag').remove()
|
||||
var domain = 'imastodon.net'
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/v1/trend_tags'
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
method: 'GET',
|
||||
headers: {
|
||||
"content-type": "application/json",
|
||||
Authorization: "Bearer " + at
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
})
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
if (json) {
|
||||
var tags = "";
|
||||
json = json.score;
|
||||
var tags = ''
|
||||
json = json.score
|
||||
Object.keys(json).forEach(function(tag) {
|
||||
tags = tags + "<a onclick=\"tagShow('" + tag + '\')" class="pointer">#' + escapeHTML(tag) + '</a><span class="hide" data-tag="' + tag + "\"> <a onclick=\"tagTL('tag','" + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span><br>';
|
||||
});
|
||||
$("#tips-text").html('<div class="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTagonTip()" style="font-size:12px">refresh</i>:<br>' + tags + "</div>");
|
||||
trendTagonTipInterval();
|
||||
tags =
|
||||
tags +
|
||||
`<a onclick="tagShow('${tag}')" class="pointer">
|
||||
#${escapeHTML(tag)}
|
||||
</a>
|
||||
<span class="hide" data-tag="${tag}" data-regTag="${tag.toLowerCase()}">
|
||||
<a onclick="tagTL('tag','${tag}',false,'add')" class="pointer" title="#${tag}のタイムライン">TL</a>
|
||||
<a onclick="show();brInsert('#${tag}')" class="pointer" title="#${tag}でトゥート">Toot</a>
|
||||
</span><br>`
|
||||
})
|
||||
$('#tips-text').html(
|
||||
'<div class="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTagonTip()" style="font-size:12px">refresh</i>:<br>' +
|
||||
tags +
|
||||
'</div>'
|
||||
)
|
||||
trendTagonTipInterval()
|
||||
} else {
|
||||
$("#tips-text").html("");
|
||||
$('#tips-text').html('')
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
//Spotify
|
||||
spotint = null
|
||||
function spotifytips() {
|
||||
var start = "https://thedesk.top/now-playing?at=" + localStorage.getItem("spotify") + "&rt=" + localStorage.getItem("spotify-refresh");
|
||||
var at = localStorage.getItem("spotify");
|
||||
if (spotint) clearInterval(spotint)
|
||||
var start = 'https://spotify.thedesk.top/current-playing?code=' + localStorage.getItem('spotify-token')
|
||||
var at = localStorage.getItem('spotify-token')
|
||||
if (at) {
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
method: 'GET',
|
||||
headers: {
|
||||
"content-type": "application/json"
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
})
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
var ms = json.progress_ms;
|
||||
var last = 1000 - (ms % 1000);
|
||||
var item = json.item;
|
||||
var img = item.album.images[0].url;
|
||||
var artisttxt = "";
|
||||
.then(function(jsonRaw) {
|
||||
var code = jsonRaw.token
|
||||
localStorage.setItem('spotify-token', code)
|
||||
var json = jsonRaw.data
|
||||
var ms = json.progress_ms
|
||||
if(!ms) {
|
||||
tips('ver')
|
||||
return false
|
||||
}
|
||||
var last = 1000 - (ms % 1000)
|
||||
var item = json.item
|
||||
var img = item.album.images[0].url
|
||||
var artisttxt = ''
|
||||
for (i = 0; i < item.artists.length; i++) {
|
||||
if (i > 0) {
|
||||
artisttxt = artisttxt + "," + item.artists[i].name;
|
||||
artisttxt = artisttxt + ',' + item.artists[i].name
|
||||
} else {
|
||||
artisttxt = item.artists[0].name;
|
||||
artisttxt = item.artists[0].name
|
||||
}
|
||||
}
|
||||
artisttxt = escapeHTML(artisttxt);
|
||||
sleep(last);
|
||||
var tms = item.duration_ms;
|
||||
var per = (ms / item.duration_ms) * 100;
|
||||
ms = ms / 1000;
|
||||
tms = tms / 1000;
|
||||
var s = Math.round(ms) % 60;
|
||||
artisttxt = escapeHTML(artisttxt)
|
||||
sleep(last)
|
||||
var tms = item.duration_ms
|
||||
var per = (ms / item.duration_ms) * 100
|
||||
ms = ms / 1000
|
||||
tms = tms / 1000
|
||||
var s = Math.round(ms) % 60
|
||||
if (s < 10) {
|
||||
s = "0" + s;
|
||||
s = '0' + s
|
||||
}
|
||||
var m = (Math.round(ms) - (Math.round(ms) % 60)) / 60;
|
||||
var ts = Math.round(tms) % 60;
|
||||
var m = (Math.round(ms) - (Math.round(ms) % 60)) / 60
|
||||
var ts = Math.round(tms) % 60
|
||||
if (ts < 10) {
|
||||
ts = "0" + ts;
|
||||
ts = '0' + ts
|
||||
}
|
||||
var tm = (Math.round(tms) - (Math.round(tms) % 60)) / 60;
|
||||
$("#tips-text").html('<div id="spot-box"><i class="material-icons pointer" onclick="spotifytips()" style="font-size:12px">refresh</i><img src="' + img + '" width="20" id="spot-img">' + escapeHTML(item.name) + '<span class="gray sml" id="spot-art">' + artisttxt + '</span><span id="spot-m">' + m + '</span>:<span id="spot-s">' + s + "</span>/" + tm + ":" + ts + '</span></div><div class="progress grey"><div class="determinate spotify-prog grey lighten-2" style="width: ' + per + '%" data-s="' + Math.round(ms) + '" data-total="' + item.duration_ms + '"></div></div>');
|
||||
spotint = setInterval(spotStart, 1000);
|
||||
});
|
||||
var tm = (Math.round(tms) - (Math.round(tms) % 60)) / 60
|
||||
var html = `
|
||||
<div id="spot-box">
|
||||
<div id="spot-refresh">
|
||||
<i class="material-icons pointer" onclick="spotifytips()" style="font-size:20px">refresh</i>
|
||||
<i class="material-icons pointer" onclick="nowplaying('spotify');show()" style="font-size:20px">send</i>
|
||||
</div>
|
||||
<div id="spot-cover">
|
||||
<img src="${img}" id="spot-img" draggable="false">
|
||||
</div>
|
||||
<div id="spot-name">
|
||||
${escapeHTML(item.name)}
|
||||
<span class="gray sml" id="spot-art">${artisttxt}</span>
|
||||
</div>
|
||||
<div id="spot-time">
|
||||
<span id="spot-m">${m}</span>:<span id="spot-s">${s}</span>/${tm}:${ts}</span>
|
||||
</div>
|
||||
<div class="progress grey">
|
||||
<div class="determinate spotify-prog grey lighten-2"
|
||||
style="width:${per}%" data-s="${Math.round(ms)}" data-total="${item.duration_ms}">
|
||||
</div>
|
||||
</div>
|
||||
</div>`
|
||||
$('#tips-text').html(html)
|
||||
spotint = setInterval(spotStart, 1000)
|
||||
})
|
||||
} else {
|
||||
Swal.fire({
|
||||
type: "info",
|
||||
type: 'info',
|
||||
title: lang.lang_spotify_acct
|
||||
});
|
||||
})
|
||||
tips('ver')
|
||||
return false
|
||||
}
|
||||
}
|
||||
function spotStart() {
|
||||
var total = $(".spotify-prog").attr("data-total");
|
||||
var s = $(".spotify-prog").attr("data-s");
|
||||
var news = s * 1 + 1;
|
||||
var per = (news * 100000) / total;
|
||||
var ns = news % 60;
|
||||
var nm = (news - ns) / 60;
|
||||
var total = $('.spotify-prog').attr('data-total')
|
||||
var s = $('.spotify-prog').attr('data-s')
|
||||
var news = s * 1 + 1
|
||||
var per = (news * 100000) / total
|
||||
var ns = news % 60
|
||||
var nm = (news - ns) / 60
|
||||
if (ns < 10) {
|
||||
ns = "0" + ns;
|
||||
ns = '0' + ns
|
||||
}
|
||||
if (per >= 100) {
|
||||
clearInterval(spotStart);
|
||||
spotifytips();
|
||||
clearInterval(spotStart)
|
||||
spotifytips()
|
||||
} else {
|
||||
$("#spot-m").text(nm);
|
||||
$("#spot-s").text(ns);
|
||||
$('#spot-m').text(nm)
|
||||
$('#spot-s').text(ns)
|
||||
}
|
||||
$(".spotify-prog").attr("data-s", news);
|
||||
$(".spotify-prog").css("width", per + "%");
|
||||
$('.spotify-prog').attr('data-s', news)
|
||||
$('.spotify-prog').css('width', per + '%')
|
||||
}
|
||||
|
||||
function trendTagonTipInterval() {
|
||||
setTimeout(trendTagonTip, 6000000);
|
||||
setTimeout(trendTagonTip, 6000000)
|
||||
}
|
||||
//時計
|
||||
var clockint;
|
||||
var clockint
|
||||
function clock() {
|
||||
var now = new Date();
|
||||
var last = 1000 - (now.getTime() % 1000);
|
||||
sleep(last);
|
||||
clockint = setInterval(clockStart, 1000);
|
||||
var now = new Date()
|
||||
var last = 1000 - (now.getTime() % 1000)
|
||||
sleep(last)
|
||||
clockint = setInterval(clockStart, 1000)
|
||||
}
|
||||
function clockStart() {
|
||||
var nowTime = new Date(); // 現在日時を得る
|
||||
var nowHour = nowTime.getHours(); // 時を抜き出す
|
||||
var nowTime = new Date() // 現在日時を得る
|
||||
var nowHour = nowTime.getHours() // 時を抜き出す
|
||||
if (nowHour < 10) {
|
||||
nowHour = "0" + nowHour;
|
||||
nowHour = '0' + nowHour
|
||||
}
|
||||
var nowMin = nowTime.getMinutes(); // 分を抜き出す
|
||||
var nowMin = nowTime.getMinutes() // 分を抜き出す
|
||||
if (nowMin < 10) {
|
||||
nowMin = "0" + nowMin;
|
||||
nowMin = '0' + nowMin
|
||||
}
|
||||
var nowSec = nowTime.getSeconds(); // 秒を抜き出す
|
||||
var nowSec = nowTime.getSeconds() // 秒を抜き出す
|
||||
if (nowSec < 10) {
|
||||
nowSec = "0" + nowSec;
|
||||
nowSec = '0' + nowSec
|
||||
}
|
||||
var msg = nowTime.getFullYear() + "/" + (nowTime.getMonth() + 1) + "/" + nowTime.getDate() + '<span style="font-size:20px; font-family:Open Sans">' + nowHour + ":" + nowMin + ":" + nowSec + "</span>";
|
||||
$("#tips-text").html(msg);
|
||||
var msg =
|
||||
nowTime.getFullYear() +
|
||||
'/' +
|
||||
(nowTime.getMonth() + 1) +
|
||||
'/' +
|
||||
nowTime.getDate() +
|
||||
'<span style="font-size:20px; font-family:Open Sans">' +
|
||||
nowHour +
|
||||
':' +
|
||||
nowMin +
|
||||
':' +
|
||||
nowSec +
|
||||
'</span>'
|
||||
$('#tips-text').html(msg)
|
||||
}
|
||||
function sleep(waitMsec) {
|
||||
var startMsec = new Date();
|
||||
var startMsec = new Date()
|
||||
while (new Date() - startMsec < waitMsec);
|
||||
}
|
||||
function tipsToggle() {
|
||||
$("#tips").toggleClass("hide");
|
||||
$("#tips-menu").toggleClass("hide");
|
||||
}
|
||||
if (localStorage.getItem("tips")) {
|
||||
tips(localStorage.getItem("tips"));
|
||||
$('#tips').toggleClass('hide')
|
||||
$('#tips-menu').toggleClass('hide')
|
||||
}
|
||||
|
||||
|
||||
@@ -1,65 +1,65 @@
|
||||
//プロフ編集
|
||||
//文字系
|
||||
function profedit() {
|
||||
var acct_id = $('#his-data').attr("use-acct");
|
||||
todo("Updating...");
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/accounts/update_credentials";
|
||||
var name = $("#his-name-val").val();
|
||||
var des = $("#his-des-val").val();
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open('PATCH', start, true);
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
||||
httpreq.responseType = "json";
|
||||
var acct_id = $('#his-data').attr("use-acct")
|
||||
todo("Updating...")
|
||||
var domain = localStorage.getItem("domain_" + acct_id)
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
||||
var start = "https://" + domain + "/api/v1/accounts/update_credentials"
|
||||
var name = $("#his-name-val").val()
|
||||
var des = $("#his-des-val").val()
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('PATCH', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = "json"
|
||||
httpreq.send(JSON.stringify({
|
||||
display_name: name,
|
||||
note: des,
|
||||
}));
|
||||
}))
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
$('#his-data').modal('close');
|
||||
todc();
|
||||
$('#his-data').modal('close')
|
||||
todc()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//画像系
|
||||
function imgChange(imgfile, target) {
|
||||
var acct_id = $('#his-data').attr("use-acct");
|
||||
var acct_id = $('#his-data').attr("use-acct")
|
||||
todo("アップロードしています")
|
||||
if (!imgfile.files.length) {
|
||||
console.warn("No Image to upload");
|
||||
return;
|
||||
console.warn("No Image to upload")
|
||||
return
|
||||
}
|
||||
var file = imgfile.files[0];
|
||||
var fr = new FileReader();
|
||||
var file = imgfile.files[0]
|
||||
var fr = new FileReader()
|
||||
fr.onload = function (evt) {
|
||||
var b64 = this.result;
|
||||
var blob = toBlob(b64, 'image/png');
|
||||
var fd = new FormData();
|
||||
fd.append(target, blob);
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/accounts/update_credentials";
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open('PATCH', start, true);
|
||||
httpreq.upload.addEventListener("progress", progshow, false);
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
||||
httpreq.responseType = "json";
|
||||
httpreq.send(fd);
|
||||
var b64 = this.result
|
||||
var blob = toBlob(b64, 'image/png')
|
||||
var fd = new FormData()
|
||||
fd.append(target, blob)
|
||||
var domain = localStorage.getItem("domain_" + acct_id)
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
||||
var start = "https://" + domain + "/api/v1/accounts/update_credentials"
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('PATCH', start, true)
|
||||
httpreq.upload.addEventListener("progress", progshow, false)
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = "json"
|
||||
httpreq.send(fd)
|
||||
httpreq.onreadystatechange = function () {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response;
|
||||
if(this.status!==200){ setLog(start, this.status, this.response); }
|
||||
$('#his-data').modal('close');
|
||||
todc();
|
||||
localStorage.removeItem("image");
|
||||
var json = httpreq.response
|
||||
if(this.status!==200){ setLog(start, this.status, this.response) }
|
||||
$('#his-data').modal('close')
|
||||
todc()
|
||||
localStorage.removeItem("image")
|
||||
}
|
||||
}
|
||||
}
|
||||
$("#prof-change").html($("#prof-change").html());
|
||||
$("#header-change").html($("#header-change").html());
|
||||
fr.readAsDataURL(file);
|
||||
$("#prof-change").html($("#prof-change").html())
|
||||
$("#header-change").html($("#header-change").html())
|
||||
fr.readAsDataURL(file)
|
||||
}
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
//ユーザーデータ表示
|
||||
localStorage.removeItem("history");
|
||||
localStorage.removeItem("history")
|
||||
//コード受信
|
||||
if (location.search) {
|
||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
|
||||
var mode = m[1];
|
||||
var codex = m[2];
|
||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/)
|
||||
var mode = m[1]
|
||||
var codex = m[2]
|
||||
if (mode == "user") {
|
||||
udgEx(codex, "main");
|
||||
udgEx(codex, "main")
|
||||
}
|
||||
}
|
||||
function udgEx(user, acct_id) {
|
||||
if (user == "selector") {
|
||||
user = $("#his-acct").attr("fullname");
|
||||
user = $("#his-acct").attr("fullname")
|
||||
}
|
||||
if (acct_id == "selector") {
|
||||
acct_id = $("#user-acct-sel").val();
|
||||
acct_id = $("#user-acct-sel").val()
|
||||
}
|
||||
if (acct_id == "main") {
|
||||
acct_id = localStorage.getItem("main");
|
||||
acct_id = localStorage.getItem("main")
|
||||
}
|
||||
console.log("Get user data of " + user);
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
console.log("Get user data of " + user)
|
||||
var domain = localStorage.getItem("domain_" + acct_id)
|
||||
if (localStorage.getItem("mode_" + domain) == "misskey") {
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v2/search?resolve=true&q=" + user;
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
||||
var start = "https://" + domain + "/api/v2/search?resolve=true&q=" + encodeURIComponent(user)
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
@@ -36,39 +36,39 @@ function udgEx(user, acct_id) {
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
todo(error)
|
||||
setLog(start, "JSON", error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
if (json.accounts[0]) {
|
||||
var id = json.accounts[0].id;
|
||||
udg(id, acct_id);
|
||||
var id = json.accounts[0].id
|
||||
udg(id, acct_id)
|
||||
} else {
|
||||
postMessage(["openUrl", user], "*");
|
||||
postMessage(["openUrl", user], "*")
|
||||
}
|
||||
});
|
||||
return true;
|
||||
})
|
||||
return true
|
||||
}
|
||||
function udg(user, acct_id) {
|
||||
reset();
|
||||
reset()
|
||||
if (!user) {
|
||||
user = localStorage.getItem("user-id_" + acct_id);
|
||||
user = localStorage.getItem("user-id_" + acct_id)
|
||||
}
|
||||
todo("User Data Loading...");
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
todo("User Data Loading...")
|
||||
var domain = localStorage.getItem("domain_" + acct_id)
|
||||
if (localStorage.getItem("mode_" + domain) == "misskey") {
|
||||
misskeyUdg(user, acct_id);
|
||||
return;
|
||||
misskeyUdg(user, acct_id)
|
||||
return
|
||||
}
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/accounts/" + user;
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
||||
var start = "https://" + domain + "/api/v1/accounts/" + user
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
@@ -79,183 +79,188 @@ function udg(user, acct_id) {
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
todo(error)
|
||||
setLog(start, "JSON", error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
//一つ前のユーザーデータ
|
||||
if (!localStorage.getItem("history")) {
|
||||
$("#his-history-btn").prop("disabled", true);
|
||||
$("#his-history-btn").prop("disabled", true)
|
||||
} else {
|
||||
$("#his-history-btn").prop("disabled", false);
|
||||
$("#his-data").attr("history", localStorage.getItem("history"));
|
||||
$("#his-history-btn").prop("disabled", false)
|
||||
$("#his-data").attr("history", localStorage.getItem("history"))
|
||||
}
|
||||
//moved設定時
|
||||
if (json.moved) {
|
||||
M.toast({
|
||||
html: lang.lang_showontl_movetxt + '<button class="btn-flat toast-action" onclick="udg(\'' + json.moved.id + "','" + acct_id + "')\">" + lang.lang_showontl_movebtn + "</button>",
|
||||
displayLength: 4000
|
||||
});
|
||||
})
|
||||
}
|
||||
$("#his-data").modal("open");
|
||||
$("#his-data").attr("user-id", user);
|
||||
$("#his-data").attr("use-acct", acct_id);
|
||||
$("#his-data").modal("open")
|
||||
$("#his-data").attr("user-id", user)
|
||||
$("#his-data").attr("use-acct", acct_id)
|
||||
if (json.username != json.acct) {
|
||||
//Remote
|
||||
$("#his-data").attr("remote", "true");
|
||||
var fullname = json.acct;
|
||||
$("#his-data").attr("remote", "true")
|
||||
var fullname = json.acct
|
||||
} else {
|
||||
$("#his-data").attr("remote", "false");
|
||||
var fullname = json.acct + "@" + domain;
|
||||
$("#his-data").attr("remote", "false")
|
||||
var fullname = json.acct + "@" + domain
|
||||
}
|
||||
utl(json.id, "", acct_id);
|
||||
flw(json.id, "", acct_id);
|
||||
fer(json.id, "", acct_id);
|
||||
var dis_name = escapeHTML(json.display_name);
|
||||
dis_name = twemoji.parse(dis_name);
|
||||
utlShow(json.id, "", acct_id)
|
||||
flw(json.id, "", acct_id)
|
||||
fer(json.id, "", acct_id)
|
||||
var dis_name = escapeHTML(json.display_name)
|
||||
dis_name = twemoji.parse(dis_name)
|
||||
|
||||
var note = json.note;
|
||||
var note = json.note
|
||||
if (json.emojis) {
|
||||
var actemojick = json.emojis[0];
|
||||
var actemojick = json.emojis[0]
|
||||
} else {
|
||||
var actemojick = false;
|
||||
var actemojick = false
|
||||
}
|
||||
//絵文字があれば
|
||||
if (actemojick) {
|
||||
Object.keys(json.emojis).forEach(function(key5) {
|
||||
var emoji = json.emojis[key5];
|
||||
var shortcode = emoji.shortcode;
|
||||
var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" draggable="false">';
|
||||
var regExp = new RegExp(":" + shortcode + ":", "g");
|
||||
dis_name = dis_name.replace(regExp, emoji_url);
|
||||
note = note.replace(regExp, emoji_url);
|
||||
});
|
||||
var emoji = json.emojis[key5]
|
||||
var shortcode = emoji.shortcode
|
||||
var emoji_url = '<img src="' + emoji.url + '" class="emoji-img" data-emoji="' + shortcode + '" draggable="false">'
|
||||
var regExp = new RegExp(":" + shortcode + ":", "g")
|
||||
dis_name = dis_name.replace(regExp, emoji_url)
|
||||
note = note.replace(regExp, emoji_url)
|
||||
})
|
||||
}
|
||||
//noteの解析
|
||||
//var tags = '<a onclick="tl(\'tag\',\'$1\',' + acct_id +',\'add\')" class="pointer parsed">#$1</a>';
|
||||
//var mens = '<a onclick="udgEx(\'$1\',' + acct_id +')" class="pointer parsed">@$1</a>';
|
||||
//note=note.replace(/#(\S+)/gi, tags)
|
||||
//note=note.replace(/\s@([a-zA-Z_0-9@.-]+)/gi, mens)
|
||||
$("#his-name").html(dis_name);
|
||||
$("#his-acct").text(json.acct);
|
||||
$("#his-acct").attr("fullname", fullname);
|
||||
$("#his-prof").attr("src", json.avatar);
|
||||
$("#his-data").css("background-image", "url(" + json.header + ")");
|
||||
$("#his-sta").text(json.statuses_count);
|
||||
$("#his-follow").text(json.following_count);
|
||||
var flerc = json.followers_count;
|
||||
$("#his-name").html(dis_name)
|
||||
$("#his-acct").text(json.acct)
|
||||
$("#his-acct").attr("fullname", fullname)
|
||||
$("#his-prof").attr("src", json.avatar)
|
||||
$("#his-data").css("background-image", "url(" + json.header + ")")
|
||||
$("#his-sta").text(json.statuses_count)
|
||||
$("#his-follow").text(json.following_count)
|
||||
var flerc = json.followers_count
|
||||
if (flerc < 0) {
|
||||
flerc = "-";
|
||||
flerc = "-"
|
||||
}
|
||||
$("#his-follower").text(flerc);
|
||||
$("#his-since").text(crat(json.created_at));
|
||||
$("#his-openin").attr("data-href", json.url);
|
||||
$("#his-follower").text(flerc)
|
||||
$("#his-since").text(crat(json.created_at))
|
||||
$("#his-openin").attr("data-href", json.url)
|
||||
if (json.fields) {
|
||||
var table = "";
|
||||
var table = ""
|
||||
if (json.fields.length > 0) {
|
||||
$("#his-des").css("max-height", "250px");
|
||||
table = '<table id="his-field">';
|
||||
$("#his-des").css("max-height", "250px")
|
||||
table = '<table id="his-field">'
|
||||
for (var i = 0; i < json.fields.length; i++) {
|
||||
var fname = json.fields[i].name;
|
||||
var fval = json.fields[i].value;
|
||||
var fname = json.fields[i].name
|
||||
var fval = json.fields[i].value
|
||||
if (json.fields[i].verified_at) {
|
||||
var when = lang.lang_showontl_verified + ":" + crat(json.fields[i].verified_at);
|
||||
var color = "rgba(121,189,154,.25);";
|
||||
var when = lang.lang_showontl_verified + ":" + crat(json.fields[i].verified_at)
|
||||
var color = "rgba(121,189,154,.25);"
|
||||
} else {
|
||||
var when = "";
|
||||
var color = "inherit";
|
||||
var when = ""
|
||||
var color = "inherit"
|
||||
}
|
||||
table = table + '<tr><td class="his-field-title">' + escapeHTML(fname) + '</td><td class="his-field-content" title="' + when + '" style="background-color:' + color + '">' + fval + "</td></tr>";
|
||||
table = table + '<tr><td class="his-field-title">' + escapeHTML(fname) + '</td><td class="his-field-content" title="' + when + '" style="background-color:' + color + '">' + fval + "</td></tr>"
|
||||
}
|
||||
table = table + "</table>";
|
||||
$("#his-des").html(twemoji.parse(note));
|
||||
table = table + "</table>"
|
||||
$("#his-des").html(twemoji.parse(note))
|
||||
} else {
|
||||
$("#his-des").css("max-height", "400px");
|
||||
$("#his-des").css("max-height", "400px")
|
||||
}
|
||||
$("#his-table").html(twemoji.parse(table));
|
||||
$("#his-table").html(twemoji.parse(table))
|
||||
} else {
|
||||
$("#his-des").css("max-height", "400px");
|
||||
$("#his-des").css("max-height", "400px")
|
||||
}
|
||||
$("#his-des").html(twemoji.parse(note));
|
||||
$("#his-des").html(twemoji.parse(note))
|
||||
if (json.bot) {
|
||||
$("#his-bot").html(lang.lang_showontl_botacct);
|
||||
$("#his-bot").html(lang.lang_showontl_botacct)
|
||||
}
|
||||
$("#his-des").attr("data-acct", acct_id);
|
||||
$("#his-data").css("background-size", "cover");
|
||||
$("#his-float-timeline").css("height", $("#his-data-show").height() + "px");
|
||||
localStorage.setItem("history", user);
|
||||
$("#his-des").attr("data-acct", acct_id)
|
||||
$("#his-data").css("background-size", "cover")
|
||||
$("#his-float-timeline").css("height", $("#his-data-show").height() + "px")
|
||||
localStorage.setItem("history", user)
|
||||
//自分の時
|
||||
if (json.acct == localStorage.getItem("user_" + acct_id)) {
|
||||
showFav("", acct_id);
|
||||
showBlo("", acct_id);
|
||||
showMut("", acct_id);
|
||||
showDom("", acct_id);
|
||||
showReq("", acct_id);
|
||||
showFrl("", acct_id);
|
||||
$("#his-name-val").val(json.display_name);
|
||||
showFav("", acct_id)
|
||||
showBlo("", acct_id)
|
||||
showMut("", acct_id)
|
||||
showDom("", acct_id)
|
||||
showReq("", acct_id)
|
||||
showFrl("", acct_id)
|
||||
$("#his-name-val").val(json.display_name)
|
||||
if (json.fields.length > 0) {
|
||||
if (json.fields[0]) {
|
||||
$("#his-f1-name").val(json.fields[0].name);
|
||||
$("#his-f1-val").val($.strip_tags(json.fields[0].value));
|
||||
$("#his-f1-name").val(json.fields[0].name)
|
||||
$("#his-f1-val").val($.strip_tags(json.fields[0].value))
|
||||
}
|
||||
if (json.fields[1]) {
|
||||
$("#his-f2-name").val(json.fields[1].name);
|
||||
$("#his-f2-val").val($.strip_tags(json.fields[1].value));
|
||||
$("#his-f2-name").val(json.fields[1].name)
|
||||
$("#his-f2-val").val($.strip_tags(json.fields[1].value))
|
||||
}
|
||||
if (json.fields[2]) {
|
||||
$("#his-f3-name").val(json.fields[2].name);
|
||||
$("#his-f3-val").val($.strip_tags(json.fields[2].value));
|
||||
$("#his-f3-name").val(json.fields[2].name)
|
||||
$("#his-f3-val").val($.strip_tags(json.fields[2].value))
|
||||
}
|
||||
if (json.fields[3]) {
|
||||
$("#his-f4-name").val(json.fields[3].name);
|
||||
$("#his-f4-val").val($.strip_tags(json.fields[3].value));
|
||||
$("#his-f4-name").val(json.fields[3].name)
|
||||
$("#his-f4-val").val($.strip_tags(json.fields[3].value))
|
||||
}
|
||||
}
|
||||
var des = json.note;
|
||||
des = des.replace(/<br \/>/g, "\n");
|
||||
des = $.strip_tags(des);
|
||||
$("#his-des-val").val(des);
|
||||
$("#his-follow-btn").hide();
|
||||
$("#his-block-btn").hide();
|
||||
$("#his-mute-btn").hide();
|
||||
$("#his-notf-btn").hide();
|
||||
$("#his-domain-btn").hide();
|
||||
$("#his-emp-btn").hide();
|
||||
$(".only-my-data").show();
|
||||
$(".only-his-data").hide();
|
||||
var des = json.note
|
||||
des = des.replace(/<br \/>/g, "\n")
|
||||
des = $.strip_tags(des)
|
||||
$("#his-des-val").val(des)
|
||||
$("#his-follow-btn").hide()
|
||||
$("#his-block-btn").hide()
|
||||
$("#his-mute-btn").hide()
|
||||
$("#his-notf-btn").hide()
|
||||
$("#his-domain-btn").hide()
|
||||
$("#his-emp-btn").hide()
|
||||
$(".only-my-data").show()
|
||||
$(".only-his-data").hide()
|
||||
if (localStorage.getItem("main") == acct_id) {
|
||||
$("#his-main-acct").hide();
|
||||
$("#his-main-acct").hide()
|
||||
}
|
||||
} else {
|
||||
relations(user, acct_id);
|
||||
$(".only-my-data").hide();
|
||||
$(".only-his-data").show();
|
||||
relations(user, acct_id)
|
||||
$(".only-my-data").hide()
|
||||
$(".only-his-data").show()
|
||||
}
|
||||
todc()
|
||||
if(json.locked) {
|
||||
$('#his-data').addClass('locked')
|
||||
} else {
|
||||
$('#his-data').removeClass('locked')
|
||||
}
|
||||
todc();
|
||||
//外部データ取得(死かもしれないので)
|
||||
udAdd(acct_id, user, json.url);
|
||||
});
|
||||
udAdd(acct_id, user, json.url)
|
||||
})
|
||||
}
|
||||
function misskeyUdg(user, acct_id) {
|
||||
reset();
|
||||
reset()
|
||||
if (!user) {
|
||||
user = localStorage.getItem("user-id_" + acct_id);
|
||||
user = localStorage.getItem("user-id_" + acct_id)
|
||||
}
|
||||
todo("User Data Loading...");
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
todo("User Data Loading...")
|
||||
var domain = localStorage.getItem("domain_" + acct_id)
|
||||
if (localStorage.getItem("mode_" + domain) != "misskey") {
|
||||
udg(user, acct_id);
|
||||
return;
|
||||
udg(user, acct_id)
|
||||
return
|
||||
}
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/users/show";
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
||||
var start = "https://" + domain + "/api/users/show"
|
||||
fetch(start, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
@@ -269,127 +274,127 @@ function misskeyUdg(user, acct_id) {
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
todo(error)
|
||||
setLog(start, "JSON", error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
//一つ前のユーザーデータ
|
||||
if (!localStorage.getItem("history")) {
|
||||
$("#his-history-btn").prop("disabled", true);
|
||||
$("#his-history-btn").prop("disabled", true)
|
||||
} else {
|
||||
$("#his-history-btn").prop("disabled", false);
|
||||
$("#his-data").attr("history", localStorage.getItem("history"));
|
||||
$("#his-history-btn").prop("disabled", false)
|
||||
$("#his-data").attr("history", localStorage.getItem("history"))
|
||||
}
|
||||
$("#his-data").modal("open");
|
||||
$("#his-data").attr("user-id", user);
|
||||
$("#his-data").attr("use-acct", acct_id);
|
||||
$("#his-data").modal("open")
|
||||
$("#his-data").attr("user-id", user)
|
||||
$("#his-data").attr("use-acct", acct_id)
|
||||
if (json.host) {
|
||||
//Remote
|
||||
$("#his-data").attr("remote", "false");
|
||||
var fullname = json.username + "@" + json.host;
|
||||
$("#his-data").attr("remote", "false")
|
||||
var fullname = json.username + "@" + json.host
|
||||
} else {
|
||||
$("#his-data").attr("remote", "false");
|
||||
var fullname = json.acct + "@" + domain;
|
||||
$("#his-data").attr("remote", "false")
|
||||
var fullname = json.acct + "@" + domain
|
||||
}
|
||||
utl(json.id, "", acct_id);
|
||||
flw(json.id, "", acct_id);
|
||||
fer(json.id, "", acct_id);
|
||||
utlShow(json.id, "", acct_id)
|
||||
flw(json.id, "", acct_id)
|
||||
fer(json.id, "", acct_id)
|
||||
if (json.name) {
|
||||
var dis_name = escapeHTML(json.name);
|
||||
dis_name = twemoji.parse(dis_name);
|
||||
var dis_name = escapeHTML(json.name)
|
||||
dis_name = twemoji.parse(dis_name)
|
||||
} else {
|
||||
var dis_name = json.name;
|
||||
var dis_name = json.name
|
||||
}
|
||||
$("#his-name").html(dis_name);
|
||||
$("#his-acct").text(json.username);
|
||||
$("#his-acct").attr("fullname", fullname);
|
||||
$("#his-prof").attr("src", json.avatarUrl);
|
||||
$("#his-data").css("background-image", "url(" + json.bannerUrl + ")");
|
||||
$("#his-sta").text(json.notesCount);
|
||||
$("#his-follow").text(json.followingCount);
|
||||
$("#his-follower").text(json.followersCount);
|
||||
$("#his-since").text(crat(json.createdAt));
|
||||
var note = escapeHTML(json.description);
|
||||
$("#his-des").html(twemoji.parse(note));
|
||||
$("#his-name").html(dis_name)
|
||||
$("#his-acct").text(json.username)
|
||||
$("#his-acct").attr("fullname", fullname)
|
||||
$("#his-prof").attr("src", json.avatarUrl)
|
||||
$("#his-data").css("background-image", "url(" + json.bannerUrl + ")")
|
||||
$("#his-sta").text(json.notesCount)
|
||||
$("#his-follow").text(json.followingCount)
|
||||
$("#his-follower").text(json.followersCount)
|
||||
$("#his-since").text(crat(json.createdAt))
|
||||
var note = escapeHTML(json.description)
|
||||
$("#his-des").html(twemoji.parse(note))
|
||||
if (json.isCat) {
|
||||
$("#his-bot").html("Cat" + twemoji.parse("😺"));
|
||||
$("#his-bot").html("Cat" + twemoji.parse("😺"))
|
||||
}
|
||||
$("#his-data").css("background-size", "cover");
|
||||
localStorage.setItem("history", user);
|
||||
$("#his-data").css("background-size", "cover")
|
||||
localStorage.setItem("history", user)
|
||||
//自分の時
|
||||
if (json.username == localStorage.getItem("user_" + acct_id) && !json.host) {
|
||||
//showFav('', acct_id);
|
||||
//showMut('', acct_id);
|
||||
//showReq('', acct_id);
|
||||
showFrl("", acct_id);
|
||||
$("#his-name-val").val(json.name);
|
||||
var des = json.note;
|
||||
des = nl2br(des);
|
||||
des = $.strip_tags(des);
|
||||
$("#his-des-val").val(des);
|
||||
$("#his-follow-btn").hide();
|
||||
$("#his-block-btn").hide();
|
||||
$("#his-mute-btn").hide();
|
||||
$("#his-notf-btn").hide();
|
||||
$("#his-domain-btn").hide();
|
||||
$("#his-emp-btn").hide();
|
||||
$(".only-my-data").show();
|
||||
$(".only-his-data").hide();
|
||||
showFrl("", acct_id)
|
||||
$("#his-name-val").val(json.name)
|
||||
var des = json.note
|
||||
des = nl2br(des)
|
||||
des = $.strip_tags(des)
|
||||
$("#his-des-val").val(des)
|
||||
$("#his-follow-btn").hide()
|
||||
$("#his-block-btn").hide()
|
||||
$("#his-mute-btn").hide()
|
||||
$("#his-notf-btn").hide()
|
||||
$("#his-domain-btn").hide()
|
||||
$("#his-emp-btn").hide()
|
||||
$(".only-my-data").show()
|
||||
$(".only-his-data").hide()
|
||||
if (localStorage.getItem("main") == acct_id) {
|
||||
$("#his-main-acct").hide();
|
||||
$("#his-main-acct").hide()
|
||||
}
|
||||
} else {
|
||||
if (json.isFollowing) {
|
||||
//自分がフォローしている
|
||||
$("#his-data").addClass("following");
|
||||
$("#his-follow-btn-text").text(lang.lang_status_unfollow);
|
||||
hisList(user, acct_id);
|
||||
$("#his-data").addClass("following")
|
||||
$("#his-follow-btn-text").text(lang.lang_status_unfollow)
|
||||
hisList(user, acct_id)
|
||||
} else {
|
||||
$("#his-follow-btn-text").text(lang.lang_status_follow);
|
||||
$("#his-follow-btn-text").text(lang.lang_status_follow)
|
||||
}
|
||||
if (json.isFollowed) {
|
||||
//フォローされてる
|
||||
$("#his-relation").text(lang.lang_showontl_followed);
|
||||
$("#his-relation").text(lang.lang_showontl_followed)
|
||||
}
|
||||
$("#his-block-btn").hide();
|
||||
$("#his-block-btn").hide()
|
||||
if (json.isMuted) {
|
||||
$("#his-data").addClass("muting");
|
||||
$("#his-mute-btn-text").text(lang.lang_status_unmute);
|
||||
$("#his-data").addClass("muting")
|
||||
$("#his-mute-btn-text").text(lang.lang_status_unmute)
|
||||
} else {
|
||||
$("#his-mute-btn-text").text(lang.lang_status_mute);
|
||||
$("#his-mute-btn-text").text(lang.lang_status_mute)
|
||||
}
|
||||
$(".only-my-data").hide();
|
||||
$(".only-his-data").show();
|
||||
$(".only-my-data").hide()
|
||||
$(".only-his-data").show()
|
||||
}
|
||||
todc();
|
||||
});
|
||||
todc()
|
||||
})
|
||||
}
|
||||
//一つ前のユーザーデータ表示
|
||||
function historyShow() {
|
||||
var acct_id = $("#his-data").attr("use-acct");
|
||||
var user = $("#his-data").attr("history");
|
||||
udg(user, acct_id, "true");
|
||||
var acct_id = $("#his-data").attr("use-acct")
|
||||
var user = $("#his-data").attr("history")
|
||||
udg(user, acct_id, "true")
|
||||
}
|
||||
//選択アカウントのプロフ
|
||||
function profShow() {
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var user = localStorage.getItem("user-id_" + acct_id);
|
||||
udg(user, acct_id);
|
||||
hide();
|
||||
var acct_id = $("#post-acct-sel").val()
|
||||
var user = localStorage.getItem("user-id_" + acct_id)
|
||||
udg(user, acct_id)
|
||||
hide()
|
||||
}
|
||||
|
||||
//FF関係取得
|
||||
function relations(user, acct_id) {
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/accounts/relationships?id=" + user;
|
||||
var domain = localStorage.getItem("domain_" + acct_id)
|
||||
var at = localStorage.getItem("acct_" + acct_id + "_at")
|
||||
var start = "https://" + domain + "/api/v1/accounts/relationships?id=" + user
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
@@ -400,151 +405,160 @@ function relations(user, acct_id) {
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json();
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
todo(error)
|
||||
setLog(start, "JSON", error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
var json = json[0];
|
||||
var json = json[0]
|
||||
if(json.requested) {
|
||||
//フォロリク中
|
||||
$('#his-data').addClass('following')
|
||||
$("#his-follow-btn-text").text(lang.lang_status_requesting)
|
||||
}
|
||||
if (json.following) {
|
||||
//自分がフォローしている
|
||||
$("#his-data").addClass("following");
|
||||
$("#his-follow-btn-text").text(lang.lang_status_unfollow);
|
||||
hisList(user, acct_id);
|
||||
$("#his-data").addClass("following")
|
||||
$("#his-follow-btn-text").text(lang.lang_status_unfollow)
|
||||
hisList(user, acct_id)
|
||||
} else {
|
||||
$("#his-follow-btn-text").text(lang.lang_status_follow);
|
||||
$("#his-follow-btn-text").text(lang.lang_status_follow)
|
||||
}
|
||||
if (json.followed_by) {
|
||||
//フォローされてる
|
||||
$("#his-relation").text(lang.lang_showontl_followed);
|
||||
$("#his-relation").text(lang.lang_showontl_followed)
|
||||
}
|
||||
if (json.blocking) {
|
||||
$("#his-data").addClass("blocking");
|
||||
$("#his-block-btn-text").text(lang.lang_status_unblock);
|
||||
$("#his-data").addClass("blocking")
|
||||
$("#his-block-btn-text").text(lang.lang_status_unblock)
|
||||
} else {
|
||||
$("#his-block-btn-text").text(lang.lang_status_block);
|
||||
$("#his-block-btn-text").text(lang.lang_status_block)
|
||||
}
|
||||
if (json.muting) {
|
||||
$("#his-data").addClass("muting");
|
||||
$("#his-mute-btn-text").text(lang.lang_status_unmute);
|
||||
$("#his-data").addClass("muting")
|
||||
$("#his-mute-btn-text").text(lang.lang_status_unmute)
|
||||
} else {
|
||||
$("#his-mute-btn-text").text(lang.lang_status_mute);
|
||||
$("#his-mute-btn-text").text(lang.lang_status_mute)
|
||||
}
|
||||
if (json.muting_notifications) {
|
||||
$("#his-data").addClass("mutingNotf");
|
||||
$("#his-notf-btn-text").text(lang.lang_showontl_notf + lang.lang_status_unmute);
|
||||
$("#his-data").addClass("mutingNotf")
|
||||
$("#his-notf-btn-text").text(lang.lang_showontl_notf + lang.lang_status_unmute)
|
||||
} else {
|
||||
$("#his-notf-btn-text").text(lang.lang_showontl_notf + lang.lang_status_mute);
|
||||
$("#his-notf-btn-text").text(lang.lang_showontl_notf + lang.lang_status_mute)
|
||||
}
|
||||
if (json.domain_blocking) {
|
||||
$("#his-data").addClass("blockingDom");
|
||||
$("#his-domain-btn-text").text(lang.lang_showontl_domain + lang.lang_status_unblock);
|
||||
$("#his-data").addClass("blockingDom")
|
||||
$("#his-domain-btn-text").text(lang.lang_showontl_domain + lang.lang_status_unblock)
|
||||
} else {
|
||||
$("#his-domain-btn-text").text(lang.lang_showontl_domain + lang.lang_status_block);
|
||||
$("#his-domain-btn-text").text(lang.lang_showontl_domain + lang.lang_status_block)
|
||||
}
|
||||
//Endorsed
|
||||
if (json.endorsed) {
|
||||
$("#his-end-btn").addClass("endorsed");
|
||||
$("#his-end-btn-text").text(lang.lang_status_unendorse);
|
||||
$("#his-end-btn").addClass("endorsed")
|
||||
$("#his-end-btn-text").text(lang.lang_status_unendorse)
|
||||
} else {
|
||||
$("#his-end-btn").removeClass("endorsed");
|
||||
$("#his-end-btn-text").text(lang.lang_status_endorse);
|
||||
$("#his-end-btn").removeClass("endorsed")
|
||||
$("#his-end-btn-text").text(lang.lang_status_endorse)
|
||||
}
|
||||
//Blocked
|
||||
if (json.blocked_by) {
|
||||
$("#my-data-nav .btn").addClass("disabled");
|
||||
$(".his-var-content").hide();
|
||||
$("#his-float-blocked").show();
|
||||
$("#his-follow-btn").hide();
|
||||
$("#my-data-nav .btn").addClass("disabled")
|
||||
$(".his-var-content").hide()
|
||||
$("#his-float-blocked").show()
|
||||
$("#his-follow-btn").hide()
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
function profbrws() {
|
||||
var url = $("#his-openin").attr("data-href");
|
||||
postMessage(["openUrl", url], "*");
|
||||
var url = $("#his-openin").attr("data-href")
|
||||
postMessage(["openUrl", url], "*")
|
||||
}
|
||||
function setMain() {
|
||||
var acct_id = $("#his-data").attr("use-acct");
|
||||
localStorage.setItem("main", acct_id);
|
||||
multiSelector(true);
|
||||
M.toast({ html: lang.lang_manager_mainAcct, displayLength: 3000 });
|
||||
var acct_id = $("#his-data").attr("use-acct")
|
||||
localStorage.setItem("main", acct_id)
|
||||
multiSelector(true)
|
||||
M.toast({ html: lang.lang_manager_mainAcct, displayLength: 3000 })
|
||||
}
|
||||
//オールリセット
|
||||
function hisclose() {
|
||||
$("#his-data").modal("close");
|
||||
reset();
|
||||
$("#his-data").attr("history", "");
|
||||
localStorage.removeItem("history");
|
||||
$("#his-data").modal("close")
|
||||
reset()
|
||||
$("#his-data").attr("history", "")
|
||||
localStorage.removeItem("history")
|
||||
}
|
||||
function reset() {
|
||||
$(".his-var-content:eq(0)").show();
|
||||
$(".his-var-content:gt(0)").hide();
|
||||
$("#my-data-nav .btn").removeClass("disabled");
|
||||
$(".active-back").removeClass("active-back");
|
||||
$(".column-first").addClass("active-back");
|
||||
$("#his-name").text("Loading");
|
||||
$("#his-acct").text("");
|
||||
$("#his-prof").attr("src", "../../img/loading.svg");
|
||||
$("#his-data").css("background-image", "url(../../img/loading.svg)");
|
||||
$("#his-sta").text("");
|
||||
$("#his-follow").text("");
|
||||
$("#his-follower").text("");
|
||||
$("#his-des").html("");
|
||||
$("#his-data").css("background-size", "cover");
|
||||
$("#his-since").text("");
|
||||
$("#his-data").removeClass("following");
|
||||
$("#his-data").removeClass("muting");
|
||||
$("#his-data").removeClass("blocking");
|
||||
$("#his-data").removeClass("mutingNotf");
|
||||
$("#his-data").removeClass("blockingDom");
|
||||
$("#his-end-btn").removeClass("endorsed");
|
||||
$("#his-des").css("max-height", "250px");
|
||||
$("#his-bot").html("");
|
||||
$("#his-follow-btn").show();
|
||||
$("#his-block-btn").show();
|
||||
$("#his-mute-btn").show();
|
||||
$("#his-notf-btn").show();
|
||||
$("#his-domain-btn").show();
|
||||
$("#his-emp-btn").show();
|
||||
$("#his-follow-btn-text").text(lang.lang_status_follow);
|
||||
$("#his-mute-btn-text").text(lang.lang_status_mute);
|
||||
$("#his-block-btn-text").text(lang.lang_status_block);
|
||||
$("#his-notf-btn").text(lang.lang_showontl_notf + lang.lang_status_mute);
|
||||
$("#his-domain-btn").text(lang.lang_showontl_domain + lang.lang_status_block);
|
||||
$("#his-relation").text("");
|
||||
$(".cont-series").html("");
|
||||
$("#domainblock").val("");
|
||||
$("#his-lists-a").html(lang.lang_showontl_listwarn);
|
||||
$("#his-lists-b").html("");
|
||||
$("#his-name-val").val("");
|
||||
$("#his-des-val").val("");
|
||||
$("#his-f1-name").val("");
|
||||
$("#his-f1-val").val("");
|
||||
$("#his-f2-name").val("");
|
||||
$("#his-f2-val").val("");
|
||||
$("#his-f3-name").val("");
|
||||
$("#his-f3-val").val("");
|
||||
$("#his-f4-name").val("");
|
||||
$("#his-f4-val").val("");
|
||||
$("#his-endorse").html("");
|
||||
$("#his-openin").attr("data-href", "");
|
||||
$("#his-float-timeline").show();
|
||||
$("#his-float-blocked").hide();
|
||||
$("#his-main-acct").show();
|
||||
$("#his-proof-prof").html("");
|
||||
$(".his-var-content:eq(0)").show()
|
||||
$(".his-var-content:gt(0)").hide()
|
||||
$("#my-data-nav .btn").removeClass("disabled")
|
||||
$(".active-back").removeClass("active-back")
|
||||
$(".column-first").addClass("active-back")
|
||||
$("#his-name").text("Loading")
|
||||
$("#his-acct").text("")
|
||||
$("#his-prof").attr("src", "../../img/loading.svg")
|
||||
$("#his-data").css("background-image", "url(../../img/loading.svg)")
|
||||
$("#his-sta").text("")
|
||||
$("#his-follow").text("")
|
||||
$("#his-follower").text("")
|
||||
$("#his-des").html("")
|
||||
$("#his-data").css("background-size", "cover")
|
||||
$("#his-since").text("")
|
||||
$("#his-data").removeClass("following")
|
||||
$("#his-data").removeClass("muting")
|
||||
$("#his-data").removeClass("blocking")
|
||||
$("#his-data").removeClass("mutingNotf")
|
||||
$("#his-data").removeClass("blockingDom")
|
||||
$("#his-end-btn").removeClass("endorsed")
|
||||
$("#his-des").css("max-height", "250px")
|
||||
$("#his-bot").html("")
|
||||
$("#his-follow-btn").show()
|
||||
$("#his-block-btn").show()
|
||||
$("#his-mute-btn").show()
|
||||
$("#his-notf-btn").show()
|
||||
$("#his-domain-btn").show()
|
||||
$("#his-emp-btn").show()
|
||||
$("#his-follow-btn-text").text(lang.lang_status_follow)
|
||||
$("#his-mute-btn-text").text(lang.lang_status_mute)
|
||||
$("#his-block-btn-text").text(lang.lang_status_block)
|
||||
$("#his-notf-btn").text(lang.lang_showontl_notf + lang.lang_status_mute)
|
||||
$("#his-domain-btn").text(lang.lang_showontl_domain + lang.lang_status_block)
|
||||
$("#his-relation").text("")
|
||||
$(".cont-series").html("")
|
||||
$("#domainblock").val("")
|
||||
$("#his-lists-a").html(lang.lang_showontl_listwarn)
|
||||
$("#his-lists-b").html("")
|
||||
$("#his-name-val").val("")
|
||||
$("#his-des-val").val("")
|
||||
$("#his-f1-name").val("")
|
||||
$("#his-f1-val").val("")
|
||||
$("#his-f2-name").val("")
|
||||
$("#his-f2-val").val("")
|
||||
$("#his-f3-name").val("")
|
||||
$("#his-f3-val").val("")
|
||||
$("#his-f4-name").val("")
|
||||
$("#his-f4-val").val("")
|
||||
$("#his-endorse").html("")
|
||||
$("#his-openin").attr("data-href", "")
|
||||
$("#his-float-timeline").show()
|
||||
$("#his-float-blocked").hide()
|
||||
$("#his-main-acct").show()
|
||||
$("#his-proof-prof").html("")
|
||||
$('#his-data').removeClass('locked')
|
||||
$('#his-data').removeClass('requesting')
|
||||
}
|
||||
$("#my-data-nav .anc-link").on("click", function() {
|
||||
var target = $(this).attr("go");
|
||||
var target = $(this).attr("go")
|
||||
if (target) {
|
||||
$("#my-data-nav .anc-link").removeClass("active-back");
|
||||
$(this).addClass("active-back");
|
||||
$(target).show();
|
||||
$(".his-var-content:not(" + target + ")").hide();
|
||||
const title = $(this).html()
|
||||
$('#his-data-title').html(title)
|
||||
$("#my-data-nav .anc-link").removeClass("active-back")
|
||||
$(this).addClass("active-back")
|
||||
$(target).show()
|
||||
$(".his-var-content:not(" + target + ")").hide()
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
479
app/main.js
@@ -1,296 +1,319 @@
|
||||
var dirname = __dirname;
|
||||
var dir = "file://" + __dirname;
|
||||
var base = dir + "/view/";
|
||||
var dirname = __dirname
|
||||
var dir = 'file://' + __dirname
|
||||
var base = dir + '/view/'
|
||||
// Electronのモジュール
|
||||
const electron = require("electron");
|
||||
const fs = require("fs");
|
||||
const language = require("./main/language.js");
|
||||
const css = require("./main/css.js");
|
||||
const dl = require("./main/dl.js");
|
||||
const img = require("./main/img.js");
|
||||
const np = require("./main/np.js");
|
||||
const systemFunc = require("./main/system.js");
|
||||
const Menu = electron.Menu;
|
||||
const join = require("path").join;
|
||||
|
||||
const electron = require('electron')
|
||||
// アプリケーションをコントロールするモジュール
|
||||
const app = electron.app;
|
||||
const app = electron.app
|
||||
// Electronの初期化完了後に実行
|
||||
app.on('ready', createWindow)
|
||||
const fs = require('fs')
|
||||
const language = require('./main/language.js')
|
||||
const css = require('./main/css.js')
|
||||
const dl = require('./main/dl.js')
|
||||
const img = require('./main/img.js')
|
||||
const np = require('./main/np.js')
|
||||
const systemFunc = require('./main/system.js')
|
||||
const Menu = electron.Menu
|
||||
const join = require('path').join
|
||||
// ウィンドウを作成するモジュール
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
const BrowserWindow = electron.BrowserWindow
|
||||
// メインウィンドウはGCされないようにグローバル宣言
|
||||
let mainWindow;
|
||||
let mainWindow
|
||||
|
||||
// アプリが多重起動しないようにする
|
||||
const gotTheLock = app.requestSingleInstanceLock();
|
||||
const gotTheLock = app.requestSingleInstanceLock()
|
||||
|
||||
if (!gotTheLock) {
|
||||
app.quit();
|
||||
app.quit()
|
||||
} else {
|
||||
app.on("second-instance", () => {
|
||||
app.on('second-instance', () => {
|
||||
// 多重起動を試みた場合、既に存在するウィンドウにフォーカスを移す
|
||||
// Someone tried to run a second instance, we should focus our window.
|
||||
if (mainWindow) {
|
||||
if (mainWindow.isMinimized()) mainWindow.restore();
|
||||
mainWindow.focus();
|
||||
if (mainWindow.isMinimized()) mainWindow.restore()
|
||||
mainWindow.focus()
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
if (process.argv.indexOf("--dev") === -1) {
|
||||
var packaged = true;
|
||||
} else {
|
||||
var packaged = false;
|
||||
console.log("||\\\\\\ \n" + "|||| \\\\\\\\ \n" + "|||| \\\\\\\\ \n" + "|||| Am I a \\\\\\\\ \n" + "|||| cat? ^ ^ \\\\\\\\\\ _____ _ ____ _ \n" + "|||| (.-.) \\\\\\\\\\ |_ _| |__ ___| _ \\ ___ ___| | __\n" + "|||| ___> ) ||||| | | | '_ \\ / _ \\ | | |/ _ \\/ __| |/ /\n" + "|||| < _ _) ////// | | | | | | __/ |_| | __/__ \\ < \n" + "|||| |_||_| ///// |_| |_| |_|\\___|____/ \\___||___/_|\\_\\ \n" + "|||| ///// \n" + "|||| /////\n" + "|||| /////\n" + "||||//////");
|
||||
console.log("Welcome!");
|
||||
}
|
||||
var info_path = join(app.getPath("userData"), "window-size.json");
|
||||
var max_info_path = join(app.getPath("userData"), "max-window-size.json");
|
||||
var lang_path = join(app.getPath("userData"), "language");
|
||||
var ha_path = join(app.getPath("userData"), "hardwareAcceleration");
|
||||
var ua_path = join(app.getPath("userData"), "useragent");
|
||||
try {
|
||||
fs.readFileSync(ha_path, "utf8");
|
||||
app.disableHardwareAcceleration();
|
||||
if (!packaged) console.log("disabled: Hardware Acceleration");
|
||||
} catch {
|
||||
if (!packaged) console.log("enabled: Hardware Acceleration");
|
||||
}
|
||||
var window_size;
|
||||
try {
|
||||
window_size = JSON.parse(fs.readFileSync(info_path, "utf8"));
|
||||
} catch (e) {
|
||||
window_size = {
|
||||
width: 1000,
|
||||
height: 750
|
||||
}; // デフォルトバリュー
|
||||
}
|
||||
var max_window_size;
|
||||
try {
|
||||
max_window_size = JSON.parse(fs.readFileSync(max_info_path, "utf8"));
|
||||
} catch (e) {
|
||||
max_window_size = {
|
||||
width: "string",
|
||||
height: "string",
|
||||
x: "string",
|
||||
y: "string"
|
||||
}; // デフォルトバリュー
|
||||
}
|
||||
// 全てのウィンドウが閉じたら終了
|
||||
app.on('window-all-closed', function () {
|
||||
electron.session.defaultSession.clearCache(() => {})
|
||||
app.quit()
|
||||
})
|
||||
function isFile(file) {
|
||||
try {
|
||||
fs.statSync(file);
|
||||
return true;
|
||||
fs.statSync(file)
|
||||
return true
|
||||
} catch (err) {
|
||||
if (err.code === "ENOENT") return false;
|
||||
if (err.code === 'ENOENT') return false
|
||||
}
|
||||
}
|
||||
// 全てのウィンドウが閉じたら終了
|
||||
app.on("window-all-closed", function() {
|
||||
electron.session.defaultSession.clearCache(() => {});
|
||||
app.quit();
|
||||
});
|
||||
|
||||
function createWindow() {
|
||||
var lang_path = join(app.getPath('userData'), 'language')
|
||||
if (isFile(lang_path)) {
|
||||
var lang = fs.readFileSync(lang_path, "utf8");
|
||||
var lang = fs.readFileSync(lang_path, 'utf8')
|
||||
} else {
|
||||
var langs = app.getLocale();
|
||||
console.log(langs);
|
||||
if (~langs.indexOf("ja")) {
|
||||
lang = "ja";
|
||||
} else if (~langs.indexOf("de")) {
|
||||
lang = "de";
|
||||
} else if (~langs.indexOf("cs")) {
|
||||
lang = "cs";
|
||||
} else if (~langs.indexOf("bg")) {
|
||||
lang = "bg";
|
||||
var langs = app.getLocale()
|
||||
console.log(langs)
|
||||
if (~langs.indexOf('ja')) {
|
||||
lang = 'ja'
|
||||
} else if (~langs.indexOf('de')) {
|
||||
lang = 'de'
|
||||
} else if (~langs.indexOf('cs')) {
|
||||
lang = 'cs'
|
||||
} else if (~langs.indexOf('bg')) {
|
||||
lang = 'bg'
|
||||
} else {
|
||||
lang = "en";
|
||||
lang = 'en'
|
||||
}
|
||||
fs.mkdir(app.getPath("userData"), function(err) {
|
||||
fs.writeFileSync(lang_path, lang);
|
||||
});
|
||||
fs.mkdir(app.getPath('userData'), function (err) {
|
||||
fs.writeFileSync(lang_path, lang)
|
||||
})
|
||||
}
|
||||
if (!packaged) console.log('your lang:' + app.getLocale())
|
||||
if (!packaged) console.log('launch:' + lang)
|
||||
//Opening
|
||||
const package = fs.readFileSync(__dirname + '/package.json')
|
||||
if(lang == 'ja') {
|
||||
const maxims = JSON.parse(fs.readFileSync(__dirname + '/maxim.ja.json'))
|
||||
var show = maxims[Math.floor(Math.random() * maxims.length)]
|
||||
} else if(lang == 'ja-KS') {
|
||||
//ja-KSも作れたらいいね
|
||||
const maxims = JSON.parse(fs.readFileSync(__dirname + '/maxim.ja.json'))
|
||||
var show = maxims[Math.floor(Math.random() * maxims.length)]
|
||||
} else{
|
||||
var show = 'TheDesk 2018'
|
||||
}
|
||||
const data = JSON.parse(package)
|
||||
const version = data.version
|
||||
const codename = data.codename
|
||||
var openingWindow = new BrowserWindow({
|
||||
width: 300,
|
||||
height: 400,
|
||||
transparent: false,
|
||||
frame: false,
|
||||
resizable: false,
|
||||
})
|
||||
openingWindow.loadURL(`${__dirname}/opening.html?ver=${version}&codename=${codename}&maxim=${encodeURI(show)}`)
|
||||
|
||||
if (process.argv.indexOf('--dev') === -1) {
|
||||
var packaged = true
|
||||
} else {
|
||||
var packaged = false
|
||||
console.log(
|
||||
'||\\\\\\ \n' +
|
||||
'|||| \\\\\\\\ \n' +
|
||||
'|||| \\\\\\\\ \n' +
|
||||
'|||| Am I a \\\\\\\\ \n' +
|
||||
'|||| cat? ^ ^ \\\\\\\\\\ _____ _ ____ _ \n' +
|
||||
'|||| (.-.) \\\\\\\\\\ |_ _| |__ ___| _ \\ ___ ___| | __\n' +
|
||||
"|||| ___> ) ||||| | | | '_ \\ / _ \\ | | |/ _ \\/ __| |/ /\n" +
|
||||
'|||| < _ _) ////// | | | | | | __/ |_| | __/__ \\ < \n' +
|
||||
'|||| |_||_| ///// |_| |_| |_|\\___|____/ \\___||___/_|\\_\\ \n' +
|
||||
'|||| ///// \n' +
|
||||
'|||| /////\n' +
|
||||
'|||| /////\n' +
|
||||
'||||//////'
|
||||
)
|
||||
console.log('If it does not show the window, you might forget `npm run construct`.')
|
||||
}
|
||||
|
||||
var info_path = join(app.getPath('userData'), 'window-size.json')
|
||||
var max_info_path = join(app.getPath('userData'), 'max-window-size.json')
|
||||
var ha_path = join(app.getPath('userData'), 'hardwareAcceleration')
|
||||
var ua_path = join(app.getPath('userData'), 'useragent')
|
||||
try {
|
||||
fs.readFileSync(ha_path, 'utf8')
|
||||
app.disableHardwareAcceleration()
|
||||
if (!packaged) console.log('disabled: Hardware Acceleration')
|
||||
} catch {
|
||||
if (!packaged) console.log('enabled: Hardware Acceleration')
|
||||
}
|
||||
var window_size
|
||||
try {
|
||||
window_size = JSON.parse(fs.readFileSync(info_path, 'utf8'))
|
||||
} catch (e) {
|
||||
window_size = {
|
||||
width: 1000,
|
||||
height: 750,
|
||||
} // デフォルトバリュー
|
||||
}
|
||||
var max_window_size
|
||||
try {
|
||||
max_window_size = JSON.parse(fs.readFileSync(max_info_path, 'utf8'))
|
||||
} catch (e) {
|
||||
max_window_size = {
|
||||
width: 'string',
|
||||
height: 'string',
|
||||
x: 'string',
|
||||
y: 'string',
|
||||
} // デフォルトバリュー
|
||||
}
|
||||
if (!packaged) console.log("your lang:" + app.getLocale());
|
||||
if (!packaged) console.log("launch:" + lang);
|
||||
// メイン画面の表示。ウィンドウの幅、高さを指定できる
|
||||
var platform = process.platform;
|
||||
var bit = process.arch;
|
||||
if (platform == "linux") {
|
||||
var arg = {
|
||||
webPreferences: {
|
||||
webviewTag: true,
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
preload: join(__dirname, "js", "platform", "preload.js")
|
||||
},
|
||||
width: window_size.width,
|
||||
height: window_size.height,
|
||||
x: window_size.x,
|
||||
y: window_size.y,
|
||||
icon: __dirname + "/desk.png",
|
||||
show: false
|
||||
};
|
||||
} else if (platform == "win32") {
|
||||
var arg = {
|
||||
webPreferences: {
|
||||
webviewTag: true,
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
preload: join(__dirname, "js", "platform", "preload.js")
|
||||
},
|
||||
width: window_size.width,
|
||||
height: window_size.height,
|
||||
x: window_size.x,
|
||||
y: window_size.y,
|
||||
simpleFullscreen: true,
|
||||
show: false
|
||||
};
|
||||
} else if (platform == "darwin") {
|
||||
var arg = {
|
||||
webPreferences: {
|
||||
webviewTag: true,
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
preload: join(__dirname, "js", "platform", "preload.js")
|
||||
},
|
||||
width: window_size.width,
|
||||
height: window_size.height,
|
||||
x: window_size.x,
|
||||
y: window_size.y,
|
||||
simpleFullscreen: true,
|
||||
show: false
|
||||
};
|
||||
var platform = process.platform
|
||||
var bit = process.arch
|
||||
var arg = {
|
||||
webPreferences: {
|
||||
webviewTag: true,
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
spellcheck: false,
|
||||
preload: join(__dirname, 'js', 'platform', 'preload.js'),
|
||||
},
|
||||
width: window_size.width,
|
||||
height: window_size.height,
|
||||
x: window_size.x,
|
||||
y: window_size.y,
|
||||
show: false,
|
||||
}
|
||||
mainWindow = new BrowserWindow(arg);
|
||||
mainWindow.once("page-title-updated", () => {
|
||||
mainWindow.show();
|
||||
if (platform == 'linux') {
|
||||
arg.resizable = true
|
||||
arg.icon = __dirname + '/desk.png'
|
||||
} else if (platform == 'win32') {
|
||||
arg.simpleFullscreen = true
|
||||
} else if (platform == 'darwin') {
|
||||
arg.simpleFullscreen = true
|
||||
}
|
||||
mainWindow = new BrowserWindow(arg)
|
||||
mainWindow.once('page-title-updated', () => {
|
||||
openingWindow.close()
|
||||
mainWindow.show()
|
||||
console.log('Accessibility: ' + app.accessibilitySupportEnabled)
|
||||
if (window_size.max) {
|
||||
mainWindow.maximize();
|
||||
mainWindow.maximize()
|
||||
}
|
||||
});
|
||||
if (!packaged) mainWindow.toggleDevTools();
|
||||
electron.session.defaultSession.clearCache(() => {});
|
||||
})
|
||||
if (!packaged) mainWindow.toggleDevTools()
|
||||
electron.session.defaultSession.clearCache(() => {})
|
||||
if (process.argv) {
|
||||
if (process.argv[1]) {
|
||||
var m = process.argv[1].match(/([a-zA-Z0-9]+)\/\?[a-zA-Z-0-9]+=(.+)/);
|
||||
var m = process.argv[1].match(/([a-zA-Z0-9]+)\/\?[a-zA-Z-0-9]+=(.+)/)
|
||||
if (m) {
|
||||
var mode = m[1];
|
||||
var code = m[2];
|
||||
var plus = "?mode=" + mode + "&code=" + code;
|
||||
var mode = m[1]
|
||||
var code = m[2]
|
||||
var plus = '?mode=' + mode + '&code=' + code
|
||||
} else {
|
||||
var plus = "";
|
||||
var plus = ''
|
||||
}
|
||||
} else {
|
||||
var plus = "";
|
||||
var plus = ''
|
||||
}
|
||||
} else {
|
||||
var plus = "";
|
||||
var plus = ''
|
||||
}
|
||||
var ua;
|
||||
var ua
|
||||
try {
|
||||
ua = fs.readFileSync(ua_path, "utf8");
|
||||
ua = fs.readFileSync(ua_path, 'utf8')
|
||||
} catch (e) {
|
||||
//default UA Example:
|
||||
// Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) thedesk/18.11.3 Chrome/76.0.3809.146 Electron/6.0.12 Safari/537.36
|
||||
const crypto = require("crypto");
|
||||
const N = 100;
|
||||
var ua =
|
||||
"Mastodon client: " +
|
||||
crypto
|
||||
.randomBytes(N)
|
||||
.toString("base64")
|
||||
.substring(0, N);
|
||||
const crypto = require('crypto')
|
||||
const N = 100
|
||||
var ua = 'Mastodon client: ' + crypto.randomBytes(N).toString('base64').substring(0, N)
|
||||
}
|
||||
mainWindow.loadURL(base + lang + "/index.html" + plus, { userAgent: ua });
|
||||
mainWindow.loadURL(base + lang + '/index.html' + plus, { userAgent: ua })
|
||||
if (!window_size.x && !window_size.y) {
|
||||
mainWindow.center();
|
||||
mainWindow.center()
|
||||
}
|
||||
// ウィンドウが閉じられたらアプリも終了
|
||||
mainWindow.on("closed", function() {
|
||||
electron.ipcMain.removeAllListeners();
|
||||
mainWindow = null;
|
||||
});
|
||||
closeArg = false;
|
||||
mainWindow.on("close", function(e, arg) {
|
||||
writePos(mainWindow);
|
||||
mainWindow.on('closed', function () {
|
||||
electron.ipcMain.removeAllListeners()
|
||||
mainWindow = null
|
||||
})
|
||||
closeArg = false
|
||||
mainWindow.on('close', function (e, arg) {
|
||||
writePos(mainWindow)
|
||||
if (!closeArg) {
|
||||
e.preventDefault();
|
||||
e.preventDefault()
|
||||
}
|
||||
const promise = new Promise(function(resolve) {
|
||||
mainWindow.webContents.send("asReadEnd", "");
|
||||
setTimeout(function() {
|
||||
resolve();
|
||||
}, 3000);
|
||||
});
|
||||
promise.then(function(response) {
|
||||
closeArg = true;
|
||||
mainWindow.close();
|
||||
});
|
||||
});
|
||||
electron.ipcMain.on("sendMarkersComplete", function(e, arg) {
|
||||
closeArg = true;
|
||||
mainWindow.close();
|
||||
});
|
||||
const promise = new Promise(function (resolve) {
|
||||
mainWindow.webContents.send('asReadEnd', '')
|
||||
setTimeout(function () {
|
||||
resolve()
|
||||
}, 3000)
|
||||
})
|
||||
promise.then(function (response) {
|
||||
closeArg = true
|
||||
mainWindow.close()
|
||||
})
|
||||
})
|
||||
electron.ipcMain.on('sendMarkersComplete', function (e, arg) {
|
||||
closeArg = true
|
||||
mainWindow.close()
|
||||
})
|
||||
function writePos(mainWindow) {
|
||||
if (max_window_size.width == mainWindow.getBounds().width && max_window_size.height == mainWindow.getBounds().height && max_window_size.x == mainWindow.getBounds().x && max_window_size.y == mainWindow.getBounds().y) {
|
||||
var size = { width: mainWindow.getBounds().width, height: mainWindow.getBounds().height, x: mainWindow.getBounds().x, y: mainWindow.getBounds().y, max: true };
|
||||
if (
|
||||
max_window_size.width == mainWindow.getBounds().width &&
|
||||
max_window_size.height == mainWindow.getBounds().height &&
|
||||
max_window_size.x == mainWindow.getBounds().x &&
|
||||
max_window_size.y == mainWindow.getBounds().y
|
||||
) {
|
||||
var size = {
|
||||
width: mainWindow.getBounds().width,
|
||||
height: mainWindow.getBounds().height,
|
||||
x: mainWindow.getBounds().x,
|
||||
y: mainWindow.getBounds().y,
|
||||
max: true,
|
||||
}
|
||||
} else {
|
||||
var size = { width: mainWindow.getBounds().width, height: mainWindow.getBounds().height, x: mainWindow.getBounds().x, y: mainWindow.getBounds().y };
|
||||
var size = {
|
||||
width: mainWindow.getBounds().width,
|
||||
height: mainWindow.getBounds().height,
|
||||
x: mainWindow.getBounds().x,
|
||||
y: mainWindow.getBounds().y,
|
||||
}
|
||||
}
|
||||
fs.writeFileSync(info_path, JSON.stringify(size));
|
||||
fs.writeFileSync(info_path, JSON.stringify(size))
|
||||
}
|
||||
mainWindow.on("maximize", function() {
|
||||
writePos(mainWindow);
|
||||
fs.writeFileSync(max_info_path, JSON.stringify(mainWindow.getBounds()));
|
||||
});
|
||||
mainWindow.on("minimize", function() {
|
||||
writePos(mainWindow);
|
||||
mainWindow.webContents.send("asRead", "");
|
||||
});
|
||||
mainWindow.on('maximize', function () {
|
||||
writePos(mainWindow)
|
||||
fs.writeFileSync(max_info_path, JSON.stringify(mainWindow.getBounds()))
|
||||
})
|
||||
mainWindow.on('minimize', function () {
|
||||
writePos(mainWindow)
|
||||
mainWindow.webContents.send('asRead', '')
|
||||
})
|
||||
|
||||
var platform = process.platform;
|
||||
var bit = process.arch;
|
||||
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang, mainWindow, packaged, dir, dirname)));
|
||||
var platform = process.platform
|
||||
var bit = process.arch
|
||||
Menu.setApplicationMenu(Menu.buildFromTemplate(language.template(lang, mainWindow, packaged, dir, dirname)))
|
||||
//CSS
|
||||
css.css(mainWindow);
|
||||
css.css(mainWindow)
|
||||
//アップデータとダウンロード
|
||||
dl.dl(mainWindow, lang_path, base, dirname);
|
||||
dl.dl(mainWindow, lang_path, base, dirname)
|
||||
//画像選択と画像処理
|
||||
img.img(mainWindow, dir);
|
||||
img.img(mainWindow, dir)
|
||||
//NowPlaying
|
||||
np.TheDeskNowPlaying(mainWindow);
|
||||
np.TheDeskNowPlaying(mainWindow)
|
||||
//その他system
|
||||
systemFunc.system(mainWindow, dir, lang, dirname);
|
||||
setInterval(function() {
|
||||
mouseTrack(mainWindow);
|
||||
}, 1000);
|
||||
systemFunc.system(mainWindow, dir, lang, dirname)
|
||||
setInterval(function () {
|
||||
mouseTrack(mainWindow)
|
||||
}, 1000)
|
||||
}
|
||||
var x = 0;
|
||||
var y = 0;
|
||||
var unchanged = 0;
|
||||
var locked = false;
|
||||
var x = 0
|
||||
var y = 0
|
||||
var unchanged = 0
|
||||
var locked = false
|
||||
function mouseTrack(mainWindow) {
|
||||
let mousePos = electron.screen.getCursorScreenPoint();
|
||||
let xNow = mousePos.x;
|
||||
let yNow = mousePos.x;
|
||||
let mousePos = electron.screen.getCursorScreenPoint()
|
||||
let xNow = mousePos.x
|
||||
let yNow = mousePos.x
|
||||
if (x != xNow || y != yNow) {
|
||||
unchanged = 0;
|
||||
locked = false;
|
||||
unchanged = 0
|
||||
locked = false
|
||||
} else {
|
||||
unchanged++;
|
||||
unchanged++
|
||||
if (unchanged > 60 && !locked) {
|
||||
unchanged = 0;
|
||||
locked = true;
|
||||
mainWindow.webContents.send("asRead", "");
|
||||
unchanged = 0
|
||||
locked = true
|
||||
mainWindow.webContents.send('asRead', '')
|
||||
}
|
||||
}
|
||||
x = xNow;
|
||||
y = yNow;
|
||||
x = xNow
|
||||
y = yNow
|
||||
}
|
||||
// Electronの初期化完了後に実行
|
||||
app.on("ready", createWindow);
|
||||
var onError = function(err, response) {
|
||||
console.error(err, response);
|
||||
};
|
||||
|
||||
app.setAsDefaultProtocolClient("thedesk");
|
||||
app.setAsDefaultProtocolClient('thedesk')
|
||||
|
||||
299
app/main/css.js
@@ -31,119 +31,246 @@ function css(mainWindow) {
|
||||
}
|
||||
})
|
||||
ipc.on('theme-json-delete', function (e, arg) {
|
||||
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
|
||||
console.log(themecss);
|
||||
fs.unlink(themecss, function (err) {
|
||||
e.sender.webContents.send('theme-json-delete-complete', "");
|
||||
});
|
||||
try{
|
||||
var themecss = join(app.getPath("userData"), arg);
|
||||
console.log(themecss);
|
||||
fs.unlink(themecss, function (err) {
|
||||
e.sender.webContents.send('theme-json-delete-complete', "");
|
||||
});
|
||||
} catch {
|
||||
e.sender.webContents.send('theme-json-delete-complete', 'cannot delete');
|
||||
}
|
||||
|
||||
})
|
||||
ipc.on('theme-json-request', function (e, arg) {
|
||||
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
|
||||
var raw = fs.readFileSync(themecss, 'utf8')
|
||||
var json = JSON5.parse(raw);
|
||||
try {
|
||||
var themecss = join(app.getAppPath(), '/source/themes', arg)
|
||||
var raw = fs.readFileSync(themecss, 'utf8')
|
||||
var json = JSON5.parse(raw)
|
||||
} catch {
|
||||
var themecss = join(app.getPath("userData"), arg)
|
||||
var raw = fs.readFileSync(themecss, 'utf8')
|
||||
var json = JSON5.parse(raw)
|
||||
}
|
||||
e.sender.webContents.send('theme-json-response', [json, raw]);
|
||||
})
|
||||
ipc.on('theme-css-request', function (e, arg) {
|
||||
var themecss = join(app.getPath("userData"), arg + ".thedesktheme");
|
||||
try {
|
||||
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
var themecss = join(app.getAppPath(), '/source/themes', arg)
|
||||
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'))
|
||||
} catch {
|
||||
var themecss = join(app.getPath("userData"), arg)
|
||||
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'))
|
||||
}
|
||||
|
||||
var primary = json.vars.primary;
|
||||
var secondary = json.vars.secondary;
|
||||
var text = json.vars.text;
|
||||
if (json.base == "light") {
|
||||
var drag = "rgba(255, 255, 255, 0.8)";
|
||||
var beforehover = "#757575";
|
||||
var selected = "#3f3f3f"
|
||||
var selectedWithShare = "#b2babd"
|
||||
var gray = "#757575"
|
||||
} else {
|
||||
var drag = "rgba(0, 0, 0, 0.8)";
|
||||
var beforehover = "#9e9e9e";
|
||||
var selected = "#c0c0c0"
|
||||
var selectedWithShare = "#003a30"
|
||||
var gray = "#cccccc"
|
||||
}
|
||||
if (json.props) {
|
||||
if (json.props.TheDeskAccent) {
|
||||
var emphasized = json.props.TheDeskAccent
|
||||
try {
|
||||
var css
|
||||
if (json.version) {
|
||||
var bg = json.primary.background
|
||||
var subcolor = json.primary.subcolor
|
||||
var text = json.primary.text
|
||||
var accent = json.primary.accent
|
||||
if (json.base == "light") {
|
||||
var drag = "rgba(255, 255, 255, 0.8)";
|
||||
var beforehover = "#757575";
|
||||
var selected = "#3f3f3f"
|
||||
var selectedWithShare = "#b2babd"
|
||||
var gray = "#757575"
|
||||
var hisData = 'rgba(255, 255, 255, 0.9)'
|
||||
} else {
|
||||
var emphasized = secondary
|
||||
var drag = "rgba(0, 0, 0, 0.8)";
|
||||
var beforehover = "#9e9e9e";
|
||||
var selected = "#c0c0c0"
|
||||
var selectedWithShare = "#003a30"
|
||||
var gray = "#cccccc"
|
||||
var hisData = 'rgba(0, 0, 0, 0.8)'
|
||||
}
|
||||
if (json.props.TheDeskActive) {
|
||||
var active = json.props.TheDeskActive
|
||||
if (!json.advanced) {
|
||||
json.advanced = {}
|
||||
}
|
||||
if (json.advanced.modal) {
|
||||
var modal = json.advanced.modal
|
||||
} else {
|
||||
var active = primary
|
||||
var modal = bg
|
||||
}
|
||||
if (json.props.TheDeskModal) {
|
||||
var modal = json.props.TheDeskModal
|
||||
if (json.advanced.modalFooter) {
|
||||
var modalFooter = json.advanced.modalFooter
|
||||
} else {
|
||||
var modal = secondary
|
||||
var modalFooter = bg
|
||||
if (modal != bg) modalFooter = modal
|
||||
}
|
||||
if (json.props.TheDeskBottom) {
|
||||
var bottom = json.props.TheDeskBottom
|
||||
if (json.advanced.thirdColor) {
|
||||
var thirdColor = json.advanced.thirdColor
|
||||
} else {
|
||||
var bottom = primary
|
||||
var thirdColor = subcolor
|
||||
}
|
||||
if (json.props.TheDeskPostbox) {
|
||||
var postbox = json.props.TheDeskPostbox
|
||||
if (json.advanced.forthColor) {
|
||||
var forthColor = json.advanced.forthColor
|
||||
} else {
|
||||
var postbox = primary
|
||||
var forthColor = subcolor
|
||||
if (thirdColor != subcolor) forthColor = thirdColor
|
||||
}
|
||||
if (json.props.TheDeskSubcolor) {
|
||||
var subcolor = json.props.TheDeskSubcolor
|
||||
if (json.advanced.bottom) {
|
||||
var bottom = json.advanced.bottom
|
||||
} else {
|
||||
var subcolor = primary
|
||||
var bottom = subcolor
|
||||
}
|
||||
if (json.advanced.emphasized) {
|
||||
var emphasized = json.advanced.emphasized
|
||||
} else {
|
||||
var emphasized = accent
|
||||
}
|
||||
if (json.advanced.postbox) {
|
||||
var postbox = json.advanced.postbox
|
||||
} else {
|
||||
var postbox = subcolor
|
||||
}
|
||||
if (json.advanced.active) {
|
||||
var active = json.advanced.active
|
||||
} else {
|
||||
var active = accent
|
||||
}
|
||||
if (json.advanced.selected) {
|
||||
var selected = json.advanced.selected
|
||||
}
|
||||
if (json.advanced.selectedWithShare) {
|
||||
var selectedWithShare = json.advanced.selectedWithShare
|
||||
}
|
||||
} else {
|
||||
var emphasized = primary
|
||||
var acs = secondary
|
||||
var active = primary
|
||||
var modal = secondary
|
||||
var bottom = primary
|
||||
var postbox = primary
|
||||
var subcolor = primary
|
||||
}
|
||||
|
||||
var css = ".customtheme {--bg:" + secondary + ";--drag:" + drag + ";" +
|
||||
"--color:" + text + ";--beforehover:" + beforehover + ";--modal:" +
|
||||
modal + ";--subcolor:" + subcolor + ";--box:" + subcolor +
|
||||
";--sidebar:" + bottom + ";--shared:" + emphasized + ";" +
|
||||
"--notfbox:" + secondary + ";--emphasized:" + active + ";--his-data:" +
|
||||
secondary +
|
||||
";--active:" + active + ";--postbox:" + postbox + ";--modalfooter:" +
|
||||
primary +
|
||||
";--accentbtn:" + subcolor + ";--selected:" + selected + ";--selectedWithShare:" + selectedWithShare + "}"+
|
||||
"--gray:" + gray + ";"+
|
||||
".customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
|
||||
var css = ":root {--bg:" + bg + ";--drag:" + drag + ";" +
|
||||
"--text:" + text + ";--beforehover:" + beforehover + ";--modal:" +
|
||||
modal + ";--thirdColor:" + thirdColor + ";--subcolor:" + forthColor +
|
||||
";--bottom:" + bottom + ";--accent:" + accent + ";" + ";--emphasized:" + emphasized + ";--his-data:" +
|
||||
hisData +
|
||||
";--active:" + active + ";--postbox:" + postbox + ";--modalfooter:" +
|
||||
modalFooter + ";--selected:" + selected + ";--selectedWithShare:" + selectedWithShare +
|
||||
";--gray:" + gray + ";}" +
|
||||
".customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
|
||||
} else {
|
||||
var css = compatibleTheme(json)
|
||||
}
|
||||
e.sender.webContents.send('theme-css-response', css);
|
||||
} catch (e) {
|
||||
var css = "";
|
||||
}
|
||||
|
||||
})
|
||||
ipc.on('theme-json-list', function (e, arg) {
|
||||
fs.readdir(app.getPath("userData"), function (err, files) {
|
||||
if (err || !files) throw err;
|
||||
var fileList = files.filter(function (file) {
|
||||
if(file.match(/\.thedesktheme$/)){
|
||||
var tfile = join(app.getPath("userData"), file)
|
||||
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile)
|
||||
}else{
|
||||
return null
|
||||
}
|
||||
})
|
||||
var themes = [];
|
||||
for (var i = 0; i < fileList.length; i++) {
|
||||
var themecss = join(app.getPath("userData"), fileList[i]);
|
||||
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
themes.push({
|
||||
name: json.name,
|
||||
id: json.id
|
||||
})
|
||||
function compatibleTheme(json) {
|
||||
var primary = json.vars.primary;
|
||||
var secondary = json.vars.secondary;
|
||||
var text = json.vars.text;
|
||||
if (json.base == "light") {
|
||||
var drag = "rgba(255, 255, 255, 0.8)";
|
||||
var beforehover = "#757575";
|
||||
var selected = "#3f3f3f"
|
||||
var selectedWithShare = "#b2babd"
|
||||
var gray = "#757575"
|
||||
} else {
|
||||
var drag = "rgba(0, 0, 0, 0.8)";
|
||||
var beforehover = "#9e9e9e";
|
||||
var selected = "#c0c0c0"
|
||||
var selectedWithShare = "#003a30"
|
||||
var gray = "#cccccc"
|
||||
}
|
||||
if (json.advanced) {
|
||||
if (json.advanced.TheDeskAccent) {
|
||||
var emphasized = json.advanced.TheDeskAccent
|
||||
} else {
|
||||
var emphasized = secondary
|
||||
}
|
||||
e.sender.webContents.send('theme-json-list-response', themes);
|
||||
});
|
||||
if (json.advanced.TheDeskActive) {
|
||||
var active = json.advanced.TheDeskActive
|
||||
} else {
|
||||
var active = primary
|
||||
}
|
||||
if (json.advanced.TheDeskModal) {
|
||||
var modal = json.advanced.TheDeskModal
|
||||
} else {
|
||||
var modal = secondary
|
||||
}
|
||||
if (json.advanced.TheDeskBottom) {
|
||||
var bottom = json.advanced.TheDeskBottom
|
||||
} else {
|
||||
var bottom = primary
|
||||
}
|
||||
if (json.advanced.TheDeskPostbox) {
|
||||
var postbox = json.advanced.TheDeskPostbox
|
||||
} else {
|
||||
var postbox = primary
|
||||
}
|
||||
if (json.advanced.TheDeskSubcolor) {
|
||||
var subcolor = json.advanced.TheDeskSubcolor
|
||||
} else {
|
||||
var subcolor = primary
|
||||
}
|
||||
} else {
|
||||
var emphasized = primary
|
||||
var acs = secondary
|
||||
var active = primary
|
||||
var modal = secondary
|
||||
var bottom = primary
|
||||
var postbox = primary
|
||||
var subcolor = primary
|
||||
}
|
||||
|
||||
var css = ".customtheme {--bg:" + secondary + ";--drag:" + drag + ";" +
|
||||
"--text:" + text + ";--beforehover:" + beforehover + ";--modal:" +
|
||||
modal + ";--thirdColor:" + subcolor + ";--subcolor:" + subcolor +
|
||||
";--bottom:" + bottom + ";--accent:" + emphasized + ";" +
|
||||
"--subcolor:" + secondary + ";--emphasized:" + active + ";--his-data:" +
|
||||
secondary +
|
||||
";--active:" + active + ";--postbox:" + postbox + ";--modalfooter:" +
|
||||
primary +
|
||||
";--active:" + subcolor + ";--selected:" + selected + ";--selectedWithShare:" + selectedWithShare + "}" +
|
||||
"--gray:" + gray + ";" +
|
||||
".customtheme #imagemodal{background: url(\"../img/pixel.svg\");}";
|
||||
return css
|
||||
}
|
||||
ipc.on('theme-json-list', function (e, arg) {
|
||||
var files1 = fs.readdirSync(join(app.getAppPath(), '/source/themes'))
|
||||
var file1List = files1.filter(function (file) {
|
||||
if (file.match(/\.thedesktheme$/)) {
|
||||
var tfile = join(app.getAppPath(), '/source/themes', file)
|
||||
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile)
|
||||
} else {
|
||||
return null
|
||||
}
|
||||
})
|
||||
var themes = [];
|
||||
for (var i = 0; i < file1List.length; i++) {
|
||||
var themecss = join(app.getAppPath(), '/source/themes', file1List[i]);
|
||||
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
let compat = true
|
||||
if (json.version) compat = false
|
||||
themes.push({
|
||||
name: json.name,
|
||||
id: json.id,
|
||||
compatible: compat,
|
||||
default: true
|
||||
})
|
||||
}
|
||||
var files2 = fs.readdirSync(app.getPath("userData"))
|
||||
var file2List = files2.filter(function (file) {
|
||||
if (file.match(/\.thedesktheme$/)) {
|
||||
var tfile = join(app.getPath("userData"), file)
|
||||
return fs.statSync(tfile).isFile() && /.*\.thedesktheme$/.test(tfile)
|
||||
} else {
|
||||
return null
|
||||
}
|
||||
})
|
||||
for (var i = 0; i < file2List.length; i++) {
|
||||
var themecss = join(app.getPath("userData"), file2List[i]);
|
||||
var json = JSON5.parse(fs.readFileSync(themecss, 'utf8'));
|
||||
let compat = true
|
||||
if (json.version) compat = false
|
||||
themes.push({
|
||||
name: json.name,
|
||||
id: json.id,
|
||||
compatible: compat,
|
||||
default: false
|
||||
})
|
||||
}
|
||||
e.sender.webContents.send('theme-json-list-response', themes);
|
||||
})
|
||||
}
|
||||
exports.css = css;
|
||||
|
||||
170
app/main/dl.js
@@ -1,126 +1,138 @@
|
||||
function dl(mainWindow, lang_path, base, dirname) {
|
||||
const electron = require("electron");
|
||||
const shell = electron.shell;
|
||||
const fs = require("fs");
|
||||
const { download } = require('electron-dl');
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
const dialog = electron.dialog;
|
||||
var updatewin = null;
|
||||
var ipc = electron.ipcMain;
|
||||
const app = electron.app;
|
||||
const join = require('path').join;
|
||||
ipc.on('update', function (e, x, y) {
|
||||
|
||||
var platform = process.platform;
|
||||
var bit = process.arch;
|
||||
if (platform != "others") {
|
||||
const electron = require('electron')
|
||||
const shell = electron.shell
|
||||
const fs = require('fs')
|
||||
const { download } = require('electron-dl')
|
||||
const BrowserWindow = electron.BrowserWindow
|
||||
const dialog = electron.dialog
|
||||
var updatewin = null
|
||||
var ipc = electron.ipcMain
|
||||
const app = electron.app
|
||||
const join = require('path').join
|
||||
ipc.on('update', function(e, x, y) {
|
||||
var platform = process.platform
|
||||
var bit = process.arch
|
||||
if (platform != 'others') {
|
||||
updatewin = new BrowserWindow({
|
||||
webPreferences: {
|
||||
webviewTag: false,
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
preload: join(dirname,"js", "platform", "preload.js")
|
||||
preload: join(dirname, 'js', 'platform', 'preload.js')
|
||||
},
|
||||
width: 600,
|
||||
height: 400,
|
||||
"transparent": false, // ウィンドウの背景を透過
|
||||
"frame": false, // 枠の無いウィンドウ
|
||||
"resizable": false
|
||||
transparent: false, // ウィンドウの背景を透過
|
||||
frame: false, // 枠の無いウィンドウ
|
||||
resizable: false,
|
||||
show: false
|
||||
})
|
||||
var lang = fs.readFileSync(lang_path, 'utf8');
|
||||
updatewin.loadURL(base + lang + '/update.html');
|
||||
return "true"
|
||||
var lang = fs.readFileSync(lang_path, 'utf8')
|
||||
//updatewin.toggleDevTools()
|
||||
updatewin.loadURL(base + lang + '/update.html')
|
||||
updatewin.webContents.once('dom-ready', () => {
|
||||
updatewin.show()
|
||||
})
|
||||
return 'true'
|
||||
} else {
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
})
|
||||
//アプデDL
|
||||
ipc.on('download-btn', (e, args) => {
|
||||
ipc.on('download-btn', async (e, args) => {
|
||||
function dl(url, file, dir, e) {
|
||||
|
||||
e.sender.webContents.send('mess', "ダウンロードを開始します。");
|
||||
e.sender.webContents.send('mess', 'Start...')
|
||||
const opts = {
|
||||
directory: dir,
|
||||
filename: file,
|
||||
openFolderWhenDone: true,
|
||||
onProgress: function (event) {
|
||||
e.sender.webContents.send('prog', event);
|
||||
onProgress: function(event) {
|
||||
e.sender.webContents.send('prog', [event, args[2]])
|
||||
},
|
||||
saveAs: false
|
||||
};
|
||||
download(updatewin,
|
||||
url, opts)
|
||||
}
|
||||
download(updatewin, url, opts)
|
||||
.then(dl => {
|
||||
e.sender.webContents.send('mess', "ダウンロードが完了しました。");
|
||||
app.quit();
|
||||
e.sender.webContents.send('mess', 'ダウンロードが完了しました。')
|
||||
app.quit()
|
||||
})
|
||||
.catch(console.error);
|
||||
.catch(console.error)
|
||||
}
|
||||
var platform = process.platform;
|
||||
var bit = process.arch;
|
||||
dialog.showSaveDialog(null, {
|
||||
var platform = process.platform
|
||||
var bit = process.arch
|
||||
var options = {
|
||||
title: 'Save',
|
||||
defaultPath: app.getPath('home') + "/" + args[1]
|
||||
}, (savedFiles) => {
|
||||
console.log(savedFiles);
|
||||
if (!savedFiles) {
|
||||
return false;
|
||||
}
|
||||
if (platform == "win32") {
|
||||
var m = savedFiles.match(/(.+)\\(.+)$/);
|
||||
} else {
|
||||
var m = savedFiles.match(/(.+)\/(.+)$/);
|
||||
}
|
||||
//console.log(m);
|
||||
if (isExistFile(savedFiles)) {
|
||||
fs.unlinkSync(savedFiles);
|
||||
}
|
||||
dl(args[0], args[1], m[1], e);
|
||||
});
|
||||
});
|
||||
defaultPath: app.getPath('home') + '/' + args[1]
|
||||
}
|
||||
const file = await dialog.showSaveDialog(null, options)
|
||||
const savedFiles = file.filePath
|
||||
console.log(savedFiles)
|
||||
if (!savedFiles) {
|
||||
return false
|
||||
}
|
||||
if (platform == 'win32') {
|
||||
var m = savedFiles.match(/(.+)\\(.+)$/)
|
||||
} else {
|
||||
var m = savedFiles.match(/(.+)\/(.+)$/)
|
||||
}
|
||||
//console.log(m);
|
||||
if (isExistFile(savedFiles)) {
|
||||
fs.unlinkSync(savedFiles)
|
||||
}
|
||||
console.log(m)
|
||||
dl(args[0], m[2], m[1], e)
|
||||
})
|
||||
|
||||
function isExistFile(file) {
|
||||
try {
|
||||
fs.statSync(file);
|
||||
fs.statSync(file)
|
||||
return true
|
||||
} catch (err) {
|
||||
if (err.code === 'ENOENT') return false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ipc.on('general-dl', (event, args) => {
|
||||
|
||||
var name = "";
|
||||
var platform = process.platform;
|
||||
var bit = process.arch;
|
||||
if (args[1] == "") {
|
||||
if (platform == "win32") {
|
||||
var dir = app.getPath('home') + "\\Pictures\\TheDesk";
|
||||
} else if (platform == "linux" || platform == "darwin") {
|
||||
var dir = app.getPath('home') + "/Pictures/TheDesk";
|
||||
var name = ''
|
||||
var platform = process.platform
|
||||
var bit = process.arch
|
||||
const filename = args[0].match(/https:\/\/.+\/(.+\..+)$/)
|
||||
if (args[1] == '') {
|
||||
if (platform == 'win32') {
|
||||
var dir = app.getPath('home') + '\\Pictures\\TheDesk'
|
||||
} else if (platform == 'linux' || platform == 'darwin') {
|
||||
var dir = app.getPath('home') + '/Pictures/TheDesk'
|
||||
}
|
||||
} else {
|
||||
var dir = args[1];
|
||||
var dir = args[1]
|
||||
}
|
||||
const opts = {
|
||||
directory: dir,
|
||||
filename: name,
|
||||
openFolderWhenDone: false,
|
||||
onProgress: function (e) {
|
||||
event.sender.webContents.send('general-dl-prog', e);
|
||||
onProgress: function(e) {
|
||||
event.sender.webContents.send('general-dl-prog', e)
|
||||
},
|
||||
saveAs: false
|
||||
};
|
||||
download(BrowserWindow.getFocusedWindow(),
|
||||
args[0], opts)
|
||||
}
|
||||
download(BrowserWindow.getFocusedWindow(), args[0], opts)
|
||||
.then(dl => {
|
||||
event.sender.webContents.send('general-dl-message', dir);
|
||||
if(filename[1]) {
|
||||
if (platform == 'win32') {
|
||||
var name = dir + '\\' + filename[1]
|
||||
} else if (platform == 'linux' || platform == 'darwin') {
|
||||
var name = dir + '/' + filename[1]
|
||||
}
|
||||
} else {
|
||||
var name = dir
|
||||
}
|
||||
event.sender.webContents.send('general-dl-message', name)
|
||||
})
|
||||
.catch(console.error);
|
||||
});
|
||||
ipc.on('open-finder', (e, folder) => {
|
||||
|
||||
.catch(console.error)
|
||||
})
|
||||
ipc.on('openFinder', (e, folder) => {
|
||||
console.log(folder)
|
||||
shell.showItemInFolder(folder)
|
||||
});
|
||||
})
|
||||
}
|
||||
exports.dl = dl;
|
||||
exports.dl = dl
|
||||
|
||||
126
app/main/img.js
@@ -1,43 +1,87 @@
|
||||
function img(mainWindow, dir) {
|
||||
const electron = require("electron");
|
||||
const dialog = electron.dialog;
|
||||
const fs = require("fs");
|
||||
var Jimp = require("jimp");
|
||||
var ipc = electron.ipcMain;
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
ipc.on('file-select', (e, args) => {
|
||||
|
||||
dialog.showOpenDialog(null, {
|
||||
properties: ['openFile', 'multiSelections'],
|
||||
title: '添付ファイルを選択',
|
||||
defaultPath: '.',
|
||||
filters: [
|
||||
{ name: 'メディアファイル', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm'] },
|
||||
{ name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] },
|
||||
{ name: '動画', extensions: ['mp4', 'webm'] },
|
||||
{ name: '全てのファイル', extensions: ['*'] }
|
||||
]
|
||||
}, (fileNames) => {
|
||||
if (!fileNames) {
|
||||
return false;
|
||||
}
|
||||
for (var i = 0; i < fileNames.length; i++) {
|
||||
var path = fileNames[i];
|
||||
var bin = fs.readFileSync(path, 'base64');
|
||||
e.sender.webContents.send('bmp-img-comp', [bin, 'new']);
|
||||
}
|
||||
});
|
||||
});
|
||||
ipc.on('bmp-image', (e, args) => {
|
||||
|
||||
var m = args[0].match(/(.+)\\(.+)\.(.+)$/);
|
||||
Jimp.read(args[0], function (err, lenna) {
|
||||
if (err) throw err;
|
||||
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
|
||||
e.sender.webContents.send('bmp-img-comp', [src, args[1]]);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
const electron = require('electron')
|
||||
const dialog = electron.dialog
|
||||
const fs = require('fs')
|
||||
var Jimp = require('jimp')
|
||||
var ipc = electron.ipcMain
|
||||
const BrowserWindow = electron.BrowserWindow
|
||||
ipc.on('file-select', (e, args) => {
|
||||
let fileNames = dialog.showOpenDialogSync(mainWindow, {
|
||||
properties: ['openFile', 'multiSelections'],
|
||||
title: '添付ファイルを選択',
|
||||
defaultPath: '.',
|
||||
filters: [
|
||||
{
|
||||
name: 'メディアファイル',
|
||||
extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm'],
|
||||
},
|
||||
{ name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] },
|
||||
{ name: '動画', extensions: ['mp4', 'webm'] },
|
||||
{ name: '全てのファイル', extensions: ['*'] },
|
||||
],
|
||||
})
|
||||
if (!fileNames) {
|
||||
return false
|
||||
}
|
||||
for (var i = 0; i < fileNames.length; i++) {
|
||||
var path = fileNames[i]
|
||||
var bin = fs.readFileSync(path, 'base64')
|
||||
e.sender.webContents.send('resizeJudgement', [bin, 'new'])
|
||||
}
|
||||
})
|
||||
ipc.on('bmp-image', (e, args) => {
|
||||
Jimp.read(args[0], function (err, lenna) {
|
||||
if (err) throw err
|
||||
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
|
||||
e.sender.webContents.send('bmp-img-comp', [src, args[1]])
|
||||
})
|
||||
})
|
||||
})
|
||||
ipc.on('resize-image', (e, args) => {
|
||||
var ext = args[0].toString().slice(args[0].indexOf('/') + 1, args[0].indexOf(';'))
|
||||
if (ext == 'jpeg') {
|
||||
var use = 'MIME_JPEG'
|
||||
} else {
|
||||
var use = 'MIME_PNG'
|
||||
}
|
||||
var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '')
|
||||
var decodedFile = new Buffer(b64, 'base64')
|
||||
Jimp.read(decodedFile, function (err, lenna) {
|
||||
if (err) throw err
|
||||
lenna.scaleToFit(args[1], args[1]).getBase64(Jimp[use], function (err, src) {
|
||||
e.sender.webContents.send('bmp-img-comp', [src, args[1]])
|
||||
})
|
||||
})
|
||||
})
|
||||
ipc.on('stamp-image', (e, args) => {
|
||||
var text = args[1]
|
||||
var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '')
|
||||
var decodedFile = new Buffer(b64, 'base64')
|
||||
console.log(text)
|
||||
Jimp.read(decodedFile, function (err, image) {
|
||||
if (err) throw err
|
||||
Jimp.loadFont(Jimp.FONT_SANS_16_BLACK).then((font) => {
|
||||
var evWidth = Jimp.measureText(font, text)
|
||||
var width = image.bitmap.width
|
||||
var height = image.bitmap.height
|
||||
var left = width - evWidth - 10
|
||||
var top = height - 30
|
||||
var color = Jimp.intToRGBA(image.getPixelColor(left, top))
|
||||
console.log(left, top, color)
|
||||
var ave = (color.r + color.g + color.b) / 3
|
||||
if (ave > 128) {
|
||||
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function (err, src) {
|
||||
e.sender.webContents.send('bmp-img-comp', [src, args[1], true])
|
||||
})
|
||||
} else {
|
||||
Jimp.loadFont(Jimp.FONT_SANS_16_WHITE).then((font) => {
|
||||
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function (err, src) {
|
||||
e.sender.webContents.send('bmp-img-comp', [src, args[1], true])
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
exports.img = img;
|
||||
exports.img = img
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
// Create the Application's main menu
|
||||
function templete(lang, mainWindow, packaged, dir, dirname) {
|
||||
//フレーム
|
||||
if(lang !="ja" && lang != "en"){
|
||||
lang = "en"
|
||||
}
|
||||
const electron = require("electron");
|
||||
const ipc = electron.ipcMain;
|
||||
const app = electron.app;
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
const join = require('path').join;
|
||||
|
||||