Commit 246e95d2 authored by chechunchi's avatar chechunchi

fix the mdproDeck implemetaion

parent d76858d3
Pipeline #41977 passed with stages
in 1 minute and 35 seconds
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
"uuid": "^9.0.0", "uuid": "^9.0.0",
"valtio": "^1.11.2", "valtio": "^1.11.2",
"vite-plugin-svgr": "^3.2.0", "vite-plugin-svgr": "^3.2.0",
"ygopro-deck-encode": "^1.0.3" "ygopro-deck-encode": "^1.0.14"
}, },
"devDependencies": { "devDependencies": {
"@types/google-protobuf": "^3.15.6", "@types/google-protobuf": "^3.15.6",
...@@ -67,7 +67,6 @@ ...@@ -67,7 +67,6 @@
"vite": "^4.4.9", "vite": "^4.4.9",
"vite-plugin-arraybuffer": "^0.0.6", "vite-plugin-arraybuffer": "^0.0.6",
"vite-plugin-sass-dts": "^1.3.9", "vite-plugin-sass-dts": "^1.3.9",
"vite-plugin-wasm-pack": "^0.1.12",
"vite-tsconfig-paths": "^4.2.0", "vite-tsconfig-paths": "^4.2.0",
"vite-ydk-loader": "^0.0.2" "vite-ydk-loader": "^0.0.2"
} }
...@@ -3844,20 +3843,6 @@ ...@@ -3844,20 +3843,6 @@
"is-callable": "^1.1.3" "is-callable": "^1.1.3"
} }
}, },
"node_modules/fs-extra": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
"node": ">=12"
}
},
"node_modules/fs.realpath": { "node_modules/fs.realpath": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
...@@ -4646,11 +4631,6 @@ ...@@ -4646,11 +4631,6 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true "dev": true
}, },
"node_modules/js-base64": {
"version": "3.7.5",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz",
"integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA=="
},
"node_modules/js-tokens": { "node_modules/js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
...@@ -4714,18 +4694,6 @@ ...@@ -4714,18 +4694,6 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"dependencies": {
"universalify": "^2.0.0"
},
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/levn": { "node_modules/levn": {
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
...@@ -4882,12 +4850,6 @@ ...@@ -4882,12 +4850,6 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
} }
}, },
"node_modules/narrowing": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/narrowing/-/narrowing-1.5.0.tgz",
"integrity": "sha512-DUu4XdKgkfAPTAL28k79pdnshDE2W5T24QAnidSPo2F/W1TX6CjNzmEeXQfE5O1lxQvC0GYI6ZRDsLcyzugEYA==",
"dev": true
},
"node_modules/natural-compare": { "node_modules/natural-compare": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
...@@ -6975,15 +6937,6 @@ ...@@ -6975,15 +6937,6 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"dev": true,
"engines": {
"node": ">= 10.0.0"
}
},
"node_modules/untildify": { "node_modules/untildify": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
...@@ -7179,17 +7132,6 @@ ...@@ -7179,17 +7132,6 @@
"vite": "^2.6.0 || 3 || 4" "vite": "^2.6.0 || 3 || 4"
} }
}, },
"node_modules/vite-plugin-wasm-pack": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/vite-plugin-wasm-pack/-/vite-plugin-wasm-pack-0.1.12.tgz",
"integrity": "sha512-WliYvQp9HXluir4OKGbngkcKxtYtifU11cqLurRRJGsl770Sjr1iIkp5RuvU3IC1poT4A57Z2/YgAKI2Skm7ZA==",
"dev": true,
"dependencies": {
"chalk": "^4.1.2",
"fs-extra": "^10.0.0",
"narrowing": "^1.4.0"
}
},
"node_modules/vite-tsconfig-paths": { "node_modules/vite-tsconfig-paths": {
"version": "4.2.0", "version": "4.2.0",
"resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz", "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz",
...@@ -7296,12 +7238,9 @@ ...@@ -7296,12 +7238,9 @@
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
}, },
"node_modules/ygopro-deck-encode": { "node_modules/ygopro-deck-encode": {
"version": "1.0.3", "version": "1.0.14",
"resolved": "https://registry.npmjs.org/ygopro-deck-encode/-/ygopro-deck-encode-1.0.3.tgz", "resolved": "https://registry.npmjs.org/ygopro-deck-encode/-/ygopro-deck-encode-1.0.14.tgz",
"integrity": "sha512-5JpaAdrIO4d2VnQRm+6T9S3JEp8ByXrFmXumAtCScvGYSc/31ianjafe76XVIFA8nSDJJCO8bzJF+C6CBwUONg==", "integrity": "sha512-Q64f8U+okLBDKHw02eRYsdDMpALhYa55k0BhFqZ5k4ntRpPKFNvM9sNEbBlg2bmyi6LCf3rlEmISmLtlx9uDeA=="
"dependencies": {
"js-base64": "^3.7.5"
}
}, },
"node_modules/yocto-queue": { "node_modules/yocto-queue": {
"version": "0.1.0", "version": "0.1.0",
...@@ -9907,17 +9846,6 @@ ...@@ -9907,17 +9846,6 @@
"is-callable": "^1.1.3" "is-callable": "^1.1.3"
} }
}, },
"fs-extra": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
}
},
"fs.realpath": { "fs.realpath": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
...@@ -10459,11 +10387,6 @@ ...@@ -10459,11 +10387,6 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true "dev": true
}, },
"js-base64": {
"version": "3.7.5",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz",
"integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA=="
},
"js-tokens": { "js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
...@@ -10512,16 +10435,6 @@ ...@@ -10512,16 +10435,6 @@
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
}, },
"jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6",
"universalify": "^2.0.0"
}
},
"levn": { "levn": {
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
...@@ -10636,12 +10549,6 @@ ...@@ -10636,12 +10549,6 @@
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
}, },
"narrowing": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/narrowing/-/narrowing-1.5.0.tgz",
"integrity": "sha512-DUu4XdKgkfAPTAL28k79pdnshDE2W5T24QAnidSPo2F/W1TX6CjNzmEeXQfE5O1lxQvC0GYI6ZRDsLcyzugEYA==",
"dev": true
},
"natural-compare": { "natural-compare": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
...@@ -12074,12 +11981,6 @@ ...@@ -12074,12 +11981,6 @@
"which-boxed-primitive": "^1.0.2" "which-boxed-primitive": "^1.0.2"
} }
}, },
"universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"dev": true
},
"untildify": { "untildify": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz",
...@@ -12166,17 +12067,6 @@ ...@@ -12166,17 +12067,6 @@
"@svgr/plugin-jsx": "^7.0.0" "@svgr/plugin-jsx": "^7.0.0"
} }
}, },
"vite-plugin-wasm-pack": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/vite-plugin-wasm-pack/-/vite-plugin-wasm-pack-0.1.12.tgz",
"integrity": "sha512-WliYvQp9HXluir4OKGbngkcKxtYtifU11cqLurRRJGsl770Sjr1iIkp5RuvU3IC1poT4A57Z2/YgAKI2Skm7ZA==",
"dev": true,
"requires": {
"chalk": "^4.1.2",
"fs-extra": "^10.0.0",
"narrowing": "^1.4.0"
}
},
"vite-tsconfig-paths": { "vite-tsconfig-paths": {
"version": "4.2.0", "version": "4.2.0",
"resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz", "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz",
...@@ -12257,12 +12147,9 @@ ...@@ -12257,12 +12147,9 @@
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
}, },
"ygopro-deck-encode": { "ygopro-deck-encode": {
"version": "1.0.3", "version": "1.0.14",
"resolved": "https://registry.npmjs.org/ygopro-deck-encode/-/ygopro-deck-encode-1.0.3.tgz", "resolved": "https://registry.npmjs.org/ygopro-deck-encode/-/ygopro-deck-encode-1.0.14.tgz",
"integrity": "sha512-5JpaAdrIO4d2VnQRm+6T9S3JEp8ByXrFmXumAtCScvGYSc/31ianjafe76XVIFA8nSDJJCO8bzJF+C6CBwUONg==", "integrity": "sha512-Q64f8U+okLBDKHw02eRYsdDMpALhYa55k0BhFqZ5k4ntRpPKFNvM9sNEbBlg2bmyi6LCf3rlEmISmLtlx9uDeA=="
"requires": {
"js-base64": "^3.7.5"
}
}, },
"yocto-queue": { "yocto-queue": {
"version": "0.1.0", "version": "0.1.0",
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
"uuid": "^9.0.0", "uuid": "^9.0.0",
"valtio": "^1.11.2", "valtio": "^1.11.2",
"vite-plugin-svgr": "^3.2.0", "vite-plugin-svgr": "^3.2.0",
"ygopro-deck-encode": "^1.0.3" "ygopro-deck-encode": "^1.0.14"
}, },
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
......
...@@ -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