Resolve #7222
This commit is contained in:
		
							parent
							
								
									5c6e389cd5
								
							
						
					
					
						commit
						eefbe097c0
					
				
					 4 changed files with 29 additions and 2 deletions
				
			
		|  | @ -704,6 +704,7 @@ editCode: "コードを編集" | |||
| apply: "適用" | ||||
| receiveAnnouncementFromInstance: "インスタンスからのお知らせを受け取る" | ||||
| emailNotification: "メール通知" | ||||
| inChannelSearch: "チャンネル内検索" | ||||
| 
 | ||||
| _email: | ||||
|   _follow: | ||||
|  |  | |||
|  | @ -28,6 +28,7 @@ export default defineComponent({ | |||
| 				limit: 10, | ||||
| 				params: () => ({ | ||||
| 					query: this.$route.query.q, | ||||
| 					channelId: this.$route.query.channel, | ||||
| 				}) | ||||
| 			}, | ||||
| 		}; | ||||
|  |  | |||
|  | @ -99,7 +99,10 @@ | |||
| 			<div class="right"> | ||||
| 				<div class="instance">{{ instanceName }}</div> | ||||
| 				<XHeaderClock class="clock"/> | ||||
| 				<button class="_button button search" @click="search" v-tooltip="$ts.search"> | ||||
| 				<button class="_button button search" v-if="tl.startsWith('channel:') && currentChannel" @click="inChannelSearch" v-tooltip="$ts.inChannelSearch"> | ||||
| 					<Fa :icon="faSearch"/> | ||||
| 				</button> | ||||
| 				<button class="_button button search" v-else @click="search" v-tooltip="$ts.search"> | ||||
| 					<Fa :icon="faSearch"/> | ||||
| 				</button> | ||||
| 				<button class="_button button follow" v-if="tl.startsWith('channel:') && currentChannel" :class="{ followed: currentChannel.isFollowing }" @click="toggleChannelFollow" v-tooltip="currentChannel.isFollowing ? $ts.unfollow : $ts.follow"> | ||||
|  | @ -249,6 +252,15 @@ export default defineComponent({ | |||
| 			search(); | ||||
| 		}, | ||||
| 
 | ||||
| 		async inChannelSearch() { | ||||
| 			const { canceled, result: query } = await os.dialog({ | ||||
| 				title: this.$ts.inChannelSearch, | ||||
| 				input: true | ||||
| 			}); | ||||
| 			if (canceled || query == null || query === '') return; | ||||
| 			router.push(`/search?q=${encodeURIComponent(query)}&channel=${this.currentChannel.id}`); | ||||
| 		}, | ||||
| 
 | ||||
| 		top() { | ||||
| 			window.scroll({ top: 0, behavior: 'smooth' }); | ||||
| 		}, | ||||
|  |  | |||
|  | @ -46,6 +46,11 @@ export const meta = { | |||
| 			validator: $.optional.nullable.type(ID), | ||||
| 			default: null | ||||
| 		}, | ||||
| 
 | ||||
| 		channelId: { | ||||
| 			validator: $.optional.nullable.type(ID), | ||||
| 			default: null | ||||
| 		}, | ||||
| 	}, | ||||
| 
 | ||||
| 	res: { | ||||
|  | @ -64,7 +69,15 @@ export const meta = { | |||
| 
 | ||||
| export default define(meta, async (ps, me) => { | ||||
| 	if (es == null) { | ||||
| 		const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId) | ||||
| 		const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId); | ||||
| 
 | ||||
| 		if (ps.userId) { | ||||
| 			query.andWhere('note.userId = :userId', { userId: ps.userId }); | ||||
| 		} else if (ps.channelId) { | ||||
| 			query.andWhere('note.channelId = :channelId', { channelId: ps.channelId }); | ||||
| 		} | ||||
| 
 | ||||
| 		query | ||||
| 			.andWhere('note.text ILIKE :q', { q: `%${ps.query}%` }) | ||||
| 			.leftJoinAndSelect('note.user', 'user'); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue