Merge branch 'master' into l10n_master
This commit is contained in:
		
						commit
						3fa8433a0e
					
				
					 14 changed files with 43 additions and 67 deletions
				
			
		| 
						 | 
					@ -148,7 +148,7 @@ common/views/components/games/reversi/reversi.vue:
 | 
				
			||||||
    playing: "進行中"
 | 
					    playing: "進行中"
 | 
				
			||||||
  matching:
 | 
					  matching:
 | 
				
			||||||
    waiting-for: "{}を待っています"
 | 
					    waiting-for: "{}を待っています"
 | 
				
			||||||
    cacnel: "キャンセル"
 | 
					    cancel: "キャンセル"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
common/views/components/games/reversi/reversi.room.vue:
 | 
					common/views/components/games/reversi/reversi.room.vue:
 | 
				
			||||||
  settings-of-the-game: "ゲームの設定"
 | 
					  settings-of-the-game: "ゲームの設定"
 | 
				
			||||||
| 
						 | 
					@ -318,14 +318,9 @@ common/views/widgets/broadcast.vue:
 | 
				
			||||||
  next: "次"
 | 
					  next: "次"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
common/views/widgets/calendar.vue:
 | 
					common/views/widgets/calendar.vue:
 | 
				
			||||||
  year-english: ""
 | 
					  year: "{}年"
 | 
				
			||||||
  year-japanese: "年"
 | 
					  month: "{}月"
 | 
				
			||||||
  month-english: ""
 | 
					  day: "{}日"
 | 
				
			||||||
  month-japanese: "月"
 | 
					 | 
				
			||||||
  day-english: ""
 | 
					 | 
				
			||||||
  day-japanese: "日"
 | 
					 | 
				
			||||||
  weekday-english: ""
 | 
					 | 
				
			||||||
  weekday-japanese: "曜日"
 | 
					 | 
				
			||||||
  today: "今日:"
 | 
					  today: "今日:"
 | 
				
			||||||
  this-month: "今月:"
 | 
					  this-month: "今月:"
 | 
				
			||||||
  this-year: "今年:"
 | 
					  this-year: "今年:"
 | 
				
			||||||
| 
						 | 
					@ -872,20 +867,14 @@ desktop/views/pages/selectdrive.vue:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
desktop/views/pages/search.vue:
 | 
					desktop/views/pages/search.vue:
 | 
				
			||||||
  not-available: "検索機能を利用することができません。"
 | 
					  not-available: "検索機能を利用することができません。"
 | 
				
			||||||
  not-found-quotes1: "「"
 | 
					  not-found: "「{}」に関する投稿は見つかりませんでした。"
 | 
				
			||||||
  not-found-quotes2: "」"
 | 
					 | 
				
			||||||
  not-found-text-english: ""
 | 
					 | 
				
			||||||
  not-found-text-japanese: "に関する投稿は見つかりませんでした。"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
desktop/views/pages/share.vue:
 | 
					desktop/views/pages/share.vue:
 | 
				
			||||||
  share-with: "Misskeyで共有"
 | 
					  share-with: "Misskeyで共有"
 | 
				
			||||||
  close: "閉じる"
 | 
					  close: "閉じる"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
desktop/views/pages/tag.vue:
 | 
					desktop/views/pages/tag.vue:
 | 
				
			||||||
  no-posts-found-english: ""
 | 
					  no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
 | 
				
			||||||
  no-posts-found-japanese: "に関する投稿は見つかりませんでした。"
 | 
					 | 
				
			||||||
  left-quote: "「"
 | 
					 | 
				
			||||||
  right-quote: "」"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
desktop/views/pages/user-list.users.vue:
 | 
					desktop/views/pages/user-list.users.vue:
 | 
				
			||||||
  users: "ユーザー"
 | 
					  users: "ユーザー"
 | 
				
			||||||
