Compare commits
90 Commits
follow-req
...
v21.1.0
Author | SHA1 | Date | |
---|---|---|---|
|
7ff01413e5 | ||
|
48b3ed3aca | ||
|
e75d52f985 | ||
|
3f95e755b5 | ||
|
9d0f4096f8 | ||
|
e402e0e7a7 | ||
|
38c77fb39e | ||
|
3020adbe9d | ||
|
4df390713c | ||
|
bec4444388 | ||
|
2d249f6f19 | ||
|
4d1053ce99 | ||
|
0522331977 | ||
|
eb9520397c | ||
|
f0c93b8fce | ||
|
b3e9c3d6ce | ||
|
99793f2e20 | ||
|
f43bd64be2 | ||
|
fa440e8d9b | ||
|
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 |
2
.github/FUNDING.yml
vendored
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
|
||||
|
@@ -165,4 +165,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.
|
||||
|
||||
|
5
app/.eslintignore
Normal file
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
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
|
||||
}
|
||||
}
|
@@ -21,6 +21,15 @@ html {
|
||||
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%;
|
||||
}
|
||||
@@ -48,6 +57,12 @@ html {
|
||||
.first .hide-first {
|
||||
display: none;
|
||||
}
|
||||
.hide-second {
|
||||
display: none;
|
||||
}
|
||||
.first .hide-second {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#compt {
|
||||
margin-top: 20px;
|
||||
|
@@ -178,6 +178,7 @@ pre {
|
||||
border-top-left-radius: 0.75rem;
|
||||
border-bottom-right-radius: 0.75rem;
|
||||
border-bottom-left-radius: 0.75rem;
|
||||
white-space: normal;
|
||||
}
|
||||
blockquote,
|
||||
.quote p {
|
||||
@@ -230,6 +231,7 @@ blockquote:before,
|
||||
width: 100vw;
|
||||
height: calc(100vh - 3rem);
|
||||
background-color: var(--bg);
|
||||
filter: brightness(50%);
|
||||
color: var(--color);
|
||||
z-index: 99999;
|
||||
justify-content: center;
|
||||
@@ -339,7 +341,7 @@ blockquote:before,
|
||||
}
|
||||
#menu {
|
||||
position: fixed;
|
||||
z-index: 9999;
|
||||
z-index: 999;
|
||||
background-color: var(--postbox);
|
||||
width: 540px;
|
||||
top: calc(50% - 150px);
|
||||
@@ -376,6 +378,9 @@ blockquote:before,
|
||||
#left-menu a.active {
|
||||
background-color: var(--emphasized);
|
||||
}
|
||||
#left-menu a.active span {
|
||||
text-decoration: underline;
|
||||
}
|
||||
#right-menu {
|
||||
width: 100%;
|
||||
overflow-y: scroll;
|
||||
@@ -605,3 +610,6 @@ textarea {
|
||||
.darwin .win {
|
||||
display: none;
|
||||
}
|
||||
.dropdown-content.header:hover {
|
||||
background-color: white;
|
||||
}
|
@@ -157,7 +157,8 @@ iframe,
|
||||
}
|
||||
.box {
|
||||
overflow: hidden;
|
||||
min-width: 23rem;
|
||||
min-width: 300px;
|
||||
max-width: 600px;
|
||||
flex: 1;
|
||||
border-top: none;
|
||||
display: flex;
|
||||
@@ -217,10 +218,14 @@ iframe,
|
||||
.emoji,
|
||||
.emoji-img {
|
||||
width: 1.153rem;
|
||||
height: 1.153rem;
|
||||
object-fit: cover;
|
||||
}
|
||||
.area-toot .emoji,
|
||||
.area-toot .emoji-img {
|
||||
width: 1.538rem;
|
||||
height: 1.538rem;
|
||||
object-fit: cover;
|
||||
vertical-align: middle;
|
||||
margin: -1px 0;
|
||||
}
|
||||
@@ -238,6 +243,7 @@ iframe,
|
||||
flex: 1;
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
background-color: var(--bg);
|
||||
}
|
||||
.additional {
|
||||
overflow-x: scroll;
|
||||
@@ -714,7 +720,7 @@ p:not(:last-child) {
|
||||
background-color: var(--beforehover);
|
||||
cursor: pointer;
|
||||
width: 3.8rem;
|
||||
padding: 1.5rem;
|
||||
height: 1.7rem;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
margin-top: 0.38rem;
|
||||
|
@@ -87,6 +87,7 @@
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 3.4rem);
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
#my-data-nav .btn {
|
||||
width: 10.7rem;
|
||||
@@ -142,6 +143,9 @@
|
||||
#hisdropdown{
|
||||
background-color: var(--bg);
|
||||
}
|
||||
#hisdropdown li a {
|
||||
color: white;
|
||||
}
|
||||
#hisdropdown li:hover{
|
||||
background-color: var(--active);
|
||||
}
|
69
app/img/2025.svg
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 |
@@ -1,3 +1,4 @@
|
||||
//@ts-check
|
||||
//このソフトについて
|
||||
function about() {
|
||||
postMessage(["sendSinmpleIpc", "about"], "*")
|
||||
|
@@ -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")
|
||||
}))
|
@@ -4,18 +4,21 @@ function verck(ver, jp) {
|
||||
$('body').addClass(localStorage.getItem('platform'))
|
||||
var date = new Date()
|
||||
var showVer = 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)
|
||||
}
|
||||
//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)
|
||||
Swal.fire({
|
||||
type: 'info',
|
||||
title: spDc,
|
||||
})
|
||||
}
|
||||
//Spotify(e)
|
||||
if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) {
|
||||
showVer = true
|
||||
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
|
||||
$(document).ready(function() {
|
||||
|
@@ -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))
|
||||
|
@@ -590,7 +590,7 @@ function enc(ver) {
|
||||
}
|
||||
//インスタンスティッカー
|
||||
function ticker() {
|
||||
var start = 'https://toot.app/toot/index.php'
|
||||
var start = 'https://s.0px.io/json'
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
cors: true,
|
||||
@@ -611,7 +611,8 @@ function ticker() {
|
||||
})
|
||||
.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()
|
||||
}
|
@@ -252,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)
|
||||
}
|
||||
|
@@ -130,17 +130,11 @@ function playSound() {
|
||||
volumeControl.gain.value = vol
|
||||
source.start(0)
|
||||
soundFile = source
|
||||
|
||||
function newFunction() {
|
||||
var source
|
||||
return source
|
||||
}
|
||||
}
|
||||
function nano() {
|
||||
postMessage(['nano', null], '*')
|
||||
}
|
||||
onmessage = function(e) {
|
||||
console.log(e)
|
||||
if (e.data[0] == 'details') {
|
||||
details(e.data[1][0], e.data[1][1])
|
||||
} else if (e.data[0] == 'udg') {
|
||||
|
@@ -122,6 +122,10 @@ 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 = ''
|
||||
}
|
||||
@@ -195,6 +199,20 @@ function post(mode, postvis) {
|
||||
}
|
||||
}
|
||||
}
|
||||
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()
|
||||
|
@@ -160,8 +160,14 @@ function bkm(id, acct_id, tlid) {
|
||||
|
||||
//フォロー
|
||||
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()
|
||||
}
|
||||
@@ -172,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')
|
||||
@@ -205,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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -669,7 +680,8 @@ function staEx(mode) {
|
||||
})
|
||||
return
|
||||
}
|
||||
function toggleAction(elem, height) {
|
||||
function toggleAction(elem, ct) {
|
||||
var height = ct * 39 + 6
|
||||
var cont = elem.parents('.cvo').find('.contextMenu')
|
||||
if (cont.hasClass('hide')) {
|
||||
$('#contextWrap').removeClass('hide')
|
||||
@@ -680,6 +692,7 @@ function toggleAction(elem, height) {
|
||||
cont.removeClass('bottom')
|
||||
cont.addClass('top')
|
||||
} else {
|
||||
top = elem.offset().top - 105
|
||||
cont.removeClass('top')
|
||||
cont.addClass('bottom')
|
||||
}
|
||||
|
@@ -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 a").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
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
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -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] == 'cannnotopen') {
|
||||
mixre(acct_id, tlid, 'mix', mute, voice, '')
|
||||
} else if(mastodonBaseWs[domain] == 'undetected') {
|
||||
const mbws = setInterval(function () {
|
||||
if(mastodonBaseWsStatus[domain] == 'cannnotopen') {
|
||||
mixre(acct_id, tlid, 'mix', mute, voice, '')
|
||||
clearInterval(mbws)
|
||||
} else if(mastodonBaseWsStatus[domain] == 'available') {
|
||||
mastodonBaseWs[domain].send(`{"type":"subscribe","stream":"public:local"}`)
|
||||
clearInterval(mbws)
|
||||
}
|
||||
}, 1000)
|
||||
} else if(mastodonBaseWsStatus[domain] == 'available') {
|
||||
mastodonBaseWs[domain].send(`{"type":"subscribe","stream":"public:local"}`)
|
||||
}
|
||||
|
||||
$(window).scrollTop(0)
|
||||
lastId = integrated[0].id
|
||||
beforeLastId = integrated[1].id
|
||||
|
@@ -194,7 +194,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
}
|
||||
var local = []
|
||||
var times = []
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
Object.keys(obj).forEach(function (key) {
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var toot = obj[key]
|
||||
if (type == 'dm') {
|
||||
@@ -214,7 +214,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
}
|
||||
//絵文字があれば
|
||||
if (actemojick) {
|
||||
Object.keys(toot.account.emojis).forEach(function(key5) {
|
||||
Object.keys(toot.account.emojis).forEach(function (key5) {
|
||||
var emoji = toot.account.emojis[key5]
|
||||
var shortcode = emoji.shortcode
|
||||
if (gif == 'yes') {
|
||||
@@ -273,7 +273,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
</i><span class="voice">${lang.lang_parse_notffilter}</span></span>
|
||||
<span class="cbadge cbadge-hover" title="${date(toot.created_at, 'absolute')}(${
|
||||
lang.lang_parse_notftime
|
||||
})" aria-hidden="true"><i class="far fa-clock"></i>
|
||||
})" aria-hidden="true"><i class="far fa-clock"></i>
|
||||
${date(toot.created_at, datetype)}
|
||||
</span>
|
||||
<span class="voice">${date(toot.created_at, 'absolute')}(${lang.lang_parse_notftime})</span>
|
||||
@@ -369,7 +369,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
}
|
||||
//絵文字があれば
|
||||
if (actemojick) {
|
||||
Object.keys(toot.account.emojis).forEach(function(key5) {
|
||||
Object.keys(toot.account.emojis).forEach(function (key5) {
|
||||
var emoji = toot.account.emojis[key5]
|
||||
var shortcode = emoji.shortcode
|
||||
if (gif == 'yes') {
|
||||
@@ -393,8 +393,8 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
} else {
|
||||
noticeavatar = toot.account.avatar_static
|
||||
}
|
||||
noticeavatar = `<a onclick="udg('${toot.account.id}','${acct_id}');" user="${toot.account.acct}" class="notf-icon udg" aria-hidden="true">
|
||||
<img draggable="false" src="${noticeavatar}" width="20" class="prof-img"
|
||||
noticeavatar = `<a onclick="udg('${toot.account.id}','${acct_id}');" user="${toot.account.acct}" class="udg" aria-hidden="true">
|
||||
<img draggable="false" src="${noticeavatar}" width="20" class="notf-icon prof-img"
|
||||
user="${toot.account.acct}" onerror="this.src=\'../../img/loading.svg\'">
|
||||
</a>`
|
||||
var rebtxt = lang.lang_parse_btedsimple
|
||||
@@ -426,7 +426,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
}
|
||||
//絵文字があれば
|
||||
if (actemojick) {
|
||||
Object.keys(toot.account.emojis).forEach(function(key5) {
|
||||
Object.keys(toot.account.emojis).forEach(function (key5) {
|
||||
var emoji = toot.account.emojis[key5]
|
||||
var shortcode = emoji.shortcode
|
||||
if (gif == 'yes') {
|
||||
@@ -454,7 +454,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
var fullname = toot.account.acct + '@' + domain
|
||||
}
|
||||
if (useremp) {
|
||||
Object.keys(useremp).forEach(function(key10) {
|
||||
Object.keys(useremp).forEach(function (key10) {
|
||||
var user = useremp[key10]
|
||||
if (user == fullname) {
|
||||
boostback = 'emphasized'
|
||||
@@ -494,7 +494,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
var via = escapeHTML(toot.application.name)
|
||||
if (empCli) {
|
||||
//強調チェック
|
||||
Object.keys(empCli).forEach(function(key6) {
|
||||
Object.keys(empCli).forEach(function (key6) {
|
||||
var empCliList = empCli[key6]
|
||||
if (empCliList == via) {
|
||||
boostback = 'emphasized'
|
||||
@@ -503,7 +503,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
}
|
||||
if (muteCli) {
|
||||
//ミュートチェック
|
||||
Object.keys(muteCli).forEach(function(key7) {
|
||||
Object.keys(muteCli).forEach(function (key7) {
|
||||
var muteCliList = muteCli[key7]
|
||||
if (muteCliList == via) {
|
||||
boostback = 'hide'
|
||||
@@ -597,7 +597,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
if (mediack) {
|
||||
hasmedia = 'hasmedia'
|
||||
var cwdt = 100 / toot.media_attachments.length
|
||||
Object.keys(toot.media_attachments).forEach(function(key2) {
|
||||
Object.keys(toot.media_attachments).forEach(function (key2) {
|
||||
var media = toot.media_attachments[key2]
|
||||
var purl = media.preview_url
|
||||
media_ids = media_ids + media.id + ','
|
||||
@@ -628,7 +628,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
var mty = media.remote_url.match(/.+(\..+)$/)[1]
|
||||
viewer =
|
||||
viewer +
|
||||
`<a href="${media.remote_url}" title="${media.remote_url}">[${lang.lang_parse_unknown}(${mty})]</a> `
|
||||
`<a href="${media.url ? media.url : media.remote_url}" title="${media.remote_url} from ${media.url}">[${lang.lang_parse_unknown}(${mty})]</a> `
|
||||
} else if (media.type == 'audio') {
|
||||
viewer =
|
||||
viewer +
|
||||
@@ -669,7 +669,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
if (menck) {
|
||||
mentions = ''
|
||||
var to_mention = []
|
||||
Object.keys(toot.mentions).forEach(function(key3) {
|
||||
Object.keys(toot.mentions).forEach(function (key3) {
|
||||
var mention = toot.mentions[key3]
|
||||
//自分は除外
|
||||
//自インスタンスかどうかを確認し、IDの一致
|
||||
@@ -704,19 +704,19 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
var tags = ''
|
||||
//タグであれば
|
||||
if (tagck) {
|
||||
Object.keys(toot.tags).forEach(function(key4) {
|
||||
Object.keys(toot.tags).forEach(function (key4) {
|
||||
var tag = toot.tags[key4]
|
||||
var featured = ` <a onclick="tagFeature('${tag.name}','${acct_id}')" class="pointer" title="add it to Featured tags">Feature</a> `
|
||||
tags =
|
||||
tags +
|
||||
`<span class="hide" data-tag="${tag.name}" data-regTag="${tag.name.toLowerCase()}">#${
|
||||
tag.name
|
||||
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}')"
|
||||
'{{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}}',
|
||||
@@ -812,7 +812,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
}
|
||||
//ワードミュート
|
||||
if (wordmuteList) {
|
||||
Object.keys(wordmuteList).forEach(function(key8) {
|
||||
Object.keys(wordmuteList).forEach(function (key8) {
|
||||
var worde = wordmuteList[key8]
|
||||
if (worde) {
|
||||
if (worde.tag) {
|
||||
@@ -829,7 +829,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
}
|
||||
//ワード強調
|
||||
if (wordempList) {
|
||||
Object.keys(wordempList).forEach(function(key9) {
|
||||
Object.keys(wordempList).forEach(function (key9) {
|
||||
var wordList = wordempList[key9]
|
||||
if (wordList) {
|
||||
var wordList = wordList.tag
|
||||
@@ -845,7 +845,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
}
|
||||
//絵文字があれば
|
||||
if (emojick) {
|
||||
Object.keys(toot.emojis).forEach(function(key5) {
|
||||
Object.keys(toot.emojis).forEach(function (key5) {
|
||||
var emoji = toot.emojis[key5]
|
||||
var shortcode = emoji.shortcode
|
||||
if (gif == 'yes') {
|
||||
@@ -871,7 +871,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
}
|
||||
//絵文字があれば(nico)
|
||||
if (nicoemojick) {
|
||||
Object.keys(toot.profile_emojis).forEach(function(keynico) {
|
||||
Object.keys(toot.profile_emojis).forEach(function (keynico) {
|
||||
var emoji = toot.profile_emojis[keynico]
|
||||
var shortcode = emoji.shortcode
|
||||
var emoji_url = `<img draggable="false" src="${emoji.url}" class="emoji-img" data-emoji="${shortcode}" alt=" :${shortcode}: "
|
||||
@@ -918,9 +918,10 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
//Ticker
|
||||
var tickerdom = ''
|
||||
if (ticker) {
|
||||
var tickerdata = localStorage.getItem('ticker')
|
||||
var tickerdata = localStorage.getItem('sticker')
|
||||
if (tickerdata) {
|
||||
var tickerdata = JSON.parse(tickerdata)
|
||||
var tickerdataRaw = JSON.parse(tickerdata)
|
||||
var tickerdata = tickerdataRaw.data
|
||||
|
||||
var thisdomain = toot.account.acct.split('@')
|
||||
if (thisdomain.length > 1) {
|
||||
@@ -929,14 +930,41 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
for (var i = 0; i < tickerdata.length; i++) {
|
||||
var value = tickerdata[i]
|
||||
if (value.domain == thisdomain) {
|
||||
var tickerdom = `<div aria-hidden="true" style="user-select:none;cursor:default;background:linear-gradient(90deg, ${
|
||||
value.bg
|
||||
}, transparent 96%) !important; color:${
|
||||
value.text
|
||||
};width:100%; height:0.9rem; font-size:0.8rem;" class="tickers">
|
||||
var bgColor = value.bgColor
|
||||
var fontColor = value.fontColor
|
||||
if (!value.bgColor || !value.fontColor) {
|
||||
if (value.type == 'mastodon') {
|
||||
if (!value.bgColor) bgColor = tickerdataRaw.default.mastodon.bgColor
|
||||
if (!value.fontColor) fontColor = tickerdataRaw.default.mastodon.fontColor
|
||||
} else if (value.type == 'pleroma') {
|
||||
if (!value.bgColor) bgColor = tickerdataRaw.default.pleroma.bgColor
|
||||
if (!value.fontColor) fontColor = tickerdataRaw.default.pleroma.fontColor
|
||||
} else if (value.type == 'misskey') {
|
||||
if (!value.bgColor) bgColor = tickerdataRaw.default.misskey.bgColor
|
||||
if (!value.fontColor) fontColor = tickerdataRaw.default.misskey.fontColor
|
||||
} else if (value.type == 'misskeylegacy') {
|
||||
if (!value.bgColor) bgColor = tickerdataRaw.default.misskeylegacy.bgColor
|
||||
if (!value.fontColor) fontColor = tickerdataRaw.default.misskeylegacy.fontColor
|
||||
} else if (value.type == 'pixelfed') {
|
||||
if (!value.bgColor) bgColor = tickerdataRaw.default.pixelfed.bgColor
|
||||
if (!value.fontColor) fontColor = tickerdataRaw.default.pixelfed.fontColor
|
||||
}
|
||||
} else {
|
||||
var bgColor = value.bgColor
|
||||
var fontColor = value.fontColor
|
||||
}
|
||||
bgColorCSS = ''
|
||||
for (let j = 0; j < bgColor.length; j++) {
|
||||
const bg = bgColor[j]
|
||||
bgColorCSS = bgColorCSS + bg + ','
|
||||
}
|
||||
bgColorCSS = `linear-gradient(90deg, ${bgColorCSS} transparent)`
|
||||
var tickerdom = `<div aria-hidden="true" style="user-select:none;cursor:default;background:${bgColorCSS} !important; color:${
|
||||
fontColor
|
||||
};width:100%; height:0.9rem; font-size:0.8rem;" class="tickers">
|
||||
<img draggable="false" src="${
|
||||
value.image
|
||||
}" style="height:100%;" onerror="this.src=\'../../img/loading.svg\'">
|
||||
value.favicon
|
||||
}" style="height:100%;" onerror="this.src=\'../../img/loading.svg\'">
|
||||
<span style="position:relative; top:-0.2rem;">${escapeHTML(value.name)}</span>
|
||||
</div>`
|
||||
break
|
||||
@@ -950,13 +978,14 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
if (!quoteUser) {
|
||||
quoteUser = toot.quote.account.acct
|
||||
}
|
||||
poll =
|
||||
poll +
|
||||
`<div class="quote-renote">
|
||||
if (!toot.quote.quote_muted) {
|
||||
poll =
|
||||
poll +
|
||||
`<div class="quote-renote">
|
||||
<div class="renote-icon">
|
||||
<a onclick="udg('${toot.quote.account.id}','${acct_id}');" user="${
|
||||
toot.quote.account.acct
|
||||
}" class="udg">
|
||||
}" class="udg">
|
||||
<img draggable="false" src="${toot.quote.account.avatar}">
|
||||
</a>
|
||||
</div>
|
||||
@@ -968,12 +997,18 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
</div>
|
||||
<div class="renote-details">
|
||||
<a onclick="details('${
|
||||
toot.quote.id
|
||||
}','${acct_id}','${tlid}','normal')" class="waves-effect waves-dark btn-flat details" style="padding:0">
|
||||
toot.quote.id
|
||||
}','${acct_id}','${tlid}','normal')" class="waves-effect waves-dark btn-flat details" style="padding:0">
|
||||
<i class="text-darken-3 material-icons">more_vert</i>
|
||||
</a>
|
||||
</div>
|
||||
</div>`
|
||||
} else {
|
||||
poll =
|
||||
poll +
|
||||
`<span class="gray sml">${lang.lang_parse_hidden}</span>`
|
||||
}
|
||||
|
||||
}
|
||||
//menuは何個?
|
||||
var menuct = 2
|
||||
@@ -1062,8 +1097,8 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
</div>
|
||||
<div class="action ${can_rt} ${disp['rt']} ${noauth}">
|
||||
<a onclick="rt('${
|
||||
toot.id
|
||||
}','${acct_id}','${tlid}')" class="waves-effect waves-dark btn-flat actct bt-btn"
|
||||
toot.id
|
||||
}','${acct_id}','${tlid}')" class="waves-effect waves-dark btn-flat actct bt-btn"
|
||||
style="padding:0" title="${lang.lang_parse_bt}">
|
||||
<i class="fas fa-retweet ${if_rt} rt_${toot.id}"></i>
|
||||
<span class="voice">${lang.lang_parse_bt} </span>
|
||||
@@ -1097,7 +1132,7 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
</div>
|
||||
<div class="area-side">
|
||||
<div class="action ${noauth}">
|
||||
<a onclick="toggleAction($(this), ${menuct * 39 + 6})"
|
||||
<a onclick="toggleAction($(this), ${menuct})"
|
||||
class="ctxMenu waves-effect waves-dark btn-flat" style="padding:0">
|
||||
<i class="text-darken-3 material-icons act-icon" aria-hidden="true">expand_more</i>
|
||||
<span class="voice">Other actions</span>
|
||||
@@ -1174,7 +1209,7 @@ function userparse(obj, auth, acct_id, tlid, popup) {
|
||||
}
|
||||
var templete = ''
|
||||
var datetype = localStorage.getItem('datetype')
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
Object.keys(obj).forEach(function (key) {
|
||||
var toot = obj[key]
|
||||
if (toot) {
|
||||
if (!toot.username) {
|
||||
@@ -1211,7 +1246,6 @@ function userparse(obj, auth, acct_id, tlid, popup) {
|
||||
} else if (auth == 'request') {
|
||||
var ftxt = lang.lang_parse_request
|
||||
}
|
||||
console.log(auth, ftxt)
|
||||
if (popup > 0 || popup == -1 || notf) {
|
||||
var notftext = ftxt + '<br>'
|
||||
} else {
|
||||
@@ -1251,7 +1285,7 @@ function userparse(obj, auth, acct_id, tlid, popup) {
|
||||
}
|
||||
//絵文字があれば
|
||||
if (actemojick) {
|
||||
Object.keys(toot.emojis).forEach(function(key5) {
|
||||
Object.keys(toot.emojis).forEach(function (key5) {
|
||||
var emoji = toot.emojis[key5]
|
||||
var shortcode = emoji.shortcode
|
||||
if (gif == 'yes') {
|
||||
@@ -1284,7 +1318,7 @@ function userparse(obj, auth, acct_id, tlid, popup) {
|
||||
} else {
|
||||
var udg = `<a onclick="udg('${toot.id}','${acct_id}');" user="${toot.acct}" class="udg">`
|
||||
}
|
||||
var latest = date(toot.last_status_at, 'relative')
|
||||
var latest = date(toot.last_status_at, 'relative', true)
|
||||
if (toot.last_status_at) {
|
||||
var latesthtml = `<div class="cbadge" style="width:100px;">Last <span class="voice">toot</span>: ${latest}</div>`
|
||||
} else {
|
||||
@@ -1362,7 +1396,7 @@ function client(name) {
|
||||
M.toast({ html: escapeHTML(name) + lang.lang_status_emphas, displayLength: 2000 })
|
||||
} else {
|
||||
var can
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
Object.keys(obj).forEach(function (key) {
|
||||
var cliT = obj[key]
|
||||
if (cliT != name && !can) {
|
||||
can = false
|
||||
@@ -1450,7 +1484,7 @@ function pollParse(poll, acct_id, emojis) {
|
||||
var max = 0
|
||||
}
|
||||
|
||||
Object.keys(choices).forEach(function(keyc) {
|
||||
Object.keys(choices).forEach(function (keyc) {
|
||||
var choice = choices[keyc]
|
||||
var voteit = ''
|
||||
for (var i = 0; i < minechoice.length; i++) {
|
||||
@@ -1485,7 +1519,7 @@ function pollParse(poll, acct_id, emojis) {
|
||||
var choiceText = escapeHTML(choice.title)
|
||||
if (emojis) {
|
||||
//絵文字があれば
|
||||
Object.keys(emojis).forEach(function(key5) {
|
||||
Object.keys(emojis).forEach(function (key5) {
|
||||
var emoji = emojis[key5]
|
||||
var shortcode = emoji.shortcode
|
||||
if (gif == 'yes') {
|
||||
@@ -1525,3 +1559,283 @@ function pollParse(poll, acct_id, emojis) {
|
||||
</div>`
|
||||
return pollHtml
|
||||
}
|
||||
|
||||
//MastodonBaseStreaming
|
||||
var mastodonBaseWs = {}
|
||||
var mastodonBaseWsStatus = {}
|
||||
function mastodonBaseStreaming(acct_id) {
|
||||
const domain = localStorage.getItem(`domain_${acct_id}`)
|
||||
if(mastodonBaseWsStatus[domain]) return
|
||||
mastodonBaseWsStatus[domain] = 'undetected'
|
||||
const at = localStorage.getItem(`acct_${acct_id}_at`)
|
||||
const start = `wss://${domain}/api/v1/streaming/?access_token=${at}`
|
||||
mastodonBaseWs[domain] = new WebSocket(start)
|
||||
mastodonBaseWs[domain].onopen = function () {
|
||||
mastodonBaseWsStatus[domain] = 'connecting'
|
||||
setTimeout(function () {
|
||||
mastodonBaseWsStatus[domain] = 'available'
|
||||
}, 3000)
|
||||
mastodonBaseWs[domain].send(`{"type":"subscribe","stream":"user"}`)
|
||||
$('.notice_icon_acct_' + acct_id).removeClass('red-text')
|
||||
}
|
||||
mastodonBaseWs[domain].onmessage = function (mess) {
|
||||
const typeA = JSON.parse(mess.data).event
|
||||
if (typeA == 'delete') {
|
||||
$(`[unique-id=${JSON.parse(mess.data).payload}]`).hide()
|
||||
$(`[unique-id=${JSON.parse(mess.data).payload}]`).remove()
|
||||
} else if (typeA == 'update' || typeA == 'conversation') {
|
||||
//markers show中はダメ
|
||||
const tl = JSON.parse(mess.data).stream
|
||||
const obj = JSON.parse(JSON.parse(mess.data).payload)
|
||||
const tls = getTlMeta(tl[0], tl, acct_id, obj)
|
||||
insertTl(obj, tls)
|
||||
} else if (typeA == 'filters_changed') {
|
||||
filterUpdate(acct_id)
|
||||
} else if (~typeA.indexOf('announcement')) {
|
||||
announ(acct_id, tlid)
|
||||
} else if (typeA == 'notification') {
|
||||
const obj = JSON.parse(JSON.parse(mess.data).payload)
|
||||
let template = ''
|
||||
localStorage.setItem('lastnotf_' + acct_id, obj.id)
|
||||
let popup = localStorage.getItem('popup')
|
||||
if (!popup) {
|
||||
popup = 0
|
||||
}
|
||||
if (obj.type != 'follow' && obj.type != 'follow_request') {
|
||||
template = parse([obj], 'notf', acct_id, 'notf', popup)
|
||||
} else if (obj.type == 'follow_request') {
|
||||
template = userparse([obj.account], 'request', acct_id, 'notf', -1)
|
||||
} else {
|
||||
template = userparse([obj], obj.type, acct_id, 'notf', popup)
|
||||
}
|
||||
if (!$('div[data-notfIndv=' + acct_id + '_' + obj.id + ']').length) {
|
||||
$('div[data-notf=' + acct_id + ']').prepend(template)
|
||||
$('div[data-const=notf_' + acct_id + ']').prepend(template)
|
||||
}
|
||||
jQuery('time.timeago').timeago()
|
||||
} else {
|
||||
console.error('unknown type ' + typeA)
|
||||
}
|
||||
}
|
||||
mastodonBaseWs[domain].onerror = function (error) {
|
||||
notf(acct_id, 0) //fallback
|
||||
console.error("Error closing " + domain)
|
||||
console.error(error)
|
||||
if (mastodonBaseWsStatus[domain] == 'available') alert(domain)
|
||||
mastodonBaseWsStatus[domain] = 'cannotuse'
|
||||
setTimeout(function () {
|
||||
mastodonBaseWsStatus[domain] = 'cannotuse'
|
||||
}, 3000)
|
||||
mastodonBaseWs[domain] = false
|
||||
return false
|
||||
}
|
||||
mastodonBaseWs[domain].onclose = function () {
|
||||
notf(acct_id, 0) //fallback
|
||||
console.warn("Closing " + domain)
|
||||
if (mastodonBaseWsStatus[domain] == 'available') alert(domain)
|
||||
mastodonBaseWs[domain] = false
|
||||
mastodonBaseWsStatus[domain] = 'cannotuse'
|
||||
setTimeout(function () {
|
||||
mastodonBaseWsStatus[domain] = 'cannotuse'
|
||||
}, 3000)
|
||||
return false
|
||||
}
|
||||
}
|
||||
function insertTl(obj, tls) {
|
||||
for (const timeline of tls) {
|
||||
const { id, voice, type, acct_id } = timeline
|
||||
const mute = getFilterTypeByAcct(acct_id, type)
|
||||
if ($(`#unread_${id} .material-icons`).hasClass('teal-text')) continue
|
||||
if (!$(`#timeline_${id} [toot-id=${obj.id}]`).length) {
|
||||
if (voice) {
|
||||
say(obj.content)
|
||||
}
|
||||
const template = parse([obj], type, acct_id, id, '', mute, type)
|
||||
console.log($(`#timeline_box_${id}_box .tl-box`).scrollTop(), `timeline_box_${id}_box .tl-box`)
|
||||
if (
|
||||
$(`#timeline_box_${id}_box .tl-box`).scrollTop() === 0
|
||||
) {
|
||||
$(`#timeline_${id}`).prepend(template)
|
||||
} else {
|
||||
let pool = localStorage.getItem('pool_' + id)
|
||||
if (pool) {
|
||||
pool = template + pool
|
||||
} else {
|
||||
pool = template
|
||||
}
|
||||
localStorage.setItem('pool_' + id, pool)
|
||||
}
|
||||
scrollck()
|
||||
additional(acct_id, id)
|
||||
jQuery('time.timeago').timeago()
|
||||
}
|
||||
}
|
||||
}
|
||||
function getTlMeta(type, data, num, status) {
|
||||
const acct_id = num.toString()
|
||||
const columns = localStorage.getItem('column')
|
||||
const obj = JSON.parse(columns)
|
||||
let ret = []
|
||||
let i = 0
|
||||
switch (type) {
|
||||
case 'user':
|
||||
for (const tl of obj) {
|
||||
if (tl.domain != acct_id) continue
|
||||
if (tl.type == 'mix' || tl.type == 'home') {
|
||||
let voice = false
|
||||
if (localStorage.getItem('voice_' + i)) voice = true
|
||||
ret.push({
|
||||
id: i,
|
||||
voice: voice,
|
||||
type: tl.type,
|
||||
acct_id: tl.domain
|
||||
})
|
||||
}
|
||||
i++
|
||||
}
|
||||
break
|
||||
case 'public:local':
|
||||
for (const tl of obj) {
|
||||
if (tl.domain != acct_id) continue
|
||||
if (tl.type == 'mix' || tl.type == 'local') {
|
||||
let voice = false
|
||||
if (localStorage.getItem('voice_' + i)) voice = true
|
||||
ret.push({
|
||||
id: i,
|
||||
voice: voice,
|
||||
type: tl.type,
|
||||
acct_id: tl.domain
|
||||
})
|
||||
}
|
||||
i++
|
||||
}
|
||||
break
|
||||
case 'public:local:media':
|
||||
for (const tl of obj) {
|
||||
if (tl.domain != acct_id) continue
|
||||
if (tl.type == 'local-media') {
|
||||
let voice = false
|
||||
if (localStorage.getItem('voice_' + i)) voice = true
|
||||
ret.push({
|
||||
id: i,
|
||||
voice: voice,
|
||||
type: tl.type,
|
||||
acct_id: tl.domain
|
||||
})
|
||||
}
|
||||
i++
|
||||
}
|
||||
break;
|
||||
case 'public':
|
||||
for (const tl of obj) {
|
||||
if (tl.domain != acct_id) continue
|
||||
if (tl.type == 'pub') {
|
||||
let voice = false
|
||||
if (localStorage.getItem('voice_' + i)) voice = true
|
||||
ret.push({
|
||||
id: i,
|
||||
voice: voice,
|
||||
type: tl.type,
|
||||
acct_id: tl.domain
|
||||
})
|
||||
}
|
||||
i++
|
||||
}
|
||||
break;
|
||||
case 'public:media':
|
||||
for (const tl of obj) {
|
||||
if (tl.domain != acct_id) continue
|
||||
if (tl.type == 'pub-media') {
|
||||
let voice = false
|
||||
if (localStorage.getItem('voice_' + i)) voice = true
|
||||
ret.push({
|
||||
id: i,
|
||||
voice: voice,
|
||||
type: tl.type,
|
||||
acct_id: tl.domain
|
||||
})
|
||||
}
|
||||
i++
|
||||
}
|
||||
break;
|
||||
case 'list':
|
||||
for (const tl of obj) {
|
||||
if (tl.domain != acct_id) continue
|
||||
if (tl.type == 'list' && tl.data == data[1]) {
|
||||
let voice = false
|
||||
if (localStorage.getItem('voice_' + i)) voice = true
|
||||
ret.push({
|
||||
id: i,
|
||||
voice: voice,
|
||||
type: tl.type,
|
||||
acct_id: tl.domain
|
||||
})
|
||||
}
|
||||
i++
|
||||
}
|
||||
break;
|
||||
case 'direct':
|
||||
for (const tl of obj) {
|
||||
if (tl.domain != acct_id) continue
|
||||
if (tl.type == 'dm') {
|
||||
let voice = false
|
||||
if (localStorage.getItem('voice_' + i)) voice = true
|
||||
ret.push({
|
||||
id: i,
|
||||
voice: voice,
|
||||
type: tl.type,
|
||||
acct_id: tl.domain
|
||||
})
|
||||
}
|
||||
i++
|
||||
}
|
||||
break;
|
||||
case 'hashtag':
|
||||
for (const tl of obj) {
|
||||
if (tl.domain != acct_id) continue
|
||||
const columnDataRaw = tl.data
|
||||
let columnData
|
||||
if (!columnDataRaw.name) {
|
||||
columnData = { name: columnDataRaw }
|
||||
} else {
|
||||
columnData = columnDataRaw
|
||||
}
|
||||
if (tl.type == 'tag') {
|
||||
let voice = false
|
||||
let can = false
|
||||
if (columnData.name == data[1]) can = true
|
||||
//any
|
||||
if (columnData.any.split(',').includes(data[1])) can = true
|
||||
//all
|
||||
const { tags } = status
|
||||
if (columnData.all) can = true
|
||||
for (const { name } of tags) {
|
||||
if (!columnData.all.split(',').includes(name)) {
|
||||
can = false
|
||||
break
|
||||
}
|
||||
}
|
||||
//none
|
||||
if (columnData.none) can = true
|
||||
for (const { name } of tags) {
|
||||
if (columnData.none.split(',').includes(name)) {
|
||||
can = false
|
||||
break
|
||||
}
|
||||
}
|
||||
if (localStorage.getItem('voice_' + i)) voice = true
|
||||
ret.push({
|
||||
id: i,
|
||||
voice: voice,
|
||||
type: tl.type,
|
||||
acct_id: tl.domain
|
||||
})
|
||||
}
|
||||
i++
|
||||
}
|
||||
break;
|
||||
default:
|
||||
console.error(`Cannot catch`);
|
||||
}
|
||||
return ret
|
||||
}
|
514
app/js/tl/tl.js
514
app/js/tl/tl.js
@@ -44,10 +44,10 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
|
||||
//Integratedなら飛ばす
|
||||
$('#notice_' + tlid).text(
|
||||
'Integrated TL(' +
|
||||
localStorage.getItem('user_' + acct_id) +
|
||||
'@' +
|
||||
domain +
|
||||
')'
|
||||
localStorage.getItem('user_' + acct_id) +
|
||||
'@' +
|
||||
domain +
|
||||
')'
|
||||
)
|
||||
$('#notice_icon_' + tlid).text('merge_type')
|
||||
mixtl(acct_id, tlid, 'integrated', delc, voice)
|
||||
@@ -56,10 +56,10 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
|
||||
//Local+なら飛ばす
|
||||
$('#notice_' + tlid).text(
|
||||
'Local+ TL(' +
|
||||
localStorage.getItem('user_' + acct_id) +
|
||||
'@' +
|
||||
domain +
|
||||
')'
|
||||
localStorage.getItem('user_' + acct_id) +
|
||||
'@' +
|
||||
domain +
|
||||
')'
|
||||
)
|
||||
$('#notice_icon_' + tlid).text('people_outline')
|
||||
mixtl(acct_id, tlid, 'plus', delc, voice)
|
||||
@@ -69,11 +69,11 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
|
||||
notf(acct_id, tlid, 'direct')
|
||||
$('#notice_' + tlid).text(
|
||||
cap(type, data, acct_id) +
|
||||
'(' +
|
||||
localStorage.getItem('user_' + acct_id) +
|
||||
'@' +
|
||||
domain +
|
||||
')'
|
||||
'(' +
|
||||
localStorage.getItem('user_' + acct_id) +
|
||||
'@' +
|
||||
domain +
|
||||
')'
|
||||
)
|
||||
$('#notice_icon_' + tlid).text('notifications')
|
||||
return
|
||||
@@ -82,11 +82,11 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
|
||||
getBookmark(acct_id, tlid)
|
||||
$('#notice_' + tlid).text(
|
||||
cap(type, data, acct_id) +
|
||||
'(' +
|
||||
localStorage.getItem('user_' + acct_id) +
|
||||
'@' +
|
||||
domain +
|
||||
')'
|
||||
'(' +
|
||||
localStorage.getItem('user_' + acct_id) +
|
||||
'@' +
|
||||
domain +
|
||||
')'
|
||||
)
|
||||
$('#notice_icon_' + tlid).text('bookmark')
|
||||
return
|
||||
@@ -95,11 +95,11 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
|
||||
getUtl(acct_id, tlid, data, false)
|
||||
$('#notice_' + tlid).text(
|
||||
cap(type, data, acct_id) +
|
||||
'(' +
|
||||
localStorage.getItem('user_' + acct_id) +
|
||||
'@' +
|
||||
domain +
|
||||
')'
|
||||
'(' +
|
||||
localStorage.getItem('user_' + acct_id) +
|
||||
'@' +
|
||||
domain +
|
||||
')'
|
||||
)
|
||||
$('#notice_icon_' + tlid).text('person')
|
||||
return
|
||||
@@ -117,11 +117,11 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
|
||||
}
|
||||
$('#notice_' + tlid).text(
|
||||
cap(type, data, acct_id) +
|
||||
'(' +
|
||||
localStorage.getItem('user_' + acct_id) +
|
||||
'@' +
|
||||
domain +
|
||||
')'
|
||||
'(' +
|
||||
localStorage.getItem('user_' + acct_id) +
|
||||
'@' +
|
||||
domain +
|
||||
')'
|
||||
)
|
||||
} else {
|
||||
var hdr = {
|
||||
@@ -206,7 +206,7 @@ function tl(type, data, acct_id, tlid, delc, voice, mode) {
|
||||
additional(acct_id, tlid)
|
||||
jQuery('time.timeago').timeago()
|
||||
todc()
|
||||
reload(type, '', acct_id, tlid, data, mute, delc, voice)
|
||||
reload(type, 'from timeline to reload', acct_id, tlid, data, mute, delc, voice)
|
||||
if (type == 'home' || type == 'notf') {
|
||||
//Markers
|
||||
var markers = localStorage.getItem('markers')
|
||||
@@ -247,194 +247,243 @@ function reload(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
|
||||
}
|
||||
}, 100)
|
||||
} else {
|
||||
var misskey = false
|
||||
if (localStorage.getItem('streaming_' + acct_id)) {
|
||||
var wss = localStorage.getItem('streaming_' + acct_id)
|
||||
} else {
|
||||
var wss = 'wss://' + domain
|
||||
}
|
||||
if (type == 'home') {
|
||||
var start = wss + '/api/v1/streaming/?stream=user&access_token=' + at
|
||||
} else if (type == 'pub') {
|
||||
var add = ''
|
||||
if(remoteOnlyCk(tlid)){
|
||||
add = '&remote=true'
|
||||
}
|
||||
var start = wss + '/api/v1/streaming/?stream=public&access_token=' + at + add
|
||||
} else if (type == 'pub-media') {
|
||||
var add = ''
|
||||
if(remoteOnlyCk(tlid)){
|
||||
add = '&remote=true'
|
||||
}var start =
|
||||
wss + '/api/v1/streaming/?stream=public:media&access_token=' + at + add
|
||||
} else if (type == 'local') {
|
||||
var start =
|
||||
wss + '/api/v1/streaming/?stream=public:local&access_token=' + at
|
||||
} else if (type == 'local-media') {
|
||||
var start =
|
||||
wss +
|
||||
'/api/v1/streaming/?stream=public:local:media&only_media=true&access_token=' +
|
||||
at
|
||||
} else if (type == 'tag') {
|
||||
if (type == 'tag') {
|
||||
var tag = localStorage.getItem('tag-range')
|
||||
if (tag == 'local') {
|
||||
data = data + '&local=true'
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
if (mastodonBaseWsStatus[domain] == 'cannotuse') {
|
||||
oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode)
|
||||
} else if (mastodonBaseWsStatus[domain] == 'undetected' || mastodonBaseWsStatus[domain] == 'connecting') {
|
||||
const mbws = setInterval(function () {
|
||||
if (mastodonBaseWsStatus[domain] == 'cannotuse') {
|
||||
oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode)
|
||||
clearInterval(mbws)
|
||||
} else if (mastodonBaseWsStatus[domain] == 'available') {
|
||||
$('#notice_icon_' + tlid).removeClass('red-text')
|
||||
stremaingSubscribe(type, acct_id, data)
|
||||
clearInterval(mbws)
|
||||
}
|
||||
}
|
||||
var start =
|
||||
wss +
|
||||
'/api/v1/streaming/?stream=hashtag&tag=' +
|
||||
data +
|
||||
'&access_token=' +
|
||||
at
|
||||
} else if (type == 'noauth') {
|
||||
var start = 'wss://' + acct_id + '/api/v1/streaming/?stream=public:local'
|
||||
} else if (type == 'list') {
|
||||
var start =
|
||||
wss +
|
||||
'/api/v1/streaming/?stream=list&list=' +
|
||||
data +
|
||||
'&access_token=' +
|
||||
at
|
||||
} else if (type == 'dm') {
|
||||
var start = wss + '/api/v1/streaming/?stream=direct&access_token=' + at
|
||||
}
|
||||
var wsid = websocket.length
|
||||
localStorage.setItem('wss_' + tlid, wsid)
|
||||
websocket[wsid] = new WebSocket(start)
|
||||
websocket[wsid].onopen = function (mess) {
|
||||
console.table({
|
||||
tlid: tlid,
|
||||
type: 'Connect Streaming API' + type,
|
||||
domain: domain,
|
||||
message: [mess],
|
||||
})
|
||||
errorct = 0
|
||||
}, 1000)
|
||||
} else if (mastodonBaseWsStatus[domain] == 'available') {
|
||||
$('#notice_icon_' + tlid).removeClass('red-text')
|
||||
}
|
||||
websocket[wsid].onmessage = function (mess) {
|
||||
console.log([tlid + ':Receive Streaming API:', JSON.parse(mess.data)])
|
||||
if (misskey) {
|
||||
if (JSON.parse(mess.data).type == 'note') {
|
||||
var obj = JSON.parse(mess.data).body
|
||||
if (voice) {
|
||||
say(obj.text)
|
||||
}
|
||||
websocketNotf[acct_id].send(
|
||||
JSON.stringify({
|
||||
type: 'capture',
|
||||
id: obj.id,
|
||||
})
|
||||
)
|
||||
var templete = misskeyParse([obj], type, acct_id, tlid, '', mute)
|
||||
var pool = localStorage.getItem('pool_' + tlid)
|
||||
if (pool) {
|
||||
pool = templete + pool
|
||||
} else {
|
||||
pool = templete
|
||||
}
|
||||
localStorage.setItem('pool_' + tlid, pool)
|
||||
scrollck()
|
||||
jQuery('time.timeago').timeago()
|
||||
}
|
||||
} else {
|
||||
var typeA = JSON.parse(mess.data).event
|
||||
if (typeA == 'delete') {
|
||||
var obj = JSON.parse(mess.data).payload
|
||||
if (delc == 'true') {
|
||||
$(
|
||||
'#timeline_' +
|
||||
tlid +
|
||||
' [unique-id=' +
|
||||
JSON.parse(mess.data).payload +
|
||||
']'
|
||||
).addClass('emphasized')
|
||||
$(
|
||||
'#timeline_' +
|
||||
tlid +
|
||||
' [unique-id=' +
|
||||
JSON.parse(mess.data).payload +
|
||||
']'
|
||||
).addClass('by_delcatch')
|
||||
} else {
|
||||
$('[unique-id=' + JSON.parse(mess.data).payload + ']').hide()
|
||||
$('[unique-id=' + JSON.parse(mess.data).payload + ']').remove()
|
||||
}
|
||||
} else if (typeA == 'update' || typeA == 'conversation') {
|
||||
if (
|
||||
!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')
|
||||
) {
|
||||
//markers show中はダメ
|
||||
var obj = JSON.parse(JSON.parse(mess.data).payload)
|
||||
if (
|
||||
$('#timeline_' + tlid + ' [toot-id=' + obj.id + ']').length < 1
|
||||
) {
|
||||
if (voice) {
|
||||
say(obj.content)
|
||||
}
|
||||
var templete = parse([obj], type, acct_id, tlid, '', mute, type)
|
||||
if (
|
||||
$('timeline_box_' + tlid + '_box .tl-box').scrollTop() === 0
|
||||
) {
|
||||
$('#timeline_' + tlid).prepend(templete)
|
||||
} else {
|
||||
var pool = localStorage.getItem('pool_' + tlid)
|
||||
if (pool) {
|
||||
pool = templete + pool
|
||||
} else {
|
||||
pool = templete
|
||||
}
|
||||
localStorage.setItem('pool_' + tlid, pool)
|
||||
}
|
||||
scrollck()
|
||||
additional(acct_id, tlid)
|
||||
jQuery('time.timeago').timeago()
|
||||
} else {
|
||||
todo('二重取得発生中')
|
||||
}
|
||||
|
||||
todc()
|
||||
}
|
||||
} else if (typeA == 'filters_changed') {
|
||||
filterUpdate(acct_id)
|
||||
} else if (~typeA.indexOf('announcement')) {
|
||||
announ(acct_id, tlid)
|
||||
}
|
||||
}
|
||||
}
|
||||
websocket[wsid].onerror = function (error) {
|
||||
console.error('Error closing')
|
||||
console.error(error)
|
||||
if (mode == 'error') {
|
||||
$('#notice_icon_' + tlid).addClass('red-text')
|
||||
todo('WebSocket Error ' + error)
|
||||
} else {
|
||||
errorct++
|
||||
console.log(errorct)
|
||||
if (errorct < 3) {
|
||||
reconnector(tlid, type, acct_id, data, 'error')
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
websocket[wsid].onclose = function () {
|
||||
console.warn('Closing ' + tlid)
|
||||
if (mode == 'error') {
|
||||
$('#notice_icon_' + tlid).addClass('red-text')
|
||||
todo('WebSocket Closed')
|
||||
} else {
|
||||
errorct++
|
||||
console.log(errorct)
|
||||
if (errorct < 3) {
|
||||
reconnector(tlid, type, acct_id, data, 'error')
|
||||
}
|
||||
}
|
||||
return false
|
||||
stremaingSubscribe(type, acct_id, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
function stremaingSubscribe(type, acct_id, data, unsubscribe) {
|
||||
let command = 'subscribe'
|
||||
if (unsubscribe) command = 'unsubscribe'
|
||||
let stream
|
||||
const domain = localStorage.getItem('domain_' + acct_id)
|
||||
if(type == 'home') return false
|
||||
if (type === 'local' || type === 'mix') { stream = 'public:local' }
|
||||
else if (type === 'local-media') { stream = 'public:local:media' }
|
||||
else if (type === 'pub') { stream = 'public' }
|
||||
else if (type === 'pub-media') { stream = 'public:media' }
|
||||
else if (type === 'list') {
|
||||
mastodonBaseWs[domain].send(`{"type":"${command}","stream":"list","list":"${data}"}`)
|
||||
return true
|
||||
} else if (type === 'tag') {
|
||||
let arr = []
|
||||
let name = data
|
||||
if (data.name) name = data.name
|
||||
arr.push(name)
|
||||
if (data.any) arr = arr.concat(data.any.split(','))
|
||||
if (data.all) arr = arr.concat(data.all.split(','))
|
||||
for (const tag of arr) {
|
||||
mastodonBaseWs[domain].send(`{"type":"${command}","stream":"hashtag","tag":"${tag}"}`)
|
||||
}
|
||||
return true
|
||||
}
|
||||
mastodonBaseWs[domain].send(`{"type":"${command}","stream":"${stream}"`)
|
||||
}
|
||||
function oldStreaming(type, cc, acct_id, tlid, data, mute, delc, voice, mode) {
|
||||
var misskey = false
|
||||
const domain = localStorage.getItem(`domain_${acct_id}`)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
if (localStorage.getItem('streaming_' + acct_id)) {
|
||||
var wss = localStorage.getItem('streaming_' + acct_id)
|
||||
} else {
|
||||
var wss = 'wss://' + domain
|
||||
}
|
||||
if (type == 'home') {
|
||||
var start = wss + '/api/v1/streaming/?stream=user&access_token=' + at
|
||||
} else if (type == 'pub') {
|
||||
var add = ''
|
||||
if (remoteOnlyCk(tlid)) {
|
||||
add = '&remote=true'
|
||||
}
|
||||
var start = wss + '/api/v1/streaming/?stream=public&access_token=' + at + add
|
||||
} else if (type == 'pub-media') {
|
||||
var add = ''
|
||||
if (remoteOnlyCk(tlid)) {
|
||||
add = '&remote=true'
|
||||
} var start =
|
||||
wss + '/api/v1/streaming/?stream=public:media&access_token=' + at + add
|
||||
} else if (type == 'local') {
|
||||
var start =
|
||||
wss + '/api/v1/streaming/?stream=public:local&access_token=' + at
|
||||
} else if (type == 'local-media') {
|
||||
var start =
|
||||
wss +
|
||||
'/api/v1/streaming/?stream=public:local:media&only_media=true&access_token=' +
|
||||
at
|
||||
} else if (type == 'tag') {
|
||||
var tag = localStorage.getItem('tag-range')
|
||||
if (tag == 'local') {
|
||||
data = data + '&local=true'
|
||||
}
|
||||
if (data.name) {
|
||||
data = data.name
|
||||
}
|
||||
var start =
|
||||
wss +
|
||||
'/api/v1/streaming/?stream=hashtag&tag=' +
|
||||
data +
|
||||
'&access_token=' +
|
||||
at + add
|
||||
} else if (type == 'noauth') {
|
||||
var start = 'wss://' + acct_id + '/api/v1/streaming/?stream=public:local'
|
||||
} else if (type == 'list') {
|
||||
var start =
|
||||
wss +
|
||||
'/api/v1/streaming/?stream=list&list=' +
|
||||
data +
|
||||
'&access_token=' +
|
||||
at
|
||||
} else if (type == 'dm') {
|
||||
var start = wss + '/api/v1/streaming/?stream=direct&access_token=' + at
|
||||
}
|
||||
var wsid = websocket.length
|
||||
localStorage.setItem('wss_' + tlid, wsid)
|
||||
websocket[wsid] = new WebSocket(start)
|
||||
websocket[wsid].onopen = function (mess) {
|
||||
console.table({
|
||||
tlid: tlid,
|
||||
type: 'Connect Streaming API' + type,
|
||||
domain: domain,
|
||||
message: [mess],
|
||||
})
|
||||
errorct = 0
|
||||
$('#notice_icon_' + tlid).removeClass('red-text')
|
||||
}
|
||||
websocket[wsid].onmessage = function (mess) {
|
||||
console.log([tlid + ':Receive Streaming API:', JSON.parse(mess.data)])
|
||||
if (misskey) {
|
||||
if (JSON.parse(mess.data).type == 'note') {
|
||||
var obj = JSON.parse(mess.data).body
|
||||
if (voice) {
|
||||
say(obj.text)
|
||||
}
|
||||
websocketNotf[acct_id].send(
|
||||
JSON.stringify({
|
||||
type: 'capture',
|
||||
id: obj.id,
|
||||
})
|
||||
)
|
||||
var templete = misskeyParse([obj], type, acct_id, tlid, '', mute)
|
||||
var pool = localStorage.getItem('pool_' + tlid)
|
||||
if (pool) {
|
||||
pool = templete + pool
|
||||
} else {
|
||||
pool = templete
|
||||
}
|
||||
localStorage.setItem('pool_' + tlid, pool)
|
||||
scrollck()
|
||||
jQuery('time.timeago').timeago()
|
||||
}
|
||||
} else {
|
||||
var typeA = JSON.parse(mess.data).event
|
||||
if (typeA == 'delete') {
|
||||
var obj = JSON.parse(mess.data).payload
|
||||
if (delc == 'true') {
|
||||
$(
|
||||
'#timeline_' +
|
||||
tlid +
|
||||
' [unique-id=' +
|
||||
JSON.parse(mess.data).payload +
|
||||
']'
|
||||
).addClass('emphasized')
|
||||
$(
|
||||
'#timeline_' +
|
||||
tlid +
|
||||
' [unique-id=' +
|
||||
JSON.parse(mess.data).payload +
|
||||
']'
|
||||
).addClass('by_delcatch')
|
||||
} else {
|
||||
$('[unique-id=' + JSON.parse(mess.data).payload + ']').hide()
|
||||
$('[unique-id=' + JSON.parse(mess.data).payload + ']').remove()
|
||||
}
|
||||
} else if (typeA == 'update' || typeA == 'conversation') {
|
||||
if (
|
||||
!$('#unread_' + tlid + ' .material-icons').hasClass('teal-text')
|
||||
) {
|
||||
//markers show中はダメ
|
||||
var obj = JSON.parse(JSON.parse(mess.data).payload)
|
||||
if (
|
||||
$('#timeline_' + tlid + ' [toot-id=' + obj.id + ']').length < 1
|
||||
) {
|
||||
if (voice) {
|
||||
say(obj.content)
|
||||
}
|
||||
var templete = parse([obj], type, acct_id, tlid, '', mute, type)
|
||||
if (
|
||||
$('timeline_box_' + tlid + '_box .tl-box').scrollTop() === 0
|
||||
) {
|
||||
$('#timeline_' + tlid).prepend(templete)
|
||||
} else {
|
||||
var pool = localStorage.getItem('pool_' + tlid)
|
||||
if (pool) {
|
||||
pool = templete + pool
|
||||
} else {
|
||||
pool = templete
|
||||
}
|
||||
localStorage.setItem('pool_' + tlid, pool)
|
||||
}
|
||||
scrollck()
|
||||
additional(acct_id, tlid)
|
||||
jQuery('time.timeago').timeago()
|
||||
} else {
|
||||
todo('二重取得発生中')
|
||||
}
|
||||
|
||||
todc()
|
||||
}
|
||||
} else if (typeA == 'filters_changed') {
|
||||
filterUpdate(acct_id)
|
||||
} else if (~typeA.indexOf('announcement')) {
|
||||
announ(acct_id, tlid)
|
||||
}
|
||||
}
|
||||
}
|
||||
websocket[wsid].onerror = function (error) {
|
||||
console.error('Error closing')
|
||||
console.error(error)
|
||||
if (mode == 'error') {
|
||||
$('#notice_icon_' + tlid).addClass('red-text')
|
||||
todo('WebSocket Error ' + error)
|
||||
} else {
|
||||
errorct++
|
||||
console.log(errorct)
|
||||
if (errorct < 3) {
|
||||
reconnector(tlid, type, acct_id, data, 'error')
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
websocket[wsid].onclose = function () {
|
||||
console.warn('Closing ' + tlid)
|
||||
if (mode == 'error') {
|
||||
$('#notice_icon_' + tlid).addClass('red-text')
|
||||
todo('WebSocket Closed')
|
||||
} else {
|
||||
errorct++
|
||||
console.log(errorct)
|
||||
if (errorct < 3) {
|
||||
reconnector(tlid, type, acct_id, data, 'error')
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
//一定のスクロールで発火
|
||||
function moreload(type, tlid) {
|
||||
var multi = localStorage.getItem('column')
|
||||
@@ -851,7 +900,7 @@ function cap(type, data, acct_id) {
|
||||
} else if (type == 'bookmark') {
|
||||
var response = 'Bookmarks'
|
||||
} else if (type == 'utl') {
|
||||
var response = 'User TL(' + data.acct + ')'
|
||||
var response = 'User TL(' + escapeHTML(data.acct) + ')'
|
||||
}
|
||||
return response
|
||||
}
|
||||
@@ -866,13 +915,13 @@ function com(type, data, tlid) {
|
||||
return 'public?local=true&only_media=true&'
|
||||
} else if (type == 'pub') {
|
||||
var add = ''
|
||||
if(remoteOnlyCk(tlid)){
|
||||
if (remoteOnlyCk(tlid)) {
|
||||
add = 'remote=true&'
|
||||
}
|
||||
return 'public?' + add
|
||||
} else if (type == 'pub-media') {
|
||||
var add = ''
|
||||
if(remoteOnlyCk(tlid)){
|
||||
if (remoteOnlyCk(tlid)) {
|
||||
add = 'remote=true&'
|
||||
}
|
||||
return 'public?only_media=true&' + add
|
||||
@@ -998,7 +1047,7 @@ function reconnector(tlid, type, acct_id, data, mode) {
|
||||
var voice = false
|
||||
}
|
||||
var mute = getFilterTypeByAcct(acct_id, type)
|
||||
reload(type, '', acct_id, tlid, data, mute, '', voice, mode)
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
}
|
||||
M.toast({ html: lang.lang_tl_reconnect, displayLength: 2000 })
|
||||
}
|
||||
@@ -1008,6 +1057,12 @@ function columnReload(tlid, type) {
|
||||
var multi = localStorage.getItem('column')
|
||||
var obj = JSON.parse(multi)
|
||||
var acct_id = obj[tlid].domain
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
if (mastodonBaseWsStatus[domain] == 'available') {
|
||||
stremaingSubscribe(type, acct_id, obj[tlid].data, true)
|
||||
parseColumn(tlid, true)
|
||||
return true
|
||||
}
|
||||
if (type == 'mix' || type == 'integrated' || type == 'plus') {
|
||||
if (localStorage.getItem('voice_' + tlid)) {
|
||||
var voice = true
|
||||
@@ -1027,15 +1082,10 @@ function columnReload(tlid, type) {
|
||||
$('#notice_icon_' + tlid).removeClass('red-text')
|
||||
getBookmark(acct_id, tlid, false)
|
||||
} else {
|
||||
|
||||
var wss = localStorage.getItem('wss_' + tlid)
|
||||
websocket[wss].close()
|
||||
if (localStorage.getItem('voice_' + tlid)) {
|
||||
var voice = true
|
||||
} else {
|
||||
var voice = false
|
||||
}
|
||||
var mute = getFilterTypeByAcct(acct_id, type)
|
||||
parseColumn(tlid)
|
||||
parseColumn(tlid, false)
|
||||
}
|
||||
}
|
||||
//Markers
|
||||
@@ -1078,10 +1128,10 @@ function getMarker(tlid, type, acct_id) {
|
||||
$('#unread_' + tlid).attr(
|
||||
'title',
|
||||
lang.lang_layout_unread +
|
||||
':' +
|
||||
json.updated_at +
|
||||
' v' +
|
||||
json.version
|
||||
':' +
|
||||
json.updated_at +
|
||||
' v' +
|
||||
json.version
|
||||
)
|
||||
$('#unread_' + tlid).attr('data-id', json.last_read_id)
|
||||
} else {
|
||||
@@ -1285,8 +1335,8 @@ function asReadEnd() {
|
||||
onBeforeOpen: () => {
|
||||
Swal.showLoading()
|
||||
},
|
||||
onClose: () => {},
|
||||
}).then((result) => {})
|
||||
onClose: () => { },
|
||||
}).then((result) => { })
|
||||
} else {
|
||||
postMessage(['asReadComp', ''], '*')
|
||||
}
|
||||
@@ -1349,8 +1399,8 @@ function getUtl(acct_id, tlid, data, more) {
|
||||
moreloading = true
|
||||
if (more) {
|
||||
var sid = $('#timeline_' + tlid + ' .cvo')
|
||||
.last()
|
||||
.attr('unique-id')
|
||||
.last()
|
||||
.attr('unique-id')
|
||||
var ad = '?max_id=' + sid
|
||||
} else {
|
||||
var ad = ''
|
||||
@@ -1418,7 +1468,7 @@ function announ(acct_id, tlid) {
|
||||
$('.notf-announ_' + acct_id).addClass('hide')
|
||||
}
|
||||
var templete = announParse(json, acct_id, tlid)
|
||||
$('#announce_' + tlid).html(templete)
|
||||
$('.announce_' + acct_id).html(templete)
|
||||
jQuery('time.timeago').timeago()
|
||||
todc()
|
||||
}
|
||||
@@ -1426,7 +1476,7 @@ function announ(acct_id, tlid) {
|
||||
}
|
||||
//buildQuery
|
||||
function buildQuery(name, data) {
|
||||
if(!data || data == '') return ''
|
||||
if (!data || data == '') return ''
|
||||
var arr = data.split(',')
|
||||
var str = ''
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
|
@@ -120,7 +120,7 @@ function imageXhr(id, key, murl) {
|
||||
element.onload = function() {
|
||||
var width = element.naturalWidth
|
||||
if(width < 650) {
|
||||
width = 650;
|
||||
width = 650
|
||||
}
|
||||
var height = element.naturalHeight
|
||||
var windowH = $(window).height()
|
||||
@@ -182,7 +182,7 @@ function zoom(z) {
|
||||
$('#imagewrap img').css('height', hgt + 'px')
|
||||
}
|
||||
//スマホ対応ドラッグ移動システム
|
||||
;(function() {
|
||||
(function() {
|
||||
$.fn.dragScroll = function() {
|
||||
var target = this
|
||||
$(this)
|
||||
|
@@ -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) {
|
||||
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,8 +74,12 @@ function parseColumn(target, dontclose) {
|
||||
var obj = [
|
||||
{
|
||||
domain: 0,
|
||||
type: 'local',
|
||||
type: 'home',
|
||||
},
|
||||
{
|
||||
domain: 0,
|
||||
type: 'local',
|
||||
}
|
||||
]
|
||||
var json = JSON.stringify(obj)
|
||||
localStorage.setItem('column', json)
|
||||
@@ -158,15 +160,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')) {
|
||||
@@ -370,7 +378,7 @@ function parseColumn(target, dontclose) {
|
||||
<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}" aria-hidden="true">
|
||||
@@ -413,7 +421,7 @@ function parseColumn(target, dontclose) {
|
||||
</div>
|
||||
</div>
|
||||
<div class="column-hide notf-indv-box z-depth-4" id="notf-box_${notfKey}">
|
||||
<div id="announce_${notfKey}" style="border: 1px solid"></div>
|
||||
<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>
|
||||
@@ -646,11 +654,15 @@ function removeColumn(tlid) {
|
||||
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')
|
||||
@@ -782,7 +794,8 @@ function webviewParse(url, key, insert, icnsert, css) {
|
||||
<i class="fab fa-twitter waves-effect" id="notice_icon_${key}" style="font-size:40px; padding-top:25%;"></i>
|
||||
</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>
|
||||
@@ -825,7 +838,7 @@ function unstreamingTL(type, key, basekey, insert, icnsert, left_fold, css, anim
|
||||
${lang.lang_layout_leftUnfold}
|
||||
</span><br>`
|
||||
}
|
||||
if(type == 'utl') {
|
||||
if (type == 'utl') {
|
||||
var dataHtml = false
|
||||
} else {
|
||||
var dataHtml = data
|
||||
@@ -895,13 +908,13 @@ function bookmark(key, data) {
|
||||
tl('bookmark', '', data, key, 'false', voice, '')
|
||||
}
|
||||
function utl(key, acct_id, data) {
|
||||
if(!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
|
||||
|
@@ -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,13 +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");
|
||||
$("#addColumnMenu").click();
|
||||
$('#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")
|
||||
@@ -44,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 a").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,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)
|
||||
}
|
||||
/*
|
||||
|
@@ -99,14 +99,14 @@ function settings() {
|
||||
var fontd = $('#font').val()
|
||||
if (fontd) {
|
||||
if (fontd != localStorage.getItem('font')) {
|
||||
M.toast({ html: lang.lang_setting_font.replace('{{set}}', ct), displayLength: 3000 })
|
||||
M.toast({ html: lang.lang_setting_font.replace('{{set}}', fontd), displayLength: 3000 })
|
||||
}
|
||||
localStorage.setItem('font', fontd)
|
||||
themes()
|
||||
} else {
|
||||
if (localStorage.getItem('font')) {
|
||||
localStorage.removeItem('font')
|
||||
M.toast({ html: lang.lang_setting_font.replace('{{set}}', ct), displayLength: 3000 })
|
||||
M.toast({ html: lang.lang_setting_font.replace('{{set}}', '"default"'), displayLength: 3000 })
|
||||
themes()
|
||||
}
|
||||
}
|
||||
|
@@ -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 a").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,30 +1,44 @@
|
||||
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)
|
||||
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')) {
|
||||
if (localStorage.getItem('spotify-token')) {
|
||||
$('#spotify-enable').addClass('disabled')
|
||||
$('#spotify-disable').removeClass('disabled')
|
||||
} else {
|
||||
@@ -71,8 +85,8 @@ function aMusicFlagSave() {
|
||||
}
|
||||
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')
|
||||
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',
|
||||
@@ -93,7 +107,10 @@ function nowplaying(mode) {
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function (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
|
||||
@@ -169,11 +186,10 @@ function nowplaying(mode) {
|
||||
return false
|
||||
}
|
||||
var item = json.recenttracks.track[0]
|
||||
if(!item['@attr']) return false
|
||||
if (!item['@attr']) return false
|
||||
var img = item.image[3]['#text']
|
||||
var isImg = item.streamable*1
|
||||
var flag = localStorage.getItem('artwork')
|
||||
if (flag && isImg && img) {
|
||||
if (flag && img != 'https://lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png' && img) {
|
||||
postMessage(['bmpImage', [img, 0]], '*')
|
||||
}
|
||||
var content = localStorage.getItem('np-temp')
|
||||
@@ -187,7 +203,7 @@ function nowplaying(mode) {
|
||||
var regExp = new RegExp('{artist}', 'g')
|
||||
content = content.replace(regExp, item.artist['#text'])
|
||||
var regExp = new RegExp('{url}', 'g')
|
||||
content = content.replace(regExp,'')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{composer}', 'g')
|
||||
content = content.replace(regExp, '')
|
||||
var regExp = new RegExp('{hz}', 'g')
|
||||
|
@@ -131,12 +131,8 @@ function trendTagonTip() {
|
||||
spotint = null
|
||||
function spotifytips() {
|
||||
if (spotint) clearInterval(spotint)
|
||||
var start =
|
||||
'https://thedesk.top/now-playing?at=' +
|
||||
localStorage.getItem('spotify') +
|
||||
'&rt=' +
|
||||
localStorage.getItem('spotify-refresh')
|
||||
var at = localStorage.getItem('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',
|
||||
@@ -157,7 +153,10 @@ function spotifytips() {
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
.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')
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -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=" + encodeURIComponent(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
|
||||
}
|
||||
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);
|
||||
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
|
||||
}
|
||||
utlShow(json.id, "", acct_id);
|
||||
flw(json.id, "", acct_id);
|
||||
fer(json.id, "", acct_id);
|
||||
utlShow(json.id, "", acct_id)
|
||||
flw(json.id, "", acct_id)
|
||||
fer(json.id, "", acct_id)
|
||||
if (json.name) {
|
||||
var dis_name = escapeHTML(json.name);
|
||||
dis_name = twemoji.parse(dis_name);
|
||||
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,158 @@ 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();
|
||||
$("#my-data-nav .anc-link").removeClass("active-back")
|
||||
$(this).addClass("active-back")
|
||||
$(target).show()
|
||||
$(".his-var-content:not(" + target + ")").hide()
|
||||
}
|
||||
});
|
||||
})
|
||||
|
@@ -79,7 +79,11 @@ function createWindow() {
|
||||
if(lang == 'ja') {
|
||||
const maxims = JSON.parse(fs.readFileSync(__dirname + '/maxim.ja.json'))
|
||||
var show = maxims[Math.floor(Math.random() * maxims.length)]
|
||||
} else {
|
||||
} 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)
|
||||
|
@@ -28,6 +28,7 @@ function dl(mainWindow, lang_path, base, dirname) {
|
||||
show: false
|
||||
})
|
||||
var lang = fs.readFileSync(lang_path, 'utf8')
|
||||
//updatewin.toggleDevTools()
|
||||
updatewin.loadURL(base + lang + '/update.html')
|
||||
updatewin.webContents.once('dom-ready', () => {
|
||||
updatewin.show()
|
||||
|
@@ -1,5 +1,4 @@
|
||||
[
|
||||
"TheDeskは自称ステイホームの必須アイテム",
|
||||
"あと数秒でPCのファンが全力で回り始める",
|
||||
"カラムの数だけ夢があるがネットワークは逼迫する",
|
||||
"朝起きたらストリーミングが止まっていた…",
|
||||
@@ -44,5 +43,13 @@
|
||||
"たまにここに何も出ないことがあるけど、なんでかはわからない",
|
||||
"Kawaii->Mayu(今ここ)->Koume->Chieri->Anastasia->Aiko",
|
||||
"言語設定を日本語以外にするとこの表示はどうなると思う?",
|
||||
"今日も使ってくれてありがとう。利用者カウンターがキリ番ならご報告を"
|
||||
]
|
||||
"今日も使ってくれてありがとう。利用者カウンターがキリ番ならご報告を",
|
||||
"Ctrl+Eで通知の赤くなって「Fav: 1」とかなってるのをリセットできる",
|
||||
"このアプリケーションの正式な名称は小文字thedeskだけど、内部でしか使われてない",
|
||||
"N押すとトゥートのボックスが出て、すぐ打ち込める。",
|
||||
"Xを押すとトゥートのボックスは出るけど、打ち込めない。その代わりもう一度押すと消せる。",
|
||||
"トゥートした後ボックスを閉じるとかそのままにしておくとかは、設定で変えられます。",
|
||||
"OpenStickerへの登録データ募集中",
|
||||
"Microsoft Store版のアップデートは向こうに止められてます",
|
||||
"いのちの輝き版ロゴ"
|
||||
]
|
@@ -6,6 +6,7 @@
|
||||
<link href="./css/tl.css" type="text/css" rel="stylesheet" />
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
|
||||
<link href="./node_modules/@fortawesome/fontawesome-free/css/all.min.css" type="text/css" rel="stylesheet">
|
||||
<script type="text/javascript" src="./node_modules/grapheme-splitter/index.js"></script>
|
||||
<title>TheDesk Nano</title>
|
||||
<style>
|
||||
html {
|
||||
@@ -82,12 +83,16 @@
|
||||
.cvo {
|
||||
grid-template-rows: auto 1rem 1fr auto 2rem;
|
||||
}
|
||||
.voice {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
|
||||
<script>
|
||||
var pwa = false
|
||||
$.strip_tags = function(str, allowed) {
|
||||
if (!str) {
|
||||
return "";
|
||||
@@ -141,7 +146,7 @@
|
||||
}
|
||||
</script>
|
||||
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
|
||||
<script type="text/javascript" src="view/en/main.js"></script>
|
||||
<script type="text/javascript" src="./js/platform/first.js"></script>
|
||||
<script type="text/javascript" src="./js/post/status.js"></script>
|
||||
<script type="text/javascript" src="./js/post/post.js"></script>
|
||||
<script type="text/javascript" src="./js/post/use-txtbox.js"></script>
|
||||
|
5
app/netlify.toml
Normal file
5
app/netlify.toml
Normal file
@@ -0,0 +1,5 @@
|
||||
[[redirects]]
|
||||
from = "/"
|
||||
to = "/app"
|
||||
status = 301
|
||||
force = true
|
@@ -75,7 +75,7 @@
|
||||
</head>
|
||||
|
||||
<body class="center" style="overflow: hidden;">
|
||||
<img src="./img/desk-animation.svg" style="max-width: 62%;" />
|
||||
<img src="./img/desk-animation.svg" id="leader" style="max-width: 62%;" />
|
||||
<h1>TheDesk</h1>
|
||||
<span id="ver"></span><br />
|
||||
<span class="loading"></span><br />
|
||||
@@ -84,11 +84,12 @@
|
||||
<script>
|
||||
if (location.search) {
|
||||
var m = location.search.match(/\?ver=([0-9.]+)&codename=([a-zA-Z]+)&maxim=(.+)/)
|
||||
var maxim = decodeURI(m[3])
|
||||
if(maxim == 'いのちの輝き版ロゴ') document.getElementById('leader').setAttribute('src', './img/2025.svg')
|
||||
var ver = m[1]
|
||||
var code = m[2]
|
||||
var maxim = m[3]
|
||||
document.getElementById('ver').innerText = `${ver}(${code})`
|
||||
document.getElementById('maxim').innerText = `${decodeURI(maxim)}`
|
||||
document.getElementById('maxim').innerText = maxim
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "thedesk",
|
||||
"version": "21.0.1",
|
||||
"version": "21.1.0",
|
||||
"codename": "Mayu",
|
||||
"description": "TheDesk is a Mastodon client for PC.",
|
||||
"repository": "https://github.com/cutls/TheDesk",
|
||||
@@ -15,7 +15,9 @@
|
||||
"build": "node view/make/make.js --automatic && npx electron-builder",
|
||||
"build:all": "npx electron-builder --win --linux",
|
||||
"build:win": "npx electron-builder --win",
|
||||
"build:pwa": "node view/make/make.js --automatic --pwa"
|
||||
"build:pwa": "node view/make/make.js --automatic --pwa",
|
||||
"lint:fix": "eslint js --fix" ,
|
||||
"lint": "eslint js"
|
||||
},
|
||||
"keywords": [
|
||||
"mastodon",
|
||||
@@ -33,7 +35,8 @@
|
||||
"url": "https://cutls.dev",
|
||||
"email": "p@cutls.com"
|
||||
},
|
||||
"contributor": [{
|
||||
"contributor": [
|
||||
{
|
||||
"name": "とねぢ",
|
||||
"url": "https://minohdon.jp/@toneji",
|
||||
"email": "solfa.tono@gmail.com"
|
||||
@@ -51,17 +54,17 @@
|
||||
],
|
||||
"license": "GPL-3.0",
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "^5.13.0",
|
||||
"custom-electron-titlebar": "^3.2.2-hotfix62",
|
||||
"electron-dl": "^3.0.0",
|
||||
"jimp": "^0.10.3",
|
||||
"jquery": "^3.5.0",
|
||||
"@fortawesome/fontawesome-free": "^5.14.0",
|
||||
"custom-electron-titlebar": "^3.2.3",
|
||||
"electron-dl": "^3.0.1",
|
||||
"jimp": "^0.14.0",
|
||||
"jquery": "^3.5.1",
|
||||
"jquery-ui-dist": "^1.12.1",
|
||||
"json5": "^2.1.3",
|
||||
"lodash": "^4.17.15",
|
||||
"lodash": "^4.17.19",
|
||||
"materialize-css": "git://github.com/cutls/materialize#v1-dev",
|
||||
"sumchecker": "^3.0.1",
|
||||
"sweetalert2": "^9.10.12",
|
||||
"sweetalert2": "^9.17.0",
|
||||
"system-font-families": "^0.4.1",
|
||||
"vue": "^2.6.11"
|
||||
},
|
||||
@@ -69,10 +72,11 @@
|
||||
"itunes-nowplaying-mac": "0.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"chokidar": "^3.3.1",
|
||||
"electron": "^8.2.3",
|
||||
"electron-builder": "^22.5.1",
|
||||
"electron-rebuild": "^1.10.1",
|
||||
"chokidar": "^3.4.1",
|
||||
"electron": "^9.1.1",
|
||||
"electron-builder": "^22.7.0",
|
||||
"electron-rebuild": "^1.11.0",
|
||||
"eslint": "^7.6.0",
|
||||
"readline-sync": "1.4.10"
|
||||
},
|
||||
"build": {
|
||||
@@ -123,8 +127,8 @@
|
||||
]
|
||||
},
|
||||
"electronDownload": {
|
||||
"version": "8.0.0"
|
||||
"version": "9.0.5"
|
||||
},
|
||||
"electronVersion": "8.0.0"
|
||||
"electronVersion": "9.0.5"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,5 +1,10 @@
|
||||
{
|
||||
"latest":[],
|
||||
"3.2.0": [],
|
||||
"3.1.5": [],
|
||||
"3.1.4": [
|
||||
"リモート限定の連合タイムライン"
|
||||
],
|
||||
"3.1.3": [],
|
||||
"3.1.2": [],
|
||||
"3.1.1": [],
|
||||
|
@@ -53,6 +53,9 @@
|
||||
<div id="acct-list"></div>
|
||||
<div class="divider"></div>
|
||||
</div>
|
||||
<div class="hide-second">
|
||||
<a href="setting.html">@@haveExported@@</a>
|
||||
</div>
|
||||
<div>
|
||||
<h5>@@add@@</h5>
|
||||
<br />
|
||||
|
@@ -138,7 +138,7 @@
|
||||
id="acct-sel-prof"
|
||||
title="@@showSelectProf@@(Ctrl+Shift+P)"
|
||||
data-trans-title="post_box_prof"
|
||||
width="1.8rem"
|
||||
style="width: 1.8rem"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
@@ -404,7 +404,7 @@
|
||||
style="margin:0"
|
||||
/>
|
||||
<div id="sch-box">
|
||||
@@postat@@<br /><span class="sml">@@scheduleWarn@@</span><br />
|
||||
@@postat@@<br /><span class="sml">@@scheduleWarn@@</span><a onclick="expPostMode()">Expire mode(beta)</a><br />
|
||||
<input
|
||||
type="datetime-local"
|
||||
id="sch-date"
|
||||
@@ -417,9 +417,6 @@
|
||||
</div>
|
||||
<!-- 公開範囲 Dropdown Structure -->
|
||||
<ul id="dropdown1" class="dropdown-content">
|
||||
<li style="font-size: 1.2rem; display: block; line-height: 1.69rem; padding: 1.1rem 1.23rem;">
|
||||
@@selectVis@@
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="vis('public')">@@publicJP@@(Public)</a>
|
||||
</li>
|
||||
@@ -1120,60 +1117,6 @@
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<!--mstdn.jp useragent-->
|
||||
<div
|
||||
id="askjp_jp_ua"
|
||||
class="hide"
|
||||
style="z-index:505;width:100vw;height:100vh; background-color: #530f0f;color:white;padding:20px;overflow-y:scroll;position:absolute;"
|
||||
>
|
||||
<p style="font-size:300%">【緊急】mstdn.jpへのアクセスについて</p>
|
||||
<br />
|
||||
<p style="font-size:200%">問題の概要</p>
|
||||
<p>
|
||||
合同会社分散型ソーシャルネットワーク機構は非公開審査によってユーザーエージェントベースで個々のアプリに対してAPIへのアクセスを許可する方法を取っています。
|
||||
</p>
|
||||
<p>
|
||||
TheDesk開発者はこれに強く反発し、TheDeskのユーザーエージェントをそのアプリからのアクセスであると特定することができない値にすることを決めました。
|
||||
</p>
|
||||
<p>具体的には、"Mastodon client: [起動毎に変わる100文字の英数記号]"と設定しました。</p>
|
||||
<p style="font-size:200%">ユーザーによる対策</p>
|
||||
<p>
|
||||
このバージョンのTheDeskでは任意のユーザーエージェントを適用できます。「設定」内の「環境設定」で設定していただけます。<a
|
||||
href="setting.html"
|
||||
>設定</a
|
||||
>
|
||||
</p>
|
||||
<p style="font-size:150%">1. 「TheDesk」を含む値に設定する</p>
|
||||
<p>
|
||||
「設定」内の「環境設定」、「ユーザーエージェント」に「TheDesk」を含む値を入れてください。大文字小文字に注意してください。
|
||||
</p>
|
||||
<p><b>懸念点</b></p>
|
||||
<p>
|
||||
TheDesk開発者は合同会社分散型ソーシャルネットワーク機構に対しこの件についてメールで問い合わせを行っています(抗議ではありません)。問い合わせの過程でアプリ許可が取り消され、使用不能になる可能性があります。
|
||||
</p>
|
||||
<p><u>ちなみに</u></p>
|
||||
<p>
|
||||
合同会社分散型ソーシャルネットワーク機構はmstdn.jpのお知らせアカウントに対するリプライに書かれたサードパーティクライアントを「審査」の後許可するとトゥートし、複数ユーザーがTheDeskの名前を挙げました。
|
||||
事実、トゥートの翌日までにTheDeskに対してアクセス許可が出されました。しかし、許可を出す際にTheDeskの標準ユーザーエージェントを機構は一切確認せず、「TheDesk」という文字列が入ったユーザーエージェントを一律で許可する設定にしたようです。
|
||||
結果として実際の標準ユーザーエージェントはそれに合致せず、不許可のままとなっていました。前バージョンまでの標準ユーザーエージェントは、パッケージ名の都合上全て小文字の「thedesk」を採用していました。
|
||||
</p>
|
||||
<p style="font-size:150%">2. 「認定済み」クライアントの名前を含む値に設定する</p>
|
||||
<p>
|
||||
「設定」内の「環境設定」、「ユーザーエージェント」に、<a href="https://mstdn.jp/about"
|
||||
>mstdn.jpのトップページ</a
|
||||
>記載のアプリ名を含む値を入れてください。大文字小文字やスペースに注意してください。
|
||||
</p>
|
||||
<p>
|
||||
「Mastodon日本鯖です.」と書かれた以降の一段を全てコピーして記載してもアクセス可能です。<u
|
||||
>これほどまでにユーザーエージェント制限は「抜け道」が多いのです。</u
|
||||
><a href="setting.html">設定</a>
|
||||
</p>
|
||||
<p><b>懸念点</b></p>
|
||||
<p>
|
||||
その記載されたアプリと合同会社分散型ソーシャルネットワーク機構になんの関係があるかは知りませんが、どちらにしろ他のクライアントの名を借りてアクセスの許可をいただくというあまり道徳的によろしくない方法です。
|
||||
</p>
|
||||
<button onclick="$('#askjp_jp_ua').addClass('hide')" class="btn waves-effect">閉じる</button>
|
||||
</div>
|
||||
<!-- Modal Structure Release Note-->
|
||||
<div id="releasenote" class="modal modal-fixed-footer scr">
|
||||
<div class="modal-content">
|
||||
@@ -1181,28 +1124,28 @@
|
||||
<a href="https://thedesk.top" target="_blank">HP</a><br />
|
||||
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br />
|
||||
<br />
|
||||
<div id="release-21-0-1_Mayu" class="release-do" style="display:none; ">
|
||||
<div id="release-21-1-0_Mayu" class="release-do" style="display:none; ">
|
||||
<br />
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br />
|
||||
Pixiv
|
||||
FanboxやPatreonでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br />
|
||||
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
|
||||
<h5>Release Note 21.0.1 (Mayu)</h5>
|
||||
・画像がアップロードできない <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <a onclick="udgEx('popn_ja@popon.pptdn.jp','main')" class="contributor"><img src="https://avatars3.githubusercontent.com/u/24523508?s=88&v=4">kaias1jp</a><br>
|
||||
・画像のリサイズに失敗する <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <a onclick="udgEx('popn_ja@popon.pptdn.jp','main')" class="contributor"><img src="https://avatars3.githubusercontent.com/u/24523508?s=88&v=4">kaias1jp</a><br>
|
||||
・画像をダウンロードした後、ボタンを押しても保存先フォルダが表示されない <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・ユーザーマッチングを削除 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
|
||||
<h5>Release Note 21.0.0 (Mayu)</h5>
|
||||
・フォロリクをストリーミングで受け取ったときにNo status hereになる <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・Apple MusicのNowPlayingでアルバム情報がないときの挙動を改善 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・Last.fm NowPlaying <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・テーマCSSに関するバグ <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・プラットフォームやPWAか否か等で表示を切り替える <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・ユーザータイムラインをカラム化 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <img src="">anonymous user<br>
|
||||
・スプラッシュスクリーンを追加 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・アイコンの微調整 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・FTLのRemote only <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
<h5>Release Note 21.1.0 (Mayu)</h5>
|
||||
<!--上のdivのidも変えてね-->
|
||||
・コンテキストメニューが大きくずれるのを修正(今でもそれなりにズレます) <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・last_statusが日付だけ返すように変更されたことを受けての変更 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・アクセシビリティ対応の向上(色覚異常者用) <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・Last.fmのアルバムアートワークについて、暫定的に添付可能に <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・ハッシュタグストリーミングについて、追加のタグのストリーミングを実装(master追従インスタンスのみ対応) <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・TheDesk Nanoについて全く動いていなかったのを修正 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・サブスクリプションタイプのストリーミングに対応し、軽量化や安定性の向上が見込まれます。(master追従インスタンスのみ対応) <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・Unknownなメディアに対して、proxyを使うようにした。 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・タイムライン間のマージンを変更できるように <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <img src="https://user-images.githubusercontent.com/17561618/92328367-4b2c1a00-f09b-11ea-9d7f-e2b2f586d806.png">axfelix<br>
|
||||
・アナウンスメントでリアクションが付与できないバグを修正 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・ストリーミングが切れる可能性があるときに、画面を再読み込みするように。(master追従インスタンスのみ対応) <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・セレクタやドロップダウンのデザインの変更 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・フォローやフォロワー、お気に入りの遡りが上手くできていなかった <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・一部のカスタム絵文字を含むユーザー名の表示が崩れる <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <a onclick="udgEx('AmaiSaeta@oransns.com','main')" class="contributor"><img src="https://user-images.githubusercontent.com/17561618/92328483-1a001980-f09c-11ea-92c7-4c30a276b8f8.png">AmaiSaeta</a><br>
|
||||
|
||||
</div>
|
||||
<div id="release-en" style="display:none">
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey": "Login as Misskey",
|
||||
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
|
||||
"nodata": "No data",
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -11,8 +11,6 @@
|
||||
"cwDes": "Hide text behind warning",
|
||||
"selfile": "Attach..",
|
||||
"insertEmoji": "Emojis",
|
||||
"NPSpotify": "NowPlaying(Spotify)",
|
||||
"NPiTunes": "NowPlaying(macOS)",
|
||||
"schedule": "Scheduled toot",
|
||||
"postat": "Post at",
|
||||
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
|
||||
@@ -77,6 +75,7 @@
|
||||
"toots": "Toots",
|
||||
"follow": "Follow",
|
||||
"follower": "Follower",
|
||||
"utlColumn": "Show as a column",
|
||||
"timeline": "Timeline",
|
||||
"operateOtherAcct": "Cross-account",
|
||||
"list": "List",
|
||||
|
@@ -127,6 +127,7 @@
|
||||
"lang_layout_delthis": "Remove this column",
|
||||
"lang_layout_setthis": "Preferences of this column",
|
||||
"lang_layout_mediafil": "Media filtering",
|
||||
"lang_layout_remoteOnly": "Remote only",
|
||||
"lang_layout_linkana": "Auto Link Analyzer",
|
||||
"lang_layout_linkanades": "Auto link analyzer",
|
||||
"lang_layout_tts": "Text to speech ",
|
||||
@@ -165,6 +166,7 @@
|
||||
"lang_showontl_domain": "Domain ",
|
||||
"lang_showontl_listwarn": "Follow to add this user to lists.",
|
||||
"lang_showontl_verified": "This website is verified by owner at ",
|
||||
"lang_status_requesting": "Requesting",
|
||||
"lang_parse_mentioned": " replied to you",
|
||||
"lang_parse_faved": " favourited your toot",
|
||||
"lang_parse_bted": " boosted your toot",
|
||||
@@ -219,6 +221,7 @@
|
||||
"lang_parse_nsfw": "sensitive media",
|
||||
"lang_parse_html": "Show embed HTML",
|
||||
"lang_parse_notffilter": "Show this user's notifications",
|
||||
"lang_parse_hidden": "Unvisible quoted toot",
|
||||
"lang_misskeyparse_renote": "Repost",
|
||||
"lang_misskeyparse_renoteqt": "Renote",
|
||||
"lang_misskeyparse_reaction": "Reaction",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"linkwarn": "TheDesk save your data on thedesk.top server.",
|
||||
"connect": "Connect",
|
||||
"disconnect": "Disconnect",
|
||||
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
|
||||
"templateedit": "Edit a template",
|
||||
"templateeditwarn": "",
|
||||
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey": "Login as Misskey",
|
||||
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
|
||||
"nodata": "No data",
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -11,8 +11,6 @@
|
||||
"cwDes": "Hide text behind warning",
|
||||
"selfile": "Attach..",
|
||||
"insertEmoji": "Emojis",
|
||||
"NPSpotify": "NowPlaying(Spotify)",
|
||||
"NPiTunes": "NowPlaying(macOS)",
|
||||
"schedule": "Scheduled toot",
|
||||
"postat": "Post at",
|
||||
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
|
||||
@@ -77,6 +75,7 @@
|
||||
"toots": "Toots",
|
||||
"follow": "Follow",
|
||||
"follower": "Follower",
|
||||
"utlColumn": "Show as a column",
|
||||
"timeline": "Timeline",
|
||||
"operateOtherAcct": "Cross-account",
|
||||
"list": "List",
|
||||
|
@@ -127,6 +127,7 @@
|
||||
"lang_layout_delthis": "Remove this column",
|
||||
"lang_layout_setthis": "Preferences of this column",
|
||||
"lang_layout_mediafil": "Media filtering",
|
||||
"lang_layout_remoteOnly": "Remote only",
|
||||
"lang_layout_linkana": "Auto Link Analyzer",
|
||||
"lang_layout_linkanades": "Auto link analyzer",
|
||||
"lang_layout_tts": "Text to speech ",
|
||||
@@ -165,6 +166,7 @@
|
||||
"lang_showontl_domain": "Domain ",
|
||||
"lang_showontl_listwarn": "Follow to add this user to lists.",
|
||||
"lang_showontl_verified": "This website is verified by owner at ",
|
||||
"lang_status_requesting": "Requesting",
|
||||
"lang_parse_mentioned": " replied to you",
|
||||
"lang_parse_faved": " favourited your toot",
|
||||
"lang_parse_bted": " boosted your toot",
|
||||
@@ -219,6 +221,7 @@
|
||||
"lang_parse_nsfw": "sensitive media",
|
||||
"lang_parse_html": "Show embed HTML",
|
||||
"lang_parse_notffilter": "Show this user's notifications",
|
||||
"lang_parse_hidden": "Unvisible quoted toot",
|
||||
"lang_misskeyparse_renote": "Repost",
|
||||
"lang_misskeyparse_renoteqt": "Renote",
|
||||
"lang_misskeyparse_reaction": "Reaction",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"linkwarn": "TheDesk save your data on thedesk.top server.",
|
||||
"connect": "Connect",
|
||||
"disconnect": "Disconnect",
|
||||
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
|
||||
"templateedit": "Edit a template",
|
||||
"templateeditwarn": "",
|
||||
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey": "Влезте като Misskey",
|
||||
"misskeylogin": "Прочетете <a href=\"https://thedesk.top/how-to-misskey-login.html\">Документацията</a>, за да влезете в Misskey.",
|
||||
"nodata": "Няма данни",
|
||||
"accessTokenSetup": "Използвайте маркера за достъп и вход (щракнете след попълване, но не код, а знак за достъп в поле: Разширено)"
|
||||
"accessTokenSetup": "Използвайте маркера за достъп и вход (щракнете след попълване, но не код, а знак за достъп в поле: Разширено)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -11,8 +11,6 @@
|
||||
"cwDes": "Скриване на текста зад предупреждение",
|
||||
"selfile": "Прикачи..",
|
||||
"insertEmoji": "Емотикони",
|
||||
"NPSpotify": "Възпроизвеждане сега (Spotify)",
|
||||
"NPiTunes": "Възпроизвеждане сега (macOS)",
|
||||
"schedule": "Планиран тоот",
|
||||
"postat": "Публикация в",
|
||||
"scheduleWarn": "2.7.0 ~ Минимален интервал от време:5мин. (часовникът на сървъра може да не е точен.)",
|
||||
@@ -77,6 +75,7 @@
|
||||
"toots": "Тоот",
|
||||
"follow": "Следвам",
|
||||
"follower": "Последователи",
|
||||
"utlColumn": "Show as a column",
|
||||
"timeline": "Времева линия",
|
||||
"operateOtherAcct": "Свързан-профил",
|
||||
"list": "Списък",
|
||||
|
@@ -127,6 +127,7 @@
|
||||
"lang_layout_delthis": "Премахване на тази колона",
|
||||
"lang_layout_setthis": "Предпочитания за тази колона",
|
||||
"lang_layout_mediafil": "Филтриране на медиите",
|
||||
"lang_layout_remoteOnly": "Remote only",
|
||||
"lang_layout_linkana": "Автоматичен анализатор на връзки",
|
||||
"lang_layout_linkanades": "Автоматичен анализатор на връзки",
|
||||
"lang_layout_tts": "Текст към говор ",
|
||||
@@ -165,6 +166,7 @@
|
||||
"lang_showontl_domain": "Domain ",
|
||||
"lang_showontl_listwarn": "Следвайте, за да добавите този потребител към списъците.",
|
||||
"lang_showontl_verified": "This website is verified by owner at ",
|
||||
"lang_status_requesting": "Requesting",
|
||||
"lang_parse_mentioned": " replied to you",
|
||||
"lang_parse_faved": " favourited your toot",
|
||||
"lang_parse_bted": " boosted your toot",
|
||||
@@ -219,6 +221,7 @@
|
||||
"lang_parse_nsfw": "NSFW media",
|
||||
"lang_parse_html": "Показване на вграденият HTML код",
|
||||
"lang_parse_notffilter": "Показване на известията от този потребител",
|
||||
"lang_parse_hidden": "Unvisible quoted toot",
|
||||
"lang_misskeyparse_renote": "Повторно публикуване",
|
||||
"lang_misskeyparse_renoteqt": "Повторна бележка",
|
||||
"lang_misskeyparse_reaction": "Реакция",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"linkwarn": "TheDesk save your data on thedesk.top server.",
|
||||
"connect": "Connect",
|
||||
"disconnect": "Disconnect",
|
||||
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
|
||||
"templateedit": "Edit a template",
|
||||
"templateeditwarn": "",
|
||||
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey": "Login as Misskey",
|
||||
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
|
||||
"nodata": "No data",
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -11,8 +11,6 @@
|
||||
"cwDes": "Hide text behind warning",
|
||||
"selfile": "Attach..",
|
||||
"insertEmoji": "Emojis",
|
||||
"NPSpotify": "NowPlaying(Spotify)",
|
||||
"NPiTunes": "NowPlaying(macOS)",
|
||||
"schedule": "Scheduled toot",
|
||||
"postat": "Post at",
|
||||
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
|
||||
@@ -77,6 +75,7 @@
|
||||
"toots": "Toots",
|
||||
"follow": "Follow",
|
||||
"follower": "Follower",
|
||||
"utlColumn": "Show as a column",
|
||||
"timeline": "Timeline",
|
||||
"operateOtherAcct": "Cross-account",
|
||||
"list": "List",
|
||||
|
@@ -127,6 +127,7 @@
|
||||
"lang_layout_delthis": "Remove this column",
|
||||
"lang_layout_setthis": "Preferences of this column",
|
||||
"lang_layout_mediafil": "Media filtering",
|
||||
"lang_layout_remoteOnly": "Remote only",
|
||||
"lang_layout_linkana": "Auto Link Analyzer",
|
||||
"lang_layout_linkanades": "Auto link analyzer",
|
||||
"lang_layout_tts": "Text to speech ",
|
||||
@@ -165,6 +166,7 @@
|
||||
"lang_showontl_domain": "Domain ",
|
||||
"lang_showontl_listwarn": "Follow to add this user to lists.",
|
||||
"lang_showontl_verified": "This website is verified by owner at ",
|
||||
"lang_status_requesting": "Requesting",
|
||||
"lang_parse_mentioned": " replied to you",
|
||||
"lang_parse_faved": " favourited your toot",
|
||||
"lang_parse_bted": " boosted your toot",
|
||||
@@ -219,6 +221,7 @@
|
||||
"lang_parse_nsfw": "sensitive media",
|
||||
"lang_parse_html": "Show embed HTML",
|
||||
"lang_parse_notffilter": "Show this user's notifications",
|
||||
"lang_parse_hidden": "Unvisible quoted toot",
|
||||
"lang_misskeyparse_renote": "Repost",
|
||||
"lang_misskeyparse_renoteqt": "Renote",
|
||||
"lang_misskeyparse_reaction": "Reaction",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"linkwarn": "TheDesk save your data on thedesk.top server.",
|
||||
"connect": "Connect",
|
||||
"disconnect": "Disconnect",
|
||||
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
|
||||
"templateedit": "Edit a template",
|
||||
"templateeditwarn": "",
|
||||
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey": "Přihlásit jako Misskey",
|
||||
"misskeylogin": "Pro přihlášení do Misskey si přečtěte <a href=\"https://thedesk.top/how-to-misskey-login.html\">dokumentaci (ja)</a>.",
|
||||
"nodata": "No data",
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -11,8 +11,6 @@
|
||||
"cwDes": "Skrýt text za varováním",
|
||||
"selfile": "Přiložit...",
|
||||
"insertEmoji": "Emoji",
|
||||
"NPSpotify": "NowPlaying(Spotify)",
|
||||
"NPiTunes": "NowPlaying(macOS)",
|
||||
"schedule": "Plánovaný toot",
|
||||
"postat": "Odeslat jak",
|
||||
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
|
||||
@@ -77,6 +75,7 @@
|
||||
"toots": "Tooty",
|
||||
"follow": "Sledovat",
|
||||
"follower": "Sledující",
|
||||
"utlColumn": "Show as a column",
|
||||
"timeline": "Časová osa",
|
||||
"operateOtherAcct": "Cross-account",
|
||||
"list": "Seznam",
|
||||
|
@@ -127,6 +127,7 @@
|
||||
"lang_layout_delthis": "Odstranit tento sloupec",
|
||||
"lang_layout_setthis": "Nastavení tohoto sloupce",
|
||||
"lang_layout_mediafil": "Filtrování médií",
|
||||
"lang_layout_remoteOnly": "Remote only",
|
||||
"lang_layout_linkana": "Automatický analyzátor odkazů",
|
||||
"lang_layout_linkanades": "Automatický analyzátor odkazů",
|
||||
"lang_layout_tts": "Převod textu na řeč ",
|
||||
@@ -165,6 +166,7 @@
|
||||
"lang_showontl_domain": "Doména ",
|
||||
"lang_showontl_listwarn": "Follow to add this user to lists.",
|
||||
"lang_showontl_verified": "This website is verified by owner at ",
|
||||
"lang_status_requesting": "Requesting",
|
||||
"lang_parse_mentioned": " vám odpověděl/a",
|
||||
"lang_parse_faved": " si oblíbil/a váš toot",
|
||||
"lang_parse_bted": " boostnul/a váš toot",
|
||||
@@ -219,6 +221,7 @@
|
||||
"lang_parse_nsfw": "NSFW media",
|
||||
"lang_parse_html": "Show embed HTML",
|
||||
"lang_parse_notffilter": "Show this user's notifications",
|
||||
"lang_parse_hidden": "Unvisible quoted toot",
|
||||
"lang_misskeyparse_renote": "Znovusdílení",
|
||||
"lang_misskeyparse_renoteqt": "Renotování",
|
||||
"lang_misskeyparse_reaction": "Reakce",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"linkwarn": "TheDesk save your data on thedesk.top server.",
|
||||
"connect": "Connect",
|
||||
"disconnect": "Disconnect",
|
||||
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
|
||||
"templateedit": "Edit a template",
|
||||
"templateeditwarn": "",
|
||||
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey": "Login as Misskey",
|
||||
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
|
||||
"nodata": "No data",
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -11,8 +11,6 @@
|
||||
"cwDes": "Hide text behind warning",
|
||||
"selfile": "Attach..",
|
||||
"insertEmoji": "Emojis",
|
||||
"NPSpotify": "NowPlaying(Spotify)",
|
||||
"NPiTunes": "NowPlaying(macOS)",
|
||||
"schedule": "Scheduled toot",
|
||||
"postat": "Post at",
|
||||
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
|
||||
@@ -77,6 +75,7 @@
|
||||
"toots": "Toots",
|
||||
"follow": "Follow",
|
||||
"follower": "Follower",
|
||||
"utlColumn": "Show as a column",
|
||||
"timeline": "Timeline",
|
||||
"operateOtherAcct": "Cross-account",
|
||||
"list": "List",
|
||||
|
@@ -127,6 +127,7 @@
|
||||
"lang_layout_delthis": "Remove this column",
|
||||
"lang_layout_setthis": "Preferences of this column",
|
||||
"lang_layout_mediafil": "Media filtering",
|
||||
"lang_layout_remoteOnly": "Remote only",
|
||||
"lang_layout_linkana": "Auto Link Analyzer",
|
||||
"lang_layout_linkanades": "Auto link analyzer",
|
||||
"lang_layout_tts": "Text to speech ",
|
||||
@@ -165,6 +166,7 @@
|
||||
"lang_showontl_domain": "Domain ",
|
||||
"lang_showontl_listwarn": "Follow to add this user to lists.",
|
||||
"lang_showontl_verified": "This website is verified by owner at ",
|
||||
"lang_status_requesting": "Requesting",
|
||||
"lang_parse_mentioned": " replied to you",
|
||||
"lang_parse_faved": " favourited your toot",
|
||||
"lang_parse_bted": " boosted your toot",
|
||||
@@ -219,6 +221,7 @@
|
||||
"lang_parse_nsfw": "sensitive media",
|
||||
"lang_parse_html": "Show embed HTML",
|
||||
"lang_parse_notffilter": "Show this user's notifications",
|
||||
"lang_parse_hidden": "Unvisible quoted toot",
|
||||
"lang_misskeyparse_renote": "Repost",
|
||||
"lang_misskeyparse_renoteqt": "Renote",
|
||||
"lang_misskeyparse_reaction": "Reaction",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"linkwarn": "TheDesk save your data on thedesk.top server.",
|
||||
"connect": "Connect",
|
||||
"disconnect": "Disconnect",
|
||||
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
|
||||
"templateedit": "Edit a template",
|
||||
"templateeditwarn": "",
|
||||
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey": "Als Misskey anmelden",
|
||||
"misskeylogin": "Lies die <a href=\"https://thedesk.top/how-to-misskey-login.html\">Doku (japanisch)</a> um dich bei Misskey einzuloggen.",
|
||||
"nodata": "Keine Daten",
|
||||
"accessTokenSetup": "Benutze Zugangs-Token zum Anmelden (Klicke nach Ausfüllen nicht den Code, sondern den Access-Token im Kästchen: Erweitert)"
|
||||
"accessTokenSetup": "Benutze Zugangs-Token zum Anmelden (Klicke nach Ausfüllen nicht den Code, sondern den Access-Token im Kästchen: Erweitert)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -2,7 +2,7 @@
|
||||
"draghere": "Zum Hochladen hier her ziehen",
|
||||
"close": "Schließen",
|
||||
"webSrc": "Suche im Internet",
|
||||
"tsSrc": "Search on tootsearch",
|
||||
"tsSrc": "Bei Tootsearch suchen",
|
||||
"showSelectProf": "Ausgewähltes Konto anzeigen",
|
||||
"closethisbox": "Diesen Dialog schließen",
|
||||
"toot": "Tröt",
|
||||
@@ -11,8 +11,6 @@
|
||||
"cwDes": "Text hinter Warnung verstecken",
|
||||
"selfile": "Anhängen...",
|
||||
"insertEmoji": "Emojis",
|
||||
"NPSpotify": "Wird gerade gespielt (Spotify)",
|
||||
"NPiTunes": "Wird gerade wiedergegeben(macOS)",
|
||||
"schedule": "Geplanter Tröt",
|
||||
"postat": "Senden um",
|
||||
"scheduleWarn": "2.7.0~ Mindestzeitabstand: von 5min(Uhr auf dem Server ist möglicherweise ungenau.)",
|
||||
@@ -77,6 +75,7 @@
|
||||
"toots": "Tröts",
|
||||
"follow": "Folgen",
|
||||
"follower": "Abonnenten",
|
||||
"utlColumn": "Show as a column",
|
||||
"timeline": "Verlauf",
|
||||
"operateOtherAcct": "Cross-Account",
|
||||
"list": "Liste",
|
||||
@@ -179,11 +178,11 @@
|
||||
"active": "Kürzlich aktiv",
|
||||
"newcomer": "Neu eingetroffen",
|
||||
"local_only": "Nur lokal",
|
||||
"menu": "Menu",
|
||||
"menu": "Menü",
|
||||
"demoBottomBtns": "Willkommensguide",
|
||||
"lookAtBottom": "Schauen Sie sich den unteren Teil des Fensters an. Hier sind einige Tipps darüber.",
|
||||
"acctManDesc": "Fügen Sie weitere Konten hinzu und loggen Sie sie aus.",
|
||||
"settingDesc": "Many and many preferences here. You will couldn't check it all!",
|
||||
"settingDesc": "Hier sind sehr, sehr viele Einstellungen. Du könntest gar nicht alles ausprobieren!",
|
||||
"nanoDescPlus": "Mini-Fenster-Klient (experimentell)",
|
||||
"menuDesc": "All daily TheDesk and Mastodon tuning like <b>add and sort columns</b>, <b>list and filter check</b>."
|
||||
}
|
@@ -127,6 +127,7 @@
|
||||
"lang_layout_delthis": "Diese Spalte löschen",
|
||||
"lang_layout_setthis": "Einstellungen dieser Spalte",
|
||||
"lang_layout_mediafil": "Medien filtern",
|
||||
"lang_layout_remoteOnly": "Remote only",
|
||||
"lang_layout_linkana": "Automatische Link-Analyse",
|
||||
"lang_layout_linkanades": "Automatische Link-Analyse",
|
||||
"lang_layout_tts": "Sprachausgabe ",
|
||||
@@ -165,6 +166,7 @@
|
||||
"lang_showontl_domain": "Domäne ",
|
||||
"lang_showontl_listwarn": "Folgen, um diesen Benutzer zu Listen hinzuzufügen.",
|
||||
"lang_showontl_verified": "This website is verified by owner at ",
|
||||
"lang_status_requesting": "Requesting",
|
||||
"lang_parse_mentioned": " hat dir geantwortet",
|
||||
"lang_parse_faved": " favorisierte deinen Tröt",
|
||||
"lang_parse_bted": " hat deinen Tröt verstärkt",
|
||||
@@ -219,6 +221,7 @@
|
||||
"lang_parse_nsfw": "NSFW Medien",
|
||||
"lang_parse_html": "Show embed HTML",
|
||||
"lang_parse_notffilter": "Benachrichtigungen dieses Benutzers anzeigen",
|
||||
"lang_parse_hidden": "Unvisible quoted toot",
|
||||
"lang_misskeyparse_renote": "Weiterleiten",
|
||||
"lang_misskeyparse_renoteqt": "Renote",
|
||||
"lang_misskeyparse_reaction": "Reaktion",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"linkwarn": "TheDesk speichert Ihre Daten auf dem thedesk.top Server.",
|
||||
"connect": "Verbinden",
|
||||
"disconnect": "Trennen",
|
||||
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
|
||||
"templateedit": "Edit a template",
|
||||
"templateeditwarn": "",
|
||||
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey": "Login as Misskey",
|
||||
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
|
||||
"nodata": "No data",
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -11,8 +11,6 @@
|
||||
"cwDes": "Hide text behind warning",
|
||||
"selfile": "Attach..",
|
||||
"insertEmoji": "Emojis",
|
||||
"NPSpotify": "NowPlaying(Spotify)",
|
||||
"NPiTunes": "NowPlaying(macOS)",
|
||||
"schedule": "Scheduled toot",
|
||||
"postat": "Post at",
|
||||
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
|
||||
@@ -77,6 +75,7 @@
|
||||
"toots": "Toots",
|
||||
"follow": "Follow",
|
||||
"follower": "Follower",
|
||||
"utlColumn": "Show as a column",
|
||||
"timeline": "Timeline",
|
||||
"operateOtherAcct": "Cross-account",
|
||||
"list": "List",
|
||||
|
@@ -127,6 +127,7 @@
|
||||
"lang_layout_delthis": "Remove this column",
|
||||
"lang_layout_setthis": "Preferences of this column",
|
||||
"lang_layout_mediafil": "Media filtering",
|
||||
"lang_layout_remoteOnly": "Remote only",
|
||||
"lang_layout_linkana": "Auto Link Analyzer",
|
||||
"lang_layout_linkanades": "Auto link analyzer",
|
||||
"lang_layout_tts": "Text to speech ",
|
||||
@@ -165,6 +166,7 @@
|
||||
"lang_showontl_domain": "Domain ",
|
||||
"lang_showontl_listwarn": "Follow to add this user to lists.",
|
||||
"lang_showontl_verified": "This website is verified by owner at ",
|
||||
"lang_status_requesting": "Requesting",
|
||||
"lang_parse_mentioned": " replied to you",
|
||||
"lang_parse_faved": " favourited your toot",
|
||||
"lang_parse_bted": " boosted your toot",
|
||||
@@ -219,6 +221,7 @@
|
||||
"lang_parse_nsfw": "sensitive media",
|
||||
"lang_parse_html": "Show embed HTML",
|
||||
"lang_parse_notffilter": "Show this user's notifications",
|
||||
"lang_parse_hidden": "Unvisible quoted toot",
|
||||
"lang_misskeyparse_renote": "Repost",
|
||||
"lang_misskeyparse_renoteqt": "Renote",
|
||||
"lang_misskeyparse_reaction": "Reaction",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"linkwarn": "TheDesk save your data on thedesk.top server.",
|
||||
"connect": "Connect",
|
||||
"disconnect": "Disconnect",
|
||||
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
|
||||
"templateedit": "Edit a template",
|
||||
"templateeditwarn": "",
|
||||
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey": "crwdns3052:0crwdne3052:0",
|
||||
"misskeylogin": "crwdns3054:0crwdne3054:0",
|
||||
"nodata": "crwdns3056:0crwdne3056:0",
|
||||
"accessTokenSetup": "crwdns4362:0crwdne4362:0"
|
||||
"accessTokenSetup": "crwdns4362:0crwdne4362:0",
|
||||
"haveExported": "crwdns4500:0crwdne4500:0"
|
||||
}
|
@@ -11,8 +11,6 @@
|
||||
"cwDes": "crwdns3072:0crwdne3072:0",
|
||||
"selfile": "crwdns3074:0crwdne3074:0",
|
||||
"insertEmoji": "crwdns3076:0crwdne3076:0",
|
||||
"NPSpotify": "crwdns3078:0crwdne3078:0",
|
||||
"NPiTunes": "crwdns3080:0crwdne3080:0",
|
||||
"schedule": "crwdns3082:0crwdne3082:0",
|
||||
"postat": "crwdns3084:0crwdne3084:0",
|
||||
"scheduleWarn": "crwdns3086:0crwdne3086:0",
|
||||
@@ -77,6 +75,7 @@
|
||||
"toots": "crwdns3198:0crwdne3198:0",
|
||||
"follow": "crwdns3200:0crwdne3200:0",
|
||||
"follower": "crwdns3202:0crwdne3202:0",
|
||||
"utlColumn": "crwdns4492:0crwdne4492:0",
|
||||
"timeline": "crwdns3204:0crwdne3204:0",
|
||||
"operateOtherAcct": "crwdns3206:0crwdne3206:0",
|
||||
"list": "crwdns3208:0crwdne3208:0",
|
||||
|
@@ -127,6 +127,7 @@
|
||||
"lang_layout_delthis": "crwdns3640:0crwdne3640:0",
|
||||
"lang_layout_setthis": "crwdns3642:0crwdne3642:0",
|
||||
"lang_layout_mediafil": "crwdns3644:0crwdne3644:0",
|
||||
"lang_layout_remoteOnly": "crwdns4494:0crwdne4494:0",
|
||||
"lang_layout_linkana": "crwdns3646:0crwdne3646:0",
|
||||
"lang_layout_linkanades": "crwdns3648:0crwdne3648:0",
|
||||
"lang_layout_tts": "crwdns3650:0crwdne3650:0",
|
||||
@@ -165,6 +166,7 @@
|
||||
"lang_showontl_domain": "crwdns3710:0crwdne3710:0",
|
||||
"lang_showontl_listwarn": "crwdns3712:0crwdne3712:0",
|
||||
"lang_showontl_verified": "crwdns3714:0crwdne3714:0",
|
||||
"lang_status_requesting": "crwdns4496:0crwdne4496:0",
|
||||
"lang_parse_mentioned": "crwdns3716:0crwdne3716:0",
|
||||
"lang_parse_faved": "crwdns3718:0crwdne3718:0",
|
||||
"lang_parse_bted": "crwdns3720:0crwdne3720:0",
|
||||
@@ -219,6 +221,7 @@
|
||||
"lang_parse_nsfw": "crwdns3800:0crwdne3800:0",
|
||||
"lang_parse_html": "crwdns4388:0crwdne4388:0",
|
||||
"lang_parse_notffilter": "crwdns3802:0crwdne3802:0",
|
||||
"lang_parse_hidden": "crwdns4498:0crwdne4498:0",
|
||||
"lang_misskeyparse_renote": "crwdns3804:0crwdne3804:0",
|
||||
"lang_misskeyparse_renoteqt": "crwdns3806:0crwdne3806:0",
|
||||
"lang_misskeyparse_reaction": "crwdns3808:0crwdne3808:0",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"linkwarn": "crwdns4194:0crwdne4194:0",
|
||||
"connect": "crwdns4196:0crwdne4196:0",
|
||||
"disconnect": "crwdns4198:0crwdne4198:0",
|
||||
"lastFmWarn": "crwdns4490:0crwdne4490:0",
|
||||
"templateedit": "crwdns4340:0crwdne4340:0",
|
||||
"templateeditwarn": "crwdns4342:0crwdne4342:0",
|
||||
"template1": "crwdns4344:0{song}crwdnd4344:0{album}crwdnd4344:0{artist}crwdnd4344:0{url}crwdne4344:0",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey":"Login as Misskey",
|
||||
"misskeylogin":"Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
|
||||
"nodata":"No data",
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -130,7 +130,7 @@
|
||||
"notf":"Notifications",
|
||||
"bookmark": "Bookmarks",
|
||||
"showThisTL":"Show this TL:",
|
||||
"webviewWarn":"TweetDeck with customed TJDeck(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Code</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>). Keyboard shortcuts will irritate you. When you feel so, you check 'Prefer WebView' on top of the column.",
|
||||
"webviewWarn":"TweetDeck with customed TJDeck(<a href='https://gist.github.com/cutls/8787a55d2c1c53274e68a427966046a6' target='_blank'>Code</a>/<a href='https://gist.github.com/totoraj930/d1394dadb51d75666a76829f61e7280c' target='_blank'>TJDeck</a>).",
|
||||
"add":"Add",
|
||||
"search":"Search",
|
||||
"sortSet":"Sort",
|
||||
|
@@ -166,6 +166,7 @@
|
||||
"lang_showontl_domain": "Domain ",
|
||||
"lang_showontl_listwarn": "Follow to add this user to lists.",
|
||||
"lang_showontl_verified": "This website is verified by owner at ",
|
||||
"lang_status_requesting": "Requesting",
|
||||
"lang_parse_mentioned": " replied to you",
|
||||
"lang_parse_faved": " favourited your toot",
|
||||
"lang_parse_bted": " boosted your toot",
|
||||
@@ -220,6 +221,7 @@
|
||||
"lang_parse_nsfw": "sensitive media",
|
||||
"lang_parse_html": "Show embed HTML",
|
||||
"lang_parse_notffilter": "Show this user's notifications",
|
||||
"lang_parse_hidden": "Unvisible quoted toot",
|
||||
"lang_misskeyparse_renote": "Repost",
|
||||
"lang_misskeyparse_renoteqt": "Renote",
|
||||
"lang_misskeyparse_reaction": "Reaction",
|
||||
|
@@ -24,10 +24,11 @@
|
||||
"nativenotf": "Native notification",
|
||||
"nnwarn": "This does not work on Windows Portable ver.",
|
||||
"nntest": "Notification test",
|
||||
"minwidth": "Minimum width of columns",
|
||||
"minwidthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
|
||||
"width": "Width of columns",
|
||||
"widthwarn": "Scroll bar will be shown when your window size is more than ammounts of columns.",
|
||||
"fixwidth": "Minimum width of TweetDeck browser",
|
||||
"fixwidthwarn": "",
|
||||
"margin": "Margin between timelines",
|
||||
"above": "above",
|
||||
"font": "Font",
|
||||
"fontwarn": "Select your favorite font to 'Select'(On Linux, it may not work.)",
|
||||
@@ -101,8 +102,8 @@
|
||||
"or": "or",
|
||||
"imgheight": "Height of images",
|
||||
"imgheightwarn": "Option:Set \"full\" to uncrop.",
|
||||
"ticker": "Enable #InstanceTicker",
|
||||
"tickerwarn": "Show colorful stickers about the server. <a href=\"https://github.com/MiyonMiyon/InstanceTicker_List\">About #InstanceTicker</a> (c)2018-2020 MiyonMiyon. Released under the MIT License.",
|
||||
"ticker": "Enable OpenSticker",
|
||||
"tickerwarn": "Show the instance name and favicon of tooters <a href=\"https://opensticker.0px.io\">About OpenSticker</a>",
|
||||
"animation": "Animation of timelines",
|
||||
"markers": "Markers(mark as read) on HTL and notifications",
|
||||
"markerswarn": "Mastodon 3.0~. Shared on WebUI and third-party supported clients.",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey": "Iniciar sesión con Misskey",
|
||||
"misskeylogin": "Leé <a href=\"https://docs.thedesk.top/\">la documentación (en japonés)</a> para usar Misskey.",
|
||||
"nodata": "Sin datos",
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -11,8 +11,6 @@
|
||||
"cwDes": "Ocultar texto con advertencia de contenido",
|
||||
"selfile": "Adjuntar…",
|
||||
"insertEmoji": "Emojis",
|
||||
"NPSpotify": "Ahora suena (Spotify)",
|
||||
"NPiTunes": "Ahora suena (macOS)",
|
||||
"schedule": "Toot programado",
|
||||
"postat": "Publicar el",
|
||||
"scheduleWarn": "2.7.0~ Intervalo mínimo: 5 minutos (el reloj en el servidor podría no ser preciso).",
|
||||
@@ -77,6 +75,7 @@
|
||||
"toots": "Toots",
|
||||
"follow": "Seguir",
|
||||
"follower": "Seguidor",
|
||||
"utlColumn": "Show as a column",
|
||||
"timeline": "Línea temporal",
|
||||
"operateOtherAcct": "Cuenta cruzada",
|
||||
"list": "Enlistar",
|
||||
|
@@ -127,6 +127,7 @@
|
||||
"lang_layout_delthis": "Quitar esta columna",
|
||||
"lang_layout_setthis": "Configuración de esta columna",
|
||||
"lang_layout_mediafil": "Filtro de medio",
|
||||
"lang_layout_remoteOnly": "Remote only",
|
||||
"lang_layout_linkana": "Analizador automático de enlace",
|
||||
"lang_layout_linkanades": "Analizador automático de enlace",
|
||||
"lang_layout_tts": "Texto hablado ",
|
||||
@@ -165,6 +166,7 @@
|
||||
"lang_showontl_domain": "Dominio ",
|
||||
"lang_showontl_listwarn": "Seguí a este usuario para agregarlo a las listas.",
|
||||
"lang_showontl_verified": "Este sitio web está verificado por su propietario en ",
|
||||
"lang_status_requesting": "Requesting",
|
||||
"lang_parse_mentioned": " te respondió",
|
||||
"lang_parse_faved": " marcó tu toot como favorito",
|
||||
"lang_parse_bted": " retooteó tu toot",
|
||||
@@ -219,6 +221,7 @@
|
||||
"lang_parse_nsfw": "medios sensibles",
|
||||
"lang_parse_html": "Mostrar HTML insertado",
|
||||
"lang_parse_notffilter": "Mostrar notificaciones de este usuario",
|
||||
"lang_parse_hidden": "Unvisible quoted toot",
|
||||
"lang_misskeyparse_renote": "Republicar",
|
||||
"lang_misskeyparse_renoteqt": "Renovar",
|
||||
"lang_misskeyparse_reaction": "Reacción",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"linkwarn": "TheDesk guarda tus datos en el servidor thedesk.top.",
|
||||
"connect": "Conectar",
|
||||
"disconnect": "Desconectar",
|
||||
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
|
||||
"templateedit": "Editar plantilla",
|
||||
"templateeditwarn": "",
|
||||
"template1": "Spotify: {artist}: nombre del artista // {song}: nombre del tema // {album}: nombre del álbum // {url}: dirección web a Spotify",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey": "Iniciar sesión como Misskey",
|
||||
"misskeylogin": "Leer <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> para iniciar sesión en Misskey.",
|
||||
"nodata": "Sin datos",
|
||||
"accessTokenSetup": "Usar el token de acceso para iniciar sesión (haga clic después de completar no el código si no el token de acceso en el casilla: avanzado)"
|
||||
"accessTokenSetup": "Usar el token de acceso para iniciar sesión (haga clic después de completar no el código si no el token de acceso en el casilla: avanzado)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -11,8 +11,6 @@
|
||||
"cwDes": "Hide text behind warning",
|
||||
"selfile": "Attach..",
|
||||
"insertEmoji": "Emojis",
|
||||
"NPSpotify": "NowPlaying(Spotify)",
|
||||
"NPiTunes": "NowPlaying(macOS)",
|
||||
"schedule": "Scheduled toot",
|
||||
"postat": "Post at",
|
||||
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
|
||||
@@ -77,6 +75,7 @@
|
||||
"toots": "Toots",
|
||||
"follow": "Follow",
|
||||
"follower": "Follower",
|
||||
"utlColumn": "Show as a column",
|
||||
"timeline": "Timeline",
|
||||
"operateOtherAcct": "Cross-account",
|
||||
"list": "List",
|
||||
|
@@ -127,6 +127,7 @@
|
||||
"lang_layout_delthis": "Remove this column",
|
||||
"lang_layout_setthis": "Preferences of this column",
|
||||
"lang_layout_mediafil": "Media filtering",
|
||||
"lang_layout_remoteOnly": "Remote only",
|
||||
"lang_layout_linkana": "Auto Link Analyzer",
|
||||
"lang_layout_linkanades": "Auto link analyzer",
|
||||
"lang_layout_tts": "Text to speech ",
|
||||
@@ -165,6 +166,7 @@
|
||||
"lang_showontl_domain": "Domain ",
|
||||
"lang_showontl_listwarn": "Follow to add this user to lists.",
|
||||
"lang_showontl_verified": "This website is verified by owner at ",
|
||||
"lang_status_requesting": "Requesting",
|
||||
"lang_parse_mentioned": " replied to you",
|
||||
"lang_parse_faved": " favourited your toot",
|
||||
"lang_parse_bted": " boosted your toot",
|
||||
@@ -219,6 +221,7 @@
|
||||
"lang_parse_nsfw": "sensitive media",
|
||||
"lang_parse_html": "Show embed HTML",
|
||||
"lang_parse_notffilter": "Show this user's notifications",
|
||||
"lang_parse_hidden": "Unvisible quoted toot",
|
||||
"lang_misskeyparse_renote": "Repost",
|
||||
"lang_misskeyparse_renoteqt": "Renote",
|
||||
"lang_misskeyparse_reaction": "Reaction",
|
||||
|
@@ -167,6 +167,7 @@
|
||||
"linkwarn": "TheDesk save your data on thedesk.top server.",
|
||||
"connect": "Connect",
|
||||
"disconnect": "Disconnect",
|
||||
"lastFmWarn": "User name...(empty to disconnect) You cannot hide your recent play log at last.fm privacy settings.",
|
||||
"templateedit": "Edit a template",
|
||||
"templateeditwarn": "",
|
||||
"template1": "Spotify:{song}:Song name/{album}:Album name/{artist}:Artist name/{url}:URL to Spotify",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey": "Login as Misskey",
|
||||
"misskeylogin": "Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
|
||||
"nodata": "No data",
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -11,8 +11,6 @@
|
||||
"cwDes": "Hide text behind warning",
|
||||
"selfile": "Attach..",
|
||||
"insertEmoji": "Emojis",
|
||||
"NPSpotify": "NowPlaying(Spotify)",
|
||||
"NPiTunes": "NowPlaying(macOS)",
|
||||
"schedule": "Scheduled toot",
|
||||
"postat": "Post at",
|
||||
"scheduleWarn": "2.7.0~ Minimum time gap:5min(clock on the server may not be accurate.)",
|
||||
@@ -77,6 +75,7 @@
|
||||
"toots": "Toots",
|
||||
"follow": "Follow",
|
||||
"follower": "Follower",
|
||||
"utlColumn": "Show as a column",
|
||||
"timeline": "Timeline",
|
||||
"operateOtherAcct": "Cross-account",
|
||||
"list": "List",
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user