mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-07-11 05:04:53 +02:00
Compare commits
52 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8abc8193b | ||
|
|
e7d1b6ec00 | ||
|
|
83c819a130 | ||
|
|
d29459fa37 | ||
|
|
100557e975 | ||
|
|
102aaeb390 | ||
|
|
67b3461c24 | ||
|
|
5e4a0fd4ec | ||
|
|
f840d491e5 | ||
|
|
8f175186bc | ||
|
|
ddb413ca52 | ||
|
|
5415b67baa | ||
|
|
19f6af475a | ||
|
|
65a3bac543 | ||
|
|
f91a53d893 | ||
|
|
f848e3f226 | ||
|
|
bc94878225 | ||
|
|
bcf52bb2c3 | ||
|
|
2c25188f70 | ||
|
|
567aeacff5 | ||
|
|
4b9168e596 | ||
|
|
8b79b28916 | ||
|
|
45706cc0ef | ||
|
|
c1e3f4e68e | ||
|
|
6cbbc97893 | ||
|
|
fa09523821 | ||
|
|
7cb527d9ba | ||
|
|
5320f29fb0 | ||
|
|
7527af4656 | ||
|
|
6adb92b074 | ||
|
|
6dc3844682 | ||
|
|
bfb16c27ee | ||
|
|
ed1cc0b81c | ||
|
|
c66c1c9d2a | ||
|
|
1748fcf909 | ||
|
|
bdac8d58ae | ||
|
|
4e21801163 | ||
|
|
4929687956 | ||
|
|
4ba7ad8a4b | ||
|
|
800fdaeaef | ||
|
|
08a89a924d | ||
|
|
5b057d2275 | ||
|
|
bdc9bd1345 | ||
|
|
d8dc677906 | ||
|
|
9c312b0e26 | ||
|
|
8d28f68e0b | ||
|
|
317c9308cc | ||
|
|
01cd3de5b3 | ||
|
|
bc2774093a | ||
|
|
afb999187f | ||
|
|
54d0598d92 | ||
|
|
163e60e32e |
@@ -25,7 +25,7 @@ ultimately sophisticated new type of mini-blog based SNS.
|
||||
* Real time contents
|
||||
* ActivityPub compatible
|
||||
|
||||
and more! You can touch with your own eyes at [misskey.xyz](https://misskey.xyz).
|
||||
and more! You can see it with your own eyes at [misskey.xyz](https://misskey.xyz).
|
||||
|
||||
:package: Create your instance
|
||||
----------------------------------------------------------------
|
||||
|
||||
@@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
||||
disconnect: "Trennen"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "Warten"
|
||||
common/views/components/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "Laden"
|
||||
no-broadcasts: "Keine Broadcasts"
|
||||
@@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "Serverinformationen"
|
||||
toggle: "Sicht umschalten"
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Schwarz ... komplett"
|
||||
notes: "Blau ... Hinweise"
|
||||
@@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
||||
failure: "Weitersagen fehlgeschlagen"
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "この投稿をRenoteしますか?"
|
||||
desktop/views/components/settings-window.vue:
|
||||
settings: "設定"
|
||||
desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
|
||||
@@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
||||
disconnect: "Disconnect"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "Waiting"
|
||||
common/views/components/visibility-chooser.vue:
|
||||
public: "Public"
|
||||
home: "Home"
|
||||
home-desc: "Post to the home timeline only"
|
||||
followers: "Followers"
|
||||
followers-desc: "Post to followers only"
|
||||
specified: "Direct"
|
||||
specified-desc: "Post to specified users only"
|
||||
private: "Private"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "Fetching"
|
||||
no-broadcasts: "No broadcasts"
|
||||
@@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "Server info"
|
||||
toggle: "Toggle views"
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "Public"
|
||||
home: "Home"
|
||||
home-desc: "Post to the home timeline only"
|
||||
followers: "Followers"
|
||||
followers-desc: "Post to followers only"
|
||||
specified: "Direct"
|
||||
specified-desc: "Post to specified users only"
|
||||
private: "Private"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
||||
failure: "Failed to Renote"
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "Are you sure you want to renote this note?"
|
||||
desktop/views/components/settings-window.vue:
|
||||
settings: "Settings"
|
||||
desktop/views/components/settings.vue:
|
||||
profile: "Profile"
|
||||
notification: "Notification"
|
||||
|
||||
@@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
||||
disconnect: "切断する"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "待機中"
|
||||
common/views/components/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
||||
failure: "Renoteに失敗しました"
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "この投稿をRenoteしますか?"
|
||||
desktop/views/components/settings-window.vue:
|
||||
settings: "設定"
|
||||
desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
|
||||
@@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
||||
disconnect: "Deconnecter"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "En attente"
|
||||
common/views/components/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "Récuperation"
|
||||
no-broadcasts: "No broadcasts"
|
||||
@@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "Info sur le serveur"
|
||||
toggle: "Afficher les vues"
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
||||
failure: "La renote a échoué"
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "Êtes vous sûr de vouloir renote cette note?"
|
||||
desktop/views/components/settings-window.vue:
|
||||
settings: "設定"
|
||||
desktop/views/components/settings.vue:
|
||||
profile: "Profil"
|
||||
notification: "Notification"
|
||||
|
||||
@@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
||||
disconnect: "切断する"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "待機中"
|
||||
common/views/components/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
||||
failure: "Renoteに失敗しました"
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "この投稿をRenoteしますか?"
|
||||
desktop/views/components/settings-window.vue:
|
||||
settings: "設定"
|
||||
desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
|
||||
@@ -173,6 +173,16 @@ common/views/components/twitter-setting.vue:
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "待機中"
|
||||
|
||||
common/views/components/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -191,16 +201,6 @@ common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -417,6 +417,9 @@ desktop/views/components/renote-form.vue:
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "この投稿をRenoteしますか?"
|
||||
|
||||
desktop/views/components/settings-window.vue:
|
||||
settings: "設定"
|
||||
|
||||
desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
|
||||
@@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
||||
disconnect: "切断する"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "待機中"
|
||||
common/views/components/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
||||
failure: "Renoteに失敗しました"
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "この投稿をRenoteしますか?"
|
||||
desktop/views/components/settings-window.vue:
|
||||
settings: "設定"
|
||||
desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
|
||||
@@ -92,7 +92,7 @@ common/views/components/nav.vue:
|
||||
common/views/components/note-menu.vue:
|
||||
favorite: "Dodaj do ulubionych"
|
||||
pin: "Przypnij do profilu"
|
||||
remote: "投稿元で見る"
|
||||
remote: "Pokaż oryginał"
|
||||
common/views/components/poll.vue:
|
||||
vote-to: "Zagłosuj na '{}'"
|
||||
vote-count: "{} głosów"
|
||||
@@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
||||
disconnect: "Rozłącz"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "Oczekiwanie"
|
||||
common/views/components/visibility-chooser.vue:
|
||||
public: "Publiczny"
|
||||
home: "Lokalny"
|
||||
home-desc: "Widoczny tylko na tej instancji"
|
||||
followers: "Dla śledzących"
|
||||
followers-desc: "Widoczny tylko dla osób, które Cię śledzą"
|
||||
specified: "Bezpośredni"
|
||||
specified-desc: "Tylko dla określonych użytkowników"
|
||||
private: "Prywatny"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "Sprawdzanie"
|
||||
no-broadcasts: "Brak transmisji"
|
||||
@@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "Informacje o serwerze"
|
||||
toggle: "Przełącz widok"
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "Publiczny"
|
||||
home: "Lokalny"
|
||||
home-desc: "Widoczny tylko na tej instancji"
|
||||
followers: "Dla śledzących"
|
||||
followers-desc: "Widoczny tylko dla osób, które Cię śledzą"
|
||||
specified: "Bezpośredni"
|
||||
specified-desc: "Tylko dla określonych użytkowników"
|
||||
private: "Prywatny"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Czarny … Łącznie"
|
||||
notes: "Niebieski … Wpisy"
|
||||
@@ -235,7 +235,7 @@ desktop/views/components/drive.nav-folder.vue:
|
||||
desktop/views/components/drive.vue:
|
||||
search: "Szukaj"
|
||||
load-more: "Załaduj więcej"
|
||||
empty-draghover: "ドロップですか?いいですよ、ボクはカワイイですからね"
|
||||
empty-draghover: "Przeciągnij tutaj!"
|
||||
empty-drive: "Twój dysk jest pusty"
|
||||
empty-drive-description: "Możesz wysłać plik klikając prawym przyciskiem myszy i wybierając \"Wyślij plik\" lub przeciągnąć plik i upuścić w tym oknie."
|
||||
empty-folder: "Ten katalog jest posty"
|
||||
@@ -304,16 +304,16 @@ desktop/views/components/messaging-window.vue:
|
||||
desktop/views/components/note-detail.vue:
|
||||
more: "Załaduj więcej konwersacji"
|
||||
private: "(ten wpis jest prywatny)"
|
||||
reposted-by: "{}がRenote"
|
||||
reposted-by: "Udostępniono przez {}"
|
||||
location: "Informacje o lokalizacji"
|
||||
renote: "Przeredaguj"
|
||||
renote: "Udostępnienie"
|
||||
add-reaction: "Dodaj reakcję"
|
||||
desktop/views/components/note-detail.sub.vue:
|
||||
private: "(ten wpis jest prywatny)"
|
||||
desktop/views/components/notes.note.vue:
|
||||
reposted-by: "Udostępniono przez {}"
|
||||
reply: "Odpowiedz"
|
||||
renote: "Przeredaguj"
|
||||
renote: "Udostępnij"
|
||||
add-reaction: "Dodaj reakcję"
|
||||
detail: "Pokaż szczegóły"
|
||||
desktop/views/components/notes.vue:
|
||||
@@ -328,13 +328,13 @@ desktop/views/components/post-form.vue:
|
||||
quote-placeholder: "Zacytuj ten wpis…"
|
||||
note: "Wyślij"
|
||||
reply: "Odpowiedz"
|
||||
renote: "Przeredaguj"
|
||||
renote: "Udostępnienie"
|
||||
posted: "Opublikowano!"
|
||||
replied: "Odpowiedziano!"
|
||||
reposted: "Udostępniono!"
|
||||
note-failed: "Nie udało się wysłać"
|
||||
reply-failed: "Nie udało się odpowiedzieć"
|
||||
renote-failed: "Nie udało się przeredagować"
|
||||
renote-failed: "Nie udało się udostępnić"
|
||||
posting: "Wysyłanie"
|
||||
attach-media-from-local: "Załącz zawartość multimedialną z komputera"
|
||||
attach-media-from-drive: "Załącz zawartość multimedialną z dysku"
|
||||
@@ -352,12 +352,14 @@ desktop/views/components/progress-dialog.vue:
|
||||
desktop/views/components/renote-form.vue:
|
||||
quote: "Cytuj…"
|
||||
cancel: "Anuluj"
|
||||
renote: "Przeredaguj"
|
||||
renote: "Udostępnij"
|
||||
reposting: "Udostępnianie…"
|
||||
success: "Udostępniono!"
|
||||
failure: "Nie udało się przeredagować"
|
||||
failure: "Nie udało się udostępnić"
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "Czy na pewno chcesz przeredagować ten wpis?"
|
||||
title: "Czy na pewno chcesz udostępnić ten wpis?"
|
||||
desktop/views/components/settings-window.vue:
|
||||
settings: "設定"
|
||||
desktop/views/components/settings.vue:
|
||||
profile: "Profil"
|
||||
notification: "Powiadomienia"
|
||||
@@ -385,8 +387,8 @@ desktop/views/components/settings.vue:
|
||||
gradient-window-header: "Używaj gradientów na pasku tytułu okna"
|
||||
post-form-on-timeline: "Wyświetlaj formularz tworzenia wpisu w górnej części osi czasu"
|
||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||
show-my-renotes: "自分の行ったRenoteをタイムラインに表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿をタイムラインに表示する"
|
||||
show-my-renotes: "Pokazuj moje udostępnienia na osi czasu"
|
||||
show-renoted-my-notes: "Pokazuj udostępnienia moich wpisów na osi czasu"
|
||||
show-maps: "Automatycznie pokazuj mapę"
|
||||
show-maps-desc: "Mapa będzie automatycznie rozwijana dla wpisów zawierających informacje o lokalizacji."
|
||||
sound: "Dźwięk"
|
||||
@@ -404,11 +406,11 @@ desktop/views/components/settings.vue:
|
||||
language-desc: "Aby zmiany zostały uwzględnione, odśwież stronę."
|
||||
cache: "Pamięć podręczna"
|
||||
clean-cache: "Wyczyść"
|
||||
cache-warn: "クリーンアップを行うと、ブラウザに記憶されたアカウント情報のキャッシュ、書きかけの投稿・返信・メッセージ、およびその他のデータ(設定情報含む)が削除されます。クリーンアップを行った後はページを再度読み込みする必要があります。"
|
||||
cache-warn: "Pamięć podręczna informacji o koncie/wpisów/odpowiedzi/wiadomości/ustawień przechowywanych w przeglądarce zostanie usunięta. Będziesz musiał odświeżyć stronę po wyczyszczeniu."
|
||||
cache-cleared: "Wyczyszczono pamięć podręczną"
|
||||
cache-cleared-desc: "Proszę odświeżyć stronę."
|
||||
auto-watch: "投稿の自動ウォッチ"
|
||||
auto-watch-desc: "リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。"
|
||||
auto-watch-desc: "Otrzymuj natychmiastowo informacje o wpisach/odpowiedziach/reakcjach."
|
||||
about: "O Misskey"
|
||||
operator: "Administrator instancji"
|
||||
update: "Aktualizacja Misskey"
|
||||
@@ -475,12 +477,12 @@ desktop/views/components/settings.profile.vue:
|
||||
description: "Opis"
|
||||
birthday: "Data urodzenia"
|
||||
save: "Aktualizuj profil"
|
||||
is-bot: "このアカウントはBotです"
|
||||
is-cat: "このアカウントはCatです"
|
||||
is-bot: "To konto jest prowadzone przez bota"
|
||||
is-cat: "To konto jest prowadzone przez kota"
|
||||
desktop/views/components/sub-note-content.vue:
|
||||
hidden: "(この投稿は非公開です)"
|
||||
media: "つのメディア"
|
||||
poll: "投票"
|
||||
hidden: "(ten wpis jest prywatny)"
|
||||
media: "zawartość multimedialna"
|
||||
poll: "Ankiety"
|
||||
desktop/views/components/taskmanager.vue:
|
||||
title: "Menedżer zadań"
|
||||
desktop/views/components/timeline.vue:
|
||||
@@ -519,16 +521,16 @@ desktop/views/components/users-list.vue:
|
||||
load-more: "Więcej"
|
||||
fetching: "Ładowanie…"
|
||||
desktop/views/components/users-list-item.vue:
|
||||
followed: "フォローされています"
|
||||
followed: "Obserwuje Cię"
|
||||
desktop/views/components/window.vue:
|
||||
popout: "ポップアウト"
|
||||
close: "閉じる"
|
||||
close: "Zamknij"
|
||||
desktop/views/pages/welcome.vue:
|
||||
signin: "ログイン"
|
||||
signup: "新規登録"
|
||||
signin-button: "やってる"
|
||||
signup-button: "やる"
|
||||
timeline: "タイムライン"
|
||||
signin: "Zaloguj się"
|
||||
signup: "Zarejestruj się"
|
||||
signin-button: "Zaloguj się"
|
||||
signup-button: "Zarejestruj się"
|
||||
timeline: "Oś czasu"
|
||||
desktop/views/pages/drive.vue:
|
||||
title: "Dysk Misskey"
|
||||
desktop/views/pages/favorites.vue:
|
||||
@@ -635,7 +637,7 @@ mobile/views/components/notifications.vue:
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "Wyślij"
|
||||
reply: "Odpowiedz"
|
||||
renote: "Przeredaguj"
|
||||
renote: "Udostępnij"
|
||||
renote-placeholder: "Zacytuj wpis… (nieobowiązkowe)"
|
||||
reply-placeholder: "Odpowiedź na ten wpis…"
|
||||
note-placeholder: "Co się dzieje?"
|
||||
@@ -668,9 +670,9 @@ mobile/views/pages/followers.vue:
|
||||
mobile/views/pages/following.vue:
|
||||
following-of: "Śledzeni przez {}"
|
||||
mobile/views/pages/home.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
global: "グローバル"
|
||||
home: "Strona główna"
|
||||
local: "Lokalne"
|
||||
global: "Globalne"
|
||||
mobile/views/pages/messaging.vue:
|
||||
messaging: "Wiadomości"
|
||||
mobile/views/pages/messaging-room.vue:
|
||||
@@ -691,7 +693,7 @@ mobile/views/pages/settings/settings.profile.vue:
|
||||
birthday: "Data urodzenia"
|
||||
avatar: "Awatar"
|
||||
banner: "Baner"
|
||||
is-cat: "このアカウントはCatです"
|
||||
is-cat: "To konto jest prowadzone przez kota"
|
||||
save: "Aktualizuj profil"
|
||||
saved: "Pomyślnie zaktualizowano profil"
|
||||
uploading: "Wysyłanie"
|
||||
@@ -714,16 +716,16 @@ mobile/views/pages/settings.vue:
|
||||
circle-icons: "Używaj okrągłych ikon"
|
||||
timeline: "Oś czasu"
|
||||
show-reply-target: "Pokazuj cel odpowiedzi"
|
||||
show-my-renotes: "自分の行ったRenoteを表示する"
|
||||
show-renoted-my-notes: "Renoteされた自分の投稿を表示する"
|
||||
show-my-renotes: "Pokazuj moje udostępnienia"
|
||||
show-renoted-my-notes: "Pokazuj udostępnienia moich wpisów"
|
||||
post-style: "Styl wpisów"
|
||||
post-style-standard: "Standardowy"
|
||||
post-style-smart: "スマート"
|
||||
behavior: "Zachowanie"
|
||||
fetch-on-scroll: "Automatycznie ładuj po przeciągnięciu w dół"
|
||||
disable-via-mobile: "Nie oznaczaj wpisów jako „wysłane z telefonu”"
|
||||
load-raw-images: "添付された画像を高画質で表示する"
|
||||
load-remote-media: "リモートサーバーのメディアを表示する"
|
||||
load-raw-images: "Wyświetlaj załączone zdjęcia w wysokiej jakości"
|
||||
load-remote-media: "Wyświetlaj zawartość multimedialną ze zdalnych serwerów"
|
||||
twitter: "Połączenie z Twitterem"
|
||||
twitter-connect: "Połącz z Twitterem"
|
||||
twitter-reconnect: "Połącz ponownie"
|
||||
|
||||
@@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
||||
disconnect: "切断する"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "待機中"
|
||||
common/views/components/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
||||
failure: "Renoteに失敗しました"
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "この投稿をRenoteしますか?"
|
||||
desktop/views/components/settings-window.vue:
|
||||
settings: "設定"
|
||||
desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
|
||||
@@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
||||
disconnect: "切断する"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "待機中"
|
||||
common/views/components/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
||||
failure: "Renoteに失敗しました"
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "この投稿をRenoteしますか?"
|
||||
desktop/views/components/settings-window.vue:
|
||||
settings: "設定"
|
||||
desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
|
||||
@@ -151,6 +151,15 @@ common/views/components/twitter-setting.vue:
|
||||
disconnect: "切断する"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "待機中"
|
||||
common/views/components/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
common/views/widgets/broadcast.vue:
|
||||
fetching: "確認中"
|
||||
no-broadcasts: "お知らせはありません"
|
||||
@@ -165,15 +174,6 @@ common/views/widgets/photo-stream.vue:
|
||||
common/views/widgets/server.vue:
|
||||
title: "サーバー情報"
|
||||
toggle: "表示を切り替え"
|
||||
common/views/widgets/visibility-chooser.vue:
|
||||
public: "公開"
|
||||
home: "ホーム"
|
||||
home-desc: "ホームタイムラインにのみ公開"
|
||||
followers: "フォロワー"
|
||||
followers-desc: "自分のフォロワーにのみ公開"
|
||||
specified: "ダイレクト"
|
||||
specified-desc: "指定したユーザーにのみ公開"
|
||||
private: "非公開"
|
||||
desktop/views/components/activity.chart.vue:
|
||||
total: "Black ... Total"
|
||||
notes: "Blue ... Notes"
|
||||
@@ -358,6 +358,8 @@ desktop/views/components/renote-form.vue:
|
||||
failure: "Renoteに失敗しました"
|
||||
desktop/views/components/renote-form-window.vue:
|
||||
title: "この投稿をRenoteしますか?"
|
||||
desktop/views/components/settings-window.vue:
|
||||
settings: "設定"
|
||||
desktop/views/components/settings.vue:
|
||||
profile: "プロフィール"
|
||||
notification: "通知"
|
||||
|
||||
30
package.json
30
package.json
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"author": "syuilo <i@syuilo.com>",
|
||||
"version": "2.17.0",
|
||||
"clientVersion": "1.0.5731",
|
||||
"version": "2.18.0",
|
||||
"clientVersion": "1.0.5784",
|
||||
"codename": "nighthike",
|
||||
"main": "./built/index.js",
|
||||
"private": true,
|
||||
@@ -114,7 +114,7 @@
|
||||
"gulp-cssnano": "2.1.3",
|
||||
"gulp-htmlmin": "4.0.0",
|
||||
"gulp-imagemin": "4.1.0",
|
||||
"gulp-mocha": "5.0.0",
|
||||
"gulp-mocha": "6.0.0",
|
||||
"gulp-pug": "4.0.1",
|
||||
"gulp-rename": "1.2.3",
|
||||
"gulp-replace": "1.0.0",
|
||||
@@ -124,17 +124,17 @@
|
||||
"gulp-typescript": "4.0.2",
|
||||
"gulp-uglify": "3.0.0",
|
||||
"gulp-util": "3.0.8",
|
||||
"hard-source-webpack-plugin": "0.6.9",
|
||||
"hard-source-webpack-plugin": "0.6.10",
|
||||
"highlight.js": "9.12.0",
|
||||
"html-minifier": "3.5.15",
|
||||
"html-minifier": "3.5.16",
|
||||
"http-signature": "1.2.0",
|
||||
"inquirer": "5.2.0",
|
||||
"is-root": "2.0.0",
|
||||
"is-url": "1.2.4",
|
||||
"js-yaml": "3.11.0",
|
||||
"jsdom": "11.10.0",
|
||||
"jsdom": "11.11.0",
|
||||
"koa": "2.5.1",
|
||||
"koa-bodyparser": "4.2.0",
|
||||
"koa-bodyparser": "4.2.1",
|
||||
"koa-compress": "3.0.0",
|
||||
"koa-favicon": "2.0.1",
|
||||
"koa-json-body": "5.3.0",
|
||||
@@ -163,18 +163,18 @@
|
||||
"object-assign-deep": "0.4.0",
|
||||
"on-build-webpack": "0.1.0",
|
||||
"os-utils": "0.0.14",
|
||||
"parse5": "4.0.0",
|
||||
"parse5": "5.0.0",
|
||||
"progress-bar-webpack-plugin": "1.11.0",
|
||||
"prominence": "0.2.0",
|
||||
"promise-sequential": "1.1.1",
|
||||
"pug": "2.0.3",
|
||||
"punycode": "2.1.0",
|
||||
"punycode": "2.1.1",
|
||||
"qrcode": "1.2.0",
|
||||
"ratelimiter": "3.0.3",
|
||||
"recaptcha-promise": "0.1.3",
|
||||
"reconnecting-websocket": "3.2.2",
|
||||
"redis": "2.8.0",
|
||||
"request": "2.86.0",
|
||||
"request": "2.87.0",
|
||||
"request-promise-native": "1.0.5",
|
||||
"rimraf": "2.6.2",
|
||||
"rndstr": "1.0.0",
|
||||
@@ -193,7 +193,7 @@
|
||||
"textarea-caret": "3.1.0",
|
||||
"tmp": "0.0.33",
|
||||
"ts-loader": "4.3.0",
|
||||
"ts-node": "6.0.3",
|
||||
"ts-node": "6.0.4",
|
||||
"tslint": "5.10.0",
|
||||
"typescript": "2.8.3",
|
||||
"typescript-eslint-parser": "15.0.0",
|
||||
@@ -205,7 +205,7 @@
|
||||
"vue-cropperjs": "2.2.0",
|
||||
"vue-js-modal": "1.3.13",
|
||||
"vue-json-tree-view": "2.1.4",
|
||||
"vue-loader": "15.1.0",
|
||||
"vue-loader": "15.2.1",
|
||||
"vue-material": "^1.0.0-beta-10.2",
|
||||
"vue-router": "3.0.1",
|
||||
"vue-template-compiler": "2.5.16",
|
||||
@@ -214,10 +214,10 @@
|
||||
"vuex-persistedstate": "^2.5.4",
|
||||
"web-push": "3.3.1",
|
||||
"webfinger.js": "2.6.6",
|
||||
"webpack": "4.8.3",
|
||||
"webpack-cli": "2.1.3",
|
||||
"webpack": "4.9.1",
|
||||
"webpack-cli": "2.1.4",
|
||||
"websocket": "1.0.26",
|
||||
"ws": "5.1.1",
|
||||
"ws": "5.2.0",
|
||||
"xev": "2.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,7 +263,7 @@ root(isDark)
|
||||
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
|
||||
|
||||
@@ -138,6 +138,7 @@ root(isDark)
|
||||
background isDark ? #282C37 : #fff
|
||||
border solid 1px rgba(#000, 0.075)
|
||||
border-radius 6px
|
||||
overflow hidden
|
||||
|
||||
&[data-melt]
|
||||
background transparent !important
|
||||
@@ -151,9 +152,12 @@ root(isDark)
|
||||
line-height 42px
|
||||
font-size 0.9em
|
||||
font-weight bold
|
||||
color #888
|
||||
color isDark ? #c5ced6 : #888
|
||||
box-shadow 0 1px rgba(#000, 0.07)
|
||||
|
||||
if isDark
|
||||
background #313543
|
||||
|
||||
> [data-fa]
|
||||
margin-right 4px
|
||||
|
||||
@@ -165,13 +169,13 @@ root(isDark)
|
||||
width 42px
|
||||
font-size 0.9em
|
||||
line-height 42px
|
||||
color #ccc
|
||||
color isDark ? #9baec8 : #ccc
|
||||
|
||||
&:hover
|
||||
color #aaa
|
||||
color isDark ? #b2c1d5 : #aaa
|
||||
|
||||
&:active
|
||||
color #999
|
||||
color isDark ? #b2c1d5 : #999
|
||||
|
||||
&:first-of-type
|
||||
left 0
|
||||
@@ -194,49 +198,49 @@ root(isDark)
|
||||
font-size 14px
|
||||
|
||||
&.weekday
|
||||
color #19a2a9
|
||||
color isDark ? #43d5dc : #19a2a9
|
||||
|
||||
&[data-is-donichi]
|
||||
color #ef95a0
|
||||
color isDark ? #ff6679 : #ef95a0
|
||||
|
||||
&[data-today]
|
||||
box-shadow 0 0 0 1px #19a2a9 inset
|
||||
box-shadow 0 0 0 1px isDark ? #43d5dc : #19a2a9 inset
|
||||
border-radius 6px
|
||||
|
||||
&[data-is-donichi]
|
||||
box-shadow 0 0 0 1px #ef95a0 inset
|
||||
box-shadow 0 0 0 1px isDark ? #ff6679 : #ef95a0 inset
|
||||
|
||||
&.day
|
||||
cursor pointer
|
||||
color #777
|
||||
color isDark ? #c5ced6 : #777
|
||||
|
||||
> div
|
||||
border-radius 6px
|
||||
|
||||
&:hover > div
|
||||
background rgba(#000, 0.025)
|
||||
background rgba(#000, isDark ? 0.1 : 0.025)
|
||||
|
||||
&:active > div
|
||||
background rgba(#000, 0.05)
|
||||
background rgba(#000, isDark ? 0.2 : 0.05)
|
||||
|
||||
&[data-is-donichi]
|
||||
color #ef95a0
|
||||
color isDark ? #ff6679 : #ef95a0
|
||||
|
||||
&[data-is-out-of-range]
|
||||
cursor default
|
||||
color rgba(#777, 0.5)
|
||||
color rgba(isDark ? #c5ced6 : #777, 0.5)
|
||||
|
||||
&[data-is-donichi]
|
||||
color rgba(#ef95a0, 0.5)
|
||||
color rgba(isDark ? #ff6679 : #ef95a0, 0.5)
|
||||
|
||||
&[data-selected]
|
||||
font-weight bold
|
||||
|
||||
> div
|
||||
background rgba(#000, 0.025)
|
||||
background rgba(#000, isDark ? 0.1 : 0.025)
|
||||
|
||||
&:active > div
|
||||
background rgba(#000, 0.05)
|
||||
background rgba(#000, isDark ? 0.2 : 0.05)
|
||||
|
||||
&[data-today]
|
||||
> div
|
||||
|
||||
@@ -49,6 +49,7 @@ import Vue from 'vue';
|
||||
import * as XDraggable from 'vuedraggable';
|
||||
import getKao from '../../../common/scripts/get-kao';
|
||||
import MkVisibilityChooser from '../../../common/views/components/visibility-chooser.vue';
|
||||
import parse from '../../../../../text/parse';
|
||||
|
||||
export default Vue.extend({
|
||||
components: {
|
||||
@@ -110,6 +111,17 @@ export default Vue.extend({
|
||||
this.text = `@${this.reply.user.username}@${this.reply.user.host} `;
|
||||
}
|
||||
|
||||
if (this.reply && this.reply.text != null) {
|
||||
const ast = parse(this.reply.text);
|
||||
|
||||
ast.filter(t => t.type == 'mention').forEach(x => {
|
||||
const mention = x.host ? `@${x.username}@${x.host}` : `@${x.username}`;
|
||||
if (this.text.indexOf(`${mention} `) == -1) {
|
||||
this.text += `${mention} `;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.$nextTick(() => {
|
||||
// 書きかけの投稿を復元
|
||||
const draft = JSON.parse(localStorage.getItem('drafts') || '{}')[this.draftId];
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<mk-window ref="window" is-modal width="700px" height="550px" @closed="$destroy">
|
||||
<span slot="header" :class="$style.header">%fa:cog%設定</span>
|
||||
<span slot="header" :class="$style.header">%fa:cog%%i18n:@settings%</span>
|
||||
<mk-settings @done="close"/>
|
||||
</mk-window>
|
||||
</template>
|
||||
|
||||
@@ -34,7 +34,6 @@ export default Vue.extend({
|
||||
existMore: false,
|
||||
connection: null,
|
||||
connectionId: null,
|
||||
unreadCount: 0,
|
||||
date: null
|
||||
};
|
||||
},
|
||||
@@ -76,7 +75,6 @@ export default Vue.extend({
|
||||
}
|
||||
|
||||
document.addEventListener('keydown', this.onKeydown);
|
||||
document.addEventListener('visibilitychange', this.onVisibilitychange, false);
|
||||
|
||||
this.fetch();
|
||||
},
|
||||
@@ -90,7 +88,6 @@ export default Vue.extend({
|
||||
this.stream.dispose(this.connectionId);
|
||||
|
||||
document.removeEventListener('keydown', this.onKeydown);
|
||||
document.removeEventListener('visibilitychange', this.onVisibilitychange);
|
||||
},
|
||||
|
||||
methods: {
|
||||
@@ -120,12 +117,14 @@ export default Vue.extend({
|
||||
|
||||
this.moreFetching = true;
|
||||
|
||||
(this as any).api(this.endpoint, {
|
||||
const promise = (this as any).api(this.endpoint, {
|
||||
limit: fetchLimit + 1,
|
||||
untilId: (this.$refs.timeline as any).tail().id,
|
||||
includeMyRenotes: (this as any).clientSettings.showMyRenotes,
|
||||
includeRenotedMyNotes: (this as any).clientSettings.showRenotedMyNotes
|
||||
}).then(notes => {
|
||||
});
|
||||
|
||||
promise.then(notes => {
|
||||
if (notes.length == fetchLimit + 1) {
|
||||
notes.pop();
|
||||
} else {
|
||||
@@ -134,14 +133,11 @@ export default Vue.extend({
|
||||
notes.forEach(n => (this.$refs.timeline as any).append(n));
|
||||
this.moreFetching = false;
|
||||
});
|
||||
|
||||
return promise;
|
||||
},
|
||||
|
||||
onNote(note) {
|
||||
if (document.hidden && note.userId !== (this as any).os.i.id) {
|
||||
this.unreadCount++;
|
||||
document.title = `(${this.unreadCount}) ${getNoteSummary(note)}`;
|
||||
}
|
||||
|
||||
// Prepend a note
|
||||
(this.$refs.timeline as any).prepend(note);
|
||||
},
|
||||
@@ -159,13 +155,6 @@ export default Vue.extend({
|
||||
this.fetch();
|
||||
},
|
||||
|
||||
onVisibilitychange() {
|
||||
if (!document.hidden) {
|
||||
this.unreadCount = 0;
|
||||
document.title = 'Misskey';
|
||||
}
|
||||
},
|
||||
|
||||
onKeydown(e) {
|
||||
if (e.target.tagName != 'INPUT' && e.target.tagName != 'TEXTAREA') {
|
||||
if (e.which == 84) { // t
|
||||
|
||||
@@ -31,8 +31,29 @@ export default Vue.extend({
|
||||
};
|
||||
},
|
||||
|
||||
watch: {
|
||||
src() {
|
||||
this.$store.commit('device/setTl', {
|
||||
src: this.src,
|
||||
arg: this.list
|
||||
});
|
||||
},
|
||||
|
||||
list() {
|
||||
this.$store.commit('device/setTl', {
|
||||
src: this.src,
|
||||
arg: this.list
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
if ((this as any).os.i.followingCount == 0) {
|
||||
if (this.$store.state.device.tl) {
|
||||
this.src = this.$store.state.device.tl.src;
|
||||
if (this.src == 'list') {
|
||||
this.list = this.$store.state.device.tl.arg;
|
||||
}
|
||||
} else if ((this as any).os.i.followingCount == 0) {
|
||||
this.src = 'local';
|
||||
}
|
||||
},
|
||||
|
||||
@@ -62,13 +62,15 @@ export default Vue.extend({
|
||||
more() {
|
||||
this.moreFetching = true;
|
||||
|
||||
(this as any).api('notes/user-list-timeline', {
|
||||
const promise = (this as any).api('notes/user-list-timeline', {
|
||||
listId: this.list.id,
|
||||
limit: fetchLimit + 1,
|
||||
untilId: (this.$refs.timeline as any).tail().id,
|
||||
includeMyRenotes: (this as any).clientSettings.showMyRenotes,
|
||||
includeRenotedMyNotes: (this as any).clientSettings.showRenotedMyNotes
|
||||
}).then(notes => {
|
||||
});
|
||||
|
||||
promise.then(notes => {
|
||||
if (notes.length == fetchLimit + 1) {
|
||||
notes.pop();
|
||||
} else {
|
||||
@@ -77,6 +79,8 @@ export default Vue.extend({
|
||||
notes.forEach(n => (this.$refs.timeline as any).append(n));
|
||||
this.moreFetching = false;
|
||||
});
|
||||
|
||||
return promise;
|
||||
},
|
||||
onNote(note) {
|
||||
// Prepend a note
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import Progress from '../../../common/scripts/loading';
|
||||
import getNoteSummary from '../../../../../renderers/get-note-summary';
|
||||
|
||||
export default Vue.extend({
|
||||
props: {
|
||||
@@ -16,46 +15,14 @@ export default Vue.extend({
|
||||
default: 'timeline'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
connection: null,
|
||||
connectionId: null,
|
||||
unreadCount: 0
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'Misskey';
|
||||
|
||||
this.connection = (this as any).os.stream.getConnection();
|
||||
this.connectionId = (this as any).os.stream.use();
|
||||
|
||||
this.connection.on('note', this.onStreamNote);
|
||||
document.addEventListener('visibilitychange', this.onVisibilitychange, false);
|
||||
|
||||
Progress.start();
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.connection.off('note', this.onStreamNote);
|
||||
(this as any).os.stream.dispose(this.connectionId);
|
||||
document.removeEventListener('visibilitychange', this.onVisibilitychange);
|
||||
},
|
||||
methods: {
|
||||
loaded() {
|
||||
Progress.done();
|
||||
},
|
||||
|
||||
onStreamNote(note) {
|
||||
if (document.hidden && note.userId != (this as any).os.i.id) {
|
||||
this.unreadCount++;
|
||||
document.title = `(${this.unreadCount}) ${getNoteSummary(note)}`;
|
||||
}
|
||||
},
|
||||
|
||||
onVisibilitychange() {
|
||||
if (!document.hidden) {
|
||||
this.unreadCount = 0;
|
||||
document.title = 'Misskey';
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -21,6 +21,7 @@ const fetchLimit = 10;
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['user'],
|
||||
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
@@ -31,19 +32,23 @@ export default Vue.extend({
|
||||
date: null
|
||||
};
|
||||
},
|
||||
|
||||
watch: {
|
||||
mode() {
|
||||
this.fetch();
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
document.addEventListener('keydown', this.onDocumentKeydown);
|
||||
|
||||
this.fetch(() => this.$emit('loaded'));
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
document.removeEventListener('keydown', this.onDocumentKeydown);
|
||||
},
|
||||
|
||||
methods: {
|
||||
onDocumentKeydown(e) {
|
||||
if (e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA') {
|
||||
@@ -52,6 +57,7 @@ export default Vue.extend({
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
fetch(cb?) {
|
||||
this.fetching = true;
|
||||
(this.$refs.timeline as any).init(() => new Promise((res, rej) => {
|
||||
@@ -72,15 +78,19 @@ export default Vue.extend({
|
||||
}, rej);
|
||||
}));
|
||||
},
|
||||
|
||||
more() {
|
||||
this.moreFetching = true;
|
||||
(this as any).api('users/notes', {
|
||||
|
||||
const promise = (this as any).api('users/notes', {
|
||||
userId: this.user.id,
|
||||
limit: fetchLimit + 1,
|
||||
includeReplies: this.mode == 'with-replies',
|
||||
withMedia: this.mode == 'with-media',
|
||||
untilId: (this.$refs.timeline as any).tail().id
|
||||
}).then(notes => {
|
||||
});
|
||||
|
||||
promise.then(notes => {
|
||||
if (notes.length == fetchLimit + 1) {
|
||||
notes.pop();
|
||||
} else {
|
||||
@@ -89,7 +99,10 @@ export default Vue.extend({
|
||||
notes.forEach(n => (this.$refs.timeline as any).append(n));
|
||||
this.moreFetching = false;
|
||||
});
|
||||
|
||||
return promise;
|
||||
},
|
||||
|
||||
warp(date) {
|
||||
this.date = date;
|
||||
this.fetch();
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
<template>
|
||||
<div class="mk-note-preview">
|
||||
<mk-avatar class="avatar" :user="note.user"/>
|
||||
<div class="mk-note-preview" :class="{ smart: $store.state.device.postStyle == 'smart' }">
|
||||
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle != 'smart'"/>
|
||||
<div class="main">
|
||||
<header>
|
||||
<mk-avatar class="avatar" :user="note.user" v-if="$store.state.device.postStyle == 'smart'"/>
|
||||
<router-link class="name" :to="note.user | userPage">{{ note.user | userName }}</router-link>
|
||||
<span class="is-admin" v-if="note.user.isAdmin">admin</span>
|
||||
<span class="is-bot" v-if="note.user.isBot">bot</span>
|
||||
<span class="is-cat" v-if="note.user.isCat">cat</span>
|
||||
<span class="username"><mk-acct :user="note.user"/></span>
|
||||
<router-link class="time" :to="note | notePage">
|
||||
<mk-time :time="note.createdAt"/>
|
||||
@@ -35,6 +39,13 @@ root(isDark)
|
||||
display block
|
||||
clear both
|
||||
|
||||
&.smart
|
||||
> .main
|
||||
width 100%
|
||||
|
||||
> header
|
||||
align-items center
|
||||
|
||||
> .avatar
|
||||
display block
|
||||
float left
|
||||
@@ -50,9 +61,16 @@ root(isDark)
|
||||
> header
|
||||
display flex
|
||||
align-items baseline
|
||||
margin-bottom 4px
|
||||
margin-bottom 2px
|
||||
white-space nowrap
|
||||
|
||||
> .avatar
|
||||
flex-shrink 0
|
||||
margin-right 8px
|
||||
width 18px
|
||||
height 18px
|
||||
border-radius 100%
|
||||
|
||||
> .name
|
||||
display block
|
||||
margin 0 .5em 0 0
|
||||
@@ -65,8 +83,19 @@ root(isDark)
|
||||
text-decoration none
|
||||
text-overflow ellipsis
|
||||
|
||||
&:hover
|
||||
text-decoration underline
|
||||
> .is-admin
|
||||
> .is-bot
|
||||
> .is-cat
|
||||
margin 0 0.5em 0 0
|
||||
padding 1px 6px
|
||||
font-size 10px
|
||||
color isDark ? #758188 : #aaa
|
||||
border solid 1px isDark ? #57616f : #ddd
|
||||
border-radius 3px
|
||||
|
||||
&.is-admin
|
||||
border-color isDark ? #d42c41 : #f56a7b
|
||||
color isDark ? #d42c41 : #f56a7b
|
||||
|
||||
> .username
|
||||
margin 0 .5em 0 0
|
||||
|
||||
@@ -386,9 +386,6 @@ root(isDark)
|
||||
text-decoration none
|
||||
text-overflow ellipsis
|
||||
|
||||
&:hover
|
||||
text-decoration underline
|
||||
|
||||
> .is-admin
|
||||
> .is-bot
|
||||
> .is-cat
|
||||
|
||||
@@ -49,6 +49,7 @@ import Vue from 'vue';
|
||||
import * as XDraggable from 'vuedraggable';
|
||||
import MkVisibilityChooser from '../../../common/views/components/visibility-chooser.vue';
|
||||
import getKao from '../../../common/scripts/get-kao';
|
||||
import parse from '../../../../../text/parse';
|
||||
|
||||
export default Vue.extend({
|
||||
components: {
|
||||
@@ -78,6 +79,17 @@ export default Vue.extend({
|
||||
this.text = `@${this.reply.user.username}@${this.reply.user.host} `;
|
||||
}
|
||||
|
||||
if (this.reply && this.reply.text != null) {
|
||||
const ast = parse(this.reply.text);
|
||||
|
||||
ast.filter(t => t.type == 'mention').forEach(x => {
|
||||
const mention = x.host ? `@${x.username}@${x.host}` : `@${x.username}`;
|
||||
if (this.text.indexOf(`${mention} `) == -1) {
|
||||
this.text += `${mention} `;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.focus();
|
||||
});
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
<template>
|
||||
<div class="mk-user-card">
|
||||
<header :style="user.bannerUrl ? `background-image: url(${user.bannerUrl}?thumbnail&size=1024)` : ''">
|
||||
<a :href="user | userPage">
|
||||
<img :src="`${user.avatarUrl}?thumbnail&size=200`" alt="avatar"/>
|
||||
</a>
|
||||
<mk-avatar class="avatar" :user="user"/>
|
||||
</header>
|
||||
<a class="name" :href="user | userPage" target="_blank">{{ user | userName }}</a>
|
||||
<p class="username"><mk-acct :user="user"/></p>
|
||||
@@ -35,15 +33,14 @@ export default Vue.extend({
|
||||
background-position center
|
||||
border-radius 8px 8px 0 0
|
||||
|
||||
> a
|
||||
> img
|
||||
position absolute
|
||||
top 20px
|
||||
left calc(50% - 40px)
|
||||
width 80px
|
||||
height 80px
|
||||
border solid 2px #fff
|
||||
border-radius 8px
|
||||
> .avatar
|
||||
position absolute
|
||||
top 20px
|
||||
left calc(50% - 40px)
|
||||
width 80px
|
||||
height 80px
|
||||
border solid 2px #fff
|
||||
border-radius 8px
|
||||
|
||||
> .name
|
||||
display block
|
||||
|
||||
@@ -12,6 +12,7 @@ const fetchLimit = 10;
|
||||
|
||||
export default Vue.extend({
|
||||
props: ['list'],
|
||||
|
||||
data() {
|
||||
return {
|
||||
fetching: true,
|
||||
@@ -20,15 +21,25 @@ export default Vue.extend({
|
||||
connection: null
|
||||
};
|
||||
},
|
||||
|
||||
computed: {
|
||||
canFetchMore(): boolean {
|
||||
return !this.moreFetching && !this.fetching && this.existMore;
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
$route: 'init'
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.init();
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
this.connection.close();
|
||||
},
|
||||
|
||||
methods: {
|
||||
init() {
|
||||
if (this.connection) this.connection.close();
|
||||
@@ -39,6 +50,7 @@ export default Vue.extend({
|
||||
|
||||
this.fetch();
|
||||
},
|
||||
|
||||
fetch() {
|
||||
this.fetching = true;
|
||||
|
||||
@@ -59,16 +71,21 @@ export default Vue.extend({
|
||||
}, rej);
|
||||
}));
|
||||
},
|
||||
|
||||
more() {
|
||||
if (!this.canFetchMore) return;
|
||||
|
||||
this.moreFetching = true;
|
||||
|
||||
(this as any).api('notes/user-list-timeline', {
|
||||
const promise = (this as any).api('notes/user-list-timeline', {
|
||||
listId: this.list.id,
|
||||
limit: fetchLimit + 1,
|
||||
untilId: (this.$refs.timeline as any).tail().id,
|
||||
includeMyRenotes: (this as any).clientSettings.showMyRenotes,
|
||||
includeRenotedMyNotes: (this as any).clientSettings.showRenotedMyNotes
|
||||
}).then(notes => {
|
||||
});
|
||||
|
||||
promise.then(notes => {
|
||||
if (notes.length == fetchLimit + 1) {
|
||||
notes.pop();
|
||||
} else {
|
||||
@@ -77,14 +94,19 @@ export default Vue.extend({
|
||||
notes.forEach(n => (this.$refs.timeline as any).append(n));
|
||||
this.moreFetching = false;
|
||||
});
|
||||
|
||||
return promise;
|
||||
},
|
||||
|
||||
onNote(note) {
|
||||
// Prepend a note
|
||||
(this.$refs.timeline as any).prepend(note);
|
||||
},
|
||||
|
||||
onUserAdded() {
|
||||
this.fetch();
|
||||
},
|
||||
|
||||
onUserRemoved() {
|
||||
this.fetch();
|
||||
}
|
||||
|
||||
@@ -59,12 +59,15 @@ export default Vue.extend({
|
||||
if (!this.canFetchMore) return;
|
||||
|
||||
this.moreFetching = true;
|
||||
(this as any).api('users/notes', {
|
||||
|
||||
const promise = (this as any).api('users/notes', {
|
||||
userId: this.user.id,
|
||||
withMedia: this.withMedia,
|
||||
limit: fetchLimit + 1,
|
||||
untilId: (this.$refs.timeline as any).tail().id
|
||||
}).then(notes => {
|
||||
});
|
||||
|
||||
promise.then(notes => {
|
||||
if (notes.length == fetchLimit + 1) {
|
||||
notes.pop();
|
||||
} else {
|
||||
@@ -73,6 +76,8 @@ export default Vue.extend({
|
||||
notes.forEach(n => (this.$refs.timeline as any).append(n));
|
||||
this.moreFetching = false;
|
||||
});
|
||||
|
||||
return promise;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -111,12 +111,14 @@ export default Vue.extend({
|
||||
|
||||
this.moreFetching = true;
|
||||
|
||||
(this as any).api(this.endpoint, {
|
||||
const promise = (this as any).api(this.endpoint, {
|
||||
limit: fetchLimit + 1,
|
||||
untilId: (this.$refs.timeline as any).tail().id,
|
||||
includeMyRenotes: (this as any).clientSettings.showMyRenotes,
|
||||
includeRenotedMyNotes: (this as any).clientSettings.showRenotedMyNotes
|
||||
}).then(notes => {
|
||||
});
|
||||
|
||||
promise.then(notes => {
|
||||
if (notes.length == fetchLimit + 1) {
|
||||
notes.pop();
|
||||
} else {
|
||||
@@ -125,6 +127,8 @@ export default Vue.extend({
|
||||
notes.forEach(n => (this.$refs.timeline as any).append(n));
|
||||
this.moreFetching = false;
|
||||
});
|
||||
|
||||
return promise;
|
||||
},
|
||||
|
||||
onNote(note) {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<span v-if="src == 'home'">%fa:home%%i18n:@home%</span>
|
||||
<span v-if="src == 'local'">%fa:R comments%%i18n:@local%</span>
|
||||
<span v-if="src == 'global'">%fa:globe%%i18n:@global%</span>
|
||||
<span v-if="src.startsWith('list')">%fa:list%{{ list.title }}</span>
|
||||
<span v-if="src == 'list'">%fa:list%{{ list.title }}</span>
|
||||
</span>
|
||||
<span style="margin-left:8px">
|
||||
<template v-if="!showNav">%fa:angle-down%</template>
|
||||
@@ -26,17 +26,17 @@
|
||||
<span :data-active="src == 'local'" @click="src = 'local'">%fa:R comments% %i18n:@local%</span>
|
||||
<span :data-active="src == 'global'" @click="src = 'global'">%fa:globe% %i18n:@global%</span>
|
||||
<template v-if="lists">
|
||||
<span v-for="l in lists" :data-active="src == 'list:' + l.id" @click="src = 'list:' + l.id; list = l" :key="l.id">%fa:list% {{ l.title }}</span>
|
||||
<span v-for="l in lists" :data-active="src == 'list' && list == l" @click="src = 'list'; list = l" :key="l.id">%fa:list% {{ l.title }}</span>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tl">
|
||||
<x-tl v-if="src == 'home'" ref="tl" key="home" src="home" @loaded="onLoaded"/>
|
||||
<x-tl v-if="src == 'home'" ref="tl" key="home" src="home"/>
|
||||
<x-tl v-if="src == 'local'" ref="tl" key="local" src="local"/>
|
||||
<x-tl v-if="src == 'global'" ref="tl" key="global" src="global"/>
|
||||
<mk-user-list-timeline v-if="src.startsWith('list:')" ref="tl" :key="list.id" :list="list"/>
|
||||
<mk-user-list-timeline v-if="src == 'list'" ref="tl" :key="list.id" :list="list"/>
|
||||
</div>
|
||||
</main>
|
||||
</mk-ui>
|
||||
@@ -64,6 +64,20 @@ export default Vue.extend({
|
||||
watch: {
|
||||
src() {
|
||||
this.showNav = false;
|
||||
|
||||
this.$store.commit('device/setTl', {
|
||||
src: this.src,
|
||||
arg: this.list
|
||||
});
|
||||
},
|
||||
|
||||
list() {
|
||||
this.showNav = false;
|
||||
|
||||
this.$store.commit('device/setTl', {
|
||||
src: this.src,
|
||||
arg: this.list
|
||||
});
|
||||
},
|
||||
|
||||
showNav(v) {
|
||||
@@ -76,7 +90,12 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
created() {
|
||||
if ((this as any).os.i.followingCount == 0) {
|
||||
if (this.$store.state.device.tl) {
|
||||
this.src = this.$store.state.device.tl.src;
|
||||
if (this.src == 'list') {
|
||||
this.list = this.$store.state.device.tl.arg;
|
||||
}
|
||||
} else if ((this as any).os.i.followingCount == 0) {
|
||||
this.src = 'local';
|
||||
}
|
||||
},
|
||||
@@ -85,6 +104,10 @@ export default Vue.extend({
|
||||
document.title = 'Misskey';
|
||||
|
||||
Progress.start();
|
||||
|
||||
(this.$refs.tl as any).$once('loaded', () => {
|
||||
Progress.done();
|
||||
});
|
||||
},
|
||||
|
||||
methods: {
|
||||
@@ -92,10 +115,6 @@ export default Vue.extend({
|
||||
(this as any).apis.post();
|
||||
},
|
||||
|
||||
onLoaded() {
|
||||
Progress.done();
|
||||
},
|
||||
|
||||
warp() {
|
||||
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ export default Vue.extend({
|
||||
const ok = window.confirm('%i18n:@read-all%');
|
||||
if (!ok) return;
|
||||
|
||||
(this as any).api('notifications/markAsRead_all');
|
||||
(this as any).api('notifications/mark_as_read_all');
|
||||
},
|
||||
onFetched() {
|
||||
Progress.done();
|
||||
|
||||
@@ -68,6 +68,13 @@ export default (os: MiOS) => new Vuex.Store({
|
||||
mutations: {
|
||||
set(state, x: { key: string; value: any }) {
|
||||
state[x.key] = x.value;
|
||||
},
|
||||
|
||||
setTl(state, x) {
|
||||
state.tl = {
|
||||
src: x.src,
|
||||
arg: x.arg
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import AccessToken from './access-token';
|
||||
import db from '../db/mongodb';
|
||||
import config from '../config';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import db from '../db/mongodb';
|
||||
import { pack as packApp } from './app';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import { pack as packFolder } from './drive-folder';
|
||||
import config from '../config';
|
||||
import monkDb, { nativeDbConn } from '../db/mongodb';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import db from '../db/mongodb';
|
||||
import DriveFile from './drive-file';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import db from '../db/mongodb';
|
||||
import { pack as packNote } from './note';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import { pack as packUser } from './user';
|
||||
import { pack as packFile } from './drive-file';
|
||||
import db from '../db/mongodb';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import $ from 'cafy';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import db from '../db/mongodb';
|
||||
import Reaction from './note-reaction';
|
||||
import { pack as packUser } from './user';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import rap from '@prezzemolo/rap';
|
||||
import db from '../db/mongodb';
|
||||
import { IUser, pack as packUser } from './user';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import db from '../db/mongodb';
|
||||
import { IUser, pack as packUser } from './user';
|
||||
import { pack as packNote } from './note';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import db from '../db/mongodb';
|
||||
import { IUser, pack as packUser } from './user';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import db from '../db/mongodb';
|
||||
import { IUser, pack as packUser } from './user';
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import db from '../db/mongodb';
|
||||
|
||||
const Signin = db.get<ISignin>('signin');
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import db from '../db/mongodb';
|
||||
|
||||
const UserList = db.get<IUserList>('userList');
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as mongo from 'mongodb';
|
||||
import deepcopy = require('deepcopy');
|
||||
import * as deepcopy from 'deepcopy';
|
||||
import sequential = require('promise-sequential');
|
||||
import rap from '@prezzemolo/rap';
|
||||
import db from '../db/mongodb';
|
||||
@@ -169,9 +169,9 @@ export async function deleteUser(user: string | mongo.ObjectID | IUser) {
|
||||
).map(x => deleteAccessToken(x)));
|
||||
|
||||
// このユーザーのNoteをすべて削除
|
||||
//await sequential((
|
||||
// await Note.find({ userId: u._id })
|
||||
//).map(x => () => deleteNote(x)));
|
||||
await sequential((
|
||||
await Note.find({ userId: u._id })
|
||||
).map(x => () => deleteNote(x)));
|
||||
|
||||
// このユーザーのNoteReactionをすべて削除
|
||||
await Promise.all((
|
||||
|
||||
@@ -13,7 +13,7 @@ import DriveFile, { IMetadata, getDriveFileBucket, IDriveFile, DriveFileChunk }
|
||||
import DriveFolder from '../../models/drive-folder';
|
||||
import { pack } from '../../models/drive-file';
|
||||
import event, { publishDriveStream } from '../../publishers/stream';
|
||||
import { isLocalUser, IRemoteUser } from '../../models/user';
|
||||
import { isLocalUser, IUser, IRemoteUser } from '../../models/user';
|
||||
import DriveFileThumbnail, { getDriveFileThumbnailBucket, DriveFileThumbnailChunk } from '../../models/drive-file-thumbnail';
|
||||
import genThumbnail from '../../drive/gen-thumbnail';
|
||||
|
||||
@@ -98,7 +98,7 @@ async function deleteOldFile(user: IRemoteUser) {
|
||||
* @return Created drive file
|
||||
*/
|
||||
export default async function(
|
||||
user: any,
|
||||
user: IUser,
|
||||
path: string,
|
||||
name: string = null,
|
||||
comment: string = null,
|
||||
|
||||
@@ -283,6 +283,8 @@ export default async (user: IUser, data: {
|
||||
mentionedUsers = mentionedUsers.filter(x => x != null);
|
||||
|
||||
mentionedUsers.filter(u => isLocalUser(u)).forEach(async u => {
|
||||
event(u, 'mention', noteObj);
|
||||
|
||||
// 既に言及されたユーザーに対する返信や引用renoteの場合も無視
|
||||
if (data.reply && data.reply.userId.equals(u._id)) return;
|
||||
if (data.renote && data.renote.userId.equals(u._id)) return;
|
||||
|
||||
Reference in New Issue
Block a user