| 
						 | 
					@ -1131,10 +1120,7 @@ mobile/views/pages/home.vue:
 | 
				
			||||||
  global: "グローバル"
 | 
					  global: "グローバル"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mobile/views/pages/tag.vue:
 | 
					mobile/views/pages/tag.vue:
 | 
				
			||||||
  no-posts-found-japanese: "に関する投稿は見つかりませんでした。"
 | 
					  no-posts-found: "ハッシュタグ「{}」が付けられた投稿は見つかりませんでした。"
 | 
				
			||||||
  no-posts-found-english: ""
 | 
					 | 
				
			||||||
  left-quote: "「"
 | 
					 | 
				
			||||||
  right-quote: "」"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
mobile/views/pages/welcome.vue:
 | 
					mobile/views/pages/welcome.vue:
 | 
				
			||||||
  signup: "新規登録"
 | 
					  signup: "新規登録"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,8 @@
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	"name": "misskey",
 | 
						"name": "misskey",
 | 
				
			||||||
	"author": "syuilo <i@syuilo.com>",
 | 
						"author": "syuilo <i@syuilo.com>",
 | 
				
			||||||
	"version": "5.9.0",
 | 
						"version": "5.10.0",
 | 
				
			||||||
	"clientVersion": "1.0.7726",
 | 
						"clientVersion": "1.0.7828",
 | 
				
			||||||
	"codename": "nighthike",
 | 
						"codename": "nighthike",
 | 
				
			||||||
	"main": "./built/index.js",
 | 
						"main": "./built/index.js",
 | 
				
			||||||
	"private": true,
 | 
						"private": true,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,14 +1,14 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
<div class="root">
 | 
					<div class="root">
 | 
				
			||||||
	<header><b>{{ blackUser.name }}</b>(%i18n:common.reversi.black%) vs <b>{{ whiteUser.name }}</b>(%i18n:common.reversi.white%)</header>
 | 
						<header><b>{{ blackUser | userName }}</b>(%i18n:common.reversi.black%) vs <b>{{ whiteUser | userName }}</b>(%i18n:common.reversi.white%)</header>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<div style="overflow: hidden">
 | 
						<div style="overflow: hidden">
 | 
				
			||||||
		<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ '%i18n:common.reversi.turn-of%'.replace('{}', turnUser.name) }}<mk-ellipsis/></p>
 | 
							<p class="turn" v-if="!iAmPlayer && !game.isEnded">{{ '%i18n:common.reversi.turn-of%'.replace('{}', turnUser | userName) }}<mk-ellipsis/></p>
 | 
				
			||||||
		<p class="turn" v-if="logPos != logs.length">{{ '%i18n:common.reversi.past-turn-of%'.replace('{}', turnUser.name) }}</p>
 | 
							<p class="turn" v-if="logPos != logs.length">{{ '%i18n:common.reversi.past-turn-of%'.replace('{}', turnUser | userName) }}</p>
 | 
				
			||||||
		<p class="turn1" v-if="iAmPlayer && !game.isEnded && !isMyTurn">%i18n:common.reversi.opponent-turn%<mk-ellipsis/></p>
 | 
							<p class="turn1" v-if="iAmPlayer && !game.isEnded && !isMyTurn">%i18n:common.reversi.opponent-turn%<mk-ellipsis/></p>
 | 
				
			||||||
		<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">%i18n:common.reversi.my-turn%</p>
 | 
							<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn" v-animate-css="{ classes: 'tada', iteration: 'infinite' }">%i18n:common.reversi.my-turn%</p>
 | 
				
			||||||
		<p class="result" v-if="game.isEnded && logPos == logs.length">
 | 
							<p class="result" v-if="game.isEnded && logPos == logs.length">
 | 
				
			||||||
			<template v-if="game.winner">{{ '%i18n:common.reversi.won%'.replace('{}', game.winner.name) }}{{ game.settings.isLlotheo ? ' (ロセオ)' : '' }}</template>
 | 
								<template v-if="game.winner">{{ '%i18n:common.reversi.won%'.replace('{}', game.winner | userName) }}{{ game.settings.isLlotheo ? ' (ロセオ)' : '' }}</template>
 | 
				
			||||||
			<template v-else>%i18n:common.reversi.drawn%</template>
 | 
								<template v-else>%i18n:common.reversi.drawn%</template>
 | 
				
			||||||
		</p>
 | 
							</p>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
