Commit 6482b896 authored by Chunchi Che's avatar Chunchi Che

fix DeckBuild crash

parent 5ebda8bb
Pipeline #23379 passed with stages
in 13 minutes and 30 seconds
...@@ -13,6 +13,8 @@ export interface IDeck { ...@@ -13,6 +13,8 @@ export interface IDeck {
side: number[]; side: number[];
} }
export const emptyDeck: IDeck = { deckName: "", main: [], extra: [], side: [] };
export const deckStore = proxy({ export const deckStore = proxy({
decks: [] as IDeck[], decks: [] as IDeck[],
......
import { proxy } from "valtio"; import { proxy } from "valtio";
import { IDeck } from "./deckStore"; import { emptyDeck, IDeck } from "./deckStore";
import { type NeosStore } from "./shared"; import { type NeosStore } from "./shared";
export enum SideStage { export enum SideStage {
...@@ -13,8 +13,6 @@ export enum SideStage { ...@@ -13,8 +13,6 @@ export enum SideStage {
WAITING = 8, // 观战者等待双方玩家 WAITING = 8, // 观战者等待双方玩家
} }
const emptyDeck: IDeck = { deckName: "", main: [], extra: [], side: [] };
class SideStore implements NeosStore { class SideStore implements NeosStore {
stage: SideStage = SideStage.NONE; stage: SideStage = SideStage.NONE;
deck: IDeck = emptyDeck; deck: IDeck = emptyDeck;
......
...@@ -28,7 +28,7 @@ import { subscribeKey } from "valtio/utils"; ...@@ -28,7 +28,7 @@ import { subscribeKey } from "valtio/utils";
import { type CardMeta, searchCards } from "@/api"; import { type CardMeta, searchCards } from "@/api";
import { isToken } from "@/common"; import { isToken } from "@/common";
import { FtsConditions } from "@/middleware/sqlite/fts"; import { FtsConditions } from "@/middleware/sqlite/fts";
import { deckStore, type IDeck, initStore } from "@/stores"; import { deckStore, emptyDeck, type IDeck, initStore } from "@/stores";
import { import {
Background, Background,
DeckCard, DeckCard,
...@@ -72,7 +72,9 @@ export const loader: LoaderFunction = async () => { ...@@ -72,7 +72,9 @@ export const loader: LoaderFunction = async () => {
export const Component: React.FC = () => { export const Component: React.FC = () => {
const snapDecks = useSnapshot(deckStore); const snapDecks = useSnapshot(deckStore);
const { progress } = useSnapshot(initStore.sqlite); const { progress } = useSnapshot(initStore.sqlite);
const [selectedDeck, setSelectedDeck] = useState<IDeck>(deckStore.decks[0]); const [selectedDeck, setSelectedDeck] = useState<IDeck>(
deckStore.decks.at(0) ?? emptyDeck,
);
const { message } = App.useApp(); const { message } = App.useApp();
...@@ -105,7 +107,7 @@ export const Component: React.FC = () => { ...@@ -105,7 +107,7 @@ export const Component: React.FC = () => {
decks={snapDecks.decks} decks={snapDecks.decks}
selected={selectedDeck.deckName} selected={selectedDeck.deckName}
onSelect={(name) => onSelect={(name) =>
setSelectedDeck(deckStore.get(name) ?? deckStore.decks[0]) setSelectedDeck(deckStore.get(name) ?? emptyDeck)
} }
onDelete={async (name) => await deckStore.delete(name)} onDelete={async (name) => await deckStore.delete(name)}
onDownload={(name) => { onDownload={(name) => {
......
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