Commit 96bc2be9 authored by chechunchi's avatar chechunchi

fix the mdproDeck implemetaion

parent d76858d3
Pipeline #41976 passed with stages
in 3 minutes and 38 seconds
...@@ -5,13 +5,23 @@ import { MdproResp } from "./schema"; ...@@ -5,13 +5,23 @@ import { MdproResp } from "./schema";
import { mdproHeaders } from "./util"; import { mdproHeaders } from "./util";
const { mdproServer } = useConfig(); const { mdproServer } = useConfig();
const API_PATH = "/api/mdpro3/sync/single"; const API_PATH = "api/mdpro3/sync/single";
interface DeleteReq { interface DeleteReq {
userId: number; userId: number;
deckContributor: string;
deck: { deck: {
deckId: string; deckId: string;
deckName: string;
deckType: string;
deckCoverCard1: number;
deckCoverCard2: number;
deckCoverCard3: number;
deckCase: number;
deckProtector: number;
deckYdk: string;
isDelete: boolean; isDelete: boolean;
timestamp: number;
}; };
} }
...@@ -19,6 +29,7 @@ export async function deleteDeck( ...@@ -19,6 +29,7 @@ export async function deleteDeck(
userID: number, userID: number,
token: string, token: string,
deckID: string, deckID: string,
deckContributor: string = "", // Added parameter with default
): Promise<MdproResp<boolean> | undefined> { ): Promise<MdproResp<boolean> | undefined> {
const myHeaders = mdproHeaders(); const myHeaders = mdproHeaders();
myHeaders.append("Content-Type", "application/json"); myHeaders.append("Content-Type", "application/json");
...@@ -26,9 +37,19 @@ export async function deleteDeck( ...@@ -26,9 +37,19 @@ export async function deleteDeck(
const req: DeleteReq = { const req: DeleteReq = {
userId: userID, userId: userID,
deckContributor: deckContributor,
deck: { deck: {
deckId: deckID, deckId: deckID,
deckName: "", // Required but not used for delete
deckType: "", // Required field
deckCoverCard1: 0, // Required field
deckCoverCard2: 0, // Required field
deckCoverCard3: 0, // Required field
deckCase: 0, // Required field
deckProtector: 0, // Required field
deckYdk: "", // Required but not used for delete
isDelete: true, isDelete: true,
timestamp: Date.now(),
}, },
}; };
......
...@@ -6,7 +6,7 @@ import { mdproHeaders } from "./util"; ...@@ -6,7 +6,7 @@ import { mdproHeaders } from "./util";
const { mdproServer } = useConfig(); const { mdproServer } = useConfig();
const API_PATH = "/api/mdpro3/deck/deckId"; const API_PATH = "api/mdpro3/deck/deckId";
export async function generateDeck(): Promise<MdproResp<string> | undefined> { export async function generateDeck(): Promise<MdproResp<string> | undefined> {
const myHeaders = mdproHeaders(); const myHeaders = mdproHeaders();
......
...@@ -6,7 +6,7 @@ import { mdproHeaders } from "./util"; ...@@ -6,7 +6,7 @@ import { mdproHeaders } from "./util";
const { mdproServer } = useConfig(); const { mdproServer } = useConfig();
const API_PATH = "/api/mdpro3/deck"; const API_PATH = "api/mdpro3/deck";
export async function mgetDeck( export async function mgetDeck(
id: string, id: string,
......
...@@ -6,7 +6,7 @@ import { MdproDeck, MdproResp } from "./schema"; ...@@ -6,7 +6,7 @@ import { MdproDeck, MdproResp } from "./schema";
import { mdproHeaders } from "./util"; import { mdproHeaders } from "./util";
const { mdproServer } = useConfig(); const { mdproServer } = useConfig();
const API_PATH = "/api/mdpro3/sync/"; const API_PATH = "api/mdpro3/sync";
export interface PersonalListReq { export interface PersonalListReq {
/* ID of MyCard Account */ /* ID of MyCard Account */
......
...@@ -19,13 +19,19 @@ export interface MdproDeck { ...@@ -19,13 +19,19 @@ export interface MdproDeck {
deckName: string; deckName: string;
deckRank?: number; deckRank?: number;
deckLike?: number; deckLike?: number;
deckUploadDate?: string; deckUploadDate?: number; // Changed to number (13-digit timestamp)
deckUpdateDate?: string; deckUpdateDate?: number; // Changed to number (13-digit timestamp)
deckCoverCard1?: number; // NEW: Cover card 1 ID
deckCoverCard2?: number; // NEW: Cover card 2 ID
deckCoverCard3?: number; // NEW: Cover card 3 ID
/* Content of the deck. */ /* Content of the deck. */
deckYdk?: string; deckYdk?: string;
deckCase: number; deckCase: number;
deckProtector?: number; // NEW: Card protector/sleeve
/* User ID of MyCard Account */ /* User ID of MyCard Account */
userId: number; userId: number;
isDelete?: boolean; // NEW: Whether deck is deleted
isPublic?: boolean; // NEW: Whether deck is public
} }
export interface MdproDeckLike { export interface MdproDeckLike {
...@@ -33,6 +39,10 @@ export interface MdproDeckLike { ...@@ -33,6 +39,10 @@ export interface MdproDeckLike {
deckContributor: string; deckContributor: string;
deckName: string; deckName: string;
deckLike?: number; deckLike?: number;
deckCoverCard1?: number; // NEW: Cover card 1 ID
deckCoverCard2?: number; // NEW: Cover card 2 ID
deckCoverCard3?: number; // NEW: Cover card 3 ID
deckCase: number; deckCase: number;
lastDate?: string; deckProtector?: number; // NEW: Card protector/sleeve
lastDate?: number; // Changed to number (timestamp)
} }
...@@ -5,7 +5,7 @@ import { MdproResp } from "./schema"; ...@@ -5,7 +5,7 @@ import { MdproResp } from "./schema";
import { mdproHeaders } from "./util"; import { mdproHeaders } from "./util";
const { mdproServer } = useConfig(); const { mdproServer } = useConfig();
const API_PATH = "/api/mdpro3/sync/single"; const API_PATH = "api/mdpro3/sync/single";
export interface SyncReq { export interface SyncReq {
userId: number; userId: number;
...@@ -13,8 +13,15 @@ export interface SyncReq { ...@@ -13,8 +13,15 @@ export interface SyncReq {
deck: { deck: {
deckId: string; deckId: string;
deckName: string; deckName: string;
deckType?: string; // NEW: Deck type/category (optional, can use empty string)
deckCoverCard1?: number; // NEW: Cover card 1
deckCoverCard2?: number; // NEW: Cover card 2
deckCoverCard3?: number; // NEW: Cover card 3
deckCase: number; deckCase: number;
deckProtector?: number; // NEW: Card protector/sleeve
deckYdk: string; deckYdk: string;
isDelete?: boolean; // NEW: Whether this is a delete operation
timestamp?: number; // NEW: Update timestamp (10 or 13 digit)
}; };
} }
......
...@@ -5,7 +5,7 @@ import { MdproResp } from "./schema"; ...@@ -5,7 +5,7 @@ import { MdproResp } from "./schema";
import { mdproHeaders } from "./util"; import { mdproHeaders } from "./util";
const { mdproServer } = useConfig(); const { mdproServer } = useConfig();
const API_PATH = "/api/mdpro3/deck/public"; const API_PATH = "api/mdpro3/deck/public";
export interface UpdatePublicReq { export interface UpdatePublicReq {
userId: number; userId: number;
......
...@@ -32,8 +32,15 @@ export async function uploadDeck( ...@@ -32,8 +32,15 @@ export async function uploadDeck(
deck: { deck: {
deckId, deckId,
deckName: req.deck.deckName, deckName: req.deck.deckName,
deckType: "", // NEW: Default empty string for deck type
deckCoverCard1: 0, // NEW: Default to 0
deckCoverCard2: 0, // NEW: Default to 0
deckCoverCard3: 0, // NEW: Default to 0
deckCase: req.deck.deckCase, deckCase: req.deck.deckCase,
deckProtector: 0, // NEW: Default to 0
deckYdk: req.deck.deckYdk, deckYdk: req.deck.deckYdk,
isDelete: false, // NEW: Not a delete operation
timestamp: Date.now(), // NEW: Current timestamp
}, },
}, },
req.token, req.token,
......
...@@ -107,7 +107,12 @@ const MdproDeckBlock: React.FC<{ ...@@ -107,7 +107,12 @@ const MdproDeckBlock: React.FC<{
const onDelete = async () => { const onDelete = async () => {
if (user) { if (user) {
const resp = await deleteDeck(user.id, user.token, deck.deckId); const resp = await deleteDeck(
user.id,
user.token,
deck.deckId,
user.username,
);
if (resp?.code === 0 && resp.data === true) { if (resp?.code === 0 && resp.data === true) {
message.success( message.success(
......
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