Compare commits

...

51 Commits

Author SHA1 Message Date
47a6188097 2.23.0 2018-05-29 15:43:24 +09:00
8abce1469a Merge pull request #1661 from syuilo/l10n_master
New Crowdin translations
2018-05-29 15:43:01 +09:00
8a2bee2136 New translations ja.yml (Portuguese) 2018-05-29 15:42:20 +09:00
e7a532f0cc New translations ja.yml (Korean) 2018-05-29 15:42:17 +09:00
2cb1678577 New translations ja.yml (Polish) 2018-05-29 15:42:15 +09:00
d249bc6575 New translations ja.yml (Chinese Simplified) 2018-05-29 15:42:13 +09:00
e409b45873 New translations ja.yml (Italian) 2018-05-29 15:42:10 +09:00
f2d26c1909 New translations ja.yml (Russian) 2018-05-29 15:42:08 +09:00
898e3d7138 New translations ja.yml (English) 2018-05-29 15:42:06 +09:00
78cc0f7b6f New translations ja.yml (Spanish) 2018-05-29 15:42:04 +09:00
b14ca6a464 New translations ja.yml (German) 2018-05-29 15:42:02 +09:00
4691c1259a New translations ja.yml (French) 2018-05-29 15:42:00 +09:00
69f07cb015 Fix bug 2018-05-29 15:41:49 +09:00
a426f4c7bd nanka iroiro 2018-05-29 15:38:48 +09:00
3430a2d093 New translations ja.yml (English) 2018-05-29 15:31:19 +09:00
4ecc8c799d 🎨 2018-05-29 15:21:03 +09:00
fa02a58fc4 New translations ja.yml (Portuguese) 2018-05-29 14:51:25 +09:00
2905d172b8 New translations ja.yml (Korean) 2018-05-29 14:51:23 +09:00
5f6e5e4c8b New translations ja.yml (Polish) 2018-05-29 14:51:21 +09:00
d68c2a0170 New translations ja.yml (Chinese Simplified) 2018-05-29 14:51:19 +09:00
76c7ad5e24 New translations ja.yml (Italian) 2018-05-29 14:51:17 +09:00
1cf65a0145 New translations ja.yml (Russian) 2018-05-29 14:51:16 +09:00
0c8602f1d5 New translations ja.yml (English) 2018-05-29 14:51:14 +09:00
2dc4990804 New translations ja.yml (Spanish) 2018-05-29 14:51:12 +09:00
47ecd2e900 New translations ja.yml (German) 2018-05-29 14:51:10 +09:00
01d8e9cf4e New translations ja.yml (French) 2018-05-29 14:51:08 +09:00
da52f980c4 ✌️ 2018-05-29 14:42:29 +09:00
366b7ef946 🎨 2018-05-29 14:22:15 +09:00
0e7c0fd528 2.22.3 2018-05-29 13:22:29 +09:00
fb28b238cf Add workaround for Safari bug 2018-05-29 13:21:38 +09:00
b375bbc75c 2.22.2 2018-05-29 11:53:59 +09:00
74ebd6e4a0 Merge branch 'master' of https://github.com/syuilo/misskey 2018-05-29 11:53:35 +09:00
72f2b92d4f ✌️ 2018-05-29 11:53:28 +09:00
178eeec041 Merge pull request #1660 from syuilo/l10n_master
New Crowdin translations
2018-05-29 11:53:03 +09:00
7ff950b5e3 New translations ja.yml (English) 2018-05-29 11:50:50 +09:00
11409b723e 🎨 2018-05-29 11:45:01 +09:00
a59c8b4f57 New translations ja.yml (Portuguese) 2018-05-29 11:41:13 +09:00
690e273257 New translations ja.yml (Korean) 2018-05-29 11:41:11 +09:00
0133a1ba97 New translations ja.yml (Polish) 2018-05-29 11:41:09 +09:00
809b0e67a6 New translations ja.yml (Chinese Simplified) 2018-05-29 11:41:08 +09:00
a702271efd New translations ja.yml (Italian) 2018-05-29 11:41:06 +09:00
ec4f8ddd3e New translations ja.yml (Russian) 2018-05-29 11:41:04 +09:00
839f66c82f New translations ja.yml (English) 2018-05-29 11:41:02 +09:00
9ae2775452 New translations ja.yml (Spanish) 2018-05-29 11:41:00 +09:00
c9818358ee New translations ja.yml (German) 2018-05-29 11:40:58 +09:00
6e3a88ffcb New translations ja.yml (French) 2018-05-29 11:40:56 +09:00
4c54d68fad Darken 2018-05-29 11:38:24 +09:00
c351ba7820 Fix 2018-05-29 11:36:45 +09:00
3c2d72f611 Fix bug 2018-05-29 11:32:55 +09:00
f557407589 Fix bug 2018-05-29 11:29:02 +09:00
a0a4ce4dd9 Fix bug 2018-05-29 11:25:28 +09:00
30 changed files with 385 additions and 416 deletions

View File

@ -326,9 +326,6 @@ desktop/views/components/note-detail.vue:
location: "Ort"
renote: "Anmerkung"
add-reaction: "Reaktion hinzufügen"
desktop/views/components/note-detail.sub.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.note.vue:
reposted-by: "Auch geteilt von"
reply: "Antworten"
@ -696,7 +693,7 @@ mobile/views/components/post-form.vue:
submit: "投稿"
reply: "返信"
renote: "Renote"
renote-placeholder: "この投稿を引用... (オプション)"
quote-placeholder: "この投稿を引用... (オプション)"
reply-placeholder: "この投稿への返信..."
cw-placeholder: "内容への注釈 (オプション)"
location-alert: "お使いの端末は位置情報に対応していません"
@ -716,6 +713,10 @@ mobile/views/components/ui.nav.vue:
messaging: "メッセージ"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
widgets: "ウィジェット"
game: "ゲーム"
darkmode: "ダークモード"
settings: "設定"
about: "Misskeyについて"
mobile/views/components/user-timeline.vue:
@ -726,8 +727,11 @@ mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
mobile/views/pages/following.vue:

View File

@ -326,9 +326,6 @@ desktop/views/components/note-detail.vue:
location: "Location"
renote: "Renote"
add-reaction: "Add a reaction"
desktop/views/components/note-detail.sub.vue:
private: "this post is private"
deleted: "this post has been deleted"
desktop/views/components/notes.note.vue:
reposted-by: "Reposted by {}"
reply: "Reply"
@ -696,7 +693,7 @@ mobile/views/components/post-form.vue:
submit: "Post"
reply: "Reply"
renote: "Renote"
renote-placeholder: "Quote this post. (optional)"
quote-placeholder: "Quote this post... (optional)"
reply-placeholder: "Reply to this note..."
cw-placeholder: "内容への注釈 (オプション)"
location-alert: "お使いの端末は位置情報に対応していません"
@ -716,6 +713,10 @@ mobile/views/components/ui.nav.vue:
messaging: "Messages"
search: "Search"
drive: "Drive"
favorites: "Favorites"
widgets: "Widgets"
game: "Games"
darkmode: "Dark mode"
settings: "Settings"
about: "About Misskey"
mobile/views/components/user-timeline.vue:
@ -726,8 +727,11 @@ mobile/views/components/users-list.vue:
all: "All"
known: "You know"
load-more: "More"
mobile/views/pages/favorites.vue:
title: "Favorites"
mobile/views/pages/drive.vue:
drive: "Drive"
more: "Load more"
mobile/views/pages/followers.vue:
followers-of: "Followers of {}"
mobile/views/pages/following.vue:

View File

@ -326,9 +326,6 @@ desktop/views/components/note-detail.vue:
location: "位置情報"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/note-detail.sub.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.note.vue:
reposted-by: "{}がRenote"
reply: "返信"
@ -696,7 +693,7 @@ mobile/views/components/post-form.vue:
submit: "投稿"
reply: "返信"
renote: "Renote"
renote-placeholder: "この投稿を引用... (オプション)"
quote-placeholder: "この投稿を引用... (オプション)"
reply-placeholder: "この投稿への返信..."
cw-placeholder: "内容への注釈 (オプション)"
location-alert: "お使いの端末は位置情報に対応していません"
@ -716,6 +713,10 @@ mobile/views/components/ui.nav.vue:
messaging: "メッセージ"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
widgets: "ウィジェット"
game: "ゲーム"
darkmode: "ダークモード"
settings: "設定"
about: "Misskeyについて"
mobile/views/components/user-timeline.vue:
@ -726,8 +727,11 @@ mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
mobile/views/pages/following.vue:

View File

@ -326,9 +326,6 @@ desktop/views/components/note-detail.vue:
location: "位置情報"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/note-detail.sub.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.note.vue:
reposted-by: "Reposté par {}"
reply: "Répondre"
@ -696,7 +693,7 @@ mobile/views/components/post-form.vue:
submit: "Poster"
reply: "返信"
renote: "Renote"
renote-placeholder: "この投稿を引用... (オプション)"
quote-placeholder: "この投稿を引用... (オプション)"
reply-placeholder: "Répondre à cette note"
cw-placeholder: "内容への注釈 (オプション)"
location-alert: "お使いの端末は位置情報に対応していません"
@ -716,6 +713,10 @@ mobile/views/components/ui.nav.vue:
messaging: "Messages"
search: "Rechercher"
drive: "Drive"
favorites: "お気に入り"
widgets: "ウィジェット"
game: "ゲーム"
darkmode: "ダークモード"
settings: "Réglages"
about: "À propose de Misskey"
mobile/views/components/user-timeline.vue:
@ -726,8 +727,11 @@ mobile/views/components/users-list.vue:
all: "Tout"
known: "Vous connaissez"
load-more: "Afficher plus"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/drive.vue:
drive: "Drive"
more: "もっと見る"
mobile/views/pages/followers.vue:
followers-of: "Abonnés de {}"
mobile/views/pages/following.vue:

View File

@ -326,9 +326,6 @@ desktop/views/components/note-detail.vue:
location: "位置情報"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/note-detail.sub.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.note.vue:
reposted-by: "{}がRenote"
reply: "返信"
@ -696,7 +693,7 @@ mobile/views/components/post-form.vue:
submit: "投稿"
reply: "返信"
renote: "Renote"
renote-placeholder: "この投稿を引用... (オプション)"
quote-placeholder: "この投稿を引用... (オプション)"
reply-placeholder: "この投稿への返信..."
cw-placeholder: "内容への注釈 (オプション)"
location-alert: "お使いの端末は位置情報に対応していません"
@ -716,6 +713,10 @@ mobile/views/components/ui.nav.vue:
messaging: "メッセージ"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
widgets: "ウィジェット"
game: "ゲーム"
darkmode: "ダークモード"
settings: "設定"
about: "Misskeyについて"
mobile/views/components/user-timeline.vue:
@ -726,8 +727,11 @@ mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
mobile/views/pages/following.vue:

View File

@ -379,10 +379,6 @@ desktop/views/components/note-detail.vue:
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/note-detail.sub.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.note.vue:
reposted-by: "{}がRenote"
reply: "返信"
@ -823,7 +819,7 @@ mobile/views/components/post-form.vue:
submit: "投稿"
reply: "返信"
renote: "Renote"
renote-placeholder: "この投稿を引用... (オプション)"
quote-placeholder: "この投稿を引用... (オプション)"
reply-placeholder: "この投稿への返信..."
cw-placeholder: "内容への注釈 (オプション)"
location-alert: "お使いの端末は位置情報に対応していません"
@ -846,6 +842,10 @@ mobile/views/components/ui.nav.vue:
messaging: "メッセージ"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
widgets: "ウィジェット"
game: "ゲーム"
darkmode: "ダークモード"
settings: "設定"
about: "Misskeyについて"
@ -859,8 +859,12 @@ mobile/views/components/users-list.vue:
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"

View File

@ -326,9 +326,6 @@ desktop/views/components/note-detail.vue:
location: "位置情報"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/note-detail.sub.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.note.vue:
reposted-by: "{}がRenote"
reply: "返信"
@ -696,7 +693,7 @@ mobile/views/components/post-form.vue:
submit: "投稿"
reply: "返信"
renote: "Renote"
renote-placeholder: "この投稿を引用... (オプション)"
quote-placeholder: "この投稿を引用... (オプション)"
reply-placeholder: "この投稿への返信..."
cw-placeholder: "内容への注釈 (オプション)"
location-alert: "お使いの端末は位置情報に対応していません"
@ -716,6 +713,10 @@ mobile/views/components/ui.nav.vue:
messaging: "メッセージ"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
widgets: "ウィジェット"
game: "ゲーム"
darkmode: "ダークモード"
settings: "設定"
about: "Misskeyについて"
mobile/views/components/user-timeline.vue:
@ -726,8 +727,11 @@ mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
mobile/views/pages/following.vue:

View File

@ -326,9 +326,6 @@ desktop/views/components/note-detail.vue:
location: "Informacje o lokalizacji"
renote: "Udostępnienie"
add-reaction: "Dodaj reakcję"
desktop/views/components/note-detail.sub.vue:
private: "ten wpis jest prywatny"
deleted: "ten wpis został usunięty"
desktop/views/components/notes.note.vue:
reposted-by: "Udostępniono przez {}"
reply: "Odpowiedz"
@ -696,7 +693,7 @@ mobile/views/components/post-form.vue:
submit: "Wyślij"
reply: "Odpowiedz"
renote: "Udostępnij"
renote-placeholder: "Zacytuj wpis… (nieobowiązkowe)"
quote-placeholder: "この投稿を引用... (オプション)"
reply-placeholder: "Odpowiedź na ten wpis…"
cw-placeholder: "Treść ostrzeżenia (opcjonalnie)"
location-alert: "Twoje urządzenie nie pozwala na przekazywanie informacji o lokalizacji"
@ -716,6 +713,10 @@ mobile/views/components/ui.nav.vue:
messaging: "Wiadomości"
search: "Szukaj"
drive: "Dysk"
favorites: "お気に入り"
widgets: "ウィジェット"
game: "ゲーム"
darkmode: "ダークモード"
settings: "Ustawienia"
about: "O Misskey"
mobile/views/components/user-timeline.vue:
@ -726,8 +727,11 @@ mobile/views/components/users-list.vue:
all: "Wszyscy"
known: "Znasz"
load-more: "Więcej"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/drive.vue:
drive: "Dysk"
more: "もっと見る"
mobile/views/pages/followers.vue:
followers-of: "Śledzący {}"
mobile/views/pages/following.vue:

View File

@ -326,9 +326,6 @@ desktop/views/components/note-detail.vue:
location: "位置情報"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/note-detail.sub.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.note.vue:
reposted-by: "{}がRenote"
reply: "返信"
@ -696,7 +693,7 @@ mobile/views/components/post-form.vue:
submit: "投稿"
reply: "返信"
renote: "Renote"
renote-placeholder: "この投稿を引用... (オプション)"
quote-placeholder: "この投稿を引用... (オプション)"
reply-placeholder: "この投稿への返信..."
cw-placeholder: "内容への注釈 (オプション)"
location-alert: "お使いの端末は位置情報に対応していません"
@ -716,6 +713,10 @@ mobile/views/components/ui.nav.vue:
messaging: "メッセージ"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
widgets: "ウィジェット"
game: "ゲーム"
darkmode: "ダークモード"
settings: "設定"
about: "Misskeyについて"
mobile/views/components/user-timeline.vue:
@ -726,8 +727,11 @@ mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
mobile/views/pages/following.vue:

View File

@ -326,9 +326,6 @@ desktop/views/components/note-detail.vue:
location: "位置情報"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/note-detail.sub.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.note.vue:
reposted-by: "{}がRenote"
reply: "返信"
@ -696,7 +693,7 @@ mobile/views/components/post-form.vue:
submit: "投稿"
reply: "返信"
renote: "Renote"
renote-placeholder: "この投稿を引用... (オプション)"
quote-placeholder: "この投稿を引用... (オプション)"
reply-placeholder: "この投稿への返信..."
cw-placeholder: "内容への注釈 (オプション)"
location-alert: "お使いの端末は位置情報に対応していません"
@ -716,6 +713,10 @@ mobile/views/components/ui.nav.vue:
messaging: "メッセージ"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
widgets: "ウィジェット"
game: "ゲーム"
darkmode: "ダークモード"
settings: "設定"
about: "Misskeyについて"
mobile/views/components/user-timeline.vue:
@ -726,8 +727,11 @@ mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
mobile/views/pages/following.vue:

View File

@ -326,9 +326,6 @@ desktop/views/components/note-detail.vue:
location: "位置情報"
renote: "Renote"
add-reaction: "リアクション"
desktop/views/components/note-detail.sub.vue:
private: "この投稿は非公開です"
deleted: "この投稿は削除されました"
desktop/views/components/notes.note.vue:
reposted-by: "{}がRenote"
reply: "返信"
@ -696,7 +693,7 @@ mobile/views/components/post-form.vue:
submit: "投稿"
reply: "返信"
renote: "Renote"
renote-placeholder: "この投稿を引用... (オプション)"
quote-placeholder: "この投稿を引用... (オプション)"
reply-placeholder: "この投稿への返信..."
cw-placeholder: "内容への注釈 (オプション)"
location-alert: "お使いの端末は位置情報に対応していません"
@ -716,6 +713,10 @@ mobile/views/components/ui.nav.vue:
messaging: "メッセージ"
search: "検索"
drive: "ドライブ"
favorites: "お気に入り"
widgets: "ウィジェット"
game: "ゲーム"
darkmode: "ダークモード"
settings: "設定"
about: "Misskeyについて"
mobile/views/components/user-timeline.vue:
@ -726,8 +727,11 @@ mobile/views/components/users-list.vue:
all: "すべて"
known: "知り合い"
load-more: "もっと"
mobile/views/pages/favorites.vue:
title: "お気に入り"
mobile/views/pages/drive.vue:
drive: "ドライブ"
more: "もっと見る"
mobile/views/pages/followers.vue:
followers-of: "{}のフォロワー"
mobile/views/pages/following.vue:

View File

@ -1,8 +1,8 @@
{
"name": "misskey",
"author": "syuilo <i@syuilo.com>",
"version": "2.22.1",
"clientVersion": "1.0.5942",
"version": "2.23.0",
"clientVersion": "1.0.5993",
"codename": "nighthike",
"main": "./built/index.js",
"private": true,

View File

@ -1,9 +1,11 @@
<template>
<div class="mk-media-list" :data-count="mediaList.length">
<template v-for="media in mediaList">
<mk-media-video :video="media" :key="media.id" v-if="media.type.startsWith('video')" :inline-playable="mediaList.length === 1"/>
<mk-media-image :image="media" :key="media.id" v-else :raw="raw"/>
</template>
<div class="mk-media-list">
<div :data-count="mediaList.length" ref="grid">
<template v-for="media in mediaList">
<mk-media-video :video="media" :key="media.id" v-if="media.type.startsWith('video')" :inline-playable="mediaList.length === 1"/>
<mk-media-image :image="media" :key="media.id" v-else :raw="raw"/>
</template>
</div>
</div>
</template>
@ -18,47 +20,60 @@ export default Vue.extend({
raw: {
default: false
}
},
mounted() {
// for Safari bug
this.$refs.grid.style.height = this.$refs.grid.clientHeight ? `${this.$refs.grid.clientHeight}px` : '128px';
}
});
</script>
<style lang="stylus" scoped>
.mk-media-list
display grid
grid-gap 4px
height 256px
width 100%
@media (max-width 500px)
height 192px
&:before
content ''
display block
padding-top 56.25% // 16:9
> div
position absolute
top 0
right 0
bottom 0
left 0
display grid
grid-gap 4px
&[data-count="1"]
grid-template-rows 1fr
&[data-count="2"]
grid-template-columns 1fr 1fr
grid-template-rows 1fr
&[data-count="3"]
grid-template-columns 1fr 0.5fr
grid-template-rows 1fr 1fr
:nth-child(1)
grid-row 1 / 3
:nth-child(3)
grid-column 2 / 3
grid-row 2 / 3
&[data-count="4"]
grid-template-columns 1fr 1fr
grid-template-rows 1fr 1fr
&[data-count="1"]
grid-template-rows 1fr
&[data-count="2"]
grid-template-columns 1fr 1fr
grid-template-rows 1fr
&[data-count="3"]
grid-template-columns 1fr 0.5fr
grid-template-rows 1fr 1fr
:nth-child(1)
grid-row 1 / 3
:nth-child(3)
grid-column 1 / 2
grid-row 1 / 2
:nth-child(2)
grid-column 2 / 3
grid-row 2/3
&[data-count="4"]
grid-template-columns 1fr 1fr
grid-template-rows 1fr 1fr
:nth-child(1)
grid-column 1 / 2
grid-row 1 / 2
:nth-child(2)
grid-column 2 / 3
grid-row 1 / 2
:nth-child(3)
grid-column 1 / 2
grid-row 2 / 3
:nth-child(4)
grid-column 2 / 3
grid-row 2 / 3
grid-row 1 / 2
:nth-child(3)
grid-column 1 / 2
grid-row 2 / 3
:nth-child(4)
grid-column 2 / 3
grid-row 2 / 3
</style>

