Resolve #7222
This commit is contained in:
parent
5c6e389cd5
commit
eefbe097c0
|
@ -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…
Reference in New Issue