Commit 4a4f028b authored by Chunchi Che's avatar Chunchi Che

update

parent 8812235d
Pipeline #27609 passed with stages
in 8 minutes and 54 seconds
......@@ -9,7 +9,7 @@ const API_PATH = "api/mdpro3/deck/list";
export interface PullReq {
page?: number;
size?: number;
keyWord?: number;
keyWord?: string;
sortLike?: boolean;
sortRank?: boolean;
contributor?: string;
......
import React, { memo } from "react";
import React, { memo, useEffect } from "react";
import { proxy, useSnapshot } from "valtio";
import { pullDecks } from "@/api";
import { MdproDeck } from "@/api/mdproDeck/schema";
import { IconFont } from "@/ui/Shared";
......@@ -10,12 +11,38 @@ interface Props {
query: string;
page: number;
decks: MdproDeck[];
pages: number;
}
const store = proxy<Props>({ query: "", page: 1, decks: [] });
// TODO: useConfig
const PAGE_SIZE = 20;
const store = proxy<Props>({ query: "", page: 1, decks: [], pages: 0 });
export const DeckResults: React.FC = memo(() => {
const snap = useSnapshot(store);
useEffect(() => {
const update = async () => {
const resp = await pullDecks({
page: snap.page,
size: PAGE_SIZE,
keyWord: snap.query !== "" ? snap.query : undefined,
sortLike: true,
});
if (resp?.data) {
const { pages, records: newDecks } = resp.data;
store.pages = pages;
store.decks = newDecks;
} else {
store.decks = [];
}
};
update();
}, [snap.query, snap.page]);
return (
<>
{snap.decks.length ? (
......@@ -29,3 +56,5 @@ export const DeckResults: React.FC = memo(() => {
</>
);
});
export const freshMdrpoDecks = (query: string) => (store.query = query);
......@@ -21,7 +21,7 @@ import { Filter } from "../Filter";
import styles from "../index.module.scss";
import { editDeckStore } from "../store";
import { CardResults } from "./CardResults";
import { DeckResults } from "./DeckResults";
import { DeckResults, freshMdrpoDecks } from "./DeckResults";
/** 卡片库,选择卡片加入正在编辑的卡组 */
export const DeckDatabase: React.FC = () => {
......@@ -68,10 +68,14 @@ export const DeckDatabase: React.FC = () => {
).map(([label, onClick], key) => ({ key, label, onClick }));
const handleSearch = (conditions: FtsConditions = searchConditions) => {
if (showMdproDecks) {
freshMdrpoDecks(searchWord);
} else {
const result = searchCards({ query: searchWord, conditions })
.filter((card) => !isToken(card.data.type ?? 0))
.sort(sortRef.current); // 衍生物不显示
setSearchCardResult(() => result);
}
};
useEffect(() => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment