Modified error messages for post requests

This commit is contained in:
Shaun Orssaud 2024-01-05 17:24:47 +09:00
parent c3078124ff
commit 52217354f0
5 changed files with 216 additions and 142 deletions

View File

@ -8,4 +8,4 @@ services:
ports:
- "3000:80"
environment:
- codex_url=${codex_url:-http://kubernetes.docker.internal:30003}
- codex_url=${codex_url:-http://kubernetes.docker.internal:30001}

View File

@ -7,6 +7,7 @@ function DownloadTab() {
const { ftdCid, setFtdCid, nodeInfo } = useDexyStore();
const [filename, setFilename] = useState("file");
const [error, setError] = useState("");
function download(cid: string) {
console.log(filename);
@ -22,36 +23,60 @@ function DownloadTab() {
{},
}
)
.then((response) => response.blob())
.then((blob) => {
const url = window.URL.createObjectURL(new Blob([blob]));
const link = document.createElement("a");
link.href = url;
link.setAttribute("download", filename);
document.body.appendChild(link);
link.click();
link.parentNode?.removeChild(link);
});
.then((response) =>
{
if (response.status === 200) {
response.blob()
.then((blob) => {
const url = window.URL.createObjectURL(new Blob([blob]));
const link = document.createElement("a");
link.href = url;
link.setAttribute("download", filename);
document.body.appendChild(link);
link.click();
link.parentNode?.removeChild(link);
})
}
else {
response.text().then((text) => {
setError(text);
}).catch((error) => {
console.error("Error reading response body:", error);
setError("Failed to read response body");
});
}
})
.catch((error) => {
console.error("Error downloading file:", error);
setError("Failed to download file");
});
}
return (
<DownloadTabWrapper>
<input
type="text"
placeholder="CID"
onChange={(e) => {
setFtdCid(e.target.value);
}}
value={ftdCid}
/>
<div id="divider"></div>
<input
type="text"
placeholder="Filename"
onChange={(e) => setFilename(e.target.value)}
/>
<button onClick={() => download(ftdCid)}>Download</button>
</DownloadTabWrapper>
<>
<DownloadTabWrapper>
<input
type="text"
placeholder="CID"
onChange={(e) => {
setFtdCid(e.target.value);
}}
value={ftdCid}
/>
<div id="divider"></div>
<input
type="text"
placeholder="Filename"
onChange={(e) => setFilename(e.target.value)}
/>
<button onClick={() => download(ftdCid)}>Download</button>
</DownloadTabWrapper>
{error && (
<p style={{ color: "red", marginTop: "10px", textAlign: "center" }}>
{error}
</p>
)}
</>
);
}

View File

@ -14,6 +14,7 @@ function UploadTab() {
const { uploads, setUploads, nodeInfo } = useDexyStore();
var files = useRef<UploadedItemModel[]>(uploads);
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState("");
function getDatas() {
fetch(`/api/codex/v1/data`, {
@ -90,12 +91,17 @@ function UploadTab() {
},
})
.then((response) => {
newCid = response.data;
getDatas();
if (response.status === 200) {
newCid = response.data;
getDatas();
} else {
setError("Upload failed");
}
});
console.log("filesCopy failed");
} catch (error) {
console.error("Error uploading file: ", error);
setError("Upload failed");
}
console.log(cid + acceptedFiles[i].name);
resolve("done");
@ -108,32 +114,39 @@ function UploadTab() {
const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });
return (
<UploadTabWrapper>
<div
id="dropzone"
{...getRootProps()}
style={{
minHeight: uploads.length > 0 ? "33%" : "100%",
}}
>
<input {...getInputProps()} />
{isDragActive ? (
<p>Drop the files here ...</p>
) : (
<p>Drag 'n' drop some files here, or click to select files</p>
)}
</div>
<div
id="uploaded-items-wrap"
style={{
maxHeight: uploads.length > 0 ? "60vh" : "0%",
}}
>
{uploads.map((file) => (
<UploadedItemComponent item={file} key={file.cid} />
))}
</div>
</UploadTabWrapper>
<>
<UploadTabWrapper>
<div
id="dropzone"
{...getRootProps()}
style={{
minHeight: uploads.length > 0 ? "33%" : "100%",
}}
>
<input {...getInputProps()} />
{isDragActive ? (
<p>Drop the files here ...</p>
) : (
<p>Drag 'n' drop some files here, or click to select files</p>
)}
</div>
<div
id="uploaded-items-wrap"
style={{
maxHeight: uploads.length > 0 ? "60vh" : "0%",
}}
>
{uploads.map((file) => (
<UploadedItemComponent item={file} key={file.cid} />
))}
</div>
</UploadTabWrapper>
{error && (
<p style={{ color: "red", marginTop: "10px", textAlign: "center" }}>
{error}
</p>
)}
</>
);
}

View File

@ -11,7 +11,8 @@ function OfferStorage() {
const [minPrice, setMinPrice,] = useState("file");
const [maxCollateral, setMaxCollateral,] = useState("file");
const [expiry, setExpiry,] = useState("file");
const [error, setError] = useState("");
function upload(cid: string) {
fetch(
@ -33,58 +34,75 @@ function OfferStorage() {
})
}
)
// create a popup in the browser to show if the upload was successful
.then((response) => {
// create a popup in the browser to show if the upload was successful
.then((response) => {
if (response.status === 200) {
alert("Upload successful!");
alert("Successfully created storage offer!");
setError("");
} else {
alert("Upload failed!");
response.text().then((text) => {
setError(text);
}).catch((error) => {
console.error("Error reading response body:", error);
setError("Failed to read response body");
});
}
})
.catch((error) => {
console.error("Error creating storage offer:", error);
setError("Failed to create storage offer");
});
}
return (
<OfferStorageWrapper>
<input
type="text"
placeholder="CID"
onChange={(e) => {
setFtdCid(e.target.value);
}}
value={ftdCid}
/>
<div id="divider"></div>
<input
type="text"
placeholder="Size"
onChange={(e) => setSize(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="Duration"
onChange={(e) => setDuration(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="MinPrice"
onChange={(e) => setMinPrice(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="MaxCollateral"
onChange={(e) => setMaxCollateral(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="Expiry"
onChange={(e) => setExpiry(e.target.value)}
/>
<button onClick={() => upload(ftdCid)}>Download</button>
</OfferStorageWrapper>
<>
<OfferStorageWrapper>
<input
type="text"
placeholder="CID"
onChange={(e) => {
setFtdCid(e.target.value);
}}
value={ftdCid}
/>
<div id="divider"></div>
<input
type="text"
placeholder="Size"
onChange={(e) => setSize(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="Duration"
onChange={(e) => setDuration(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="MinPrice"
onChange={(e) => setMinPrice(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="MaxCollateral"
onChange={(e) => setMaxCollateral(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="Expiry"
onChange={(e) => setExpiry(e.target.value)}
/>
<button onClick={() => upload(ftdCid)}>Create</button>
</OfferStorageWrapper>
{error && (
<p style={{ color: "red", marginTop: "10px", textAlign: "center" }}>
{error}
</p>
)}
</>
);
}

View File

@ -10,7 +10,8 @@ function CreateTab() {
const [duration, setDuration,] = useState("file");
const [proofProbability, setProofProbability,] = useState("file");
const [collateral, setCollateral,] = useState("file");
const [error, setError] = useState("");
function upload(cid: string) {
fetch(
@ -31,52 +32,69 @@ function CreateTab() {
})
}
)
// create a popup in the browser to show if the upload was successful
.then((response) => {
// create a popup in the browser to show if the upload was successful
.then((response) => {
if (response.status === 200) {
alert("Upload successful!");
alert("Successfully created storage offer!");
setError("");
} else {
alert("Upload failed!");
response.text().then((text) => {
setError(text);
}).catch((error) => {
console.error("Error reading response body:", error);
setError("Failed to read response body");
});
}
})
.catch((error) => {
console.error("Error creating storage offer:", error);
setError("Failed to create storage offer");
});
}
return (
<CreateTabWrapper>
<input
type="text"
placeholder="CID"
onChange={(e) => {
setFtdCid(e.target.value);
}}
value={ftdCid}
/>
<div id="divider"></div>
<input
type="text"
placeholder="Reward"
onChange={(e) => setReward(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="Duration"
onChange={(e) => setDuration(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="ProofProbability"
onChange={(e) => setProofProbability(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="collateral"
onChange={(e) => setCollateral(e.target.value)}
/>
<button onClick={() => upload(ftdCid)}>Download</button>
</CreateTabWrapper>
<>
<CreateTabWrapper>
<input
type="text"
placeholder="CID"
onChange={(e) => {
setFtdCid(e.target.value);
}}
value={ftdCid}
/>
<div id="divider"></div>
<input
type="text"
placeholder="Reward"
onChange={(e) => setReward(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="Duration"
onChange={(e) => setDuration(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="ProofProbability"
onChange={(e) => setProofProbability(e.target.value)}
/>
<div id="divider"></div>
<input
type="text"
placeholder="collateral"
onChange={(e) => setCollateral(e.target.value)}
/>
<button onClick={() => upload(ftdCid)}>Download</button>
</CreateTabWrapper>
{error && (
<p style={{ color: "red", marginTop: "10px", textAlign: "center" }}>
{error}
</p>
)}
</>
);
}