<div class="root">
 | 
					<div class="root">
 | 
				
			||||||
	<header><b>{{ game.user1.name }}</b> vs <b>{{ game.user2.name }}</b></header>
 | 
						<header><b>{{ game.user1 | userName }}</b> vs <b>{{ game.user2 | userName }}</b></header>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<div>
 | 
						<div>
 | 
				
			||||||
		<p>%i18n:@settings-of-the-game%</p>
 | 
							<p>%i18n:@settings-of-the-game%</p>
 | 
				
			||||||
| 
						 | 
					@ -33,8 +33,8 @@
 | 
				
			||||||
				<span>%i18n:@black-or-white%</span>
 | 
									<span>%i18n:@black-or-white%</span>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
			<el-radio v-model="game.settings.bw" label="random" @change="updateSettings">%i18n:@random%</el-radio>
 | 
								<el-radio v-model="game.settings.bw" label="random" @change="updateSettings">%i18n:@random%</el-radio>
 | 
				
			||||||
			<el-radio v-model="game.settings.bw" :label="1" @change="updateSettings">{{ '%i18n:@black-is%'.split('{}')[0] }}{{ game.user1.name }}{{ '%i18n:@black-is%'.split('{}')[1] }}</el-radio>
 | 
								<el-radio v-model="game.settings.bw" :label="1" @change="updateSettings">{{ '%i18n:@black-is%'.split('{}')[0] }}{{ game.user1 | userName }}{{ '%i18n:@black-is%'.split('{}')[1] }}</el-radio>
 | 
				
			||||||
			<el-radio v-model="game.settings.bw" :label="2" @change="updateSettings">{{ '%i18n:@black-is%'.split('{}')[0] }}{{ game.user2.name }}{{ '%i18n:@black-is%'.split('{}')[1] }}</el-radio>
 | 
								<el-radio v-model="game.settings.bw" :label="2" @change="updateSettings">{{ '%i18n:@black-is%'.split('{}')[0] }}{{ game.user2 | userName }}{{ '%i18n:@black-is%'.split('{}')[1] }}</el-radio>
 | 
				
			||||||
		</el-card>
 | 
							</el-card>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<el-card class="rules">
 | 
							<el-card class="rules">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,7 @@
 | 
				
			||||||
		<x-gameroom :game="game"/>
 | 
							<x-gameroom :game="game"/>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
	<div class="matching" v-else-if="matching">
 | 
						<div class="matching" v-else-if="matching">
 | 
				
			||||||
		<h1>{{ '%i18n:@matching.waiting-for%'.split('{}')[0] }}<b>{{ matching.name }}</b>{{ '%i18n:@matching.waiting-for%'.split('{}')[1] }}<mk-ellipsis/></h1>
 | 
							<h1>{{ '%i18n:@matching.waiting-for%'.split('{}')[0] }}<b>{{ matching | userName }}</b>{{ '%i18n:@matching.waiting-for%'.split('{}')[1] }}<mk-ellipsis/></h1>
 | 
				
			||||||
		<div class="cancel">
 | 
							<div class="cancel">
 | 
				
			||||||
			<el-button round @click="cancel">%i18n:@matching.cancel%</el-button>
 | 
								<el-button round @click="cancel">%i18n:@matching.cancel%</el-button>
 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,7 @@
 | 
				
			||||||
			<h2>%i18n:@invitations%</h2>
 | 
								<h2>%i18n:@invitations%</h2>
 | 
				
			||||||
			<div class="invitation" v-for="i in invitations" tabindex="-1" @click="accept(i)">
 | 
								<div class="invitation" v-for="i in invitations" tabindex="-1" @click="accept(i)">
 | 
				
			||||||
				<mk-avatar class="avatar" :user="i.parent"/>
 | 
									<mk-avatar class="avatar" :user="i.parent"/>
 | 
				
			||||||
				<span class="name"><b>{{ i.parent.name }}</b></span>
 | 
									<span class="name"><b>{{ i.parent | userName }}</b></span>
 | 
				
			||||||
				<span class="username">@{{ i.parent.username }}</span>
 | 
									<span class="username">@{{ i.parent.username }}</span>
 | 
				
			||||||
				<mk-time :time="i.createdAt"/>
 | 
									<mk-time :time="i.createdAt"/>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
