Commit 886577a8 authored by Chunchi Che's avatar Chunchi Che

update upload API

parent 11afc6d2
Pipeline #27786 passed with stages
in 8 minutes and 5 seconds
...@@ -15,7 +15,6 @@ export interface SyncReq { ...@@ -15,7 +15,6 @@ export interface SyncReq {
deckName: string; deckName: string;
deckCase: number; deckCase: number;
deckYdk: string; deckYdk: string;
isDelete: boolean;
}; };
} }
......
import { useConfig } from "@/config"; import { generateDeck } from "./generate";
import { MdproResp } from "./schema";
import { syncDeck } from "./sync";
import { updatePublic } from "./updatePulibc";
import { MdproDeck, MdproResp } from "./schema"; export interface UploadReq {
import { handleHttps, mdproHeaders } from "./util"; userId: number;
token: string;
const { mdproServer } = useConfig(); deckContributor: string;
const API_PATH = "api/mdpro3/deck/upload"; deck: {
deckName: string;
deckCase: number;
deckYdk: string;
};
}
export async function uploadDeck( export async function uploadDeck(
req: MdproDeck, req: UploadReq,
): Promise<MdproResp<MdproDeck> | undefined> { ): Promise<MdproResp<void> | undefined> {
const myHeaders = mdproHeaders(); const deckId = await generateDeck();
myHeaders.append("Content-Type", "application/json"); if (deckId === undefined) return undefined;
const resp = await fetch(`${mdproServer}/${API_PATH}`, { const syncRes = await syncDeck({
method: "POST", userId: req.userId,
headers: myHeaders, token: req.token,
body: JSON.stringify(req), deckContributor: req.deckContributor,
redirect: "follow", deck: {
deckId,
deckName: req.deck.deckName,
deckCase: req.deck.deckCase,
deckYdk: req.deck.deckYdk,
},
}); });
return await handleHttps(resp, API_PATH); if (syncRes === undefined) return undefined;
if (syncRes.code === 0 && syncRes.data === true) {
// succeed in syncing
return await updatePublic({
userId: req.userId,
token: req.token,
deckId: deckId,
isPublic: true,
});
} else {
return { code: syncRes.code, message: syncRes.message };
}
} }
...@@ -11,7 +11,6 @@ import React, { useRef, useState } from "react"; ...@@ -11,7 +11,6 @@ import React, { useRef, useState } from "react";
import YGOProDeck from "ygopro-deck-encode"; import YGOProDeck from "ygopro-deck-encode";
import { uploadDeck } from "@/api"; import { uploadDeck } from "@/api";
import { MdproDeck } from "@/api/mdproDeck/schema";
import { accountStore, deckStore, IDeck } from "@/stores"; import { accountStore, deckStore, IDeck } from "@/stores";
import { Uploader } from "../../Shared"; import { Uploader } from "../../Shared";
...@@ -130,16 +129,16 @@ export const DeckSelect: React.FC<{ ...@@ -130,16 +129,16 @@ export const DeckSelect: React.FC<{
const user = accountStore.user; const user = accountStore.user;
if (user) { if (user) {
// TODO: Deck Case // TODO: Deck Case
const mdproDeck: MdproDeck = { const resp = await uploadDeck({
deckId: "",
deckContributor: user.username,
deckName: deck.deckName,
deckYdk: genYdkText(deck),
deckCase: DEFAULT_DECK_CASE,
userId: user.id, userId: user.id,
}; token: user.token,
deckContributor: user.username,
const resp = await uploadDeck(mdproDeck); deck: {
deckName: deck.deckName,
deckCase: DEFAULT_DECK_CASE,
deckYdk: genYdkText(deck),
},
});
if (resp) { if (resp) {
if (resp.code) { if (resp.code) {
message.error(resp.message); message.error(resp.message);
......
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