a0a5c835aa
- Implemented API for fetching firearms and firearm details. - Created a new page for displaying the list of firearms with search and filter options. - Added Redux slice for managing firearms state. - Integrated Redux Persist for state persistence. - Updated routing to include firearms page. - Removed obsolete modification codes data. - Enhanced UI with responsive grid layout for firearms display. - Added utility functions for handling URL query parameters.
39 lines
947 B
TypeScript
39 lines
947 B
TypeScript
import { Direction, Firearm, FirearmType, Page, PageQueryParams } from "@/types"
|
|
import { WebClient } from "@/shared/web-client"
|
|
import { asUrlSearchParam } from "@/utils/query-param-utils.ts"
|
|
|
|
interface FirearmParams extends PageQueryParams {
|
|
type?: FirearmType
|
|
}
|
|
|
|
/**
|
|
* 查询武器列表
|
|
*
|
|
* @param params 分页查询参数¬
|
|
*/
|
|
export async function getFirearms(params?: FirearmParams): Promise<Page<Firearm>> {
|
|
let uri = "/firearms"
|
|
const urlSearchParam = asUrlSearchParam(params)
|
|
|
|
if (params?.type) {
|
|
urlSearchParam.append("type", params.type)
|
|
}
|
|
|
|
if (urlSearchParam.size > 0) {
|
|
uri = uri.concat("?", urlSearchParam.toString())
|
|
}
|
|
|
|
const { data } = await WebClient.get<Page<Firearm>>(uri)
|
|
return data
|
|
}
|
|
|
|
/**
|
|
* 根据 ID 查询武器
|
|
*
|
|
* @param id 武器 ID
|
|
*/
|
|
export async function getFirearm(id: number): Promise<Firearm> {
|
|
const { data } = await WebClient.get<Firearm>(`/firearms/${id}`)
|
|
return data
|
|
}
|