| 
						 | 
					@ -40,7 +40,7 @@
 | 
				
			||||||
			<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
 | 
								<a class="game" v-for="g in myGames" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
 | 
				
			||||||
				<mk-avatar class="avatar" :user="g.user1"/>
 | 
									<mk-avatar class="avatar" :user="g.user1"/>
 | 
				
			||||||
				<mk-avatar class="avatar" :user="g.user2"/>
 | 
									<mk-avatar class="avatar" :user="g.user2"/>
 | 
				
			||||||
				<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
 | 
									<span><b>{{ g.user1 | userName }}</b> vs <b>{{ g.user2 | userName }}</b></span>
 | 
				
			||||||
				<span class="state">{{ g.isEnded ? '%i18n:@game-state.ended%' : '%i18n:@game-state.playing%' }}</span>
 | 
									<span class="state">{{ g.isEnded ? '%i18n:@game-state.ended%' : '%i18n:@game-state.playing%' }}</span>
 | 
				
			||||||
			</a>
 | 
								</a>
 | 
				
			||||||
		</section>
 | 
							</section>
 | 
				
			||||||
| 
						 | 
					@ -49,7 +49,7 @@
 | 
				
			||||||
			<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
 | 
								<a class="game" v-for="g in games" tabindex="-1" @click.prevent="go(g)" :href="`/reversi/${g.id}`">
 | 
				
			||||||
				<mk-avatar class="avatar" :user="g.user1"/>
 | 
									<mk-avatar class="avatar" :user="g.user1"/>
 | 
				
			||||||
				<mk-avatar class="avatar" :user="g.user2"/>
 | 
									<mk-avatar class="avatar" :user="g.user2"/>
 | 
				
			||||||
				<span><b>{{ g.user1.name }}</b> vs <b>{{ g.user2.name }}</b></span>
 | 
									<span><b>{{ g.user1 | userName }}</b> vs <b>{{ g.user2 | userName }}</b></span>
 | 
				
			||||||
				<span class="state">{{ g.isEnded ? '%i18n:@game-state.ended%' : '%i18n:@game-state.playing%' }}</span>
 | 
									<span class="state">{{ g.isEnded ? '%i18n:@game-state.ended%' : '%i18n:@game-state.playing%' }}</span>
 | 
				
			||||||
			</a>
 | 
								</a>
 | 
				
			||||||
		</section>
 | 
							</section>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,7 +79,8 @@ root(isDark)
 | 
				
			||||||
	> .content
 | 
						> .content
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		> .balloon
 | 
							> .balloon
 | 
				
			||||||
			display block
 | 
								display flex
 | 
				
			||||||
 | 
								align-items center
 | 
				
			||||||
			padding 0
 | 
								padding 0
 | 
				
			||||||
			max-width calc(100% - 16px)
 | 
								max-width calc(100% - 16px)
 | 
				
			||||||
			min-height 38px
 | 
								min-height 38px
 | 
				
			||||||
| 
						 | 
					@ -254,7 +255,7 @@ root(isDark)
 | 
				
			||||||
					font-size 11px
 | 
										font-size 11px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	&[data-is-deleted]
 | 
						&[data-is-deleted]
 | 
				
			||||||
		> .baloon
 | 
							> .balloon
 | 
				
			||||||
			opacity 0.5
 | 
								opacity 0.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.message[data-darkmode]
 | 
					.message[data-darkmode]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,10 +4,10 @@
 | 
				
			||||||
		<div class="mkw-calendar--body">
 | 
							<div class="mkw-calendar--body">
 | 
				
			||||||
			<div class="calendar" :data-is-holiday="isHoliday">
 | 
								<div class="calendar" :data-is-holiday="isHoliday">
 | 
				
			||||||
				<p class="month-and-year">
 | 
									<p class="month-and-year">
 | 
				
			||||||
					<span class="year">%i18n:@year-english%{{ year }}%i18n:@year-japanese%</span>
 | 
										<span class="year">{{ '%i18n:@year%'.split('{}')[0] }}{{ year }}{{ '%i18n:@year%'.split('{}')[1] }}</span>
 | 
				
			||||||
					<span class="month">%i18n:@month-english%{{ month }}%i18n:@month-japanese%</span>
 | 
										<span class="month">{{ '%i18n:@month%'.split('{}')[0] }}{{ month }}{{ '%i18n:@month%'.split('{}')[1] }}</span>
 | 
				
			||||||
				</p>
 | 
									</p>
 | 
				
			||||||
				<p class="day">%i18n:@day-english%{{ day }}%i18n:@day-japanese%</p>
 | 
									<p class="day">{{ '%i18n:@day%'.split('{}')[0] }}{{ day }}{{ '%i18n:@day%'.split('{}')[1] }}</p>
 | 
				
			||||||
				<p class="week-day">{{ weekDay }}</p>
 | 
									<p class="week-day">{{ weekDay }}</p>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
			<div class="info">
 | 
								<div class="info">
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@
 | 
				
			||||||
		<mk-ellipsis-icon/>
 | 
							<mk-ellipsis-icon/>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
	<p :class="$style.notAvailable" v-if="!fetching && notAvailable">%i18n:@not-available%</p>
 | 
						<p :class="$style.notAvailable" v-if="!fetching && notAvailable">%i18n:@not-available%</p>
 | 
				
			||||||
	<p :class="$style.empty" v-if="!fetching && empty">%fa:search%%i18n:@not-found-text-english%%i18n:@not-found-quotes1%{{ q }}%i18n:@not-found-quotes2%%i18n:@not-found-text-japanese%</p>
 | 
						<p :class="$style.empty" v-if="!fetching && empty">%fa:search% {{ '%i18n:not-found%'.split('{}')[0] }}{{ q }}{{ '%i18n:not-found%'.split('{}')[1] }}</p>
 | 
				
			||||||
	<mk-notes ref="timeline" :class="$style.notes" :more="existMore ? more : null"/>
 | 
						<mk-notes ref="timeline" :class="$style.notes" :more="existMore ? more : null"/>
 | 
				
			||||||
</mk-ui>
 | 
					</mk-ui>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
	<div :class="$style.loading" v-if="fetching">
 | 
						<div :class="$style.loading" v-if="fetching">
 | 
				
			||||||
		<mk-ellipsis-icon/>
 | 
							<mk-ellipsis-icon/>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
	<p :class="$style.empty" v-if="!fetching && empty">%i18n:no-posts-found-english%%fa:search%%i18n:left-quote%{{ q }}%i18n:right-quote%%i18n:no-posts-found-japanese%</p>
 | 
						<p :class="$style.empty" v-if="!fetching && empty">%fa:search% {{ '%i18n:no-posts-found%'.split('{}')[0] }}{{ q }}{{ '%i18n:no-posts-found%'.split('{}')[1] }}</p>
 | 
				
			||||||
	<mk-notes ref="timeline" :class="$style.notes" :more="existMore ? more : null"/>
 | 
						<mk-notes ref="timeline" :class="$style.notes" :more="existMore ? more : null"/>
 | 
				
			||||||
</mk-ui>
 | 
					</mk-ui>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
	<span slot="header">%fa:hashtag%{{ $route.params.tag }}</span>
 | 
						<span slot="header">%fa:hashtag%{{ $route.params.tag }}</span>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<main>
 | 
						<main>
 | 
				
			||||||
		<p v-if="!fetching && empty">%fa:search%%i18n:@no-posts-found-english%%i18n:@left-quote%{{ q }}%i18n:@right-quote%%i18n:@no-posts-found-japanese%</p>
 | 
							<p v-if="!fetching && empty">%fa:search% {{ '%i18n:no-posts-found%'.split('{}')[0] }}{{ q }}{{ '%i18n:no-posts-found%'.split('{}')[1] }}</p>
 | 
				
			||||||
		<mk-notes ref="timeline" :more="existMore ? more : null"/>
 | 
							<mk-notes ref="timeline" :more="existMore ? more : null"/>
 | 
				
			||||||
	</main>
 | 
						</main>
 | 
				
			||||||
</mk-ui>
 | 
					</mk-ui>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