View File

@ -1,124 +0,0 @@
<template>
<div class="sub" :title="title">
<mk-avatar class="avatar" :user="note.user"/>
<div class="main">
<header>
<div class="left">
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId">{{ note.user | userName }}</router-link>
<span class="username"><mk-acct :user="note.user"/></span>
</div>
<div class="right">
<router-link class="time" :to="note | notePage">
<mk-time :time="note.createdAt"/>
</router-link>
</div>
</header>
<div class="body">
<div class="text">
<span v-if="note.isHidden" style="opacity: 0.5">%i18n:@private%</span>
<span v-if="note.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
<mk-note-html v-if="note.text" :text="note.text" :i="$store.state.i"/>
</div>
<div class="media" v-if="note.mediaIds.length > 0">
<mk-media-list :media-list="note.media"/>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
import dateStringify from '../../../common/scripts/date-stringify';
export default Vue.extend({
props: ['note'],
computed: {
title(): string {
return dateStringify(this.note.createdAt);
}
}
});
</script>
<style lang="stylus" scoped>
root(isDark)
margin 0
padding 20px 32px
background isDark ? #21242d : #fdfdfd
&:after
content ""
display block
clear both
&:hover
> .main > footer > button
color #888
> .avatar
display block
float left
margin 0 16px 0 0
width 44px
height 44px
border-radius 4px
> .main
float left
width calc(100% - 60px)
> header
margin-bottom 4px
white-space nowrap
&:after
content ""
display block
clear both
> .left
float left
> .name
display inline
margin 0
padding 0
color isDark ? #fff : #777
font-size 1em
font-weight 700
text-align left
text-decoration none
&:hover
text-decoration underline
> .username
text-align left
margin 0 0 0 8px
color isDark ? #606984 : #ccc
> .right
float right
> .time
font-size 0.9em
color isDark ? #606984 : #c0c0c0
> .body
> .text
cursor default
display block
margin 0
padding 0
overflow-wrap break-word
font-size 1em
color isDark ? #959ba7 : #717171
.sub[data-darkmode]
root(true)
.sub:not([data-darkmode])
root(false)
</style>

View File

@ -89,7 +89,7 @@ import MkPostFormWindow from './post-form-window.vue';
import MkRenoteFormWindow from './renote-form-window.vue';
import MkNoteMenu from '../../../common/views/components/note-menu.vue';
import MkReactionPicker from '../../../common/views/components/reaction-picker.vue';
import XSub from './note-detail.sub.vue';
import XSub from './notes.note.sub.vue';
export default Vue.extend({
components: {
@ -218,8 +218,6 @@ export default Vue.extend({
@import '~const.styl'
root(isDark)
margin 0 auto
padding 0
overflow hidden
text-align left
background isDark ? #282C37 : #fff

View File

@ -5,9 +5,18 @@
<header>
<router-link class="name" :to="note.user | userPage" v-user-preview="note.userId">{{ note.user | userName }}</router-link>
<span class="username"><mk-acct :user="note.user"/></span>
<router-link class="time" :to="note | notePage">
<mk-time :time="note.createdAt"/>
</router-link>
<div class="info">
<span class="mobile" v-if="note.viaMobile">%fa:mobile-alt%</span>
<router-link class="created-at" :to="note | notePage">
<mk-time :time="note.createdAt"/>
</router-link>
<span class="visibility" v-if="note.visibility != 'public'">
<template v-if="note.visibility == 'home'">%fa:home%</template>
<template v-if="note.visibility == 'followers'">%fa:unlock%</template>
<template v-if="note.visibility == 'specified'">%fa:envelope%</template>
<template v-if="note.visibility == 'private'">%fa:lock%</template>
</span>
</div>
</header>
<div class="body">
<mk-sub-note-content class="text" :note="note"/>
@ -32,24 +41,20 @@ export default Vue.extend({
<style lang="stylus" scoped>
root(isDark)
display flex
font-size 0.9em
&:after
content ""
display block
clear both
> .avatar
flex-shrink 0
display block
float left
margin 0 12px 0 0
width 48px
height 48px
border-radius 8px
> .main
float left
width calc(100% - 60px)
flex 1
min-width 0
> header
display flex
@ -75,9 +80,18 @@ root(isDark)
text-overflow ellipsis
color isDark ? #606984 : #d1d8da
> .time
> .info
margin-left auto
color isDark ? #606984 : #b2b8bb
font-size 0.9em
> *
color isDark ? #606984 : #b2b8bb
> .mobile
margin-right 6px
> .visibility
margin-left 6px
> .body

View File

@ -44,27 +44,23 @@ export default Vue.extend({
<style lang="stylus" scoped>
root(isDark)
display flex
margin 0
padding 16px 32px
font-size 0.9em
background isDark ? #21242d : #fcfcfc
&:after
content ""
display block
clear both
> .avatar
flex-shrink 0
display block
float left
margin 0 12px 0 0
width 48px
height 48px
border-radius 8px
> .main
float left
width calc(100% - 60px)
flex 1
min-width 0
> header
display flex
@ -119,8 +115,6 @@ root(isDark)
margin-left 6px
> .body
max-height 128px
overflow hidden
> .text
cursor default

View File

@ -387,20 +387,16 @@ root(isDark)
padding-top 8px
> article
display flex
padding 28px 32px 18px 32px
&:after
content ""
display block
clear both
&:hover
> .main > footer > button
color isDark ? #707b97 : #888
> .avatar
flex-shrink 0
display block
float left
margin 0 16px 10px 0
width 58px
height 58px
@ -410,8 +406,8 @@ root(isDark)
//top 74px
> .main
float left
width calc(100% - 74px)
flex 1
min-width 0
> header
display flex

View File

@ -5,7 +5,7 @@
<span v-if="note.deletedAt" style="opacity: 0.5">%i18n:@deleted%</span>
<a class="reply" v-if="note.replyId">%fa:reply%</a>
<mk-note-html v-if="note.text" :text="note.text" :i="$store.state.i"/>
<a class="rp" v-if="note.renoteId" :href="`/note:${note.renoteId}`">RP: ...</a>
<a class="rp" v-if="note.renoteId" :href="`/notes/${note.renoteId}`">RP: ...</a>
</div>
<details v-if="note.media.length > 0">
<summary>({{ '%i18n:@media-count%'.replace('{}', note.media.length) }})</summary>

View File

@ -36,7 +36,7 @@ export default Vue.extend({
</script>
<style lang="stylus" scoped>
.mk-ui-notification
root(isDark)
display block
position fixed
z-index 10000
@ -46,10 +46,10 @@ export default Vue.extend({
margin 0 auto
padding 128px 0 0 0
width 500px
color rgba(#000, 0.6)
background rgba(#fff, 0.9)
color rgba(isDark ? #fff : #000, 0.6)
background rgba(isDark ? #282C37 : #fff, 0.9)
border-radius 0 0 8px 8px
box-shadow 0 2px 4px rgba(#000, 0.2)
box-shadow 0 2px 4px rgba(#000, isDark ? 0.4 : 0.2)
transform translateY(-64px)
opacity 0
@ -58,4 +58,10 @@ export default Vue.extend({
line-height 64px
text-align center
.mk-ui-notification[data-darkmode]
root(true)
.mk-ui-notification:not([data-darkmode])
root(false)
</style>

View File

@ -2,7 +2,7 @@
<mk-ui>
<main v-if="!fetching">
<template v-for="favorite in favorites">
<mk-note-detail :note="favorite.note" :key="favorite.note.id"/>
<mk-note-detail class="post" :note="favorite.note" :key="favorite.note.id"/>
</template>
<a v-if="existMore" @click="more">%i18n:@more%</a>
</main>
@ -70,4 +70,7 @@ main
margin 0 auto
padding 16px
max-width 700px
> .post
margin-bottom 16px
</style>

View File

@ -36,6 +36,7 @@ import MkNote from './views/pages/note.vue';
import MkSearch from './views/pages/search.vue';
import MkFollowers from './views/pages/followers.vue';
import MkFollowing from './views/pages/following.vue';
import MkFavorites from './views/pages/favorites.vue';
import MkSettings from './views/pages/settings.vue';
import MkOthello from './views/pages/othello.vue';
@ -72,6 +73,7 @@ init((launch) => {
{ path: '/signup', name: 'signup', component: MkSignup },
{ path: '/i/settings', name: 'settings', component: MkSettings },
{ path: '/i/notifications', name: 'notifications', component: MkNotifications },
{ path: '/i/favorites', name: 'favorites', component: MkFavorites },
{ path: '/i/widgets', name: 'widgets', component: MkWidgets },
{ path: '/i/messaging', name: 'messaging', component: MkMessaging },
{ path: '/i/messaging/:user', component: MkMessagingRoom },

View File

@ -1,101 +0,0 @@
<template>
<div class="root sub">
<mk-avatar class="avatar" :user="note.user"/>
<div class="main">
<header>
<router-link class="name" :to="note.user | userPage">{{ note.user | userName }}</router-link>
<span class="username"><mk-acct :user="note.user"/></span>
<router-link class="time" :to="note | notePage">
<mk-time :time="note.createdAt"/>
</router-link>
</header>
<div class="body">
<mk-sub-note-content class="text" :note="note"/>
</div>
</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
props: ['note']
});
</script>
<style lang="stylus" scoped>
root(isDark)
padding 8px
font-size 0.9em
background isDark ? #21242d : #fdfdfd
@media (min-width 500px)
padding 12px
@media (min-width 600px)
padding 24px 32px
&:after
content ""
display block
clear both
> .avatar
display block
float left
margin 0 12px 0 0
width 48px
height 48px
border-radius 8px
> .main
float left
width calc(100% - 60px)
> header
display flex
align-items baseline
margin-bottom 4px
white-space nowrap
> .name
display block
margin 0 .5em 0 0
padding 0
overflow hidden
color isDark ? #fff : #607073
font-size 1em
font-weight 700
text-align left
text-decoration none
text-overflow ellipsis
&:hover
text-decoration underline
> .username
text-align left
margin 0 .5em 0 0
color isDark ? #606984 : #d1d8da
> .time
margin-left auto
color isDark ? #606984 : #b2b8bb
> .body
> .text
cursor default
margin 0
padding 0
font-size 1.1em
color isDark ? #959ba7 : #717171
.root.sub[data-darkmode]
root(true)
.root.sub:not([data-darkmode])
root(false)
</style>

View File

@ -87,7 +87,7 @@ import parse from '../../../../../text/parse';
import MkNoteMenu from '../../../common/views/components/note-menu.vue';
import MkReactionPicker from '../../../common/views/components/reaction-picker.vue';
import XSub from './note-detail.sub.vue';
import XSub from './note.sub.vue';
export default Vue.extend({
components: {
@ -172,7 +172,7 @@ export default Vue.extend({
},
methods: {
fetchContext() {
fetchConversation() {
this.conversationFetching = true;
// Fetch conversation
@ -216,8 +216,6 @@ export default Vue.extend({
root(isDark)
overflow hidden
margin 0 auto
padding 0
width 100%
text-align left
background isDark ? #282C37 : #fff

View File

@ -9,9 +9,18 @@
<span class="is-bot" v-if="note.user.isBot">%i18n:@bot%</span>
<span class="is-cat" v-if="note.user.isCat">%i18n:@cat%</span>
<span class="username"><mk-acct :user="note.user"/></span>
<router-link class="time" :to="note | notePage">
<mk-time :time="note.createdAt"/>
</router-link>
<div class="info">
<span class="mobile" v-if="note.viaMobile">%fa:mobile-alt%</span>
<router-link class="created-at" :to="note | notePage">
<mk-time :time="note.createdAt"/>
</router-link>
<span class="visibility" v-if="note.visibility != 'public'">
<template v-if="note.visibility == 'home'">%fa:home%</template>
<template v-if="note.visibility == 'followers'">%fa:unlock%</template>
<template v-if="note.visibility == 'specified'">%fa:envelope%</template>
<template v-if="note.visibility == 'private'">%fa:lock%</template>
</span>
</div>
</header>
<div class="body">
<mk-sub-note-content class="text" :note="note"/>
@ -30,14 +39,16 @@ export default Vue.extend({
<style lang="stylus" scoped>
root(isDark)
display flex
margin 0
padding 0
font-size 0.9em
font-size 10px
&:after
content ""
display block
clear both
@media (min-width 350px)
font-size 12px
@media (min-width 500px)
font-size 14px
&.smart
> .main
@ -47,24 +58,26 @@ root(isDark)
align-items center
> .avatar
flex-shrink 0
display block
float left
margin 0 12px 0 0
width 48px
height 48px
margin 0 10px 0 0
width 40px
height 40px
border-radius 8px
@media (max-width 500px)
@media (min-width 350px)
margin 0 10px 0 0
width 44px
height 44px
> .main
float left
width calc(100% - 60px)
@media (min-width 500px)
margin 0 12px 0 0
width 48px
height 48px
@media (max-width 500px)
width calc(100% - 54px)
> .main
flex 1
min-width 0
> header
display flex
@ -97,7 +110,7 @@ root(isDark)
align-self center
margin 0 0.5em 0 0
padding 1px 6px
font-size 10px
font-size 0.8em
color isDark ? #758188 : #aaa
border solid 1px isDark ? #57616f : #ddd
border-radius 3px
@ -112,9 +125,18 @@ root(isDark)
text-overflow ellipsis
color isDark ? #606984 : #d1d8da
> .time
> .info
margin-left auto
color isDark ? #606984 : #b2b8bb
font-size 0.9em
> *
color isDark ? #606984 : #b2b8bb
> .mobile
margin-right 6px
> .visibility
margin-left 6px
> .body

View File

@ -33,16 +33,33 @@
import Vue from 'vue';
export default Vue.extend({
props: ['note']
props: {
note: {
type: Object,
required: true
},
// TODO
truncate: {
type: Boolean,
default: true
}
}
});
</script>
<style lang="stylus" scoped>
root(isDark)
display flex
padding 16px
font-size 0.9em
font-size 10px
background isDark ? #21242d : #fcfcfc
@media (min-width 350px)
font-size 12px
@media (min-width 500px)
font-size 14px
@media (min-width 600px)
padding 24px 32px
@ -53,30 +70,27 @@ root(isDark)
> header
align-items center
&:after
content ""
display block
clear both
> .avatar
flex-shrink 0
display block
float left
margin 0 10px 0 0
width 42px
height 42px
margin 0 8px 0 0
width 38px
height 38px
border-radius 8px
@media (min-width 350px)
margin-right 10px
width 42px
height 42px
@media (min-width 500px)
margin-right 14px
width 50px
height 50px
> .main
float left
width calc(100% - 52px)
@media (min-width 500px)
width calc(100% - 64px)
flex 1
min-width 0
> header
display flex
@ -112,7 +126,7 @@ root(isDark)
align-self center
margin 0 0.5em 0 0
padding 1px 5px
font-size 10px
font-size 0.8em
color isDark ? #758188 : #aaa
border solid 1px isDark ? #57616f : #ddd
border-radius 3px
@ -140,11 +154,8 @@ root(isDark)
margin-left 6px
> .body
max-height 128px
overflow hidden
> .text
cursor default
margin 0
padding 0
color isDark ? #959ba7 : #717171

View File

@ -269,8 +269,6 @@ root(isDark)
&.smart
> article
> .main
width 100%
> header
align-items center
margin-bottom 4px
@ -328,27 +326,28 @@ root(isDark)
padding-top 8px
> article
display flex
padding 16px 16px 9px
@media (min-width 600px)
padding 32px 32px 22px
&:after
content ""
display block
clear both
> .avatar
flex-shrink 0
display block
float left
margin 0 10px 8px 0
width 48px
height 48px
width 42px
height 42px
border-radius 6px
//position -webkit-sticky
//position sticky
//top 62px
@media (min-width 350px)
width 48px
height 48px
border-radius 6px
@media (min-width 500px)
margin-right 16px
width 58px
@ -356,11 +355,8 @@ root(isDark)
border-radius 8px
> .main
float left
width calc(100% - 58px)
@media (min-width 500px)
width calc(100% - 74px)
flex 1
min-width 0
> header
display flex
@ -393,7 +389,7 @@ root(isDark)
align-self center
margin 0 0.5em 0 0
padding 1px 6px
font-size 12px
font-size 0.8em
color isDark ? #758188 : #aaa
border solid 1px isDark ? #57616f : #ddd
border-radius 3px
@ -422,6 +418,8 @@ root(isDark)
margin-left 6px
> .body
@media (min-width 700px)
font-size 1.1em
> .cw
cursor default

View File

@ -17,19 +17,18 @@
<ul>
<li><router-link to="/" :data-active="$route.name == 'index'">%fa:home%%i18n:@home%%fa:angle-right%</router-link></li>
<li><router-link to="/i/notifications" :data-active="$route.name == 'notifications'">%fa:R bell%%i18n:@notifications%<template v-if="hasUnreadNotification">%fa:circle%</template>%fa:angle-right%</router-link></li>
<li><router-link to="/i/messaging" :data-active="$route.name == 'messaging'">%fa:R comments%%i18n:@messaging%<template v-if="hasUnreadMessagingMessages">%fa:circle%</template>%fa:angle-right%</router-link></li>
<li><router-link to="/othello" :data-active="$route.name == 'othello'">%fa:gamepad%ゲーム<template v-if="hasGameInvitations">%fa:circle%</template>%fa:angle-right%</router-link></li>
<li><router-link to="/i/messaging" :data-active="$route.name == 'messaging'">%fa:R comments%%i18n:@messaging%<template v-if="hasUnreadMessagingMessage">%fa:circle%</template>%fa:angle-right%</router-link></li>
<li><router-link to="/othello" :data-active="$route.name == 'othello'">%fa:gamepad%%i18n:@game%<template v-if="hasGameInvitation">%fa:circle%</template>%fa:angle-right%</router-link></li>
</ul>
<ul>
<li><router-link to="/i/widgets" :data-active="$route.name == 'widgets'">%fa:quidditch%%i18n:@widgets%%fa:angle-right%</router-link></li>
<li><router-link to="/i/favorites" :data-active="$route.name == 'favorites'">%fa:star%%i18n:@favorites%%fa:angle-right%</router-link></li>
<li><router-link to="/i/drive" :data-active="$route.name == 'drive'">%fa:cloud%%i18n:@drive%%fa:angle-right%</router-link></li>
</ul>
<ul>
<li><a @click="search">%fa:search%%i18n:@search%%fa:angle-right%</a></li>
</ul>
<ul>
<li><router-link to="/i/settings" :data-active="$route.name == 'settings'">%fa:cog%%i18n:@settings%%fa:angle-right%</router-link></li>
<li @click="dark"><p><template v-if="$store.state.device.darkmode">%fa:moon%</template><template v-else>%fa:R moon%</template><span>ダークモード</span></p></li>
<li @click="dark"><p><template v-if="$store.state.device.darkmode">%fa:moon%</template><template v-else>%fa:R moon%</template><span>%i18n:@darkmode%</span></p></li>
</ul>
</div>
<a :href="aboutUrl"><p class="about">%i18n:@about%</p></a>

View File

@ -0,0 +1,94 @@
<template>
<mk-ui>
<span slot="header">%fa:star%%i18n:@title%</span>
<main>
<template v-for="favorite in favorites">
<mk-note-detail class="post" :note="favorite.note" :key="favorite.note.id"/>
</template>
<a v-if="existMore" @click="more">%i18n:@more%</a>
</main>
</mk-ui>
</template>
<script lang="ts">
import Vue from 'vue';
import Progress from '../../../common/scripts/loading';
export default Vue.extend({
data() {
return {
fetching: true,
favorites: [],
existMore: false,
moreFetching: false
};
},
created() {
this.fetch();
},
mounted() {
document.title = 'Misskey | %i18n:@notifications%';
},
methods: {
fetch() {
Progress.start();
this.fetching = true;
(this as any).api('i/favorites', {
limit: 11
}).then(favorites => {
if (favorites.length == 11) {
this.existMore = true;
favorites.pop();
}
this.favorites = favorites;
this.fetching = false;
Progress.done();
});
},
more() {
this.moreFetching = true;
(this as any).api('i/favorites', {
limit: 11,
maxId: this.favorites[this.favorites.length - 1].id
}).then(favorites => {
if (favorites.length == 11) {
this.existMore = true;
favorites.pop();
} else {
this.existMore = false;
}
this.favorites = this.favorites.concat(favorites);
this.moreFetching = false;
});
}
}
});
</script>
<style lang="stylus" scoped>
@import '~const.styl'
main
width 100%
max-width 680px
margin 0 auto
padding 8px
> .post
margin-bottom 8px
@media (min-width 500px)
padding 16px
> .post
margin-bottom 16px
@media (min-width 600px)
padding 32px
</style>

View File

@ -26,7 +26,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
return rej('note not found');
}
const ids = note._replyIds.slice(offset, offset + limit);
const ids = (note._replyIds || []).slice(offset, offset + limit);
// Serialize
res(await Promise.all(ids.map(id => pack(id, user))));