検索からハッシュタグのページが開けるように、users/searchに@
から始まる文字列が与えられた際の処理を修正 等 (#13858)
* enhance(frontend): 検索からハッシュタグのページを開けるように
* fix(frontend): 照会で入力が`#`のみの場合は`/tags/`に遷移しないように
* docs(changelog): update changelog
* enhance(frontend): ユーザー検索からもハッシュタグのページを開けるように
* docs(changelog): update changelog
* enhance(frontend): 検索範囲等が指定されている時は照会/ハッシュタグページを開かないように
* enhance(frontend): 検索内容に空白が含まれている場合は照会/ハッシュタグページを開かないように
* docs(changelog): update changelog
* Revert "enhance(frontend): 検索範囲等が指定されている時は照会/ハッシュタグページを開かないように"
This reverts commit f84eecea96
.
* enhance(frontend): 検索から照会/ハッシュタグページを開くかどうか確認するように
* docs(changelog): update changelog
* chore: fix lint
* docs(changelog): update changelog insertion position
* enhance(frontend): 検索から`@user@host`の形式で照会出来るように
* fix(frontend): 照会で入力が`@`のみの場合に`/@`に遷移しないように
* fix(backend): `users/search`において`@`から始まるqueryに対する処理が正しくなかった問題を修正
* docs(changelog): update changelog
* chore(backend): fix lint error
* fix(backend): more improvements for users/search when query startswith `@`
* chore: unify common conditions
* docs(changelog): refine changelog
* chore(backend): fix lint error
* MkInputをpreventに対応させ、enterの意図せぬ伝搬を防ぐ
* chore(frontend/search.user): use .prevent to prevent the propagation of enter instead of setTimeout
---------
Co-authored-by: samunohito <46447427+samunohito@users.noreply.github.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
Co-authored-by: taichanne30 <dev@taichan.site>
This commit is contained in:
@@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||
<template>
|
||||
<div class="_gaps">
|
||||
<div class="_gaps">
|
||||
<MkInput v-model="searchQuery" :large="true" :autofocus="true" type="search" @enter="search">
|
||||
<MkInput v-model="searchQuery" :large="true" :autofocus="true" type="search" @enter.prevent="search">
|
||||
<template #prefix><i class="ti ti-search"></i></template>
|
||||
</MkInput>
|
||||
<MkFoldableSection :expanded="true">
|
||||
@@ -143,25 +143,55 @@ async function search() {
|
||||
if (query == null || query === '') return;
|
||||
|
||||
//#region AP lookup
|
||||
if (query.startsWith('https://')) {
|
||||
const promise = misskeyApi('ap/show', {
|
||||
uri: query,
|
||||
if (query.startsWith('https://') && !query.includes(' ')) {
|
||||
const confirm = await os.confirm({
|
||||
type: 'info',
|
||||
text: i18n.ts.lookupConfirm,
|
||||
});
|
||||
if (!confirm.canceled) {
|
||||
const promise = misskeyApi('ap/show', {
|
||||
uri: query,
|
||||
});
|
||||
|
||||
os.promiseDialog(promise, null, null, i18n.ts.fetchingAsApObject);
|
||||
os.promiseDialog(promise, null, null, i18n.ts.fetchingAsApObject);
|
||||
|
||||
const res = await promise;
|
||||
const res = await promise;
|
||||
|
||||
if (res.type === 'User') {
|
||||
router.push(`/@${res.object.username}@${res.object.host}`);
|
||||
} else if (res.type === 'Note') {
|
||||
router.push(`/notes/${res.object.id}`);
|
||||
if (res.type === 'User') {
|
||||
router.push(`/@${res.object.username}@${res.object.host}`);
|
||||
} else if (res.type === 'Note') {
|
||||
router.push(`/notes/${res.object.id}`);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
//#endregion
|
||||
|
||||
if (query.length > 1 && !query.includes(' ')) {
|
||||
if (query.startsWith('@')) {
|
||||
const confirm = await os.confirm({
|
||||
type: 'info',
|
||||
text: i18n.ts.lookupConfirm,
|
||||
});
|
||||
if (!confirm.canceled) {
|
||||
router.push(`/${query}`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (query.startsWith('#')) {
|
||||
const confirm = await os.confirm({
|
||||
type: 'info',
|
||||
text: i18n.ts.openTagPageConfirm,
|
||||
});
|
||||
if (!confirm.canceled) {
|
||||
router.push(`/tags/${encodeURIComponent(query.substring(1))}`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
notePagination.value = {
|
||||
endpoint: 'notes/search',
|
||||
limit: 10,
|
||||
|
Reference in New Issue
Block a user