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 {
deckName: string;
deckCase: number;
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";
import { handleHttps, mdproHeaders } from "./util";
const { mdproServer } = useConfig();
const API_PATH = "api/mdpro3/deck/upload";
export interface UploadReq {
userId: number;
token: string;
deckContributor: string;
deck: {
deckName: string;
deckCase: number;
deckYdk: string;
};
}
export async function uploadDeck(
req: MdproDeck,
): Promise<MdproResp<MdproDeck> | undefined> {
const myHeaders = mdproHeaders();
myHeaders.append("Content-Type", "application/json");
req: UploadReq,
): Promise<MdproResp<void> | undefined> {
const deckId = await generateDeck();
if (deckId === undefined) return undefined;
const resp = await fetch(`${mdproServer}/${API_PATH}`, {
method: "POST",
headers: myHeaders,
body: JSON.stringify(req),
redirect: "follow",
const syncRes = await syncDeck({
userId: req.userId,
token: req.token,
deckContributor: req.deckContributor,
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";
import YGOProDeck from "ygopro-deck-encode";
import { uploadDeck } from "@/api";
import { MdproDeck } from "@/api/mdproDeck/schema";
import { accountStore, deckStore, IDeck } from "@/stores";
import { Uploader } from "../../Shared";
......@@ -130,16 +129,16 @@ export const DeckSelect: React.FC<{
const user = accountStore.user;
if (user) {
// TODO: Deck Case
const mdproDeck: MdproDeck = {
deckId: "",
const resp = await uploadDeck({
userId: user.id,
token: user.token,
deckContributor: user.username,
deck: {
deckName: deck.deckName,
deckYdk: genYdkText(deck),
deckCase: DEFAULT_DECK_CASE,
userId: user.id,
};
const resp = await uploadDeck(mdproDeck);
deckYdk: genYdkText(deck),
},
});
if (resp) {
if (resp.code) {
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