Compare commits
27 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c81a204e0c | ||
![]() |
fce1d619e8 | ||
![]() |
3e146d5f94 | ||
![]() |
cb5c0ac2f5 | ||
![]() |
4798657b70 | ||
![]() |
f565e60bcf | ||
![]() |
89461c598f | ||
![]() |
b320d08a5e | ||
![]() |
a930d4fc7b | ||
![]() |
d42197fc2e | ||
![]() |
2d3138af76 | ||
![]() |
4ee4b6f332 | ||
![]() |
fc6c048fad | ||
![]() |
dae9c4288d | ||
![]() |
9f37149369 | ||
![]() |
e476647ab8 | ||
![]() |
eb23be979c | ||
![]() |
6d9d6a6779 | ||
![]() |
1c0cb1ae71 | ||
![]() |
0ba5dc3900 | ||
![]() |
872717feeb | ||
![]() |
85b51f06a4 | ||
![]() |
94df60d054 | ||
![]() |
7395284480 | ||
![]() |
b537fa5467 | ||
![]() |
dca58c20d2 | ||
![]() |
0a3030f7d0 |
140
assets/title-dark.svg
Normal file
140
assets/title-dark.svg
Normal file
@@ -0,0 +1,140 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="614.71039"
|
||||
height="205.08009"
|
||||
viewBox="0 0 162.64213 54.260776"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.1 r15371"
|
||||
sodipodi:docname="misskey.svg"
|
||||
inkscape:export-filename="C:\Users\Takumiya_Cho\Desktop\misskey.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect5115"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.000408163"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect5104"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.000408163"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.9899495"
|
||||
inkscape:cx="370.82839"
|
||||
inkscape:cy="79.043895"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:snap-bbox="true"
|
||||
inkscape:bbox-nodes="true"
|
||||
inkscape:snap-bbox-edge-midpoints="false"
|
||||
inkscape:snap-smooth-nodes="true"
|
||||
inkscape:snap-center="true"
|
||||
inkscape:snap-page="true"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="1072"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:object-paths="true"
|
||||
inkscape:bbox-paths="true"
|
||||
fit-margin-top="50"
|
||||
fit-margin-left="50"
|
||||
fit-margin-bottom="20"
|
||||
fit-margin-right="50" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="レイヤー 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-11.097531,-173.29664)">
|
||||
<g
|
||||
transform="matrix(0.28612302,0,0,0.28612302,17.176981,141.74334)"
|
||||
id="text4489-6"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:141.03404236px;line-height:476.69509888px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.92471898px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
aria-label="Mi">
|
||||
<path
|
||||
sodipodi:nodetypes="zccssscssccscczzzccsccsscscsccz"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5210"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#fff;fill-opacity:1;stroke-width:0.92471898px"
|
||||
d="m 75.196381,231.17126 c -5.855419,0.0202 -10.885068,-3.50766 -13.2572,-7.61584 -1.266603,-1.79454 -3.772419,-2.43291 -3.807919,0 v 11.2332 c 0,4.51309 -1.645397,8.41504 -4.936191,11.70583 -3.196772,3.19677 -7.098714,4.79516 -11.705826,4.79516 -4.513089,0 -8.415031,-1.59839 -11.705825,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -61.7729 c 0,-3.47884 0.987238,-6.6286 2.961715,-9.44928 2.068499,-2.91471 4.701135,-4.9362 7.897906,-6.06447 1.786431,-0.65816 3.666885,-0.98724 5.641362,-0.98724 5.077225,0 9.308247,1.97448 12.693064,5.92343 1.786431,1.97448 2.820681,3.00873 3.102749,3.10275 0,0 13.408119,16.21319 13.78421,16.49526 0.376091,0.28206 1.480789,2.43848 4.127113,2.43848 2.646324,0 3.89218,-2.15642 4.26827,-2.43848 0.376091,-0.28207 13.784088,-16.49526 13.784088,-16.49526 0.09402,0.094 1.081261,-0.94022 2.961715,-3.10275 3.478837,-3.94895 7.756866,-5.92343 12.834096,-5.92343 1.88045,0 3.76091,0.32908 5.64136,0.98724 3.19677,1.12827 5.7824,3.14976 7.75688,6.06447 2.06849,2.82068 3.10274,5.97044 3.10274,9.44928 v 61.7729 c 0,4.51309 -1.6454,8.41504 -4.93619,11.70583 -3.19677,3.19677 -7.09871,4.79516 -11.70582,4.79516 -4.51309,0 -8.41504,-1.59839 -11.705828,-4.79516 -3.196772,-3.29079 -4.795158,-7.19274 -4.795158,-11.70583 v -11.2332 c -0.277898,-3.06563 -2.987588,-1.13379 -3.948953,0 -2.538613,4.70114 -7.401781,7.59567 -13.2572,7.61584 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5212"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';fill:#fff;fill-opacity:1;stroke-width:0.92471898px"
|
||||
d="m 145.83461,185.00361 q -5.92343,0 -10.15445,-4.08999 -4.08999,-4.23102 -4.08999,-10.15445 0,-5.92343 4.08999,-10.01342 4.23102,-4.23102 10.15445,-4.23102 5.92343,0 10.15445,4.23102 4.23102,4.08999 4.23102,10.01342 0,5.92343 -4.23102,10.15445 -4.23102,4.08999 -10.15445,4.08999 z m 0.14103,2.82068 q 5.92343,0 10.01342,4.23102 4.23102,4.23102 4.23102,10.15445 v 34.83541 q 0,5.92343 -4.23102,10.15445 -4.08999,4.08999 -10.01342,4.08999 -5.92343,0 -10.15445,-4.08999 -4.23102,-4.23102 -4.23102,-10.15445 v -34.83541 q 0,-5.92343 4.23102,-10.15445 4.23102,-4.23102 10.15445,-4.23102 z" />
|
||||
</g>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5199"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 72.022691,200.53715 q 0.968125,0.24203 2.420312,0.5244 2.420313,0.40339 3.791824,1.29083 2.581666,1.69422 2.581666,5.08266 0,2.74302 -1.815234,4.47758 -2.097604,2.01693 -5.849089,2.01693 -2.743021,0 -6.131458,-0.76644 -1.089141,-0.24203 -1.774896,-1.08914 -0.645417,-0.84711 -0.645417,-1.89591 0,-1.29083 0.887448,-2.17828 0.927786,-0.92779 2.178281,-0.92779 0.363047,0 0.685756,0.0807 1.169817,0.24203 4.477578,0.60508 0.443724,0 0.968125,-0.0403 0.201693,0 0.201693,-0.24203 0.04034,-0.20169 -0.242032,-0.28237 -1.37151,-0.24203 -2.541328,-0.5244 -1.331172,-0.28237 -1.895911,-0.48406 -1.12948,-0.32271 -1.895912,-0.84711 -2.581667,-1.69422 -2.622005,-5.08266 0,-2.70268 1.855573,-4.47758 2.258958,-2.17828 6.413828,-1.97659 2.783359,0.12102 5.566719,0.7261 1.048802,0.24203 1.734557,1.08914 0.685756,0.84711 0.685756,1.93625 0,1.25049 -0.927787,2.17828 -0.887448,0.88745 -2.178281,0.88745 -0.322709,0 -0.645417,-0.0807 -1.169818,-0.24203 -4.517917,-0.56474 -0.403385,-0.0403 -0.766432,0 -0.322708,0.0403 -0.322708,0.24203 0.04034,0.24203 0.322708,0.32271 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5201"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 89.577027,200.53715 q 0.968125,0.24203 2.420312,0.5244 2.420313,0.40339 3.791823,1.29083 2.581667,1.69422 2.581667,5.08266 0,2.74302 -1.815234,4.47758 -2.097604,2.01693 -5.849089,2.01693 -2.743021,0 -6.131458,-0.76644 -1.089141,-0.24203 -1.774896,-1.08914 -0.645417,-0.84711 -0.645417,-1.89591 0,-1.29083 0.887448,-2.17828 0.927786,-0.92779 2.178281,-0.92779 0.363047,0 0.685755,0.0807 1.169818,0.24203 4.477579,0.60508 0.443724,0 0.968125,-0.0403 0.201692,0 0.201692,-0.24203 0.04034,-0.20169 -0.242031,-0.28237 -1.37151,-0.24203 -2.541328,-0.5244 -1.331172,-0.28237 -1.895912,-0.48406 -1.129479,-0.32271 -1.895911,-0.84711 -2.581667,-1.69422 -2.622005,-5.08266 0,-2.70268 1.855573,-4.47758 2.258958,-2.17828 6.413828,-1.97659 2.783359,0.12102 5.566719,0.7261 1.048802,0.24203 1.734557,1.08914 0.685755,0.84711 0.685755,1.93625 0,1.25049 -0.927786,2.17828 -0.887448,0.88745 -2.178281,0.88745 -0.322709,0 -0.645417,-0.0807 -1.169818,-0.24203 -4.517917,-0.56474 -0.403385,-0.0403 -0.766432,0 -0.322708,0.0403 -0.322708,0.24203 0.04034,0.24203 0.322708,0.32271 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5203"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 115.65209,203.87137 q 0.12101,0.0807 2.86404,2.78336 1.25049,1.21016 1.25049,2.94471 0,1.61354 -1.16982,2.86404 -1.16982,1.21016 -2.90437,1.21016 -1.65388,0 -2.86404,-1.16982 l -4.03385,-3.91284 q -0.16136,-0.12102 -0.32271,-0.12102 -0.32271,0 -0.32271,1.21016 0,1.69422 -1.21016,2.90438 -1.21015,1.16981 -2.90437,1.16981 -1.69422,0 -2.90438,-1.16981 -1.169807,-1.21016 -1.169807,-2.90438 v -18.79776 q 0,-1.69422 1.169807,-2.86404 1.21016,-1.21015 2.90438,-1.21015 1.69422,0 2.90437,1.21015 1.21016,1.16982 1.21016,2.86404 v 6.29281 q 0,0.40339 0.28237,0.5244 0.24203,0.12102 0.5244,-0.0807 0.16135,-0.0807 4.84063,-3.18675 1.0488,-0.64542 2.25895,-0.64542 2.21862,0 3.42878,1.81524 0.64542,1.0488 0.64542,2.25896 0,2.21862 -1.81524,3.42877 l -2.54133,1.61354 v 0.0403 l -0.0807,0.0403 q -0.56474,0.36305 -0.0403,0.88745 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5205"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 131.25181,213.92955 q -4.19521,0 -7.18026,-2.94472 -2.94472,-2.98505 -2.94472,-7.18026 0,-4.15487 2.94472,-7.09958 2.98505,-2.98505 7.18026,-2.98505 4.15487,0 6.97857,2.78335 0.92778,0.92779 0.92778,2.25896 0,1.33118 -0.92778,2.25896 l -4.67928,4.63893 q -1.00846,1.00847 -2.01692,1.00847 -1.45219,0 -2.25896,-0.80677 -0.80677,-0.80677 -0.80677,-2.13795 0,-1.29083 0.92778,-2.21862 l 0.80678,-0.84711 q 0.16135,-0.12101 0.0807,-0.24203 -0.12101,-0.0807 -0.32271,-0.0403 -0.80677,0.20169 -1.37151,0.80677 -1.12948,1.08914 -1.12948,2.622 0,1.5732 1.08915,2.70268 1.12947,1.08914 2.70268,1.08914 1.53286,0 2.622,-1.12947 0.92779,-0.92779 2.25896,-0.92779 1.33117,0 2.25896,0.92779 0.92779,0.92778 0.92779,2.25895 0,1.33118 -0.92779,2.25896 -2.98505,2.94472 -7.13992,2.94472 z" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5207"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:136.34428406px;font-family:'OTADESIGN Rounded';-inkscape-font-specification:'OTADESIGN Rounded';letter-spacing:0px;word-spacing:0px;fill:#fff;fill-opacity:1;stroke:none;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 160.51049,198.1433 v 5.60705 q 0,0.56474 -0.0807,1.21016 v 7.38195 q 0,4.51792 -2.74302,7.2206 -2.70268,2.70269 -7.30128,2.70269 -2.66234,0 -4.80028,-1.00847 -2.13795,-0.96812 -2.13795,-3.3481 0,-0.80677 0.36305,-1.53286 0.96812,-2.17828 3.3481,-2.17828 0.56474,0 1.5732,0.32271 1.00847,0.3227 1.65388,0.3227 1.69422,0 2.21862,-0.72609 0.20169,-0.28237 0.0807,-0.44372 -0.16136,-0.24204 -0.56474,-0.16136 -0.68576,0.12102 -1.49253,0.12102 -4.07419,0 -6.97856,-2.90438 -2.90438,-2.90437 -2.90438,-6.97857 v -5.60705 q 0,-1.69422 1.16982,-2.86404 1.21015,-1.21016 2.90437,-1.21016 1.69422,0 2.90438,1.21016 1.21015,1.16982 1.21015,2.86404 v 5.60705 q 0,0.68576 0.48407,1.21016 0.5244,0.48406 1.21015,0.48406 0.7261,0 1.21016,-0.48406 0.48406,-0.5244 0.48406,-1.21016 v -5.60705 q 0,-1.69422 1.21016,-2.86404 1.21015,-1.21016 2.90437,-1.21016 1.69422,0 2.86404,1.21016 1.21016,1.16982 1.21016,2.86404 z" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
@@ -43,13 +43,7 @@ Please install and setup these softwares:
|
||||
|
||||
*4.* Prepare configuration
|
||||
----------------------------------------------------------------
|
||||
1. Copy `example.yml` of `.config` directory
|
||||
2. Rename it to `default.yml`
|
||||
3. Edit it
|
||||
|
||||
---
|
||||
|
||||
Or you can generate config file via `npm run config` command.
|
||||
You need to generate config file via `npm run config` command.
|
||||
|
||||
*5.* Build Misskey
|
||||
----------------------------------------------------------------
|
||||
|
@@ -43,18 +43,14 @@ web-push generate-vapid-keys
|
||||
|
||||
*4.* 設定ファイルを用意する
|
||||
----------------------------------------------------------------
|
||||
1. `.config`ディレクトリ内の`example.yml`をコピー
|
||||
2. `default.yml`にリネーム
|
||||
3. 編集する
|
||||
|
||||
---
|
||||
|
||||
または、`npm run config`コマンドを利用して、ガイドに従って情報を
|
||||
入力して設定ファイルを生成することもできます。
|
||||
`npm run config`コマンドを利用して、ガイドに従って情報を入力してください。
|
||||
|
||||
*5.* Misskeyのビルド
|
||||
----------------------------------------------------------------
|
||||
1. `npm run build`
|
||||
1. `npm install -g node-gyp`
|
||||
2. `node-gyp configure`
|
||||
3. `node-gyp build`
|
||||
4. `npm run build`
|
||||
|
||||
*6.* 以上です!
|
||||
----------------------------------------------------------------
|
||||
@@ -78,4 +74,4 @@ VPSなどでビルドする時は、もしかしたらメモリが足りなく
|
||||
3. npm run webpack
|
||||
4. built/client をサーバーにアップロードする
|
||||
5. サーバー上で、npm run gulp
|
||||
6. 完了
|
||||
6. 完了
|
||||
|
@@ -56,9 +56,9 @@ common/views/components/connect-failed.troubleshooter.vue:
|
||||
no-network-desc: "Please make sure you are connected to the Network."
|
||||
no-internet: "There is no Internet connection"
|
||||
no-internet-desc: "Please make sure you are connected to the Internet."
|
||||
no-server: "Unable to connect to the server"
|
||||
no-server-desc: "The network connection of your PC is normal, but you could not connect to Misskey's server. There is a possibility that the server is either down or under maintenance, please try again later."
|
||||
success: "Successfully connected to Misskey's server"
|
||||
no-server: "Unable to connect to the Misskey server"
|
||||
no-server-desc: "The network connection of your PC is normal, but you could not connect to the Misskey server. There is a possibility that the server is either down or under maintenance, please try again later."
|
||||
success: "Successfully connected to the Misskey server"
|
||||
success-desc: "It seems to be able to connect. Please reload the page."
|
||||
flush: "Clean cache"
|
||||
set-version: "Specify version"
|
||||
@@ -121,7 +121,7 @@ common/views/components/signup.vue:
|
||||
unavailable: "Unavailable"
|
||||
error: "Network error"
|
||||
invalid-format: "Only use letters, numbers and -."
|
||||
too-short: "Please enter at least 1 character!"
|
||||
too-short: "Please enter at least 1 character!"
|
||||
too-long: "Please enter up to 20 characters."
|
||||
password: "Password"
|
||||
password-placeholder: "We recommend more than 8 characters."
|
||||
@@ -168,11 +168,11 @@ common/views/widgets/server.vue:
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "Public"
|
||||
home: "Home"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
home-desc: "Post to the home timeline only"
|
||||
followers: "Followers"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
followers-desc: "Post to followers only"
|
||||
specified: "Direct"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
specified-desc: "Post to specified users only"
|
||||
private: "Private"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
@@ -188,7 +188,7 @@ desktop/views/components/calendar.vue:
|
||||
next: "Next month"
|
||||
go: "Click to naviguate"
|
||||
desktop/views/components/choose-file-from-drive-window.vue:
|
||||
choose-file: "ファイル選択中"
|
||||
choose-file: "Choosing files"
|
||||
upload: "Upload files from your PC"
|
||||
cancel: "Cancel"
|
||||
ok: "OK"
|
||||
@@ -264,7 +264,7 @@ desktop/views/components/following-window.vue:
|
||||
desktop/views/components/following.vue:
|
||||
empty: "You don’t follow anyone."
|
||||
desktop/views/components/friends-maker.vue:
|
||||
title: "気になるユーザーをフォロー:"
|
||||
title: "Recommended users:"
|
||||
empty: "Similar users weren’t found."
|
||||
fetching: "Loading…"
|
||||
refresh: "More"
|
||||
@@ -417,8 +417,8 @@ desktop/views/components/settings.vue:
|
||||
update-checking: "Checking for updates"
|
||||
do-update: "Check for update"
|
||||
update-settings: "Advanced settings"
|
||||
prevent-update: "アップデートを延期する(非推奨)"
|
||||
prevent-update-desc: "この設定をオンにしてもアップデートが反映される場合があります。この設定はこのデバイスのみ有効です。"
|
||||
prevent-update: "Postpone updates (not recommended)"
|
||||
prevent-update-desc: "You may reflect updates even if you select this setting. This setting is valid only this device."
|
||||
no-updates: "No updates available"
|
||||
no-updates-desc: "Your Misskey is up to date."
|
||||
update-available: "New version is available!"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
---
|
||||
meta:
|
||||
lang: "日本語"
|
||||
lang: "中文(简体)"
|
||||
divider: ""
|
||||
common:
|
||||
misskey: "Misskeyで皆と共有しよう。"
|
||||
|
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"author": "syuilo <i@syuilo.com>",
|
||||
"version": "2.16.2",
|
||||
"clientVersion": "1.0.5657",
|
||||
"version": "2.16.6",
|
||||
"clientVersion": "1.0.5686",
|
||||
"codename": "nighthike",
|
||||
"main": "./built/index.js",
|
||||
"private": true,
|
||||
|
@@ -18,6 +18,14 @@
|
||||
return;
|
||||
}
|
||||
|
||||
//#region Load settings
|
||||
let settings = null;
|
||||
const vuex = localStorage.getItem('vuex');
|
||||
if (vuex) {
|
||||
settings = JSON.parse(vuex);
|
||||
}
|
||||
//#endregion
|
||||
|
||||
// Get the current url information
|
||||
const url = new URL(location.href);
|
||||
|
||||
@@ -35,10 +43,8 @@
|
||||
// The default language is English
|
||||
if (!LANGS.includes(lang)) lang = 'en';
|
||||
|
||||
const vuex = localStorage.getItem('vuex');
|
||||
if (vuex) {
|
||||
const data = JSON.parse(vuex);
|
||||
if (data.device.lang) lang = data.device.lang;
|
||||
if (settings) {
|
||||
if (settings.device.lang) lang = settings.device.lang;
|
||||
}
|
||||
//#endregion
|
||||
|
||||
@@ -68,8 +74,10 @@
|
||||
}
|
||||
|
||||
// Dark/Light
|
||||
if (localStorage.getItem('darkmode') == 'true') {
|
||||
document.documentElement.setAttribute('data-darkmode', 'true');
|
||||
if (settings) {
|
||||
if (settings.device.darkmode) {
|
||||
document.documentElement.setAttribute('data-darkmode', 'true');
|
||||
}
|
||||
}
|
||||
|
||||
// Script version
|
||||
|
@@ -197,7 +197,7 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
.mk-messaging-form
|
||||
root(isDark)
|
||||
> textarea
|
||||
cursor auto
|
||||
display block
|
||||
@@ -209,10 +209,10 @@ export default Vue.extend({
|
||||
padding 8px
|
||||
resize none
|
||||
font-size 1em
|
||||
color #000
|
||||
color isDark ? #fff : #000
|
||||
outline none
|
||||
border none
|
||||
border-top solid 1px #eee
|
||||
border-top solid 1px isDark ? #4b5056 : #eee
|
||||
border-radius 0
|
||||
box-shadow none
|
||||
background transparent
|
||||
@@ -302,4 +302,10 @@ export default Vue.extend({
|
||||
input[type=file]
|
||||
display none
|
||||
|
||||
.mk-messaging-form[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.mk-messaging-form:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
|
@@ -59,8 +59,10 @@ export default Vue.extend({
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.message
|
||||
$me-balloon-color = #23A7B6
|
||||
@import '~const.styl'
|
||||
|
||||
root(isDark)
|
||||
$me-balloon-color = $theme-color
|
||||
|
||||
padding 10px 12px 10px 12px
|
||||
background-color transparent
|
||||
@@ -126,7 +128,7 @@ export default Vue.extend({
|
||||
bottom -4px
|
||||
left -12px
|
||||
margin 0
|
||||
color rgba(#000, 0.5)
|
||||
color isDark ? rgba(#fff, 0.5) : rgba(#000, 0.5)
|
||||
font-size 11px
|
||||
|
||||
> .content
|
||||
@@ -187,7 +189,7 @@ export default Vue.extend({
|
||||
display block
|
||||
margin 2px 0 0 0
|
||||
font-size 10px
|
||||
color rgba(#000, 0.4)
|
||||
color isDark ? rgba(#fff, 0.4) : rgba(#000, 0.4)
|
||||
|
||||
> [data-fa]
|
||||
margin-left 4px
|
||||
@@ -200,8 +202,9 @@ export default Vue.extend({
|
||||
padding-left 66px
|
||||
|
||||
> .balloon
|
||||
$color = isDark ? #2d3338 : #eee
|
||||
float left
|
||||
background #eee
|
||||
background $color
|
||||
|
||||
&[data-no-text]
|
||||
background transparent
|
||||
@@ -209,10 +212,15 @@ export default Vue.extend({
|
||||
&:not([data-no-text]):before
|
||||
left -14px
|
||||
border-top solid 8px transparent
|
||||
border-right solid 8px #eee
|
||||
border-right solid 8px $color
|
||||
border-bottom solid 8px transparent
|
||||
border-left solid 8px transparent
|
||||
|
||||
> .content
|
||||
> .text
|
||||
if isDark
|
||||
color #fff
|
||||
|
||||
> footer
|
||||
text-align left
|
||||
|
||||
@@ -241,7 +249,7 @@ export default Vue.extend({
|
||||
> .content
|
||||
|
||||
> p.is-deleted
|
||||
color rgba(255, 255, 255, 0.5)
|
||||
color rgba(#fff, 0.5)
|
||||
|
||||
> .text >>>
|
||||
&, *
|
||||
@@ -254,4 +262,10 @@ export default Vue.extend({
|
||||
> .baloon
|
||||
opacity 0.5
|
||||
|
||||
.message[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.message:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
|
@@ -18,7 +18,11 @@
|
||||
</template>
|
||||
</div>
|
||||
<footer>
|
||||
<div ref="notifications" class="notifications"></div>
|
||||
<transition name="fade">
|
||||
<div class="new-message" v-show="showIndicator">
|
||||
<button @click="onIndicatorClick">%fa:arrow-circle-down%%i18n:@new-message%</button>
|
||||
</div>
|
||||
</transition>
|
||||
<x-form :user="user" ref="form"/>
|
||||
</footer>
|
||||
</div>
|
||||
@@ -45,7 +49,9 @@ export default Vue.extend({
|
||||
fetchingMoreMessages: false,
|
||||
messages: [],
|
||||
existMoreMessages: false,
|
||||
connection: null
|
||||
connection: null,
|
||||
showIndicator: false,
|
||||
timer: null
|
||||
};
|
||||
},
|
||||
|
||||
@@ -172,7 +178,7 @@ export default Vue.extend({
|
||||
});
|
||||
} else if (message.userId != (this as any).os.i.id) {
|
||||
// Notify
|
||||
this.notify('%i18n:@new-message%');
|
||||
this.notifyNewMessage();
|
||||
}
|
||||
},
|
||||
|
||||
@@ -205,18 +211,18 @@ export default Vue.extend({
|
||||
}
|
||||
},
|
||||
|
||||
notify(message) {
|
||||
const n = document.createElement('p') as any;
|
||||
n.innerHTML = '%fa:arrow-circle-down%' + message;
|
||||
n.onclick = () => {
|
||||
this.scrollToBottom();
|
||||
n.parentNode.removeChild(n);
|
||||
};
|
||||
(this.$refs.notifications as any).appendChild(n);
|
||||
onIndicatorClick() {
|
||||
this.showIndicator = false;
|
||||
this.scrollToBottom();
|
||||
},
|
||||
|
||||
setTimeout(() => {
|
||||
n.style.opacity = 0;
|
||||
setTimeout(() => n.parentNode.removeChild(n), 1000);
|
||||
notifyNewMessage() {
|
||||
this.showIndicator = true;
|
||||
|
||||
if (this.timer) clearTimeout(this.timer);
|
||||
|
||||
this.timer = setTimeout(() => {
|
||||
this.showIndicator = false;
|
||||
}, 4000);
|
||||
},
|
||||
|
||||
@@ -238,11 +244,12 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
.mk-messaging-room
|
||||
root(isDark)
|
||||
display flex
|
||||
flex 1
|
||||
flex-direction column
|
||||
height 100%
|
||||
background isDark ? #191b22 : #fff
|
||||
|
||||
> .stream
|
||||
width 100%
|
||||
@@ -267,7 +274,7 @@ export default Vue.extend({
|
||||
padding 16px 8px 8px 8px
|
||||
text-align center
|
||||
font-size 0.8em
|
||||
color rgba(#000, 0.4)
|
||||
color rgba(isDark ? #fff : #000, 0.4)
|
||||
|
||||
[data-fa]
|
||||
margin-right 4px
|
||||
@@ -278,7 +285,7 @@ export default Vue.extend({
|
||||
padding 16px
|
||||
text-align center
|
||||
font-size 0.8em
|
||||
color rgba(#000, 0.4)
|
||||
color rgba(isDark ? #fff : #000, 0.4)
|
||||
|
||||
[data-fa]
|
||||
margin-right 4px
|
||||
@@ -322,7 +329,7 @@ export default Vue.extend({
|
||||
left 0
|
||||
right 0
|
||||
margin 0 auto
|
||||
background rgba(#000, 0.1)
|
||||
background rgba(isDark ? #fff : #000, 0.1)
|
||||
|
||||
> span
|
||||
display inline-block
|
||||
@@ -331,7 +338,7 @@ export default Vue.extend({
|
||||
//font-weight bold
|
||||
line-height 32px
|
||||
color rgba(#000, 0.3)
|
||||
background #fff
|
||||
background isDark ? #191b22 : #fff
|
||||
|
||||
> footer
|
||||
position -webkit-sticky
|
||||
@@ -342,30 +349,32 @@ export default Vue.extend({
|
||||
max-width 600px
|
||||
margin 0 auto
|
||||
padding 0
|
||||
background rgba(255, 255, 255, 0.95)
|
||||
background rgba(isDark ? #282c37 : #fff, 0.95)
|
||||
background-clip content-box
|
||||
|
||||
> .notifications
|
||||
> .new-message
|
||||
position absolute
|
||||
top -48px
|
||||
width 100%
|
||||
padding 8px 0
|
||||
text-align center
|
||||
|
||||
&:empty
|
||||
display none
|
||||
|
||||
> p
|
||||
> button
|
||||
display inline-block
|
||||
margin 0
|
||||
padding 0 12px 0 28px
|
||||
padding 0 12px 0 30px
|
||||
cursor pointer
|
||||
line-height 32px
|
||||
font-size 12px
|
||||
color $theme-color-foreground
|
||||
background $theme-color
|
||||
border-radius 16px
|
||||
transition opacity 1s ease
|
||||
|
||||
&:hover
|
||||
background lighten($theme-color, 10%)
|
||||
|
||||
&:active
|
||||
background darken($theme-color, 10%)
|
||||
|
||||
> [data-fa]
|
||||
position absolute
|
||||
@@ -374,4 +383,17 @@ export default Vue.extend({
|
||||
line-height 32px
|
||||
font-size 16px
|
||||
|
||||
.fade-enter-active, .fade-leave-active
|
||||
transition opacity 0.1s
|
||||
|
||||
.fade-enter, .fade-leave-to
|
||||
transition opacity 0.5s
|
||||
opacity 0
|
||||
|
||||
.mk-messaging-room[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.mk-messaging-room:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
|
@@ -37,6 +37,7 @@ export default Vue.extend({
|
||||
fetch(cb?) {
|
||||
this.fetching = true;
|
||||
(this as any).api('notes', {
|
||||
local: true,
|
||||
reply: false,
|
||||
renote: false,
|
||||
media: false,
|
||||
@@ -52,15 +53,15 @@ export default Vue.extend({
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.mk-welcome-timeline
|
||||
background #fff
|
||||
root(isDark)
|
||||
background isDark ? #282C37 : #fff
|
||||
|
||||
> div
|
||||
padding 16px
|
||||
overflow-wrap break-word
|
||||
font-size .9em
|
||||
color #4C4C4C
|
||||
border-bottom 1px solid rgba(#000, 0.05)
|
||||
color isDark ? #fff : #4C4C4C
|
||||
border-bottom 1px solid isDark ? rgba(#000, 0.1) : rgba(#000, 0.05)
|
||||
|
||||
&:after
|
||||
content ""
|
||||
@@ -95,17 +96,23 @@ export default Vue.extend({
|
||||
overflow hidden
|
||||
font-weight bold
|
||||
text-overflow ellipsis
|
||||
color #627079
|
||||
color isDark ? #fff : #627079
|
||||
|
||||
> .username
|
||||
margin 0 .5em 0 0
|
||||
color #ccc
|
||||
color isDark ? #606984 : #ccc
|
||||
|
||||
> .info
|
||||
margin-left auto
|
||||
font-size 0.9em
|
||||
|
||||
> .created-at
|
||||
color #c0c0c0
|
||||
color isDark ? #606984 : #c0c0c0
|
||||
|
||||
.mk-welcome-timeline[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.mk-welcome-timeline:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
|
@@ -227,8 +227,7 @@ export default Vue.extend({
|
||||
version,
|
||||
langs,
|
||||
latestVersion: undefined,
|
||||
checkingForUpdate: false,
|
||||
darkmode: localStorage.getItem('darkmode') == 'true'
|
||||
checkingForUpdate: false
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@@ -246,6 +245,11 @@ export default Vue.extend({
|
||||
set(value) { this.$store.commit('device/set', { key: 'autoPopout', value }); }
|
||||
},
|
||||
|
||||
darkmode: {
|
||||
get() { return this.$store.state.device.darkmode; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'darkmode', value }); }
|
||||
},
|
||||
|
||||
enableSounds: {
|
||||
get() { return this.$store.state.device.enableSounds; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'enableSounds', value }); }
|
||||
@@ -276,11 +280,6 @@ export default Vue.extend({
|
||||
set(value) { this.$store.commit('device/set', { key: 'enableExperimentalFeatures', value }); }
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
darkmode() {
|
||||
(this as any)._updateDarkmode_(this.darkmode);
|
||||
}
|
||||
},
|
||||
created() {
|
||||
(this as any).os.getMeta().then(meta => {
|
||||
this.meta = meta;
|
||||
|
@@ -35,7 +35,7 @@
|
||||
</ul>
|
||||
<ul>
|
||||
<li @click="dark">
|
||||
<p><span>%i18n:@dark%</span><template v-if="_darkmode_">%fa:moon%</template><template v-else>%fa:R moon%</template></p>
|
||||
<p><span>%i18n:@dark%</span><template v-if="$store.state.device.darkmode">%fa:moon%</template><template v-else>%fa:R moon%</template></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -99,7 +99,10 @@ export default Vue.extend({
|
||||
(this as any).os.signout();
|
||||
},
|
||||
dark() {
|
||||
(this as any)._updateDarkmode_(!(this as any)._darkmode_);
|
||||
this.$store.commit('device/set', {
|
||||
key: 'darkmode',
|
||||
value: !this.$store.state.device.darkmode
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@@ -2,7 +2,7 @@
|
||||
<mk-window ref="window" is-modal width="450px" height="500px" @closed="$destroy">
|
||||
<span slot="header">%fa:list% リスト</span>
|
||||
|
||||
<div data-id="6e4caea3-d8f9-4ab7-96de-ab67fe8d5c82" :data-darkmode="_darkmode_">
|
||||
<div data-id="6e4caea3-d8f9-4ab7-96de-ab67fe8d5c82" :data-darkmode="$store.state.device.darkmode">
|
||||
<button class="ui" @click="add">%i18n:@create-list%</button>
|
||||
<a v-for="list in lists" :key="list.id" @click="choice(list)">{{ list.title }}</a>
|
||||
</div>
|
||||
|
@@ -21,10 +21,20 @@ export default Vue.extend({
|
||||
$route: 'fetch'
|
||||
},
|
||||
created() {
|
||||
const applyBg = v =>
|
||||
document.documentElement.style.setProperty('background', v ? '#191b22' : '#fff', 'important');
|
||||
|
||||
applyBg(this.$store.state.device.darkmode);
|
||||
|
||||
this.unwatchDarkmode = this.$store.watch(s => {
|
||||
return s.device.darkmode;
|
||||
}, applyBg);
|
||||
|
||||
this.fetch();
|
||||
},
|
||||
mounted() {
|
||||
document.documentElement.style.background = '#fff';
|
||||
beforeDestroy() {
|
||||
document.documentElement.style.removeProperty('background');
|
||||
this.unwatchDarkmode();
|
||||
},
|
||||
methods: {
|
||||
fetch() {
|
||||
@@ -50,6 +60,5 @@ export default Vue.extend({
|
||||
flex 1
|
||||
flex-direction column
|
||||
min-height 100%
|
||||
background #fff
|
||||
|
||||
</style>
|
||||
|
@@ -1,7 +1,11 @@
|
||||
<template>
|
||||
<div class="mk-welcome">
|
||||
<button @click="dark">
|
||||
<template v-if="$store.state.device.darkmode">%fa:moon%</template>
|
||||
<template v-else>%fa:R moon%</template>
|
||||
</button>
|
||||
<main>
|
||||
<img src="assets/title.svg" alt="Misskey">
|
||||
<img :src="$store.state.device.darkmode ? 'assets/title-dark.svg' : 'assets/title.svg'" alt="Misskey">
|
||||
<p><button class="signup" @click="signup">%i18n:@signup-button%</button><button class="signin" @click="signin">%i18n:@signin-button%</button></p>
|
||||
|
||||
<div class="tl">
|
||||
@@ -44,6 +48,8 @@ export default Vue.extend({
|
||||
},
|
||||
signin() {
|
||||
this.$modal.show('signin');
|
||||
},
|
||||
dark() {
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -59,18 +65,25 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
@import '~const.styl'
|
||||
|
||||
@import url('https://fonts.googleapis.com/css?family=Sarpanch:700')
|
||||
|
||||
.mk-welcome
|
||||
root(isDark)
|
||||
display flex
|
||||
flex-direction column
|
||||
flex 1
|
||||
|
||||
> button
|
||||
position absolute
|
||||
z-index 1
|
||||
top 0
|
||||
left 0
|
||||
padding 16px
|
||||
font-size 18px
|
||||
color isDark ? #fff : #555
|
||||
|
||||
> main
|
||||
flex 1
|
||||
padding 64px 0 0 0
|
||||
text-align center
|
||||
color #555
|
||||
color isDark ? #9aa4b3 : #555
|
||||
|
||||
> img
|
||||
width 350px
|
||||
@@ -102,13 +115,13 @@ export default Vue.extend({
|
||||
|
||||
.signin
|
||||
&:hover
|
||||
color #000
|
||||
color isDark ? #fff : #000
|
||||
|
||||
> .tl
|
||||
margin 32px auto 0 auto
|
||||
width 410px
|
||||
text-align left
|
||||
background #fff
|
||||
background isDark ? #313543 : #fff
|
||||
border-radius 8px
|
||||
box-shadow 0 8px 32px rgba(#000, 0.15)
|
||||
overflow hidden
|
||||
@@ -116,7 +129,7 @@ export default Vue.extend({
|
||||
> header
|
||||
z-index 1
|
||||
padding 12px 16px
|
||||
color #888d94
|
||||
color isDark ? #e3e5e8 : #888d94
|
||||
box-shadow 0 1px 0px rgba(#000, 0.1)
|
||||
|
||||
> div
|
||||
@@ -130,7 +143,6 @@ export default Vue.extend({
|
||||
height 11px
|
||||
width 11px
|
||||
margin-left 6px
|
||||
background #ccc
|
||||
border-radius 100%
|
||||
vertical-align middle
|
||||
|
||||
@@ -149,7 +161,7 @@ export default Vue.extend({
|
||||
|
||||
> footer
|
||||
font-size 12px
|
||||
color #949ea5
|
||||
color isDark ? #949ea5 : #737c82
|
||||
|
||||
> div
|
||||
margin 0 auto
|
||||
@@ -161,6 +173,12 @@ export default Vue.extend({
|
||||
font-size 10px
|
||||
opacity 0.7
|
||||
|
||||
.mk-welcome[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.mk-welcome:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
|
||||
<style lang="stylus" module>
|
||||
|
@@ -4,7 +4,7 @@
|
||||
<template slot="header">%fa:chart-pie%%i18n:@title%</template>
|
||||
<button slot="func" title="%i18n:@refresh%" @click="fetch">%fa:sync%</button>
|
||||
|
||||
<div class="mkw-polls--body" :data-darkmode="_darkmode_">
|
||||
<div class="mkw-polls--body" :data-darkmode="$store.state.device.darkmode">
|
||||
<div class="poll" v-if="!fetching && poll != null">
|
||||
<p v-if="poll.text"><router-link to="poll | notePage">{{ poll.text }}</router-link></p>
|
||||
<p v-if="!poll.text"><router-link to="poll | notePage">%fa:link%</router-link></p>
|
||||
|
@@ -49,48 +49,6 @@ Vue.mixin({
|
||||
}
|
||||
});
|
||||
|
||||
// Dark/Light
|
||||
const bus = new Vue();
|
||||
Vue.mixin({
|
||||
data() {
|
||||
return {
|
||||
_darkmode_: localStorage.getItem('darkmode') == 'true'
|
||||
};
|
||||
},
|
||||
beforeCreate() {
|
||||
// なぜか警告が出るので
|
||||
this._darkmode_ = localStorage.getItem('darkmode') == 'true';
|
||||
},
|
||||
beforeDestroy() {
|
||||
bus.$off('updated', this._onDarkmodeUpdated_);
|
||||
},
|
||||
mounted() {
|
||||
this._onDarkmodeUpdated_(this._darkmode_);
|
||||
bus.$on('updated', this._onDarkmodeUpdated_);
|
||||
},
|
||||
methods: {
|
||||
_updateDarkmode_(v) {
|
||||
localStorage.setItem('darkmode', v.toString());
|
||||
if (v) {
|
||||
document.documentElement.setAttribute('data-darkmode', 'true');
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-darkmode');
|
||||
}
|
||||
bus.$emit('updated', v);
|
||||
},
|
||||
_onDarkmodeUpdated_(v) {
|
||||
if (!this.$el || !this.$el.setAttribute) return;
|
||||
if (v) {
|
||||
this.$el.setAttribute('data-darkmode', 'true');
|
||||
} else {
|
||||
this.$el.removeAttribute('data-darkmode');
|
||||
}
|
||||
this._darkmode_ = v;
|
||||
this.$forceUpdate();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* APP ENTRY POINT!
|
||||
*/
|
||||
@@ -141,6 +99,43 @@ export default (callback: (launch: (router: VueRouter, api?: (os: MiOS) => API)
|
||||
const launch = (router: VueRouter, api?: (os: MiOS) => API) => {
|
||||
os.apis = api ? api(os) : null;
|
||||
|
||||
//#region Dark/Light
|
||||
Vue.mixin({
|
||||
data() {
|
||||
_unwatchDarkmode_: null
|
||||
},
|
||||
created() {
|
||||
const apply = v => {
|
||||
if (this.$el.setAttribute == null) return;
|
||||
if (v) {
|
||||
this.$el.setAttribute('data-darkmode', 'true');
|
||||
} else {
|
||||
this.$el.removeAttribute('data-darkmode');
|
||||
}
|
||||
};
|
||||
|
||||
this.$nextTick(() => apply(os.store.state.device.darkmode));
|
||||
|
||||
this._unwatchDarkmode_ = os.store.watch(s => {
|
||||
return s.device.darkmode;
|
||||
}, apply);
|
||||
},
|
||||
beforeDestroy() {
|
||||
this._unwatchDarkmode_();
|
||||
}
|
||||
});
|
||||
|
||||
os.store.watch(s => {
|
||||
return s.device.darkmode;
|
||||
}, v => {
|
||||
if (v) {
|
||||
document.documentElement.setAttribute('data-darkmode', 'true');
|
||||
} else {
|
||||
document.documentElement.removeAttribute('data-darkmode');
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
|
||||
Vue.mixin({
|
||||
data() {
|
||||
return {
|
||||
|
@@ -29,7 +29,7 @@
|
||||
</ul>
|
||||
<ul>
|
||||
<li><router-link to="/i/settings" :data-active="$route.name == 'settings'">%fa:cog%%i18n:@settings%%fa:angle-right%</router-link></li>
|
||||
<li @click="dark"><p><template v-if="_darkmode_">%fa:moon%</template><template v-else>%fa:R moon%</template><span>ダークモード</span></p></li>
|
||||
<li @click="dark"><p><template v-if="$store.state.device.darkmode">%fa:moon%</template><template v-else>%fa:R moon%</template><span>ダークモード</span></p></li>
|
||||
</ul>
|
||||
</div>
|
||||
<a :href="aboutUrl"><p class="about">%i18n:@about%</p></a>
|
||||
@@ -117,7 +117,10 @@ export default Vue.extend({
|
||||
this.hasGameInvitations = false;
|
||||
},
|
||||
dark() {
|
||||
(this as any)._updateDarkmode_(!(this as any)._darkmode_);
|
||||
this.$store.commit('device/set', {
|
||||
key: 'darkmode',
|
||||
value: !this.$store.state.device.darkmode
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@@ -17,7 +17,7 @@
|
||||
<button @click="fn">%fa:pencil-alt%</button>
|
||||
</template>
|
||||
|
||||
<main :data-darkmode="_darkmode_">
|
||||
<main :data-darkmode="$store.state.device.darkmode">
|
||||
<div class="nav" v-if="showNav">
|
||||
<div class="bg" @click="showNav = false"></div>
|
||||
<div class="body">
|
||||
|
@@ -16,16 +16,29 @@ export default Vue.extend({
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
user: null
|
||||
user: null,
|
||||
unwatchDarkmode: null
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
$route: 'fetch'
|
||||
},
|
||||
created() {
|
||||
document.documentElement.style.background = '#fff';
|
||||
const applyBg = v =>
|
||||
document.documentElement.style.setProperty('background', v ? '#191b22' : '#fff', 'important');
|
||||
|
||||
applyBg(this.$store.state.device.darkmode);
|
||||
|
||||
this.unwatchDarkmode = this.$store.watch(s => {
|
||||
return s.device.darkmode;
|
||||
}, applyBg);
|
||||
|
||||
this.fetch();
|
||||
},
|
||||
beforeDestroy() {
|
||||
document.documentElement.style.removeProperty('background');
|
||||
this.unwatchDarkmode();
|
||||
},
|
||||
methods: {
|
||||
fetch() {
|
||||
this.fetching = true;
|
||||
@@ -39,4 +52,3 @@ export default Vue.extend({
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
@@ -12,7 +12,6 @@ import getAcct from '../../../../../acct/render';
|
||||
export default Vue.extend({
|
||||
mounted() {
|
||||
document.title = 'Misskey %i18n:@messaging%';
|
||||
document.documentElement.style.background = '#fff';
|
||||
},
|
||||
methods: {
|
||||
navigate(user) {
|
||||
|
@@ -141,7 +141,6 @@ export default Vue.extend({
|
||||
version,
|
||||
codename,
|
||||
langs,
|
||||
darkmode: localStorage.getItem('darkmode') == 'true',
|
||||
latestVersion: undefined,
|
||||
checkingForUpdate: false
|
||||
};
|
||||
@@ -152,6 +151,11 @@ export default Vue.extend({
|
||||
return Vue.filter('userName')((this as any).os.i);
|
||||
},
|
||||
|
||||
darkmode: {
|
||||
get() { return this.$store.state.device.darkmode; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'darkmode', value }); }
|
||||
},
|
||||
|
||||
postStyle: {
|
||||
get() { return this.$store.state.device.postStyle; },
|
||||
set(value) { this.$store.commit('device/set', { key: 'postStyle', value }); }
|
||||
@@ -168,12 +172,6 @@ export default Vue.extend({
|
||||
},
|
||||
},
|
||||
|
||||
watch: {
|
||||
darkmode() {
|
||||
(this as any)._updateDarkmode_(this.darkmode);
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
document.title = 'Misskey | %i18n:@settings%';
|
||||
},
|
||||
|
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<mk-ui>
|
||||
<template slot="header" v-if="!fetching"><img :src="`${user.avatarUrl}?thumbnail&size=64`" alt="">{{ user | userName }}</template>
|
||||
<main v-if="!fetching" :data-darkmode="_darkmode_">
|
||||
<main v-if="!fetching" :data-darkmode="$store.state.device.darkmode">
|
||||
<div class="is-suspended" v-if="user.isSuspended"><p>%fa:exclamation-triangle% %i18n:@is-suspended%</p></div>
|
||||
<div class="is-remote" v-if="user.host != null"><p>%fa:exclamation-triangle% %i18n:@is-remote%<a :href="user.url || user.uri" target="_blank">%i18n:@view-remote%</a></p></div>
|
||||
<header>
|
||||
|
@@ -19,6 +19,7 @@ const defaultSettings = {
|
||||
const defaultDeviceSettings = {
|
||||
apiViaStream: true,
|
||||
autoPopout: false,
|
||||
darkmode: false,
|
||||
enableSounds: true,
|
||||
soundVolume: 0.5,
|
||||
lang: null,
|
||||
|
@@ -8,6 +8,10 @@ import Note, { pack } from '../../../models/note';
|
||||
* Get all notes
|
||||
*/
|
||||
module.exports = (params) => new Promise(async (res, rej) => {
|
||||
// Get 'local' parameter
|
||||
const [local, localErr] = $.bool.optional().get(params.local);
|
||||
if (localErr) return rej('invalid local param');
|
||||
|
||||
// Get 'reply' parameter
|
||||
const [reply, replyErr] = $.bool.optional().get(params.reply);
|
||||
if (replyErr) return rej('invalid reply param');
|
||||
@@ -61,6 +65,10 @@ module.exports = (params) => new Promise(async (res, rej) => {
|
||||
};
|
||||
}
|
||||
|
||||
if (local) {
|
||||
query['_user.host'] = null;
|
||||
}
|
||||
|
||||
if (reply != undefined) {
|
||||
query.replyId = reply ? { $exists: true, $ne: null } : null;
|
||||
}
|
||||
|
Reference in New Issue
Block a user