Merge pull request #1706 from Dokploy/1649-webserver-restore-backups-bug

feat: implement debounced search functionality in RestoreBackup compo…
This commit is contained in:
Mauricio Siu
2025-04-13 20:30:55 -06:00
committed by GitHub

View File

@@ -84,6 +84,7 @@ export const RestoreBackup = ({
}: Props) => { }: Props) => {
const [isOpen, setIsOpen] = useState(false); const [isOpen, setIsOpen] = useState(false);
const [search, setSearch] = useState(""); const [search, setSearch] = useState("");
const [debouncedSearchTerm, setDebouncedSearchTerm] = useState("");
const { data: destinations = [] } = api.destination.all.useQuery(); const { data: destinations = [] } = api.destination.all.useQuery();
@@ -99,13 +100,18 @@ export const RestoreBackup = ({
const destionationId = form.watch("destinationId"); const destionationId = form.watch("destinationId");
const debouncedSetSearch = debounce((value: string) => { const debouncedSetSearch = debounce((value: string) => {
setDebouncedSearchTerm(value);
}, 150);
const handleSearchChange = (value: string) => {
setSearch(value); setSearch(value);
}, 300); debouncedSetSearch(value);
};
const { data: files = [], isLoading } = api.backup.listBackupFiles.useQuery( const { data: files = [], isLoading } = api.backup.listBackupFiles.useQuery(
{ {
destinationId: destionationId, destinationId: destionationId,
search, search: debouncedSearchTerm,
serverId: serverId ?? "", serverId: serverId ?? "",
}, },
{ {
@@ -284,7 +290,8 @@ export const RestoreBackup = ({
<Command> <Command>
<CommandInput <CommandInput
placeholder="Search backup files..." placeholder="Search backup files..."
onValueChange={debouncedSetSearch} value={search}
onValueChange={handleSearchChange}
className="h-9" className="h-9"
/> />
{isLoading ? ( {isLoading ? (
@@ -308,6 +315,8 @@ export const RestoreBackup = ({
key={file} key={file}
onSelect={() => { onSelect={() => {
form.setValue("backupFile", file); form.setValue("backupFile", file);
setSearch(file);
setDebouncedSearchTerm(file);
}} }}
> >
<div className="flex w-full justify-between"> <div className="flex w-full justify-between">