fix(discover): prevent empty results when keyword changes without search (#4759)

Co-authored-by: Innei <i@innei.in>
This commit is contained in:
Konv Suu 2025-11-27 01:09:36 +08:00 committed by GitHub
parent 844b5f490f
commit 07acce799e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 6 additions and 5 deletions

View File

@ -18,7 +18,7 @@ import { repository } from "@pkg"
import { useMutation } from "@tanstack/react-query"
import { produce } from "immer"
import type { ChangeEvent, CompositionEvent } from "react"
import { startTransition, useCallback, useEffect, useMemo } from "react"
import { startTransition, useCallback, useEffect, useMemo, useRef } from "react"
import { useForm } from "react-hook-form"
import { useTranslation } from "react-i18next"
import { useSearchParams } from "react-router"
@ -121,7 +121,7 @@ export function UnifiedDiscoverForm() {
const { watch, trigger } = form
const target = watch("target")
const atomKey = keywordFromSearch + target
const atomKey = useRef(keywordFromSearch + target)
// Validate default value from search params
useEffect(() => {
@ -173,7 +173,7 @@ export function UnifiedDiscoverForm() {
setDiscoverSearchData((prev) => ({
...prev,
[atomKey]: data,
[atomKey.current]: data,
}))
return data
@ -238,7 +238,7 @@ export function UnifiedDiscoverForm() {
if (!currentData) return
setDiscoverSearchData(
produce(currentData, (draft) => {
const sub = (draft[atomKey] || []).find((i) => {
const sub = (draft[atomKey.current] || []).find((i) => {
if (item.feed) {
return i.feed?.id === item.feed.id
}
@ -261,7 +261,7 @@ export function UnifiedDiscoverForm() {
if (!currentData) return
setDiscoverSearchData(
produce(currentData, (draft) => {
const sub = (draft[atomKey] || []).find(
const sub = (draft[atomKey.current] || []).find(
(i) => i.feed?.id === item.feed?.id || i.list?.id === item.list?.id,
)
if (!sub) return
@ -285,6 +285,7 @@ export function UnifiedDiscoverForm() {
if (!ensureLogin()) {
return
}
atomKey.current = values.keyword + values.target
mutation.mutate({ keyword: values.keyword, target: values.target })
}