import { IUser } from '../models/user';
 | 
					import { IUser } from '../models/user';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default function(user: IUser): string {
 | 
					export default function(user: IUser): string {
 | 
				
			||||||
	return user.name || '名無し';
 | 
						return user.name || user.username;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@ import { IUser, pack as packUser } from './user';
 | 
				
			||||||
import { pack as packNote } from './note';
 | 
					import { pack as packNote } from './note';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Notification = db.get<INotification>('notifications');
 | 
					const Notification = db.get<INotification>('notifications');
 | 
				
			||||||
 | 
					Notification.createIndex('notifieeId');
 | 
				
			||||||
export default Notification;
 | 
					export default Notification;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface INotification {
 | 
					export interface INotification {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,10 +19,6 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
	const [markAsRead = true, markAsReadErr] = $.bool.optional.get(params.markAsRead);
 | 
						const [markAsRead = true, markAsReadErr] = $.bool.optional.get(params.markAsRead);
 | 
				
			||||||
	if (markAsReadErr) return rej('invalid markAsRead param');
 | 
						if (markAsReadErr) return rej('invalid markAsRead param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'type' parameter
 | 
					 | 
				
			||||||
	const [type, typeErr] = $.arr($.str).optional.unique().get(params.type);
 | 
					 | 
				
			||||||
	if (typeErr) return rej('invalid type param');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
| 
						 | 
					@ -41,8 +37,7 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const mute = await Mute.find({
 | 
						const mute = await Mute.find({
 | 
				
			||||||
		muterId: user._id,
 | 
							muterId: user._id
 | 
				
			||||||
		deletedAt: { $exists: false }
 | 
					 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const query = {
 | 
						const query = {
 | 
				
			||||||
| 
						 | 
					@ -69,12 +64,6 @@ export default (params: any, user: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (type) {
 | 
					 | 
				
			||||||
		query.type = {
 | 
					 | 
				
			||||||
			$in: type
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (sinceId) {
 | 
						if (sinceId) {
 | 
				
			||||||
		sort._id = 1;
 | 
							sort._id = 1;
 | 
				
			||||||
		query._id = {
 | 
							query._id = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -164,14 +164,19 @@ export default async (user: IUser, data: Option, silent = false) => new Promise<
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// 通知
 | 
							// 通知
 | 
				
			||||||
		nm.push(data.reply.userId, 'reply');
 | 
							if (isLocalUser(data.reply._user)) {
 | 
				
			||||||
 | 
								nm.push(data.reply.userId, 'reply');
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// If it is renote
 | 
						// If it is renote
 | 
				
			||||||
	if (data.renote) {
 | 
						if (data.renote) {
 | 
				
			||||||
		// Notify
 | 
					 | 
				
			||||||
		const type = data.text ? 'quote' : 'renote';
 | 
							const type = data.text ? 'quote' : 'renote';
 | 
				
			||||||
		nm.push(data.renote.userId, type);
 | 
					
 | 
				
			||||||
 | 
							// Notify
 | 
				
			||||||
 | 
							if (isLocalUser(data.renote._user)) {
 | 
				
			||||||
 | 
								nm.push(data.renote.userId, type);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Fetch watchers
 | 
							// Fetch watchers
 | 
				
			||||||
		nmRelatedPromises.push(notifyToWatchersOfRenotee(data.renote, user, nm, type));
 | 
							nmRelatedPromises.push(notifyToWatchersOfRenotee(data.renote, user, nm, type));
 | 
				
			||||||
| 
						 | 
					@ -181,15 +186,9 @@ export default async (user: IUser, data: Option, silent = false) => new Promise<
 | 
				
			||||||
			watch(user._id, data.renote);
 | 
								watch(user._id, data.renote);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// If it is quote renote
 | 
							// Publish event
 | 
				
			||||||
		if (data.text) {
 | 
							if (!user._id.equals(data.renote.userId)) {
 | 
				
			||||||
			// Add mention
 | 
								publishUserStream(data.renote.userId, 'renote', noteObj);
 | 
				
			||||||
			nm.push(data.renote.userId, 'quote');
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			// Publish event
 | 
					 | 
				
			||||||
			if (!user._id.equals(data.renote.userId)) {
 | 
					 | 
				
			||||||
				publishUserStream(data.renote.userId, 'renote', noteObj);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue