Skip to content

Commit

Permalink
Merge branch 'release/0.0.5'
Browse files Browse the repository at this point in the history
  • Loading branch information
realbits-lab committed Oct 24, 2023
2 parents 7c9c8d7 + 57185f8 commit 0ef5085
Show file tree
Hide file tree
Showing 14 changed files with 270 additions and 243 deletions.
21 changes: 21 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Bump version
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Bump version and push tag
id: tag_version
uses: mathieudutour/github-tag-action@v6.1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Create a GitHub release
uses: ncipollo/release-action@v1
with:
tag: ${{ steps.tag_version.outputs.new_tag }}
name: Release ${{ steps.tag_version.outputs.new_tag }}
body: ${{ steps.tag_version.outputs.changelog }}
86 changes: 27 additions & 59 deletions components/CardNft.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ import {
useWalletClient,
useContractRead,
useSignTypedData,
useContractEvent,
useContractWrite,
usePrepareContractWrite,
useWaitForTransaction,
useWatchPendingTransactions,
} from "wagmi";
Expand All @@ -27,7 +25,6 @@ import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import Button from "@mui/material/Button";
import Typography from "@mui/material/Typography";
import Skeleton from "@mui/material/Skeleton";
import {
isWalletConnected,
Expand Down Expand Up @@ -70,21 +67,17 @@ export default function CardNft({ nftData, isRent = false }) {
//*---------------------------------------------------------------------------
//* Define constant variables.
//*---------------------------------------------------------------------------
const PLACEHOLDER_IMAGE_URL =
process.env.NEXT_PUBLIC_PLACEHOLDER_IMAGE_URL;
const PLACEHOLDER_IMAGE_URL = process.env.NEXT_PUBLIC_PLACEHOLDER_IMAGE_URL;
const RENT_MARKET_CONTRACT_ADDRES =
process.env.NEXT_PUBLIC_RENT_MARKET_CONTRACT_ADDRESS;
const PROMPT_NFT_CONTRACT_ADDRESS =
process.env.NEXT_PUBLIC_PROMPT_NFT_CONTRACT_ADDRESS;
const SERVICE_ACCOUNT_ADDRESS =
process.env.NEXT_PUBLIC_SERVICE_ACCOUNT_ADDRESS;
const ZERO_ADDRESS_STRING =
"0x0000000000000000000000000000000000000000";
const ZERO_ADDRESS_STRING = "0x0000000000000000000000000000000000000000";

const CARD_MARGIN_TOP = "60px";
const CARD_MARGIN_BOTTOM = 600;
const CARD_MAX_WIDTH = 420;
const CARD_MIN_WIDTH = 375;
const CARD_PADDING = 1;
const [cardImageHeight, setCardImageHeight] = React.useState(0);
const { user, mutateUser } = useUser();
Expand Down Expand Up @@ -155,7 +148,7 @@ export default function CardNft({ nftData, isRent = false }) {
abi: promptNFTABI.abi,
functionName: "tokenURI",
args: [nftData?.tokenId],
watch: true,
// watch: true,
onSuccess(data) {
// console.log("call onSuccess()");
// console.log("data: ", data);
Expand Down Expand Up @@ -193,17 +186,14 @@ export default function CardNft({ nftData, isRent = false }) {
abi: rentmarketABI.abi,
functionName: "getRentData",
args: [nftData?.nftAddress, nftData?.tokenId],
watch: true,
// watch: true,
onSuccess(data) {
// console.log("call onSuccess()");
// console.log("data.renteeAddress: ", data.renteeAddress);
// console.log("address: ", address);
if (
data.renteeAddress.toLowerCase() === address.toLowerCase()
) {
console.log("call onSuccess()");
console.log("data.renteeAddress: ", data.renteeAddress);
console.log("address: ", address);
if (data.renteeAddress.toLowerCase() === address.toLowerCase()) {
console.log("setIsOwnerOrRentee true");
setIsOwnerOrRentee(true);
} else {
setIsOwnerOrRentee(false);
}
},
onError(error) {
Expand Down Expand Up @@ -231,15 +221,13 @@ export default function CardNft({ nftData, isRent = false }) {
abi: promptNFTABI.abi,
functionName: "ownerOf",
args: [nftData?.tokenId],
watch: true,
// watch: true,
onSuccess(data) {
// console.log("call onSuccess()");
// console.log("data: ", data);
// console.log("address: ", address);
if (data.toLowerCase() === address.toLowerCase()) {
setIsOwnerOrRentee(true);
} else {
setIsOwnerOrRentee(false);
}
},
onError(error) {
Expand Down Expand Up @@ -364,7 +352,7 @@ export default function CardNft({ nftData, isRent = false }) {
};

const [isRenting, setIsRenting] = React.useState(false);
const [isOwnerOrRentee, setIsOwnerOrRentee] = React.useState();
const [isOwnerOrRentee, setIsOwnerOrRentee] = React.useState(false);
// console.log("isOwnerOrRentee: ", isOwnerOrRentee);

React.useEffect(function () {
Expand Down Expand Up @@ -448,9 +436,7 @@ export default function CardNft({ nftData, isRent = false }) {

return;
} else {
if (
isWalletConnected({ isConnected, selectedChain }) === false
) {
if (isWalletConnected({ isConnected, selectedChain }) === false) {
setWriteToastMessage({
snackbarSeverity: AlertSeverity.warning,
snackbarMessage: `Change blockchain network to ${process.env.NEXT_PUBLIC_BLOCKCHAIN_NETWORK}`,
Expand Down Expand Up @@ -507,19 +493,13 @@ export default function CardNft({ nftData, isRent = false }) {
<Table>
<TableHead>
<TableRow>
<StyledTableCell align="center">
Item
</StyledTableCell>
<StyledTableCell align="center">
Value
</StyledTableCell>
<StyledTableCell align="center">Item</StyledTableCell>
<StyledTableCell align="center">Value</StyledTableCell>
</TableRow>
</TableHead>
<TableBody>
<StyledTableRow>
<StyledTableCell align="left">
Token ID
</StyledTableCell>
<StyledTableCell align="left">Token ID</StyledTableCell>
<StyledTableCell align="left">
{nftData?.tokenId.toString()}
</StyledTableCell>
Expand All @@ -533,18 +513,14 @@ export default function CardNft({ nftData, isRent = false }) {
</StyledTableRow>

<StyledTableRow>
<StyledTableCell align="left">
Description
</StyledTableCell>
<StyledTableCell align="left">Description</StyledTableCell>
<StyledTableCell align="left">
{metadata ? metadata.description : "loading..."}
</StyledTableCell>
</StyledTableRow>

<StyledTableRow>
<StyledTableCell align="left">
Opensea
</StyledTableCell>
<StyledTableCell align="left">Opensea</StyledTableCell>
<StyledTableCell align="left">
{shortenAddress({
address: nftData?.nftAddress,
Expand All @@ -555,9 +531,7 @@ export default function CardNft({ nftData, isRent = false }) {
</StyledTableRow>

<StyledTableRow>
<StyledTableCell align="left">
Explorer
</StyledTableCell>
<StyledTableCell align="left">Explorer</StyledTableCell>
<StyledTableCell align="left">
{shortenAddress({
address: nftData?.nftAddress,
Expand All @@ -574,11 +548,11 @@ export default function CardNft({ nftData, isRent = false }) {
variant="outlined"
onClick={handleRentPayment}
>
{isOwnerOrRentee === undefined ? (
{isLoadingRentData === true ? (
<>Loading...</>
) : isRenting ? (
<>Renting...</>
) : isOwnerOrRentee ? (
) : isOwnerOrRentee === true ? (
<>Prompt</>
) : (
<>Rent</>
Expand All @@ -587,9 +561,8 @@ export default function CardNft({ nftData, isRent = false }) {
</StyledTableCell>
<StyledTableCell align="left">
{(
Number(
(nftData?.rentFee * 1000000n) / 10n ** 18n
) / 1000000
Number((nftData?.rentFee * 1000000n) / 10n ** 18n) /
1000000
).toString()}{" "}
matic
</StyledTableCell>
Expand All @@ -601,18 +574,16 @@ export default function CardNft({ nftData, isRent = false }) {
<Button
size="small"
disabled={
isRenting ||
isLoadingRentData ||
isLoadingOwnerOf
isRenting || isLoadingRentData || isLoadingOwnerOf
}
variant="outlined"
onClick={handleRentPayment}
>
{isOwnerOrRentee === undefined ? (
{isLoadingRentData === true ? (
<>Loading...</>
) : isRenting ? (
<>Renting...</>
) : isOwnerOrRentee ? (
) : isOwnerOrRentee === true ? (
<>Prompt</>
) : (
<>Rent</>
Expand All @@ -622,8 +593,7 @@ export default function CardNft({ nftData, isRent = false }) {
<StyledTableCell align="left">
{(
Number(
(nftData?.rentFeeByToken * 1000000n) /
10n ** 18n
(nftData?.rentFeeByToken * 1000000n) / 10n ** 18n
) / 1000000
).toString()}{" "}
token
Expand All @@ -634,9 +604,7 @@ export default function CardNft({ nftData, isRent = false }) {
<></>
) : (
<StyledTableRow>
<StyledTableCell align="left">
Setting Fee
</StyledTableCell>
<StyledTableCell align="left">Setting Fee</StyledTableCell>
<StyledTableCell>
<div
style={{
Expand Down
103 changes: 50 additions & 53 deletions components/DrawImage.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ export default function DrawImage() {
const CARD_MAX_WIDTH = 420;
const IMAGE_PADDING = 450;
const { user, mutateUser } = useUser();
// console.log("user: ", user);
console.log("user: ", user);
const [imageUrl, setImageUrl] = React.useState("");
const [loadingImage, setLoadingImage] = React.useState(false);
const [postingImage, setPostingImage] = React.useState(false);
Expand Down Expand Up @@ -512,6 +512,7 @@ export default function DrawImage() {

//* Get the stable diffusion api result by json.
const jsonResponse = await fetchResponse.json();
console.log("jsonResponse: ", jsonResponse);

//* Check error response.
if (
Expand All @@ -532,40 +533,44 @@ export default function DrawImage() {
return;
}

const meta = jsonResponse.meta;
console.log("meta.negative_prompt: ", meta.negative_prompt);
console.log("meta.prompt: ", meta.prompt);
console.log("meta.model: ", meta.model);

//* Handle fetch result.
let imageUrlResponse;
console.log("jsonResponse: ", jsonResponse);
if (jsonResponse.status === "processing") {
if (jsonResponse.status === "success") {
imageUrlResponse = jsonResponse.imageUrl[0];
} else if (jsonResponse.status === "processing") {
console.log("jsonResponse: ", jsonResponse);
const eta = jsonResponse.eta;
const timestamp = Math.floor(Date.now() / 1000);
setImageFetchEndTime(timestamp + eta);

await sleep((eta + 1) * 1000);
setImageFetchEndTime(undefined);

const fetchJsonData = {
id: jsonResponse.id,
};
const fetchResultResponse = await fetch(FETCH_RESULT_API_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(fetchJsonData),
});

//* Check error response.
if (fetchResultResponse.status !== 200) {
console.error("jsonResponse.status is not success.");

setWriteToastMessage({
snackbarSeverity: AlertSeverity.warning,
snackbarMessage: "Fetching image is failed.",
snackbarTime: new Date(),
snackbarOpen: true,
let eta = jsonResponse.eta;
let fetchStatus = 500;
let fetchResultResponse;

while (fetchStatus !== 200) {
//* TODO: Add elapsed time to screen.
const timestamp = Math.floor(Date.now() / 1000);
setImageFetchEndTime(timestamp + eta);

await sleep((eta + 1) * 1000);
setImageFetchEndTime(undefined);

const fetchJsonData = {
id: jsonResponse.id,
};
fetchResultResponse = await fetch(FETCH_RESULT_API_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(fetchJsonData),
});
console.log("fetchResultResponse: ", fetchResultResponse);

setLoadingImage(false);
return;
fetchStatus = fetchResultResponse.status;

// Add 2 seconds for fetch wait.
eta = 2;
}

//* Get the stable diffusion api result by json.
Expand All @@ -575,31 +580,23 @@ export default function DrawImage() {
//* Set image url.
imageUrlResponse = jsonFetchResultResponse.output[0];
}
console.log("imageUrlResponse: ", imageUrlResponse);

//* Change prompt, negativePrompt, modelName.
let event = {};
event.target = { name: "prompt", value: meta.prompt };
handleChange(event);
event.target = {
name: "negativePrompt",
value: meta.negative_prompt,
};
handleChange(event);
event.target = { name: "modelName", value: meta.model };
handleChange(event);

if (jsonResponse.status === "success") {
imageUrlResponse = jsonResponse.imageUrl[0];
const meta = jsonResponse.meta;
// console.log("imageUrlResponse: ", imageUrlResponse);
// console.log("meta.negative_prompt: ", meta.negative_prompt);
// console.log("meta.prompt: ", meta.prompt);
// console.log("meta.model: ", meta.model);

//* Change prompt, negativePrompt, modelName.
let event = {};
event.target = { name: "prompt", value: meta.prompt };
handleChange(event);
event.target = {
name: "negativePrompt",
value: meta.negative_prompt,
};
handleChange(event);
event.target = { name: "modelName", value: meta.model };
handleChange(event);

inputPrompt = meta.prompt;
inputNegativePrompt = meta.negative_prompt;
inputModelName = meta.model;
}
inputPrompt = meta.prompt;
inputNegativePrompt = meta.negative_prompt;
inputModelName = meta.model;

//* TODO: Check imageUrlResponse is valid. If invalid, wait for 3-5 seconds and try again.
setImageUrl(imageUrlResponse);
Expand Down

0 comments on commit 0ef5085

Please sign in to comment.