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: "適用" | apply: "適用" | ||||||
| receiveAnnouncementFromInstance: "インスタンスからのお知らせを受け取る" | receiveAnnouncementFromInstance: "インスタンスからのお知らせを受け取る" | ||||||
| emailNotification: "メール通知" | emailNotification: "メール通知" | ||||||
|  | inChannelSearch: "チャンネル内検索" | ||||||
| 
 | 
 | ||||||
| _email: | _email: | ||||||
|   _follow: |   _follow: | ||||||
|  |  | ||||||
|  | @ -28,6 +28,7 @@ export default defineComponent({ | ||||||
| 				limit: 10, | 				limit: 10, | ||||||
| 				params: () => ({ | 				params: () => ({ | ||||||
| 					query: this.$route.query.q, | 					query: this.$route.query.q, | ||||||
|  | 					channelId: this.$route.query.channel, | ||||||
| 				}) | 				}) | ||||||
| 			}, | 			}, | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
|  | @ -99,7 +99,10 @@ | ||||||
| 			<div class="right"> | 			<div class="right"> | ||||||
| 				<div class="instance">{{ instanceName }}</div> | 				<div class="instance">{{ instanceName }}</div> | ||||||
| 				<XHeaderClock class="clock"/> | 				<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"/> | 					<Fa :icon="faSearch"/> | ||||||
| 				</button> | 				</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"> | 				<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(); | 			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() { | 		top() { | ||||||
| 			window.scroll({ top: 0, behavior: 'smooth' }); | 			window.scroll({ top: 0, behavior: 'smooth' }); | ||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
|  | @ -46,6 +46,11 @@ export const meta = { | ||||||
| 			validator: $.optional.nullable.type(ID), | 			validator: $.optional.nullable.type(ID), | ||||||
| 			default: null | 			default: null | ||||||
| 		}, | 		}, | ||||||
|  | 
 | ||||||
|  | 		channelId: { | ||||||
|  | 			validator: $.optional.nullable.type(ID), | ||||||
|  | 			default: null | ||||||
|  | 		}, | ||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
| 	res: { | 	res: { | ||||||
|  | @ -64,7 +69,15 @@ export const meta = { | ||||||
| 
 | 
 | ||||||
| export default define(meta, async (ps, me) => { | export default define(meta, async (ps, me) => { | ||||||
| 	if (es == null) { | 	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}%` }) | 			.andWhere('note.text ILIKE :q', { q: `%${ps.query}%` }) | ||||||
| 			.leftJoinAndSelect('note.user', 'user'); | 			.leftJoinAndSelect('note.user', 'user'); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue