mirror of
https://github.com/Myzel394/kleckrelay-website.git
synced 2025-06-19 15:55:26 +02:00
added search functionality
This commit is contained in:
parent
fff3399069
commit
1cfcd18567
@ -1,13 +1,24 @@
|
||||
import {AliasList, PaginationResult} from "~/server-types"
|
||||
import {AliasList, GetPageData, PaginationResult} from "~/server-types"
|
||||
import {client} from "~/constants/axios-client"
|
||||
|
||||
export default async function getAliases(): Promise<
|
||||
PaginationResult<AliasList>
|
||||
> {
|
||||
export interface GetAliasesData extends GetPageData {
|
||||
query?: string
|
||||
}
|
||||
|
||||
export default async function getAliases({
|
||||
query,
|
||||
size,
|
||||
page,
|
||||
}: GetAliasesData): Promise<PaginationResult<AliasList>> {
|
||||
const {data} = await client.get(
|
||||
`${import.meta.env.VITE_SERVER_BASE_URL}/alias`,
|
||||
{
|
||||
withCredentials: true,
|
||||
params: {
|
||||
query,
|
||||
size,
|
||||
page,
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -1,26 +1,55 @@
|
||||
import {ReactElement, useState} from "react"
|
||||
import {ReactElement, useState, useTransition} from "react"
|
||||
import {AxiosError} from "axios"
|
||||
import {MdSearch} from "react-icons/md"
|
||||
|
||||
import {useQuery} from "@tanstack/react-query"
|
||||
import {InputAdornment, TextField} from "@mui/material"
|
||||
|
||||
import {AliasList, PaginationResult} from "~/server-types"
|
||||
import {QueryResult, SimplePage} from "~/components"
|
||||
import AliasesDetails from "~/route-widgets/AliasesRoute/AliasesDetails"
|
||||
import QueryResult from "~/components/QueryResult"
|
||||
import SimplePage from "~/components/SimplePage"
|
||||
import getAliases from "~/apis/get-aliases"
|
||||
|
||||
export default function AliasesRoute(): ReactElement {
|
||||
const query = useQuery<PaginationResult<AliasList>, AxiosError>(
|
||||
["get_aliases"],
|
||||
getAliases,
|
||||
const [searchValue, setSearchValue] = useState<string>("")
|
||||
const [queryValue, setQueryValue] = useState<string>("")
|
||||
const [, startTransition] = useTransition()
|
||||
|
||||
const query = useQuery<PaginationResult<AliasList>, AxiosError, void>(
|
||||
["get_aliases", queryValue],
|
||||
() =>
|
||||
getAliases({
|
||||
query: queryValue,
|
||||
}),
|
||||
)
|
||||
|
||||
const [showCustomCreateDialog, setShowCustomCreateDialog] =
|
||||
useState<boolean>(false)
|
||||
|
||||
return (
|
||||
<SimplePage title="Aliases">
|
||||
<QueryResult<PaginationResult<AliasList>> query={query}>
|
||||
<SimplePage
|
||||
title="Aliases"
|
||||
pageOptionsActions={
|
||||
<TextField
|
||||
value={searchValue}
|
||||
onChange={event => {
|
||||
setSearchValue(event.target.value)
|
||||
startTransition(() => {
|
||||
setQueryValue(event.target.value)
|
||||
})
|
||||
}}
|
||||
label="Search"
|
||||
id="search"
|
||||
InputProps={{
|
||||
startAdornment: (
|
||||
<InputAdornment position="start">
|
||||
<MdSearch />
|
||||
</InputAdornment>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
}
|
||||
>
|
||||
<QueryResult<PaginationResult<AliasList>, AxiosError, void>
|
||||
query={query}
|
||||
>
|
||||
{result => <AliasesDetails aliases={result.items} />}
|
||||
</QueryResult>
|
||||
</SimplePage>
|
||||
|
@ -164,3 +164,8 @@ export interface User
|
||||
notes: UserNote
|
||||
isDecrypted: true
|
||||
}
|
||||
|
||||
export interface GetPageData {
|
||||
page?: number
|
||||
size?: number
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user