Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7e701ef9e0 | ||
|
|
3d6fb661bb | ||
|
|
fc372496da | ||
|
|
ad7258fe9c | ||
|
|
bd707cb2a8 | ||
|
|
1839b5f205 | ||
|
|
02b47f963c | ||
|
|
f8a7f9378a | ||
|
|
65cb253be4 | ||
|
|
a12356b24b | ||
|
|
6a67ad7f93 | ||
|
|
140a7f0b1c | ||
|
|
00159bc6b5 | ||
|
|
9542260103 | ||
|
|
72074578df | ||
|
|
3b4750a988 | ||
|
|
aeec5f0163 | ||
|
|
9c94d8c8d6 | ||
|
|
581712a2c8 | ||
|
|
b25b51aaca | ||
|
|
fb97e13a61 | ||
|
|
36e154fdb2 | ||
|
|
ca273a24b4 | ||
|
|
d828bf2889 | ||
|
|
87efccef18 | ||
|
|
e0bf522e7f | ||
|
|
5b1cd3bd3c | ||
|
|
f00489196d | ||
|
|
dd53bf7e51 | ||
|
|
35a6da26d2 | ||
|
|
c8c8748a0b | ||
|
|
46d0065a90 | ||
|
|
990b0180a8 | ||
|
|
f3bfb72251 |
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "Bitte Passwort eingeben"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "Settings saved!"
|
success: "Settings saved!"
|
||||||
failed: "Failed to setup. Please ensure that the token is correct."
|
failed: "Failed to setup. Please ensure that the token is correct."
|
||||||
info: "From the next time you sign in to Misskey, the token displayed on your device will be necessary too, as well as the password."
|
info: "From the next time you sign in to Misskey, the token displayed on your device will be necessary too, as well as the password."
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "To access the API, set this token as the key 'i' of request parameters."
|
intro: "To access the API, set this token as the key 'i' of request parameters."
|
||||||
caution: "Do not enter this token to any apps nor tell this token to others otherwise your account may get compromised."
|
caution: "Do not enter this token to any apps nor tell this token to others otherwise your account may get compromised."
|
||||||
regeneration-of-token: "If your token gets leaked, you can regenerate it."
|
regeneration-of-token: "If your token gets leaked, you can regenerate it."
|
||||||
regenerate-token: "Regenerate the token"
|
regenerate-token: "Regenerate the token"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "Please enter the password"
|
enter-password: "Enter the password"
|
||||||
|
console:
|
||||||
|
title: 'API console'
|
||||||
|
endpoint: 'Endpoint'
|
||||||
|
parameter: 'Parameters'
|
||||||
|
send: 'Send'
|
||||||
|
sending: 'Sending'
|
||||||
|
response: 'Result'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "No linked applications"
|
no-apps: "No linked applications"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "¡Configuraciones guardadas!"
|
success: "¡Configuraciones guardadas!"
|
||||||
failed: "Error al configurar. Por favor asegúrate de que el token es correcto."
|
failed: "Error al configurar. Por favor asegúrate de que el token es correcto."
|
||||||
info: "Desde ahora, ingresa el token que se muestra en tu dispositivo adicionalmente a tu contraseña cuando inicies sesión en Misskey"
|
info: "Desde ahora, ingresa el token que se muestra en tu dispositivo adicionalmente a tu contraseña cuando inicies sesión en Misskey"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "Para acceder al API, configura este token como la letra \"i\" de los parámetros requeridos."
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "Por favor no muestres este token a otros (no lo ingreses en otro lugar que no sea aquí). De otra forma, tu cuenta puede llegar a ser comprometida."
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "En el caso no deseado de que este token lo tenga otra persona, puedes regenerarlo."
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "Regenerar el token"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "Por favor ingresa tu contraseña"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "No hay aplicaciones asociadas"
|
no-apps: "No hay aplicaciones asociadas"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "L'operation a été complétée avec succès!"
|
success: "L'operation a été complétée avec succès!"
|
||||||
failed: "L'operation a échoué. Veuillez vous assurer que le token a été entrer correctement."
|
failed: "L'operation a échoué. Veuillez vous assurer que le token a été entrer correctement."
|
||||||
info: "À partir de maintenant, à chaque fois que vous vous connecter entrez votre mot de passe ainsi que le token généré sur votre appareil."
|
info: "À partir de maintenant, à chaque fois que vous vous connecter entrez votre mot de passe ainsi que le token généré sur votre appareil."
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "Si votre jeton est compromis, vous pouvez le régénérer."
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "Regenerer le token"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Jeton :"
|
token: "Token:"
|
||||||
enter-password: "Veuillez entrer le mot de passe"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "Aucune application autorisée"
|
no-apps: "Aucune application autorisée"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
@@ -950,13 +950,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
|
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
|
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
|
|||||||
@@ -847,18 +847,25 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了したで!"
|
success: "設定が完了したで!"
|
||||||
failed: "なんか設定に失敗したで。トークンを間違えとらんか確認してや。"
|
failed: "なんか設定に失敗したで。トークンを間違えとらんか確認してや。"
|
||||||
info: "次のサインインからは、パスワードに加えてデバイスに出とるトークンを入力してな。"
|
info: "次のサインインからは、パスワードに加えてデバイスに出とるトークンを入力してな。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」っちゅうキーでパラメータに付加してリクエストしてや。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用されるかも知れんから、このトークンは第三者に教えたらあかんで(アプリなどにも入力しんといてな)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたとかその可能性があったらトークンを再生成できるで。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "トークン:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してや"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはあらへんで"
|
no-apps: "連携しているアプリケーションはあらへんで"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
max: "容量"
|
max: "容量"
|
||||||
in-use: "使用中"
|
in-use: "使うとる"
|
||||||
stats: "統計"
|
stats: "統計"
|
||||||
desktop/views/components/settings.mute.vue:
|
desktop/views/components/settings.mute.vue:
|
||||||
no-users: "ミュートしているユーザーはおらんで"
|
no-users: "ミュートしているユーザーはおらんで"
|
||||||
@@ -938,7 +945,7 @@ desktop/views/pages/admin/admin.vue:
|
|||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
users: "ユーザー"
|
users: "ユーザー"
|
||||||
update: "更新"
|
update: "更新"
|
||||||
announcements: "お知らせ"
|
announcements: "知っといてや"
|
||||||
hashtags: "ハッシュタグ"
|
hashtags: "ハッシュタグ"
|
||||||
desktop/views/pages/admin/admin.dashboard.vue:
|
desktop/views/pages/admin/admin.dashboard.vue:
|
||||||
dashboard: "ダッシュボード"
|
dashboard: "ダッシュボード"
|
||||||
@@ -967,7 +974,7 @@ desktop/views/pages/admin/admin.unverify-user.vue:
|
|||||||
unverify: "公式アカウントにはさせへんで"
|
unverify: "公式アカウントにはさせへんで"
|
||||||
unverified: "公式アカウントを解除したで"
|
unverified: "公式アカウントを解除したで"
|
||||||
desktop/views/pages/admin/admin.announcements.vue:
|
desktop/views/pages/admin/admin.announcements.vue:
|
||||||
announcements: "お知らせ"
|
announcements: "知っといてや"
|
||||||
desktop/views/pages/admin/admin.hashtags.vue:
|
desktop/views/pages/admin/admin.hashtags.vue:
|
||||||
hided-tags: "Hidden Tags"
|
hided-tags: "Hidden Tags"
|
||||||
desktop/views/pages/deck/deck.tl-column.vue:
|
desktop/views/pages/deck/deck.tl-column.vue:
|
||||||
@@ -979,10 +986,10 @@ desktop/views/pages/deck/deck.user-column.vue:
|
|||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
followers: "フォロワー"
|
followers: "フォロワー"
|
||||||
images: "画像"
|
images: "画像"
|
||||||
activity: "アクティビティ"
|
activity: "やっとること"
|
||||||
timeline: "タイムライン"
|
timeline: "タイムライン"
|
||||||
pinned-notes: "ピン留めされた投稿"
|
pinned-notes: "ピン留めしはった投稿"
|
||||||
push-to-a-list: "リストに追加"
|
push-to-a-list: "リストに入れたる"
|
||||||
desktop/views/pages/stats/stats.vue:
|
desktop/views/pages/stats/stats.vue:
|
||||||
all-users: "全てのユーザー"
|
all-users: "全てのユーザー"
|
||||||
original-users: "ここの人らだけ"
|
original-users: "ここの人らだけ"
|
||||||
@@ -1035,7 +1042,7 @@ desktop/views/pages/user/user.friends.vue:
|
|||||||
no-users: "よう話すツレは居らん"
|
no-users: "よう話すツレは居らん"
|
||||||
desktop/views/pages/user/user.vue:
|
desktop/views/pages/user/user.vue:
|
||||||
is-suspended: "このユーザーはあかんわ。凍結されとる。"
|
is-suspended: "このユーザーはあかんわ。凍結されとる。"
|
||||||
last-used-at: "最終アクセス"
|
last-used-at: "最後いつ来はった?"
|
||||||
desktop/views/pages/user/user.photos.vue:
|
desktop/views/pages/user/user.photos.vue:
|
||||||
title: "写真"
|
title: "写真"
|
||||||
loading: "読み込んどります"
|
loading: "読み込んどります"
|
||||||
@@ -1117,8 +1124,8 @@ mobile/views/components/drive.file-detail.vue:
|
|||||||
hash: "ハッシュ(md5)"
|
hash: "ハッシュ(md5)"
|
||||||
exif: "EXIF"
|
exif: "EXIF"
|
||||||
nsfw: "ちょっと見せられへんわ"
|
nsfw: "ちょっと見せられへんわ"
|
||||||
mark-as-sensitive: "閲覧注意に設定"
|
mark-as-sensitive: "見たらあかん感じにしとく"
|
||||||
unmark-as-sensitive: "閲覧注意を解除"
|
unmark-as-sensitive: "やっぱ見せたるわ"
|
||||||
mobile/views/components/media-image.vue:
|
mobile/views/components/media-image.vue:
|
||||||
sensitive: "見たらあかんで"
|
sensitive: "見たらあかんで"
|
||||||
click-to-show: "押してみ、見せたるわ"
|
click-to-show: "押してみ、見せたるわ"
|
||||||
@@ -1312,7 +1319,7 @@ mobile/views/pages/settings.vue:
|
|||||||
signout: "さいなら"
|
signout: "さいなら"
|
||||||
sound: "サウンド"
|
sound: "サウンド"
|
||||||
enable-sounds: "サウンド鳴らす"
|
enable-sounds: "サウンド鳴らす"
|
||||||
mark-as-read-all-unread-notes: "すべての投稿を既読にする"
|
mark-as-read-all-unread-notes: "全部もう読んだわ"
|
||||||
mobile/views/pages/user.vue:
|
mobile/views/pages/user.vue:
|
||||||
follows-you: "フォローされとるで"
|
follows-you: "フォローされとるで"
|
||||||
following: "フォロー"
|
following: "フォロー"
|
||||||
@@ -1369,27 +1376,27 @@ dev/views/index.vue:
|
|||||||
manage-apps: "アプリの管理"
|
manage-apps: "アプリの管理"
|
||||||
dev/views/apps.vue:
|
dev/views/apps.vue:
|
||||||
manage-apps: "アプリを管理"
|
manage-apps: "アプリを管理"
|
||||||
create-app: "アプリ作成"
|
create-app: "アプリ作る"
|
||||||
app-missing: "アプリなし"
|
app-missing: "アプリあらへん"
|
||||||
dev/views/new-app.vue:
|
dev/views/new-app.vue:
|
||||||
create-app: "アプリケーションの作成"
|
create-app: "アプリケーション作る"
|
||||||
app-name: "アプリケーション名"
|
app-name: "アプリケーションの名前"
|
||||||
app-name-desc: "あなたのアプリの名称。"
|
app-name-desc: "あんたのアプリの名前。"
|
||||||
app-name-ex: "ex) Misskey for iOS"
|
app-name-ex: "ex) 関西ミスキー保安協会"
|
||||||
app-overview: "アプリの概要"
|
app-overview: "このアプリどんなん?"
|
||||||
app-desc: "あなたのアプリの簡単な説明や紹介。"
|
app-desc: "あんたのアプリどんなんか教えて"
|
||||||
app-desc-ex: "ex) Misskey iOSクライアント。"
|
app-desc-ex: "ex) 関西人なら誰でも口ずさめるこのCMがついにMisskeyへ。"
|
||||||
callback-url: "コールバックURL (オプション)"
|
callback-url: "コールバックURL (無くてもええで)"
|
||||||
callback-url-desc: "ユーザーが認証フォームで認証した際にリダイレクトするURLを設定できます。"
|
callback-url-desc: "ユーザーが認証フォームで認証した後どこに連れてくかを設定できるで"
|
||||||
authority: "権限"
|
authority: "権限"
|
||||||
authority-desc: "ここで要求した機能だけがAPIからアクセスできます。"
|
authority-desc: "ここにチェックした機能しかAPIからアクセスできひんから気ぃつけてな"
|
||||||
authority-warning: "アプリ作成後も変更できますが、新たな権限を付与する場合、その時点で関連付けられているユーザーキーはすべて無効になります。"
|
authority-warning: "アプリ作った後でも変えれるけど、新しいやつ追加したらそん時関連付いてるユーザーキーは全部ほかされるで。"
|
||||||
account-read: "アカウントの情報を見る。"
|
account-read: "アカウントの情報見せて"
|
||||||
account-write: "アカウントの情報を操作する。"
|
account-write: "アカウントの情報いじらせて"
|
||||||
note-write: "投稿する。"
|
note-write: "投稿させて"
|
||||||
reaction-write: "リアクションしたりリアクションをキャンセルする。"
|
reaction-write: "リアクションしたりそれをキャンセルさせて"
|
||||||
following-write: "フォローしたりフォロー解除する。"
|
following-write: "フォローとかフォロー解除させて"
|
||||||
drive-read: "ドライブを見る。"
|
drive-read: "ドライブ見せて"
|
||||||
drive-write: "ドライブを操作する。"
|
drive-write: "ドライブいじらせて"
|
||||||
notification-read: "通知を見る。"
|
notification-read: "通知見せて"
|
||||||
notification-write: "通知を操作する。"
|
notification-write: "通知いじらせて"
|
||||||
|
|||||||
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "Instellen voltooid!"
|
success: "Instellen voltooid!"
|
||||||
failed: "Instellen mislukt. Zorg ervoor dat de sleutel juist is."
|
failed: "Instellen mislukt. Zorg ervoor dat de sleutel juist is."
|
||||||
info: "Vanaf nu moet je ook de op je apparaat getoonde sleutel tonen bij het inloggen op Misskey."
|
info: "Vanaf nu moet je ook de op je apparaat getoonde sleutel tonen bij het inloggen op Misskey."
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "Als je toegang wilt tot de API, stel deze sleutel dan in als 'i' bij de verzoekparameters."
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "Laat deze sleutel niet zien aan derde partijen (en voer hem nergens anders in dan hier), anders kan je account gehackt worden."
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "Mocht deze sleutel tóch uitlekken, dan kun je hem opnieuw genereren."
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "Sleutel opnieuw genereren"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Sleutel:"
|
token: "Token:"
|
||||||
enter-password: "Voer je wachtwoord in"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "Pomyślnie ukończono konfigurację!"
|
success: "Pomyślnie ukończono konfigurację!"
|
||||||
failed: "Nie udało się skonfigurować uwierzytelniania dwuetapowego, upewnij się że wprowadziłeś prawidłowy token."
|
failed: "Nie udało się skonfigurować uwierzytelniania dwuetapowego, upewnij się że wprowadziłeś prawidłowy token."
|
||||||
info: "Od teraz, wprowadzaj token wyświetlany na urządzeniu przy każdym logowaniu do Misskey."
|
info: "Od teraz, wprowadzaj token wyświetlany na urządzeniu przy każdym logowaniu do Misskey."
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "Aby uzyskać dostęp do API, ustaw ten token jako klucz 'i' parametrów żądań."
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "Nie pokazuj tego tokenu osobom trzecim (nie wprowadzaj go nigdzie indziej), aby konto nie trafiło w niepowołane ręce."
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "W przypadku wycieku tokenu, możesz wygenerować nowy."
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "Wygeneruj nowy token"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "Wprowadź hasło"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "Brak zautoryzowanych aplikacji"
|
no-apps: "Brak zautoryzowanych aplikacji"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
@@ -847,13 +847,20 @@ desktop/views/components/settings.2fa.vue:
|
|||||||
success: "設定が完了しました!"
|
success: "設定が完了しました!"
|
||||||
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
failed: "設定に失敗しました。トークンに誤りがないかご確認ください。"
|
||||||
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
info: "次回サインインからは、同様にパスワードに加えてデバイスに表示されているトークンを入力します。"
|
||||||
desktop/views/components/settings.api.vue:
|
common/views/components/api-settings.vue:
|
||||||
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
intro: "APIを利用するには、上記のトークンを「i」というキーでパラメータに付加してリクエストします。"
|
||||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||||
regenerate-token: "トークンを再生成"
|
regenerate-token: "トークンを再生成"
|
||||||
token: "Token:"
|
token: "Token:"
|
||||||
enter-password: "パスワードを入力してください"
|
enter-password: "パスワードを入力してください"
|
||||||
|
console:
|
||||||
|
title: 'APIコンソール'
|
||||||
|
endpoint: 'エンドポイント'
|
||||||
|
parameter: 'パラメータ'
|
||||||
|
send: '送信'
|
||||||
|
sending: '応答待ち'
|
||||||
|
response: '結果'
|
||||||
desktop/views/components/settings.apps.vue:
|
desktop/views/components/settings.apps.vue:
|
||||||
no-apps: "連携しているアプリケーションはありません"
|
no-apps: "連携しているアプリケーションはありません"
|
||||||
common/views/components/drive-settings.vue:
|
common/views/components/drive-settings.vue:
|
||||||
|
|||||||
56
package-lock.json
generated
56
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"version": "10.31.0",
|
"version": "10.32.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -544,9 +544,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/mocha": {
|
"@types/mocha": {
|
||||||
"version": "5.2.3",
|
"version": "5.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz",
|
||||||
"integrity": "sha512-C1wVVr7xhKu6c3Mb27dFzNYR05qvHwgtpN+JOYTGc1pKA7dCEDDYpscn7kul+bCUwa3NoGDbzI1pdznSOa397w=="
|
"integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww=="
|
||||||
},
|
},
|
||||||
"@types/mongodb": {
|
"@types/mongodb": {
|
||||||
"version": "3.1.12",
|
"version": "3.1.12",
|
||||||
@@ -1259,9 +1259,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"apexcharts": {
|
"apexcharts": {
|
||||||
"version": "2.1.5",
|
"version": "2.1.6",
|
||||||
"resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-2.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-2.1.6.tgz",
|
||||||
"integrity": "sha512-4eKh2HyQVr5ct2t7cWkvDSUyJM9KGw6dRHAlojqo6HJz+XtrnnvL8uP18rzNq4M80P3Ul+yDjpCt5EXlYPfo5Q==",
|
"integrity": "sha512-kIb4Q07bWwTGuTWhyzhDAOz6nrltDgyP8VUUwqetxr0o11mNH6PA6YVnR/e9nyd9HU6q3bFZN8eVuSatnqdxAQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"babel-polyfill": "^6.26.0",
|
"babel-polyfill": "^6.26.0",
|
||||||
"core-js": "^2.5.7",
|
"core-js": "^2.5.7",
|
||||||
@@ -7224,14 +7224,14 @@
|
|||||||
"integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8="
|
"integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8="
|
||||||
},
|
},
|
||||||
"html-minifier": {
|
"html-minifier": {
|
||||||
"version": "3.5.20",
|
"version": "3.5.21",
|
||||||
"resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.20.tgz",
|
"resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
|
||||||
"integrity": "sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA==",
|
"integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"camel-case": "3.0.x",
|
"camel-case": "3.0.x",
|
||||||
"clean-css": "4.2.x",
|
"clean-css": "4.2.x",
|
||||||
"commander": "2.17.x",
|
"commander": "2.17.x",
|
||||||
"he": "1.1.x",
|
"he": "1.2.x",
|
||||||
"param-case": "2.1.x",
|
"param-case": "2.1.x",
|
||||||
"relateurl": "0.2.x",
|
"relateurl": "0.2.x",
|
||||||
"uglify-js": "3.4.x"
|
"uglify-js": "3.4.x"
|
||||||
@@ -7242,14 +7242,10 @@
|
|||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
|
"resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
|
||||||
"integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
|
"integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
|
||||||
},
|
},
|
||||||
"uglify-js": {
|
"he": {
|
||||||
"version": "3.4.9",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
|
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
|
||||||
"integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
|
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
|
||||||
"requires": {
|
|
||||||
"commander": "~2.17.1",
|
|
||||||
"source-map": "~0.6.1"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -15911,6 +15907,22 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"uglify-js": {
|
||||||
|
"version": "3.4.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
|
||||||
|
"integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
|
||||||
|
"requires": {
|
||||||
|
"commander": "~2.17.1",
|
||||||
|
"source-map": "~0.6.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"commander": {
|
||||||
|
"version": "2.17.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
|
||||||
|
"integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"uglify-to-browserify": {
|
"uglify-to-browserify": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
|
||||||
@@ -16808,9 +16820,9 @@
|
|||||||
"integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
|
"integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
|
||||||
},
|
},
|
||||||
"webpack": {
|
"webpack": {
|
||||||
"version": "4.23.0",
|
"version": "4.23.1",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.23.0.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.23.1.tgz",
|
||||||
"integrity": "sha512-Osh/3U9y4swhEKDjy8fF48v2Qx5VC6VvdQ8bEm1HMaVVddiQBw4+mIyDrzVcVRCPT/+4uJFOcklPuoB+I3Zw0w==",
|
"integrity": "sha512-iE5Cu4rGEDk7ONRjisTOjVHv3dDtcFfwitSxT7evtYj/rANJpt1OuC/Kozh1pBa99AUBr1L/LsaNB+D9Xz3CEg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@webassemblyjs/ast": "1.7.10",
|
"@webassemblyjs/ast": "1.7.10",
|
||||||
"@webassemblyjs/helper-module-context": "1.7.10",
|
"@webassemblyjs/helper-module-context": "1.7.10",
|
||||||
|
|||||||
12
package.json
12
package.json
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"author": "syuilo <i@syuilo.com>",
|
"author": "syuilo <i@syuilo.com>",
|
||||||
"version": "10.32.0",
|
"version": "10.33.0",
|
||||||
"clientVersion": "1.0.11138",
|
"clientVersion": "1.0.11172",
|
||||||
"codename": "nighthike",
|
"codename": "nighthike",
|
||||||
"main": "./built/index.js",
|
"main": "./built/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
"@types/koa__cors": "2.2.3",
|
"@types/koa__cors": "2.2.3",
|
||||||
"@types/minio": "7.0.0",
|
"@types/minio": "7.0.0",
|
||||||
"@types/mkdirp": "0.5.2",
|
"@types/mkdirp": "0.5.2",
|
||||||
"@types/mocha": "5.2.3",
|
"@types/mocha": "5.2.5",
|
||||||
"@types/mongodb": "3.1.12",
|
"@types/mongodb": "3.1.12",
|
||||||
"@types/ms": "0.7.30",
|
"@types/ms": "0.7.30",
|
||||||
"@types/node": "10.12.0",
|
"@types/node": "10.12.0",
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
"@types/websocket": "0.0.40",
|
"@types/websocket": "0.0.40",
|
||||||
"@types/ws": "6.0.1",
|
"@types/ws": "6.0.1",
|
||||||
"animejs": "2.2.0",
|
"animejs": "2.2.0",
|
||||||
"apexcharts": "2.1.5",
|
"apexcharts": "2.1.6",
|
||||||
"autobind-decorator": "2.1.0",
|
"autobind-decorator": "2.1.0",
|
||||||
"autosize": "4.0.2",
|
"autosize": "4.0.2",
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
@@ -129,7 +129,7 @@
|
|||||||
"gulp-uglify": "3.0.1",
|
"gulp-uglify": "3.0.1",
|
||||||
"gulp-util": "3.0.8",
|
"gulp-util": "3.0.8",
|
||||||
"hard-source-webpack-plugin": "0.12.0",
|
"hard-source-webpack-plugin": "0.12.0",
|
||||||
"html-minifier": "3.5.20",
|
"html-minifier": "3.5.21",
|
||||||
"http-signature": "1.2.0",
|
"http-signature": "1.2.0",
|
||||||
"insert-text-at-cursor": "0.1.1",
|
"insert-text-at-cursor": "0.1.1",
|
||||||
"is-root": "2.0.0",
|
"is-root": "2.0.0",
|
||||||
@@ -229,7 +229,7 @@
|
|||||||
"vuex-persistedstate": "2.5.4",
|
"vuex-persistedstate": "2.5.4",
|
||||||
"web-push": "3.3.3",
|
"web-push": "3.3.3",
|
||||||
"webfinger.js": "2.6.6",
|
"webfinger.js": "2.6.6",
|
||||||
"webpack": "4.23.0",
|
"webpack": "4.23.1",
|
||||||
"webpack-cli": "3.1.2",
|
"webpack-cli": "3.1.2",
|
||||||
"websocket": "1.0.28",
|
"websocket": "1.0.28",
|
||||||
"ws": "6.1.0",
|
"ws": "6.1.0",
|
||||||
|
|||||||
72
src/client/app/common/views/components/api-settings.vue
Normal file
72
src/client/app/common/views/components/api-settings.vue
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
<template>
|
||||||
|
<ui-card>
|
||||||
|
<div slot="title">%fa:key% API</div>
|
||||||
|
|
||||||
|
<section class="fit-top">
|
||||||
|
<ui-input :value="$store.state.i.token" readonly>
|
||||||
|
<span>%i18n:@token%</span>
|
||||||
|
</ui-input>
|
||||||
|
<p>%i18n:@intro%</p>
|
||||||
|
<ui-info warn>%i18n:@caution%</ui-info>
|
||||||
|
<p>%i18n:@regeneration-of-token%</p>
|
||||||
|
<ui-button @click="regenerateToken">%fa:sync-alt% %i18n:@regenerate-token%</ui-button>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<header>%fa:terminal% %i18n:@console.title%</header>
|
||||||
|
<ui-input v-model="endpoint">
|
||||||
|
<span>%i18n:@console.endpoint%</span>
|
||||||
|
</ui-input>
|
||||||
|
<ui-textarea v-model="body">
|
||||||
|
<span>%i18n:@console.parameter% (JSON or JSON5)</span>
|
||||||
|
</ui-textarea>
|
||||||
|
<ui-button @click="send" :disabled="sending">
|
||||||
|
<template v-if="sending">%i18n:@console.sending%</template>
|
||||||
|
<template v-else>%fa:paper-plane% %i18n:@console.send%</template>
|
||||||
|
</ui-button>
|
||||||
|
<ui-textarea v-if="res" v-model="res" readonly tall>
|
||||||
|
<span>%i18n:@console.response%</span>
|
||||||
|
</ui-textarea>
|
||||||
|
</section>
|
||||||
|
</ui-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
import * as JSON5 from 'json5';
|
||||||
|
|
||||||
|
export default Vue.extend({
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
endpoint: '',
|
||||||
|
body: '{}',
|
||||||
|
res: null,
|
||||||
|
sending: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
regenerateToken() {
|
||||||
|
(this as any).apis.input({
|
||||||
|
title: '%i18n:@enter-password%',
|
||||||
|
type: 'password'
|
||||||
|
}).then(password => {
|
||||||
|
(this as any).api('i/regenerate_token', {
|
||||||
|
password: password
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
send() {
|
||||||
|
this.sending = true;
|
||||||
|
(this as any).api(this.endpoint, JSON5.parse(this.body)).then(res => {
|
||||||
|
this.sending = false;
|
||||||
|
this.res = JSON5.stringify(res, null, 2);
|
||||||
|
}, err => {
|
||||||
|
this.sending = false;
|
||||||
|
this.res = JSON5.stringify(err, null, 2);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
|
import apiSettings from './api-settings.vue';
|
||||||
import driveSettings from './drive-settings.vue';
|
import driveSettings from './drive-settings.vue';
|
||||||
import profileEditor from './profile-editor.vue';
|
import profileEditor from './profile-editor.vue';
|
||||||
import noteSkeleton from './note-skeleton.vue';
|
import noteSkeleton from './note-skeleton.vue';
|
||||||
@@ -44,9 +45,11 @@ import uiTextarea from './ui/textarea.vue';
|
|||||||
import uiSwitch from './ui/switch.vue';
|
import uiSwitch from './ui/switch.vue';
|
||||||
import uiRadio from './ui/radio.vue';
|
import uiRadio from './ui/radio.vue';
|
||||||
import uiSelect from './ui/select.vue';
|
import uiSelect from './ui/select.vue';
|
||||||
|
import uiInfo from './ui/info.vue';
|
||||||
import formButton from './ui/form/button.vue';
|
import formButton from './ui/form/button.vue';
|
||||||
import formRadio from './ui/form/radio.vue';
|
import formRadio from './ui/form/radio.vue';
|
||||||
|
|
||||||
|
Vue.component('mk-api-settings', apiSettings);
|
||||||
Vue.component('mk-drive-settings', driveSettings);
|
Vue.component('mk-drive-settings', driveSettings);
|
||||||
Vue.component('mk-profile-editor', profileEditor);
|
Vue.component('mk-profile-editor', profileEditor);
|
||||||
Vue.component('mk-note-skeleton', noteSkeleton);
|
Vue.component('mk-note-skeleton', noteSkeleton);
|
||||||
@@ -91,5 +94,6 @@ Vue.component('ui-textarea', uiTextarea);
|
|||||||
Vue.component('ui-switch', uiSwitch);
|
Vue.component('ui-switch', uiSwitch);
|
||||||
Vue.component('ui-radio', uiRadio);
|
Vue.component('ui-radio', uiRadio);
|
||||||
Vue.component('ui-select', uiSelect);
|
Vue.component('ui-select', uiSelect);
|
||||||
|
Vue.component('ui-info', uiInfo);
|
||||||
Vue.component('form-button', formButton);
|
Vue.component('form-button', formButton);
|
||||||
Vue.component('form-radio', formRadio);
|
Vue.component('form-radio', formRadio);
|
||||||
|
|||||||
33
src/client/app/common/views/components/ui/info.vue
Normal file
33
src/client/app/common/views/components/ui/info.vue
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<template>
|
||||||
|
<div class="ymxyweixqwsxauxldgpvecjepnwxbylu" :class="{ warn }">
|
||||||
|
<i v-if="warn">%fa:exclamation-triangle%</i>
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import Vue from 'vue';
|
||||||
|
export default Vue.extend({
|
||||||
|
props: {
|
||||||
|
warn: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="stylus" scoped>
|
||||||
|
.ymxyweixqwsxauxldgpvecjepnwxbylu
|
||||||
|
margin 16px 0
|
||||||
|
padding 16px
|
||||||
|
font-size 90%
|
||||||
|
|
||||||
|
> i
|
||||||
|
margin-right 4px
|
||||||
|
|
||||||
|
&.warn
|
||||||
|
background var(--infoWarnBg)
|
||||||
|
color var(--infoWarnFg)
|
||||||
|
</style>
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="ui-textarea" :class="{ focused, filled }">
|
<div class="ui-textarea" :class="{ focused, filled, tall }">
|
||||||
<div class="input">
|
<div class="input">
|
||||||
<span class="label" ref="label"><slot></slot></span>
|
<span class="label" ref="label"><slot></slot></span>
|
||||||
<textarea ref="input"
|
<textarea ref="input"
|
||||||
:value="value"
|
:value="value"
|
||||||
:required="required"
|
:required="required"
|
||||||
:readonly="readonly"
|
:readonly="readonly"
|
||||||
:pattern="pattern"
|
:pattern="pattern"
|
||||||
:autocomplete="autocomplete"
|
:autocomplete="autocomplete"
|
||||||
@input="$emit('input', $event.target.value)"
|
@input="$emit('input', $event.target.value)"
|
||||||
@focus="focused = true"
|
@focus="focused = true"
|
||||||
@blur="focused = false">
|
@blur="focused = false"
|
||||||
</textarea>
|
></textarea>
|
||||||
</div>
|
</div>
|
||||||
<div class="text"><slot name="text"></slot></div>
|
<div class="text"><slot name="text"></slot></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -41,7 +41,12 @@ export default Vue.extend({
|
|||||||
autocomplete: {
|
autocomplete: {
|
||||||
type: String,
|
type: String,
|
||||||
required: false
|
required: false
|
||||||
}
|
},
|
||||||
|
tall: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -66,6 +71,9 @@ export default Vue.extend({
|
|||||||
root(fill)
|
root(fill)
|
||||||
margin 42px 0 32px 0
|
margin 42px 0 32px 0
|
||||||
|
|
||||||
|
&:last-child
|
||||||
|
margin-bottom 0
|
||||||
|
|
||||||
> .input
|
> .input
|
||||||
padding 12px
|
padding 12px
|
||||||
|
|
||||||
@@ -157,6 +165,11 @@ root(fill)
|
|||||||
left 0 !important
|
left 0 !important
|
||||||
transform scale(0.75)
|
transform scale(0.75)
|
||||||
|
|
||||||
|
&.tall
|
||||||
|
> .input
|
||||||
|
> textarea
|
||||||
|
min-height 200px
|
||||||
|
|
||||||
.ui-textarea.fill
|
.ui-textarea.fill
|
||||||
root(true)
|
root(true)
|
||||||
|
|
||||||
|
|||||||
@@ -67,12 +67,12 @@ export default Vue.extend({
|
|||||||
text: '%i18n:@contextmenu.rename%',
|
text: '%i18n:@contextmenu.rename%',
|
||||||
icon: '%fa:i-cursor%',
|
icon: '%fa:i-cursor%',
|
||||||
action: this.rename
|
action: this.rename
|
||||||
}/*, null, {
|
}, null, {
|
||||||
type: 'item',
|
type: 'item',
|
||||||
text: '%i18n:common.delete%',
|
text: '%i18n:common.delete%',
|
||||||
icon: '%fa:R trash-alt%',
|
icon: '%fa:R trash-alt%',
|
||||||
action: this.deleteFolder
|
action: this.deleteFolder
|
||||||
}*/], {
|
}], {
|
||||||
closed: () => {
|
closed: () => {
|
||||||
this.isContextmenuShowing = false;
|
this.isContextmenuShowing = false;
|
||||||
}
|
}
|
||||||
@@ -207,7 +207,9 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
deleteFolder() {
|
deleteFolder() {
|
||||||
alert('not implemented yet');
|
(this as any).api('drive/folders/delete', {
|
||||||
|
folderId: this.folder.id
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ export default Vue.extend({
|
|||||||
hierarchyFolders: [],
|
hierarchyFolders: [],
|
||||||
selectedFiles: [],
|
selectedFiles: [],
|
||||||
uploadings: [],
|
uploadings: [],
|
||||||
connection: null
|
connection: null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ドロップされようとしているか
|
* ドロップされようとしているか
|
||||||
@@ -122,6 +122,7 @@ export default Vue.extend({
|
|||||||
this.connection.on('fileDeleted', this.onStreamDriveFileDeleted);
|
this.connection.on('fileDeleted', this.onStreamDriveFileDeleted);
|
||||||
this.connection.on('folderCreated', this.onStreamDriveFolderCreated);
|
this.connection.on('folderCreated', this.onStreamDriveFolderCreated);
|
||||||
this.connection.on('folderUpdated', this.onStreamDriveFolderUpdated);
|
this.connection.on('folderUpdated', this.onStreamDriveFolderUpdated);
|
||||||
|
this.connection.on('folderDeleted', this.onStreamDriveFolderDeleted);
|
||||||
|
|
||||||
if (this.initFolder) {
|
if (this.initFolder) {
|
||||||
this.move(this.initFolder);
|
this.move(this.initFolder);
|
||||||
@@ -182,6 +183,10 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onStreamDriveFolderDeleted(folderId) {
|
||||||
|
this.removeFolder(folderId);
|
||||||
|
},
|
||||||
|
|
||||||
onChangeUploaderUploads(uploads) {
|
onChangeUploaderUploads(uploads) {
|
||||||
this.uploadings = uploads;
|
this.uploadings = uploads;
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="2fa">
|
<div class="2fa">
|
||||||
<p>%i18n:@intro%<a href="%i18n:@url%" target="_blank">%i18n:@detail%</a></p>
|
<p style="margin-top:0;">%i18n:@intro%<a href="%i18n:@url%" target="_blank">%i18n:@detail%</a></p>
|
||||||
<div class="ui info warn"><p>%fa:exclamation-triangle%%i18n:@caution%</p></div>
|
<ui-info warn>%i18n:@caution%</ui-info>
|
||||||
<p v-if="!data && !$store.state.i.twoFactorEnabled"><ui-button @click="register">%i18n:@register%</ui-button></p>
|
<p v-if="!data && !$store.state.i.twoFactorEnabled"><ui-button @click="register">%i18n:@register%</ui-button></p>
|
||||||
<template v-if="$store.state.i.twoFactorEnabled">
|
<template v-if="$store.state.i.twoFactorEnabled">
|
||||||
<p>%i18n:@already-registered%</p>
|
<p>%i18n:@already-registered%</p>
|
||||||
@@ -72,9 +72,3 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
|
||||||
.2fa
|
|
||||||
color #4a535a
|
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="root api">
|
|
||||||
<ui-input :value="$store.state.i.token" readonly>
|
|
||||||
<span>%i18n:@token%</span>
|
|
||||||
</ui-input>
|
|
||||||
<p>%i18n:@intro%</p>
|
|
||||||
<div class="ui info warn"><p>%fa:exclamation-triangle%%i18n:@caution%</p></div>
|
|
||||||
<p>%i18n:@regeneration-of-token%</p>
|
|
||||||
<ui-button @click="regenerateToken">%i18n:@regenerate-token%</ui-button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import Vue from 'vue';
|
|
||||||
|
|
||||||
export default Vue.extend({
|
|
||||||
methods: {
|
|
||||||
regenerateToken() {
|
|
||||||
(this as any).apis.input({
|
|
||||||
title: '%i18n:@enter-password%',
|
|
||||||
type: 'password'
|
|
||||||
}).then(password => {
|
|
||||||
(this as any).api('i/regenerate_token', {
|
|
||||||
password: password
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
|
||||||
.root.api
|
|
||||||
code
|
|
||||||
display inline-block
|
|
||||||
padding 4px 6px
|
|
||||||
color #555
|
|
||||||
background #eee
|
|
||||||
border-radius 2px
|
|
||||||
</style>
|
|
||||||
@@ -235,12 +235,9 @@
|
|||||||
</section>
|
</section>
|
||||||
</ui-card>
|
</ui-card>
|
||||||
|
|
||||||
<ui-card class="api" v-show="page == 'api'">
|
<div class="api" v-show="page == 'api'">
|
||||||
<div slot="title">%fa:key% API</div>
|
<mk-api-settings/>
|
||||||
<section class="fit-top">
|
</div>
|
||||||
<x-api/>
|
|
||||||
</section>
|
|
||||||
</ui-card>
|
|
||||||
|
|
||||||
<ui-card class="other" v-show="page == 'other'">
|
<ui-card class="other" v-show="page == 'other'">
|
||||||
<div slot="title">%fa:info-circle% %i18n:@about%</div>
|
<div slot="title">%fa:info-circle% %i18n:@about%</div>
|
||||||
@@ -295,7 +292,6 @@ import Vue from 'vue';
|
|||||||
import XMute from './settings.mute.vue';
|
import XMute from './settings.mute.vue';
|
||||||
import XPassword from './settings.password.vue';
|
import XPassword from './settings.password.vue';
|
||||||
import X2fa from './settings.2fa.vue';
|
import X2fa from './settings.2fa.vue';
|
||||||
import XApi from './settings.api.vue';
|
|
||||||
import XApps from './settings.apps.vue';
|
import XApps from './settings.apps.vue';
|
||||||
import XSignins from './settings.signins.vue';
|
import XSignins from './settings.signins.vue';
|
||||||
import XTags from './settings.tags.vue';
|
import XTags from './settings.tags.vue';
|
||||||
@@ -307,7 +303,6 @@ export default Vue.extend({
|
|||||||
XMute,
|
XMute,
|
||||||
XPassword,
|
XPassword,
|
||||||
X2fa,
|
X2fa,
|
||||||
XApi,
|
|
||||||
XApps,
|
XApps,
|
||||||
XSignins,
|
XSignins,
|
||||||
XTags
|
XTags
|
||||||
|
|||||||
@@ -26,6 +26,9 @@
|
|||||||
<ui-switch v-model="iLikeSushi">%i18n:common.i-like-sushi%</ui-switch>
|
<ui-switch v-model="iLikeSushi">%i18n:common.i-like-sushi%</ui-switch>
|
||||||
<ui-switch v-model="disableAnimatedMfm">%i18n:common.disable-animated-mfm%</ui-switch>
|
<ui-switch v-model="disableAnimatedMfm">%i18n:common.disable-animated-mfm%</ui-switch>
|
||||||
<ui-switch v-model="alwaysShowNsfw">%i18n:common.always-show-nsfw% (%i18n:common.this-setting-is-this-device-only%)</ui-switch>
|
<ui-switch v-model="alwaysShowNsfw">%i18n:common.always-show-nsfw% (%i18n:common.this-setting-is-this-device-only%)</ui-switch>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
<ui-switch v-model="games_reversi_showBoardLabels">%i18n:common.show-reversi-board-labels%</ui-switch>
|
<ui-switch v-model="games_reversi_showBoardLabels">%i18n:common.show-reversi-board-labels%</ui-switch>
|
||||||
<ui-switch v-model="games_reversi_useContrastStones">%i18n:common.use-contrast-reversi-stones%</ui-switch>
|
<ui-switch v-model="games_reversi_useContrastStones">%i18n:common.use-contrast-reversi-stones%</ui-switch>
|
||||||
</section>
|
</section>
|
||||||
@@ -120,6 +123,8 @@
|
|||||||
</section>
|
</section>
|
||||||
</ui-card>
|
</ui-card>
|
||||||
|
|
||||||
|
<mk-api-settings />
|
||||||
|
|
||||||
<ui-card>
|
<ui-card>
|
||||||
<div slot="title">%fa:sync-alt% %i18n:@update%</div>
|
<div slot="title">%fa:sync-alt% %i18n:@update%</div>
|
||||||
|
|
||||||
|
|||||||
@@ -131,6 +131,9 @@
|
|||||||
remoteInfoBg: '#42321c',
|
remoteInfoBg: '#42321c',
|
||||||
remoteInfoFg: '#ffbd3e',
|
remoteInfoFg: '#ffbd3e',
|
||||||
|
|
||||||
|
infoWarnBg: '#42321c',
|
||||||
|
infoWarnFg: '#ffbd3e',
|
||||||
|
|
||||||
messagingRoomBg: '@bg',
|
messagingRoomBg: '@bg',
|
||||||
messagingRoomInfo: '#fff',
|
messagingRoomInfo: '#fff',
|
||||||
messagingRoomDateDividerLine: 'rgba(255, 255, 255, 0.1)',
|
messagingRoomDateDividerLine: 'rgba(255, 255, 255, 0.1)',
|
||||||
|
|||||||
@@ -131,6 +131,9 @@
|
|||||||
remoteInfoBg: '#fff0db',
|
remoteInfoBg: '#fff0db',
|
||||||
remoteInfoFg: '#573c08',
|
remoteInfoFg: '#573c08',
|
||||||
|
|
||||||
|
infoWarnBg: '#fff0db',
|
||||||
|
infoWarnFg: '#573c08',
|
||||||
|
|
||||||
messagingRoomBg: '#fff',
|
messagingRoomBg: '#fff',
|
||||||
messagingRoomInfo: '#000',
|
messagingRoomInfo: '#000',
|
||||||
messagingRoomDateDividerLine: 'rgba(0, 0, 0, 0.1)',
|
messagingRoomDateDividerLine: 'rgba(0, 0, 0, 0.1)',
|
||||||
|
|||||||
@@ -62,7 +62,15 @@ export default (endpoint: string, user: IUser, app: IApp, data: any, file?: any)
|
|||||||
console.warn(`SLOW API CALL DETECTED: ${ep.name} (${time}ms)`);
|
console.warn(`SLOW API CALL DETECTED: ${ep.name} (${time}ms)`);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
rej(e);
|
if (e.name == 'INVALID_PARAM') {
|
||||||
|
rej({
|
||||||
|
code: e.name,
|
||||||
|
param: e.param,
|
||||||
|
reason: e.message
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
rej(e);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any) => new Promise(async (res, rej) => {
|
export default (params: any) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
const stats = await driveChart.getChart(ps.span as any, ps.limit);
|
const stats = await driveChart.getChart(ps.span as any, ps.limit);
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any) => new Promise(async (res, rej) => {
|
export default (params: any) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
const stats = await federationChart.getChart(ps.span as any, ps.limit);
|
const stats = await federationChart.getChart(ps.span as any, ps.limit);
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any) => new Promise(async (res, rej) => {
|
export default (params: any) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
const stats = await hashtagChart.getChart(ps.span as any, ps.limit, ps.tag);
|
const stats = await hashtagChart.getChart(ps.span as any, ps.limit, ps.tag);
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any) => new Promise(async (res, rej) => {
|
export default (params: any) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
const stats = await networkChart.getChart(ps.span as any, ps.limit);
|
const stats = await networkChart.getChart(ps.span as any, ps.limit);
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any) => new Promise(async (res, rej) => {
|
export default (params: any) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
const stats = await notesChart.getChart(ps.span as any, ps.limit);
|
const stats = await notesChart.getChart(ps.span as any, ps.limit);
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any) => new Promise(async (res, rej) => {
|
export default (params: any) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
const stats = await perUserDriveChart.getChart(ps.span as any, ps.limit, ps.userId);
|
const stats = await perUserDriveChart.getChart(ps.span as any, ps.limit, ps.userId);
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any) => new Promise(async (res, rej) => {
|
export default (params: any) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
const stats = await perUserFollowingChart.getChart(ps.span as any, ps.limit, ps.userId);
|
const stats = await perUserFollowingChart.getChart(ps.span as any, ps.limit, ps.userId);
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any) => new Promise(async (res, rej) => {
|
export default (params: any) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
const stats = await perUserNotesChart.getChart(ps.span as any, ps.limit, ps.userId);
|
const stats = await perUserNotesChart.getChart(ps.span as any, ps.limit, ps.userId);
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any) => new Promise(async (res, rej) => {
|
export default (params: any) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
const stats = await perUserReactionsChart.getChart(ps.span as any, ps.limit, ps.userId);
|
const stats = await perUserReactionsChart.getChart(ps.span as any, ps.limit, ps.userId);
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any) => new Promise(async (res, rej) => {
|
export default (params: any) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
const stats = await usersChart.getChart(ps.span as any, ps.limit);
|
const stats = await usersChart.getChart(ps.span as any, ps.limit);
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) =
|
|||||||
|
|
||||||
const [childFoldersCount, childFilesCount] = await Promise.all([
|
const [childFoldersCount, childFilesCount] = await Promise.all([
|
||||||
DriveFolder.count({ parentId: folder._id }),
|
DriveFolder.count({ parentId: folder._id }),
|
||||||
DriveFile.count({ folderId: folder._id })
|
DriveFile.count({ 'metadata.folderId': folder._id })
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (childFoldersCount !== 0 || childFilesCount !== 0) {
|
if (childFoldersCount !== 0 || childFilesCount !== 0) {
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any) => new Promise(async (res, rej) => {
|
export default (params: any) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
const hashtags = await Hashtag
|
const hashtags = await Hashtag
|
||||||
.find({
|
.find({
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
|
export default (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
const message = await Message.findOne({
|
const message = await Message.findOne({
|
||||||
_id: ps.messageId,
|
_id: ps.messageId,
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any) => new Promise(async (res, rej) => {
|
export default (params: any) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
// Check if both of sinceId and untilId is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (ps.sinceId && ps.untilId) {
|
if (ps.sinceId && ps.untilId) {
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
|
export default (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
// Check if both of sinceId and untilId is specified
|
// Check if both of sinceId and untilId is specified
|
||||||
if (ps.sinceId && ps.untilId) {
|
if (ps.sinceId && ps.untilId) {
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
|
export default (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
if (ps.includeUserUsernames != null) {
|
if (ps.includeUserUsernames != null) {
|
||||||
const ids = erase(null, await Promise.all(ps.includeUserUsernames.map(async (username) => {
|
const ids = erase(null, await Promise.all(ps.includeUserUsernames.map(async (username) => {
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
|
export default (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
// Fetch the list
|
// Fetch the list
|
||||||
const userList = await UserList.findOne({
|
const userList = await UserList.findOne({
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ export const meta = {
|
|||||||
|
|
||||||
export default (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
|
export default (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
|
||||||
const [ps, psErr] = getParams(meta, params);
|
const [ps, psErr] = getParams(meta, params);
|
||||||
if (psErr) throw psErr;
|
if (psErr) return rej(psErr);
|
||||||
|
|
||||||
if (ps.userId === undefined && ps.username === undefined) {
|
if (ps.userId === undefined && ps.username === undefined) {
|
||||||
return rej('userId or username is required');
|
return rej('userId or username is required');
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ export default function <T extends Defs>(defs: T, params: any): [{
|
|||||||
Object.keys(defs.params).some(k => {
|
Object.keys(defs.params).some(k => {
|
||||||
const [v, e] = defs.params[k].get(params[k]);
|
const [v, e] = defs.params[k].get(params[k]);
|
||||||
if (e) {
|
if (e) {
|
||||||
err = e;
|
err = new Error(e.message);
|
||||||
|
err.name = 'INVALID_PARAM';
|
||||||
|
(err as any).param = k;
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
if (v === undefined && defs.params[k].data.default) {
|
if (v === undefined && defs.params[k].data.default) {
|
||||||
|
|||||||
Reference in New Issue
Block a user