From 8677435fe01f04880278368bbef527f3e749e652 Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Mon, 16 Jan 2023 00:44:01 +0100 Subject: [PATCH 01/84] make quick offer on mp --- components/ui/BeastMarket/BeastMarket.tsx | 8 +++++++ .../BeastMarketBeastList.tsx | 23 ++++++++++++++++++- framework/hooks/use-fusd.hook.ts | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/components/ui/BeastMarket/BeastMarket.tsx b/components/ui/BeastMarket/BeastMarket.tsx index 4401b23..933ec5c 100644 --- a/components/ui/BeastMarket/BeastMarket.tsx +++ b/components/ui/BeastMarket/BeastMarket.tsx @@ -34,6 +34,7 @@ import BeastMarketSweep from "../BeastMarketSweep" import QuickBidModal from "../QuickBidModal" import ListBeastForSaleModal from "../ListBeastForSaleModal" import { useUser } from "@components/user/UserProvider" +import PlaceABidModal from "../PlaceABidModal" const Wrapper = styled.div` padding: 20px 20px 100px 20px; @@ -796,6 +797,7 @@ const BeastMarket: FC = () => { const [displayBeasts, setDisplayBeasts] = useState(null) const [selectedBeast, setSelectedBeast] = useState(null) const [listBeastForSaleOpen, setListBeastForSaleOpen] = useState(false) + const [placeABidOpen, setPlaceABidOpen] = useState(false) const [open, setOpen] = useState(false) const [displayNickname, setDisplayNickname] = useState(null) const [sortBy, setSortBy] = useState("SORT BY") @@ -1212,6 +1214,11 @@ const BeastMarket: FC = () => { setOpen={setListBeastForSaleOpen} beast={selectedBeast} /> + = () => { setListBeastForSaleOpen={setListBeastForSaleOpen} favoriteBeasts={favoriteBeasts} setFavoriteBeasts={setFavoriteBeasts} + setPlaceABidOpen={setPlaceABidOpen} // setOpen={setOpen} // setDisplayNickname={setDisplayNickname} /> diff --git a/components/ui/BeastMarketBeastList/BeastMarketBeastList.tsx b/components/ui/BeastMarketBeastList/BeastMarketBeastList.tsx index 989e79a..08a2892 100644 --- a/components/ui/BeastMarketBeastList/BeastMarketBeastList.tsx +++ b/components/ui/BeastMarketBeastList/BeastMarketBeastList.tsx @@ -6,6 +6,7 @@ import BeastMarketThumbnail from "../BeastMarketThumbnail" import { faHeart as heartFull } from "@fortawesome/free-solid-svg-icons" import { faHeart as heartEmpty } from "@fortawesome/free-regular-svg-icons" import { useUser } from "@components/user/UserProvider" +import { useAuth } from "@components/auth/AuthProvider" const MarketUl = styled.ul` padding-top: 5px; @@ -252,6 +253,7 @@ type Props = { setListBeastForSaleOpen: any favoriteBeasts: any setFavoriteBeasts: any + setPlaceABidOpen: any // setDisplayNickname: any } const BeastMarketBeastList: FC = ({ @@ -263,6 +265,7 @@ const BeastMarketBeastList: FC = ({ setListBeastForSaleOpen, favoriteBeasts, setFavoriteBeasts, + setPlaceABidOpen, // setDisplayNickname, }) => { const selectBeast = (beast: any) => { @@ -572,6 +575,9 @@ const BeastMarketBeastList: FC = ({ } const { purchaseBeast, delistBeast } = useUser() + + const { loggedIn, logIn } = useAuth() + return ( = ({ Quick Buy ) : ( - <> + <> + {!loggedIn ? ( + logIn()}> + Make offer + + ) : ( + { + setSelectedBeast(beast) + setPlaceABidOpen(true) + }} + > + Make offer + + )} + )} )} diff --git a/framework/hooks/use-fusd.hook.ts b/framework/hooks/use-fusd.hook.ts index 0a9246d..3fcea41 100644 --- a/framework/hooks/use-fusd.hook.ts +++ b/framework/hooks/use-fusd.hook.ts @@ -25,7 +25,7 @@ export default function useFUSD(user: any) { const [state, dispatch] = useReducer(defaultReducer, { loading: true, error: false, - data: null, + data: 0, }) useEffect(() => { From 1773f75dba5b7e44eab7305c0e67c083e146c5df Mon Sep 17 00:00:00 2001 From: bz Date: Tue, 17 Jan 2023 01:48:03 +0100 Subject: [PATCH 02/84] Update .env.production --- .env.production | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.env.production b/.env.production index 2f14a6e..5a9bfbe 100644 --- a/.env.production +++ b/.env.production @@ -45,16 +45,16 @@ NEXT_PUBLIC_SIGN_MESSAGE="Sign this message so our backend can verify you." # ---- Packstore ---- # 1 random Normal skin 1-Star Beast -NEXT_PUBLIC_ADDRESS_RESERVABLE_NORMAL_SKIN="0x6ec745e460cc646c" -NEXT_PUBLIC_ADDRESS_REFUNDABLE_NORMAL_SKIN="0xdca2fbd53ec45907" +NEXT_PUBLIC_ADDRESS_RESERVABLE_NORMAL_SKIN="0xfe20e2699d201976" +NEXT_PUBLIC_ADDRESS_REFUNDABLE_NORMAL_SKIN="0xfe20e2699d201976" # 1 random Cursed Black 1-Star Beast -NEXT_PUBLIC_ADDRESS_RESERVABLE_CURSED_BLACK="0xaba9241acafae206" -NEXT_PUBLIC_ADDRESS_REFUNDABLE_CURSED_BLACK="0x470d62928ea8efd7" +NEXT_PUBLIC_ADDRESS_RESERVABLE_CURSED_BLACK="0x24992fb21ce6969c" +NEXT_PUBLIC_ADDRESS_REFUNDABLE_CURSED_BLACK="0x24992fb21ce6969c" # 1 random Shiny Gold 1-Star Beast -NEXT_PUBLIC_ADDRESS_RESERVABLE_GOLD_STAR="0x5c0fe1b8a445ba22" -NEXT_PUBLIC_ADDRESS_REFUNDABLE_GOLD_STAR="0x6391a3fdd3253bf8" +NEXT_PUBLIC_ADDRESS_RESERVABLE_GOLD_STAR="0xb5b6a4baa475f86f" +NEXT_PUBLIC_ADDRESS_REFUNDABLE_GOLD_STAR="0xb5b6a4baa475f86f" # ------------------- NEXT_PUBLIC_GRAPHQL_ENDPOINT="https://basicbeasts-dev.graphcdn.app" From 34b7fa6337fead2da8ac8a14d73bead3eda95541 Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Thu, 19 Jan 2023 18:32:53 +0100 Subject: [PATCH 03/84] marketplace stuff --- components/common/Navbar/Navbar.tsx | 2 +- .../SlideOverNavbar/SlideOverNavbar.tsx | 8 +- components/ui/BeastMarket/BeastMarket.tsx | 5 +- .../BeastMarketBeastList.tsx | 42 +++++-- .../ui/BeastMarketHero/BeastMarketHero.tsx | 9 +- .../BeastMarketThumbnail.tsx | 4 +- components/ui/PackStore/PackStore.tsx | 4 +- .../ui/ProductBeastView/ProductBeastView.tsx | 109 +++++++++--------- framework/hooks/use-beast-market.hook.ts | 4 +- framework/hooks/use-fusd.hook.ts | 4 +- framework/hooks/use-hunter-data.hook.ts | 16 +-- framework/hooks/use-user-beasts.hook.ts | 2 +- framework/hooks/use-user-inbox.hook.ts | 2 +- framework/hooks/use-user-packs.hook.ts | 19 +-- i18n.json | 2 +- pages/{store.tsx => drop.tsx} | 4 +- 16 files changed, 131 insertions(+), 105 deletions(-) rename pages/{store.tsx => drop.tsx} (79%) diff --git a/components/common/Navbar/Navbar.tsx b/components/common/Navbar/Navbar.tsx index fcb485a..74e4c82 100644 --- a/components/common/Navbar/Navbar.tsx +++ b/components/common/Navbar/Navbar.tsx @@ -613,7 +613,7 @@ const Navbar: FC = ({ setProfilePicture(element.image) } } - console.log("Navbar.ts: getCurrentUserProfile()") + // console.log("Navbar.ts: getCurrentUserProfile()") } catch (error) { console.log(error) } diff --git a/components/common/SlideOverNavbar/SlideOverNavbar.tsx b/components/common/SlideOverNavbar/SlideOverNavbar.tsx index ea49f01..34d7b5f 100644 --- a/components/common/SlideOverNavbar/SlideOverNavbar.tsx +++ b/components/common/SlideOverNavbar/SlideOverNavbar.tsx @@ -284,20 +284,20 @@ const SlideOverNavbar: FC = ({ )} - + close()}> - Store + Drop - {/* + close()}> Marketplace - */} + close()}> diff --git a/components/ui/BeastMarket/BeastMarket.tsx b/components/ui/BeastMarket/BeastMarket.tsx index 933ec5c..b2dc635 100644 --- a/components/ui/BeastMarket/BeastMarket.tsx +++ b/components/ui/BeastMarket/BeastMarket.tsx @@ -1466,7 +1466,8 @@ const BeastMarket: FC = () => { )} {/* */} - + {/* wait with this */} + {/*
Information is coming here
setMobileCartOpen(true)}> View Cart @@ -1477,7 +1478,7 @@ const BeastMarket: FC = () => { open={mobileCartOpen} setOpen={setMobileCartOpen} /> -
+
*/} ) diff --git a/components/ui/BeastMarketBeastList/BeastMarketBeastList.tsx b/components/ui/BeastMarketBeastList/BeastMarketBeastList.tsx index 08a2892..0f62dae 100644 --- a/components/ui/BeastMarketBeastList/BeastMarketBeastList.tsx +++ b/components/ui/BeastMarketBeastList/BeastMarketBeastList.tsx @@ -17,7 +17,7 @@ const MarketUl = styled.ul` overflow: hidden; overflow-y: scroll; - grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); + // grid-template-columns: repeat(auto-fill, minmax(200px, 2fr)); gap: 1.25rem; -ms-overflow-style: none; /* IE and Edge */ scrollbar-width: none; /* Firefox */ @@ -472,19 +472,39 @@ const BeastMarketBeastList: FC = ({ - {beastsForSale + {userBeasts ?.map((beast: any) => beast.id) .includes(beast.id) ? ( +
+ Owned{" "} + {beastsForSale + ?.map((beast: any) => beast.id) + .includes(beast.id) && ( + <> + {parseFloat( + beastsForSale?.filter( + (beastForSale: any) => beastForSale.id == beast.id, + )[0].price, + ).toFixed(0)}{" "} + FUSD + + )} +
+ ) : ( <> - {parseFloat( - beastsForSale?.filter( - (beastForSale: any) => beastForSale.id == beast.id, - )[0].price, - ).toFixed(0)}{" "} - FUSD + {beastsForSale + ?.map((beast: any) => beast.id) + .includes(beast.id) && ( + <> + {parseFloat( + beastsForSale?.filter( + (beastForSale: any) => beastForSale.id == beast.id, + )[0].price, + ).toFixed(0)}{" "} + FUSD + + )} - ) : ( - <> )}
{/* @@ -581,7 +601,7 @@ const BeastMarketBeastList: FC = ({ return ( {displayBeasts.map((beast: any) => ( 50 FUSD - Place A Bid + Make offer setDialogOpen(!dialogOpen)} @@ -379,13 +380,13 @@ const BeastMarketHero: FC = ({ beast }) => {
{" "} -
Discover The Beasts
+
Discover Beasts

Basic Beasts is a collection of unique digital collectibles representing interactive beasts that can evolve, breed, and be loved.

- + {/* */} setSkinOverviewOpen(true)}>

{hunterData?.length}

Hunters diff --git a/components/ui/BeastMarketThumbnail/BeastMarketThumbnail.tsx b/components/ui/BeastMarketThumbnail/BeastMarketThumbnail.tsx index 0bf513e..d37541e 100644 --- a/components/ui/BeastMarketThumbnail/BeastMarketThumbnail.tsx +++ b/components/ui/BeastMarketThumbnail/BeastMarketThumbnail.tsx @@ -44,9 +44,7 @@ const BeastMarketThumbnail: FC = ({ ...props }: BeastThumbnailProps) => { return ( - console.log("Inview:", inView)} - > + console.log("Inview:", inView)}>
<> diff --git a/components/ui/PackStore/PackStore.tsx b/components/ui/PackStore/PackStore.tsx index 8f58b6b..271dd28 100644 --- a/components/ui/PackStore/PackStore.tsx +++ b/components/ui/PackStore/PackStore.tsx @@ -1108,10 +1108,10 @@ const PackStore: FC = () => { {t("home:place-your-order-date", { - dateAndTime: "Jan 7 - Jan 9, 12PM PST", + dateAndTime: "Jan 27 - Feb 3, 12PM PST", })} - {t("home:announce-winners", { date: "Jan 23" })} + {t("home:announce-winners", { date: "Feb 10" })} diff --git a/components/ui/ProductBeastView/ProductBeastView.tsx b/components/ui/ProductBeastView/ProductBeastView.tsx index ab04653..aecffc4 100644 --- a/components/ui/ProductBeastView/ProductBeastView.tsx +++ b/components/ui/ProductBeastView/ProductBeastView.tsx @@ -406,60 +406,57 @@ const ProductBeastView: FC = ({ beast, hunterData }) => { ?.filter((offer: any) => offer?.beastID == beast?.id) .sort((a: any, b: any) => b.offerAmount - a.offerAmount) .map((offer: any) => ( - <> -
  • - - - hunter.address == offer?.offeror, - )?.[0]?.avatar || profilePictures[1].image - } - alt="first owner avatar" - /> -
    - - {hunterData?.filter( - (hunter: any) => hunter.address == offer?.offeror, - )?.[0]?.findName != null ? ( - <> - {hunterData?.filter( - (hunter: any) => - hunter.address == offer?.offeror, - )?.[0]?.findName != "" - ? hunterData?.filter( - (hunter: any) => - hunter.address == offer?.offeror, - )?.[0]?.findName - : offer?.offeror}{" "} - - ) : ( - offer?.offeror - )} - - {/* Wait with time of offers */} - {/*

    +
  • + + + hunter.address == offer?.offeror, + )?.[0]?.avatar || profilePictures[1].image + } + alt="first owner avatar" + /> +
    + + {hunterData?.filter( + (hunter: any) => hunter.address == offer?.offeror, + )?.[0]?.findName != null ? ( + <> + {hunterData?.filter( + (hunter: any) => hunter.address == offer?.offeror, + )?.[0]?.findName != "" + ? hunterData?.filter( + (hunter: any) => + hunter.address == offer?.offeror, + )?.[0]?.findName + : offer?.offeror}{" "} + + ) : ( + offer?.offeror + )} + + {/* Wait with time of offers */} + {/*

    {offerday} day{offerday > 1 && "s "} ago | Expires in{" "} {offerweek} week {offerweek > 1 && "s "} | Floor bid

    */} -
    -
    - - {parseFloat( - parseFloat(offer?.offerAmount.toString()).toFixed(2), - )}{" "} - FUSD - - {user?.addr == offer?.offeror && ( - removeOffer(offer?.offerID)}> - Remove - - )} -
    -
  • - +

    +
    + + {parseFloat( + parseFloat(offer?.offerAmount.toString()).toFixed(2), + )}{" "} + FUSD + + {user?.addr == offer?.offeror && ( + removeOffer(offer?.offerID)}> + Remove + + )} +
    +
  • ))} {/* {something.map((offer: any) => ( */} @@ -667,11 +664,17 @@ const ProductBeastView: FC = ({ beast, hunterData }) => { {beastsForSale ?.map((beast: any) => beast.id) .includes(beast?.id) ? ( - delistBeast(beast?.id)}> + delistBeast(beast?.id)} + > Delist ) : ( - setListBeastForSaleOpen(true)}> + setListBeastForSaleOpen(true)} + > List for sale )} @@ -696,7 +699,7 @@ const ProductBeastView: FC = ({ beast, hunterData }) => { )} {user?.addr != beast?.currentOwner && ( setPlaceABidOpen(true)}> - Place a bid + Make offer )} {user?.addr == beast?.currentOwner && bestOffer != null && ( diff --git a/framework/hooks/use-beast-market.hook.ts b/framework/hooks/use-beast-market.hook.ts index 938c9a1..270201d 100644 --- a/framework/hooks/use-beast-market.hook.ts +++ b/framework/hooks/use-beast-market.hook.ts @@ -197,7 +197,7 @@ export default function useBeastMarket() { `, }) setBeastsForSale(res) - console.log(res) + // console.log(res) return res } catch (error) { console.log(error) @@ -601,7 +601,7 @@ export default function useBeastMarket() { `, }) setAllBeastOffers(res) - console.log("all offers", res) + // console.log("all offers", res) return res } catch (error) { console.log(error) diff --git a/framework/hooks/use-fusd.hook.ts b/framework/hooks/use-fusd.hook.ts index 3fcea41..3c643aa 100644 --- a/framework/hooks/use-fusd.hook.ts +++ b/framework/hooks/use-fusd.hook.ts @@ -44,7 +44,7 @@ export default function useFUSD(user: any) { args: (arg: any, t: any) => [arg(user?.addr, t.Address)], }) dispatch({ type: "SUCCESS", payload: response }) - console.log("use-fusd.hook.ts: getFUSDBalance()") + // console.log("use-fusd.hook.ts: getFUSDBalance()") } catch (err) { dispatch({ type: "ERROR" }) console.log(err) @@ -57,7 +57,7 @@ export default function useFUSD(user: any) { cadence: GET_FUSD_BALANCE, args: (arg: any, t: any) => [arg(address, t.Address)], }) - console.log("user fusd", response) + console.log("Admin FUSD vault", response) } catch (err) { console.log(err) } diff --git a/framework/hooks/use-hunter-data.hook.ts b/framework/hooks/use-hunter-data.hook.ts index 0e7bcac..b568ced 100644 --- a/framework/hooks/use-hunter-data.hook.ts +++ b/framework/hooks/use-hunter-data.hook.ts @@ -224,14 +224,14 @@ export default function useHunterData() { (a: any, b: any) => b.rankByHunterScore - a.rankByHunterScore, ) - console.log("hunterData", hunterDataRankedByTotalBeasts) - - console.log( - "hunterData", - hunterDataRankedByTotalBeasts.filter( - (hunter: any) => hunter.address == "0x9b4180f13bbc9e4d", - )?.[0], - ) + // console.log("hunterData", hunterDataRankedByTotalBeasts) + + // console.log( + // "hunterData", + // hunterDataRankedByTotalBeasts.filter( + // (hunter: any) => hunter.address == "0x9b4180f13bbc9e4d", + // )?.[0], + // ) dispatch({ type: "SUCCESS", payload: hunterDataRankedByTotalBeasts }) } diff --git a/framework/hooks/use-user-beasts.hook.ts b/framework/hooks/use-user-beasts.hook.ts index 329ea17..04f8ea4 100644 --- a/framework/hooks/use-user-beasts.hook.ts +++ b/framework/hooks/use-user-beasts.hook.ts @@ -160,7 +160,7 @@ export default function useUserBeasts(user: any) { // setUserBeastCollection(mappedCollection) dispatch({ type: "SUCCESS", payload: mappedCollection }) - console.log("your beasts", mappedCollection) + // console.log("your beasts", mappedCollection) // Get evolvable beast dictionary {beastTemplateID: [beasts]} var beasts = [...mappedCollection] beasts.sort((a, b) => a.serialNumber - b.serialNumber) diff --git a/framework/hooks/use-user-inbox.hook.ts b/framework/hooks/use-user-inbox.hook.ts index f831bfe..30408a5 100644 --- a/framework/hooks/use-user-inbox.hook.ts +++ b/framework/hooks/use-user-inbox.hook.ts @@ -203,7 +203,7 @@ export default function useInbox(user: any) { ], }) setCentralizedInbox(res) - console.log("use-user-inbox.hook.ts: fetchInbox()") + // console.log("use-user-inbox.hook.ts: fetchInbox()") } catch (err) { console.log(err) } diff --git a/framework/hooks/use-user-packs.hook.ts b/framework/hooks/use-user-packs.hook.ts index f373006..8985b00 100644 --- a/framework/hooks/use-user-packs.hook.ts +++ b/framework/hooks/use-user-packs.hook.ts @@ -45,16 +45,19 @@ export default function useUserPacks(user: any) { let collectionRef = getAccount(acct).getCapability(Pack.CollectionPublicPath) .borrow<&{Pack.PackCollectionPublic}>() - ?? panic("Could not get public Pack collection reference") + // ?? panic("Could not get public Pack collection reference") + if (collectionRef != nil) { + let PackIDs = collectionRef!.getIDs() - let PackIDs = collectionRef.getIDs() - - for id in PackIDs { - let pack = collectionRef.borrowPack(id: id)! - - packCollection.append(pack) + for id in PackIDs { + let pack = collectionRef!.borrowPack(id: id)! + + packCollection.append(pack) + } } + + return packCollection } `, @@ -100,7 +103,7 @@ export default function useUserPacks(user: any) { mappedPacks.push(pack) } dispatch({ type: "SUCCESS", payload: mappedPacks }) - console.log("use-user-packs.hook.ts: fetchUserPacks()") + // console.log("use-user-packs.hook.ts: fetchUserPacks()") } catch (err) { dispatch({ type: "ERROR" }) console.log(err) diff --git a/i18n.json b/i18n.json index 13304a2..62b38da 100644 --- a/i18n.json +++ b/i18n.json @@ -4,6 +4,6 @@ "pages": { "*": ["common"], "/": ["home"], - "/store": ["home"] + "/drop": ["home"] } } diff --git a/pages/store.tsx b/pages/drop.tsx similarity index 79% rename from pages/store.tsx rename to pages/drop.tsx index a153ffc..92085e5 100644 --- a/pages/store.tsx +++ b/pages/drop.tsx @@ -3,8 +3,8 @@ import HeaderDark from "@components/ui/HeaderDark" import PackStore from "@components/ui/PackStore" import styled from "styled-components" -const Store: NextPage = () => { +const Drop: NextPage = () => { return } -export default Store +export default Drop From d3e2758acae50ed836202e685b3a528955ab9a29 Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Thu, 19 Jan 2023 19:28:31 +0100 Subject: [PATCH 04/84] offers cleanup --- .../ui/PlaceABidModal/PlaceABidModal.tsx | 32 +++--- framework/hooks/use-beast-market.hook.ts | 100 +++++++++--------- 2 files changed, 70 insertions(+), 62 deletions(-) diff --git a/components/ui/PlaceABidModal/PlaceABidModal.tsx b/components/ui/PlaceABidModal/PlaceABidModal.tsx index 197692a..04c6407 100644 --- a/components/ui/PlaceABidModal/PlaceABidModal.tsx +++ b/components/ui/PlaceABidModal/PlaceABidModal.tsx @@ -3,6 +3,7 @@ import { Dialog, Transition, Menu } from "@headlessui/react" import styled from "styled-components" import { useUser } from "@components/user/UserProvider" import beastTemplates from "data/beastTemplates" +import { useAuth } from "@components/auth/AuthProvider" const ContainerDiv = styled.div` align-items: center; @@ -99,6 +100,7 @@ type Props = { const PlaceABidModal: FC = ({ open, setOpen, beast }) => { const [price, setPrice] = useState(0.0) const { placeABid, balance } = useUser() + const { loggedIn, logIn } = useAuth() const handleChange = (event: any) => { event.preventDefault() @@ -170,19 +172,23 @@ const PlaceABidModal: FC = ({ open, setOpen, beast }) => { />
    - + {!loggedIn ? ( + + ) : ( + + )}
    diff --git a/framework/hooks/use-beast-market.hook.ts b/framework/hooks/use-beast-market.hook.ts index 270201d..5035bae 100644 --- a/framework/hooks/use-beast-market.hook.ts +++ b/framework/hooks/use-beast-market.hook.ts @@ -679,56 +679,58 @@ export default function useBeastMarket() { import BeastOffers from 0xBeastOffers transaction(offerorAddress: Address, offerID: UInt64, beastID: UInt64) { - - let collectionRef: &BasicBeasts.Collection - let offer: &BeastOffers.Offer{BeastOffers.OfferPublic} - let receiverCapability: Capability<&FUSD.Vault{FungibleToken.Receiver}> - - prepare(acct: AuthAccount) { - // check for FUSD vault - if acct.borrow<&FUSD.Vault>(from: /storage/fusdVault) == nil { - // Create a new FUSD Vault and put it in storage - acct.save(<-FUSD.createEmptyVault(), to: /storage/fusdVault) - - // Create a public capability to the Vault that only exposes - // the deposit function through the Receiver interface - acct.link<&FUSD.Vault{FungibleToken.Receiver}>( - /public/fusdReceiver, - target: /storage/fusdVault - ) - - // Create a public capability to the Vault that only exposes - // the balance field through the Balance interface - acct.link<&FUSD.Vault{FungibleToken.Balance}>( - /public/fusdBalance, - target: /storage/fusdVault - ) - } - - // Get offer collection - let offerCollectionRef = getAccount(offerorAddress).getCapability(BeastOffers.CollectionPublicPath) - .borrow<&BeastOffers.OfferCollection{BeastOffers.OfferCollectionPublic}>() - ?? panic("Couldn't borrow offeror's offer collection") - - // Get offer - self.offer = offerCollectionRef.borrowOffer(id: offerID) - ?? panic("Couldn't find offer in the offer collection") - - // Get beast collection reference - self.collectionRef = acct.borrow<&BasicBeasts.Collection>(from: BasicBeasts.CollectionStoragePath) - ?? panic("No beast collection reference found") - - // Get FUSD receiver reference - self.receiverCapability = acct.getCapability<&FUSD.Vault{FungibleToken.Receiver}>(/public/fusdReceiver) - assert(self.receiverCapability.check(), message: "Missing or mis-typed FUSD vault provider") - } - - execute { - let beast <- self.collectionRef.withdraw(withdrawID: beastID) as! @BasicBeasts.NFT - self.offer.accept(beast: <-beast, receiverCapability: self.receiverCapability) - } - } + let collectionRef: &BasicBeasts.Collection + let offerCollectionRef: &BeastOffers.OfferCollection{BeastOffers.OfferCollectionPublic} + let offer: &BeastOffers.Offer{BeastOffers.OfferPublic} + let receiverCapability: Capability<&FUSD.Vault{FungibleToken.Receiver}> + + prepare(acct: AuthAccount) { + // check for FUSD vault + if acct.borrow<&FUSD.Vault>(from: /storage/fusdVault) == nil { + // Create a new FUSD Vault and put it in storage + acct.save(<-FUSD.createEmptyVault(), to: /storage/fusdVault) + + // Create a public capability to the Vault that only exposes + // the deposit function through the Receiver interface + acct.link<&FUSD.Vault{FungibleToken.Receiver}>( + /public/fusdReceiver, + target: /storage/fusdVault + ) + + // Create a public capability to the Vault that only exposes + // the balance field through the Balance interface + acct.link<&FUSD.Vault{FungibleToken.Balance}>( + /public/fusdBalance, + target: /storage/fusdVault + ) + } + + // Get offer collection + self.offerCollectionRef = getAccount(offerorAddress).getCapability(BeastOffers.CollectionPublicPath) + .borrow<&BeastOffers.OfferCollection{BeastOffers.OfferCollectionPublic}>() + ?? panic("Couldn't borrow offeror's offer collection") + + // Get offer + self.offer = self.offerCollectionRef.borrowOffer(id: offerID) + ?? panic("Couldn't find offer in the offer collection") + + // Get beast collection reference + self.collectionRef = acct.borrow<&BasicBeasts.Collection>(from: BasicBeasts.CollectionStoragePath) + ?? panic("No beast collection reference found") + + // Get FUSD receiver reference + self.receiverCapability = acct.getCapability<&FUSD.Vault{FungibleToken.Receiver}>(/public/fusdReceiver) + assert(self.receiverCapability.check(), message: "Missing or mis-typed FUSD vault provider") + } + + execute { + let beast <- self.collectionRef.withdraw(withdrawID: beastID) as! @BasicBeasts.NFT + self.offer.accept(beast: <-beast, receiverCapability: self.receiverCapability) + self.offerCollectionRef.cleanup(offerID: offerID) + } + } + `), args([ arg(address, t.Address), From ea21a99d68f99d38c540031f4c651bcb924d4182 Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Fri, 20 Jan 2023 22:02:18 +0100 Subject: [PATCH 05/84] stuff fix search bar and any input field --- components/ui/BeastMarket/BeastMarket.tsx | 11 ++++++++++- styles/globals.css | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/components/ui/BeastMarket/BeastMarket.tsx b/components/ui/BeastMarket/BeastMarket.tsx index b2dc635..2b429f1 100644 --- a/components/ui/BeastMarket/BeastMarket.tsx +++ b/components/ui/BeastMarket/BeastMarket.tsx @@ -256,7 +256,16 @@ const DropDown: FC<{ const sortByPriceLowHigh = () => { if (beasts != null) { beasts.sort((a: any, b: any) => a.beastTemplateID - b.beastTemplateID) - beasts.sort((a: any, b: any) => a.price - b.price) + beasts.sort((a: any, b: any) => { + if (a.price == null || a.price === 0) { + return 1 + } else if (b.price == null || b.price === 0) { + return -1 + } else { + return a.price - b.price + } + }) + // beasts.sort((a: any, b: any) => a.price - b.price) } } const sortByPriceHighLow = () => { diff --git a/styles/globals.css b/styles/globals.css index d5ffca7..bcef87a 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -21,7 +21,7 @@ input { cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) 14 0, pointer !important; - user-select: none; + /* user-select: none; */ } a { From 17027040afa5990308bbf274790f6c0a12d69478 Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Fri, 20 Jan 2023 22:07:09 +0100 Subject: [PATCH 06/84] Update FUSDClaimModal.tsx --- components/ui/FUSDClaimModal/FUSDClaimModal.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/ui/FUSDClaimModal/FUSDClaimModal.tsx b/components/ui/FUSDClaimModal/FUSDClaimModal.tsx index 8fe77df..a636832 100644 --- a/components/ui/FUSDClaimModal/FUSDClaimModal.tsx +++ b/components/ui/FUSDClaimModal/FUSDClaimModal.tsx @@ -350,7 +350,8 @@ const FUSDClaimModal: FC = ({ Claim FUSD from Chest
    - Current Balance: {balance?.slice(0, -6)} ₣USD + Current Balance:{" "} + {balance != null ? balance?.slice(0, -6) : 0} ₣USD
    Date: Fri, 20 Jan 2023 22:10:18 +0100 Subject: [PATCH 07/84] Update FUSDClaimModal.tsx --- components/ui/FUSDClaimModal/FUSDClaimModal.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/ui/FUSDClaimModal/FUSDClaimModal.tsx b/components/ui/FUSDClaimModal/FUSDClaimModal.tsx index a636832..052df72 100644 --- a/components/ui/FUSDClaimModal/FUSDClaimModal.tsx +++ b/components/ui/FUSDClaimModal/FUSDClaimModal.tsx @@ -350,8 +350,7 @@ const FUSDClaimModal: FC = ({ Claim FUSD from Chest
    - Current Balance:{" "} - {balance != null ? balance?.slice(0, -6) : 0} ₣USD + Current Balance: {balance != null ? balance : 0} ₣USD
    Date: Sat, 21 Jan 2023 14:25:39 +0100 Subject: [PATCH 08/84] fr labs test :3 --- components/user/UserProvider.tsx | 2 + framework/hooks/use-beast-market.hook.ts | 3 ++ pages/beast-details/[beastID].tsx | 4 ++ test.cdc | 61 ++++++++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 test.cdc diff --git a/components/user/UserProvider.tsx b/components/user/UserProvider.tsx index 0d6fdf4..f99eb56 100644 --- a/components/user/UserProvider.tsx +++ b/components/user/UserProvider.tsx @@ -89,6 +89,7 @@ const UserProvider: FC = ({ children }) => { const { getClaimedFUSDRewards, claimedFUSDRewards } = useFUSDChestRewards() const { + data: beastMarketStuff, beastsForSale, getAllBeastsForSale, purchaseBeast, @@ -156,6 +157,7 @@ const UserProvider: FC = ({ children }) => { getUserFUSDBalance, highestSale, getHighestSale, + beastMarketStuff, }} > {children} diff --git a/framework/hooks/use-beast-market.hook.ts b/framework/hooks/use-beast-market.hook.ts index 5035bae..e3728d3 100644 --- a/framework/hooks/use-beast-market.hook.ts +++ b/framework/hooks/use-beast-market.hook.ts @@ -39,6 +39,7 @@ export default function useBeastMarket() { }, []) const getAllBeasts = async () => { + dispatch({ type: "PROCESSING" }) try { let res = await query({ cadence: ` @@ -137,7 +138,9 @@ export default function useBeastMarket() { allBeasts.push(beast) } setBeasts(allBeasts) + dispatch({ type: "SUCCESS" }) } catch (error) { + dispatch({ type: "ERROR" }) console.log(error) } } diff --git a/pages/beast-details/[beastID].tsx b/pages/beast-details/[beastID].tsx index 9d14fa9..0d39ec4 100644 --- a/pages/beast-details/[beastID].tsx +++ b/pages/beast-details/[beastID].tsx @@ -2,6 +2,7 @@ import type { NextPage } from "next" import ProductBeastView from "@components/ui/ProductBeastView" import { useUser } from "@components/user/UserProvider" import { useRouter } from "next/router" +import useBeastMarket from "@framework/hooks/use-beast-market.hook" const dummyData = [ { @@ -137,11 +138,14 @@ const dummyData = [ const BeastDetails: NextPage = () => { const { beasts, hunterData } = useUser() + const { loading } = useBeastMarket() + const router = useRouter() const { beastID } = router.query return (
    + {loading &&
    LOADING STAY CALM
    } {beastID != null && ( beasts.id == beastID)[0]} diff --git a/test.cdc b/test.cdc new file mode 100644 index 0000000..23aa939 --- /dev/null +++ b/test.cdc @@ -0,0 +1,61 @@ +import HunterScore from 0xfa252d0aa22bf86a +import BasicBeasts from 0xfa252d0aa22bf86a + +pub fun main(): [{String:AnyStruct}] { + + let addresses = HunterScore.getHunterScores().keys + var beasts: [{String: AnyStruct}] = [] + var index = 0 + let limit = 10 + + + for address in addresses { + let collectionRef = getAccount(address).getCapability(BasicBeasts.CollectionPublicPath) + .borrow<&{BasicBeasts.BeastCollectionPublic}>() + if (collectionRef != nil) { + let IDs = collectionRef!.getIDs() + var i = 0 + while i < IDs.length && index < limit { + let token = collectionRef!.borrowBeast(id: IDs[i]) + ?? panic("Couldn't borrow a reference to the specified beast") + + let beastTemplate = token.getBeastTemplate() + + let beast = { + "name" : beastTemplate.name, + "description" : beastTemplate.description, + "nickname" : token.getNickname(), + "serialNumber" : token.serialNumber, + "dexNumber" : beastTemplate.dexNumber, + "skin" : beastTemplate.skin, + "starLevel" : beastTemplate.starLevel, + "elements" : beastTemplate.elements, + "basicSkills" : beastTemplate.basicSkills, + "ultimateSkill" : beastTemplate.ultimateSkill, + "currentOwner" : address, + "firstOwner" : token.getFirstOwner(), + "sex" : token.sex, + "breedingCount" : 0, + "numberOfMintedBeastTemplates" : 100, + "beastTemplateID" : beastTemplate.beastTemplateID, + "id": token.id + } + + beasts.append(beast) + index = index + 1 + + i = i + 1 + + } + } + } + + + return beasts +} + +// flow scripts execute test.cdc -n=testnet + +// a b +// FRLabs join two objects +// let newArray = [...a, ...b] \ No newline at end of file From 81b77bc30ba62f74b3c678167e86a3d376b28c89 Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Mon, 23 Jan 2023 10:17:19 +0100 Subject: [PATCH 09/84] Update BeastMarketFilters.tsx --- .../BeastMarketFilters/BeastMarketFilters.tsx | 73 +++++++++++-------- 1 file changed, 41 insertions(+), 32 deletions(-) diff --git a/components/ui/BeastMarketFilters/BeastMarketFilters.tsx b/components/ui/BeastMarketFilters/BeastMarketFilters.tsx index b0cbba1..516dae0 100644 --- a/components/ui/BeastMarketFilters/BeastMarketFilters.tsx +++ b/components/ui/BeastMarketFilters/BeastMarketFilters.tsx @@ -92,7 +92,7 @@ const Switch = styled.label` display: inline-block; width: 36px; height: 20px; - margin: 1rem 0; + margin: 0.8rem 0; ` const SwitchSlider = styled.span` position: absolute; @@ -151,7 +151,10 @@ const sortOptions = [ { name: "Price: Low to High", href: "#", current: false }, { name: "Price: High to Low", href: "#", current: false }, ] -const subCategories = [{ name: "Favorites", href: "#" }] +const subCategories = [ + { name: "Favorites", href: "#" }, + { name: "Owned", href: "#" }, +] function classNames(...classes: any) { return classes.filter(Boolean).join(" ") @@ -294,22 +297,24 @@ const BeastMarketFilters: FC = ({ {/* Filters */}

    Categories

    -
      + @@ -461,26 +466,27 @@ const BeastMarketFilters: FC = ({ {/* Filters */}

      Categories

      -
        +
          {subCategories.map((category) => (
        • - {category.name} - - { - setFavoriteToggled(!favoriteToggled) - }} - /> - - + + {category.name} + + {category.name == "Favorites" && ( + + { + setFavoriteToggled(!favoriteToggled) + }} + /> + + + )}
        • ))}
        @@ -496,18 +502,21 @@ const BeastMarketFilters: FC = ({ <>

        - + {section.name} {open ? (

    )} diff --git a/components/ui/BeastMarketFilters/BeastMarketFilters.tsx b/components/ui/BeastMarketFilters/BeastMarketFilters.tsx index 516dae0..0789471 100644 --- a/components/ui/BeastMarketFilters/BeastMarketFilters.tsx +++ b/components/ui/BeastMarketFilters/BeastMarketFilters.tsx @@ -142,6 +142,8 @@ type Props = { setMobileFiltersOpen: any setFavoriteToggled: any favoriteToggled: any + ownedToggled: boolean + setOwnedToggled: any } const sortOptions = [ @@ -168,6 +170,8 @@ const BeastMarketFilters: FC = ({ setMobileFiltersOpen, favoriteToggled, setFavoriteToggled, + ownedToggled, + setOwnedToggled, }) => { // const [mobileFiltersOpen, setMobileFiltersOpen] = useState(false) @@ -294,7 +298,7 @@ const BeastMarketFilters: FC = ({ - {/* Filters */} + {/* Filters for mobile*/}

    Categories

    ) @@ -635,15 +676,16 @@ const ProductBeastView: FC = ({ beast, hunterData }) => { setOpen={setPlaceABidOpen} beast={beast} /> - - - + {/* className="mx-5 px-5" */} + + {/* className="mx-auto w-1/2" */} + {beast ? ( = ({ beast, hunterData }) => { ))} + ) : ( + + + + )} + = ({ beast, hunterData }) => { setPlaceABidOpen={setPlaceABidOpen} setAcceptOfferOpen={setAcceptOfferOpen} /> + console.log(windowWidth)}> = ({ beast, hunterData }) => { - {allBeastOffers?.filter((offer: any) => offer?.beastID == beast?.id) - .length > 0 && ( - - - - )} + {/* DG Checking if beast is defined, and while it's not, we are displaying a message Loading Offers... */} + {beast + ? allBeastOffers?.filter( + (offer: any) => offer?.beastID == beast?.id, + ).length > 0 && ( + + + + ) + : "Loading Offers..."} - -

    {beast?.nickname + " " + "#" + beast?.serialNumber}

    - - - - hunter.address == beast?.firstOwner, - )?.[0]?.avatar - } - alt="first owner avatar" - /> -
    -

    first owner

    -

    - {hunterData?.filter( - (hunter: any) => hunter.address == beast?.firstOwner, - )?.[0]?.findName != "" - ? hunterData?.filter( - (hunter: any) => - hunter.address == beast?.firstOwner, - )?.[0]?.findName - : beast?.firstOwner} -

    -
    -
    -
    - - - hunter.address == beast?.currentOwner, - )?.[0]?.avatar - } - alt="current owner avatar" - /> -
    -

    current owner

    -

    - {hunterData?.filter( - (hunter: any) => hunter.address == beast?.currentOwner, - )?.[0]?.findName != "" - ? hunterData?.filter( - (hunter: any) => - hunter.address == beast?.currentOwner, - )?.[0]?.findName - : beast?.currentOwner} -

    -
    -
    -
    -
    + + {beast ? ( +

    {beast?.nickname + " " + "#" + beast?.serialNumber}

    + ) : ( +

    Loading...

    + )} -
    + +
    {beast?.price != null && ( @@ -839,7 +848,7 @@ const ProductBeastView: FC = ({ beast, hunterData }) => { ) } > - Buy now for{" "} + Buy now for {parseFloat(parseFloat(beast?.price).toFixed(2))} FUSD )} @@ -858,12 +867,90 @@ const ProductBeastView: FC = ({ beast, hunterData }) => { {/*

    Sale ends in [time]

    */} - {/* ) : ( -
    - Make an offer -
    - )} */} - {" "} + + {beast ? ( + + + + hunter.address == beast?.firstOwner, + )?.[0]?.avatar + } + alt="first owner avatar" + /> +
    +

    first owner

    +

    + {hunterData?.filter( + (hunter: any) => hunter.address == beast?.firstOwner, + )?.[0]?.findName != "" + ? hunterData?.filter( + (hunter: any) => + hunter.address == beast?.firstOwner, + )?.[0]?.findName + : beast?.firstOwner} +

    +
    +
    +
    + + + + hunter.address == beast?.currentOwner, + )?.[0]?.avatar + } + alt="current owner avatar" + /> +
    +

    current owner

    +

    + {hunterData?.filter( + (hunter: any) => + hunter.address == beast?.currentOwner, + )?.[0]?.findName != "" + ? hunterData?.filter( + (hunter: any) => + hunter.address == beast?.currentOwner, + )?.[0]?.findName + : beast?.currentOwner} +

    +
    +
    +
    +
    + ) : ( + + + + +
    +

    first owner

    +

    Owner address loading...

    +
    +
    +
    + + + +
    +

    Current owner

    +

    Owner address loading...

    +
    +
    +
    +
    + )} + + {/* + + */} +
    +
    {/* Maybe for later showcase more beasts */} From 6b4e8df35317977ef71e4c52293dddd5ff80b7ab Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Fri, 31 Mar 2023 16:03:50 +0200 Subject: [PATCH 54/84] Update InfoMobile.tsx --- components/ui/ProductBeastView/InfoMobile.tsx | 158 +++++++++++------- 1 file changed, 94 insertions(+), 64 deletions(-) diff --git a/components/ui/ProductBeastView/InfoMobile.tsx b/components/ui/ProductBeastView/InfoMobile.tsx index 6c42d8d..c71d507 100644 --- a/components/ui/ProductBeastView/InfoMobile.tsx +++ b/components/ui/ProductBeastView/InfoMobile.tsx @@ -16,7 +16,7 @@ import { BuyButton, BidButton, } from "./ProductBeastView" -import SocialMediaShare from "./SocialMediaShare" +import SocialMediaShare from "../SocialMediaShare" const InfoMobileWrapper = styled.div` display: none; @@ -39,7 +39,14 @@ const BeastDetailsMobile = styled.div` const SharingDiv = styled.div` display: block; + width: fit-content; +` + +const HeaderDiv = styled.div` width: 100%; + display: flex; + justify-content: space-between; + align-items: center; ` type Props = { @@ -90,65 +97,17 @@ export const InfoMobile: FC = ({ return ( - -

    {beast?.nickname + " " + "#" + beast?.serialNumber}

    - - - - hunter.address == beast?.firstOwner, - )?.[0]?.avatar - } - alt="first owner avatar" - /> -
    -

    first owner

    -

    - {hunterData?.filter( - (hunter: any) => hunter.address == beast?.firstOwner, - )?.[0]?.findName != "" - ? hunterData?.filter( - (hunter: any) => hunter.address == beast?.firstOwner, - )?.[0]?.findName - : beast?.firstOwner} -

    -
    -
    -
    - - - hunter.address == beast?.currentOwner, - )?.[0]?.avatar - } - alt="current owner avatar" - /> -
    -

    current owner

    -

    - {hunterData?.filter( - (hunter: any) => hunter.address == beast?.currentOwner, - )?.[0]?.findName != "" - ? hunterData?.filter( - (hunter: any) => hunter.address == beast?.currentOwner, - )?.[0]?.findName - : beast?.currentOwner} -

    -
    -
    -
    -
    - {/* social share, refresh, favorite */} - - - - -
    + + {beast ? ( +

    {beast?.nickname + " " + "#" + beast?.serialNumber}

    + ) : ( +

    Loading...

    + )} + + + +
    {beast?.price != null && ( @@ -236,11 +195,82 @@ export const InfoMobile: FC = ({ {/*

    Sale ends in [time]

    */} - {/* ) : ( -
    - Make an offer -
    - )} */} + + {beast ? ( + + + + hunter.address == beast?.firstOwner, + )?.[0]?.avatar + } + alt="first owner avatar" + /> +
    +

    first owner

    +

    + {hunterData?.filter( + (hunter: any) => hunter.address == beast?.firstOwner, + )?.[0]?.findName != "" + ? hunterData?.filter( + (hunter: any) => hunter.address == beast?.firstOwner, + )?.[0]?.findName + : beast?.firstOwner} +

    +
    +
    +
    + + + hunter.address == beast?.currentOwner, + )?.[0]?.avatar + } + alt="current owner avatar" + /> +
    +

    current owner

    +

    + {hunterData?.filter( + (hunter: any) => hunter.address == beast?.currentOwner, + )?.[0]?.findName != "" + ? hunterData?.filter( + (hunter: any) => + hunter.address == beast?.currentOwner, + )?.[0]?.findName + : beast?.currentOwner} +

    +
    +
    +
    +
    + ) : ( + + + + +
    +

    first owner

    +

    Owner address loading...

    +
    +
    +
    + + + +
    +

    Current owner

    +

    Owner address loading...

    +
    +
    +
    +
    + )} +
    ) } From 6f36bdada5678d157037e9e23113fdb5328da52a Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Fri, 31 Mar 2023 16:19:37 +0200 Subject: [PATCH 55/84] social share --- components/ui/ProductBeastView/InfoMobile.tsx | 2 +- .../ui/ProductBeastView/ProductBeastView.tsx | 2 +- .../ui/ProductBeastView/SocialMediaShare.tsx | 107 +++++------------- public/document.svg | 1 + public/emptyImg.png | Bin 0 -> 1741 bytes public/icons8-list-48.png | Bin 0 -> 242 bytes public/lightning.svg | 1 + 7 files changed, 32 insertions(+), 81 deletions(-) create mode 100644 public/document.svg create mode 100644 public/emptyImg.png create mode 100644 public/icons8-list-48.png create mode 100644 public/lightning.svg diff --git a/components/ui/ProductBeastView/InfoMobile.tsx b/components/ui/ProductBeastView/InfoMobile.tsx index c71d507..6051e95 100644 --- a/components/ui/ProductBeastView/InfoMobile.tsx +++ b/components/ui/ProductBeastView/InfoMobile.tsx @@ -16,7 +16,7 @@ import { BuyButton, BidButton, } from "./ProductBeastView" -import SocialMediaShare from "../SocialMediaShare" +import SocialMediaShare from "./SocialMediaShare" const InfoMobileWrapper = styled.div` display: none; diff --git a/components/ui/ProductBeastView/ProductBeastView.tsx b/components/ui/ProductBeastView/ProductBeastView.tsx index b794895..5c90535 100644 --- a/components/ui/ProductBeastView/ProductBeastView.tsx +++ b/components/ui/ProductBeastView/ProductBeastView.tsx @@ -9,7 +9,7 @@ import PlaceABidModal from "../PlaceABidModal" import profilePictures from "data/profilePictures" import AcceptOfferModal from "../AcceptOfferModal" import { InfoMobile } from "./InfoMobile" -import SocialMediaShare from "../SocialMediaShare" +import SocialMediaShare from "./SocialMediaShare" import arrow from "public/arrowIcon.svg" import listIcon from "public/icons8-list-48.png" import document from "public/document.svg" diff --git a/components/ui/ProductBeastView/SocialMediaShare.tsx b/components/ui/ProductBeastView/SocialMediaShare.tsx index 1c6ff61..eed04cf 100644 --- a/components/ui/ProductBeastView/SocialMediaShare.tsx +++ b/components/ui/ProductBeastView/SocialMediaShare.tsx @@ -1,4 +1,4 @@ -import { FC, useState } from "react" +import { FC, useEffect, useState } from "react" import styled from "styled-components" import { useRouter } from "next/router" import FB from "public/social_icons/iconFacebook.svg" @@ -20,21 +20,15 @@ import { toast } from "react-toastify" const SocialMedia = styled.div` position: relative; z-index: 1; - min-width: fit-content; + width: auto; + display: grid; - grid-template-columns: 30% 30% 30%; + grid-template-columns: auto auto auto; + gap: 1rem; justify-items: center; justify-content: space-between; align-items: center; - margin-top: 1rem; - & a { - padding: 0.5rem; - & img { - height: 1.2rem; - display: inline-block; - } - } @media (max-width: 400px) { justify-content: center; @@ -44,9 +38,7 @@ const SocialMedia = styled.div` ` const HeartDiv = styled.div` - grid-column: 1; - grid-row: 1; - + display: inline-block; &:hover { cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) 14 0, @@ -55,8 +47,7 @@ const HeartDiv = styled.div` ` const ShareDiv = styled.div` - grid-column: 2; - grid-row: 1; + display: inline-block; &:hover { cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) 14 0, @@ -65,28 +56,13 @@ const ShareDiv = styled.div` ` const RefreshDiv = styled.div` - grid-column: 3; - grid-row: 1; - - display: grid; - width: fit-content; - justify-content: space-between; - align-items: center; - gap: 10px; + display: inline-block; &:hover { cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) 14 0, pointer !important; } - - & p { - grid-column: 2; - - @media (max-width: 400px) { - display: none; - } - } ` const Refresh = styled.div` @@ -98,19 +74,13 @@ const Refresh = styled.div` const ShareDropdownDiv = styled.div` position: absolute; top: 150%; + right: 50%; z-index: 3; - /* background-color: #262d38; */ background-color: #212127; border-radius: 0.5rem; - width: 60%; - /* box-shadow: 0px 0px 10px #626262; */ + width: 220%; border: 1px solid #626262; - @media (max-width: 1100px) { - width: 60%; - right: 10px; - } - & ul { list-style-type: none; padding: 0; @@ -143,12 +113,17 @@ const ShareDropdownDiv = styled.div` & button { padding: 1rem; display: grid; - grid-template-columns: 10% 85%; + grid-template-columns: 15% 80%; gap: 5%; - width: 80%; + width: 100%; justify-content: space-between; align-items: center; + @media (max-width: 100px) { + width: 50%; + margin: 0; + } + & h2 { grid-column: 2; width: fit-content; @@ -177,34 +152,6 @@ const Icon = styled.img` const Share = styled.div` display: flex; width: fit-content; - justify-content: space-between; - align-items: center; - gap: 10px; - - & p { - @media (max-width: 400px) { - display: none; - } - } -` - -const Line = styled.div` - display: grid; - grid-template-columns: 15% 80%; - gap: 5%; - min-width: fit-content; - padding: 0.5rem; - align-items: center; - border-bottom: 1px solid #505256; - - & h2 { - grid-column: 2; - width: fit-content; - } - - &.last { - border: none; - } ` const SocialMediaShare: FC = ({}) => { @@ -281,7 +228,7 @@ const SocialMediaShare: FC = ({}) => { <> setIsActive(!isActive)}> -

    {title}

    + {/*

    {title}

    */} {isActive && <>{content}}
    @@ -304,6 +251,7 @@ const SocialMediaShare: FC = ({}) => { id="twitter-share-button" className="twitter-share-button" onClick={shareTw} + data-provider="twitter" >

    Share on Twitter

    @@ -316,17 +264,17 @@ const SocialMediaShare: FC = ({}) => {
  • - -
  • -
  • +
  • + +
  • @@ -344,7 +292,8 @@ const SocialMediaShare: FC = ({}) => { @@ -354,7 +303,7 @@ const SocialMediaShare: FC = ({}) => { -

    Refresh

    + {/*

    Refresh

    */} ) diff --git a/public/document.svg b/public/document.svg new file mode 100644 index 0000000..c842e9c --- /dev/null +++ b/public/document.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emptyImg.png b/public/emptyImg.png new file mode 100644 index 0000000000000000000000000000000000000000..58245d25a4d1148aad5dc0898d46a66e17e0dd27 GIT binary patch literal 1741 zcmeAS@N?(olHy`uVBq!ia0y~yV7vyzOF7tpBJOLhn*u4$0*}aI1_o|n5N2eUHAey{ z$XFcY?!>U}oXkrghb7(7*O7r?V?XzwL{DCi;czIWeXWiAmgBKV0QrvTCQE+0O=#PdN+4Eu%RY3{G*LJJ4U>+)#ZQ=qkR{ e2+uTMUj{88n*)eJ;8O5p5asFW=d#Wzp$P!2lT!o$ literal 0 HcmV?d00001 diff --git a/public/lightning.svg b/public/lightning.svg new file mode 100644 index 0000000..5275a09 --- /dev/null +++ b/public/lightning.svg @@ -0,0 +1 @@ + \ No newline at end of file From 91b9070b41238ed55d909670928e0c31f4674ca5 Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Fri, 31 Mar 2023 17:00:52 +0200 Subject: [PATCH 56/84] Changing font when in Russian --- pages/_app.tsx | 48 +++++++++++++++++---- pages/beast-details/[beastID].tsx | 1 - public/emptyImg.png | Bin 1741 -> 4459 bytes public/fonts/PixeloidSans/PixeloidSans.ttf | Bin 0 -> 106676 bytes styles/ru.module.css | 8 ++++ 5 files changed, 48 insertions(+), 9 deletions(-) create mode 100644 public/fonts/PixeloidSans/PixeloidSans.ttf create mode 100644 styles/ru.module.css diff --git a/pages/_app.tsx b/pages/_app.tsx index 75ca7c5..e5a38e8 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -1,23 +1,55 @@ import "../styles/globals.css" import type { AppProps } from "next/app" +import { useRouter } from "next/router" import Head from "next/head" import favicon from "public/favicon.ico" import Layout from "@components/common/Layout" import AuthProvider from "@components/auth/AuthProvider" import UserProvider from "@components/user/UserProvider" +import ru from "../styles/ru.module.css" function MyApp({ Component, pageProps }: AppProps) { + const { locale } = useRouter() + console.log(locale) + + const translation = locale == "ru" ? ru : null + return ( - - - Basic Beasts | Play-2-Earn - - - - - +
    + + + Basic Beasts | Play-2-Earn + + + + {/* + + + + + */} + + {/* + + */} + + + +
    ) diff --git a/pages/beast-details/[beastID].tsx b/pages/beast-details/[beastID].tsx index 0d39ec4..88d5b93 100644 --- a/pages/beast-details/[beastID].tsx +++ b/pages/beast-details/[beastID].tsx @@ -145,7 +145,6 @@ const BeastDetails: NextPage = () => { return (
    - {loading &&
    LOADING STAY CALM
    } {beastID != null && ( beasts.id == beastID)[0]} diff --git a/public/emptyImg.png b/public/emptyImg.png index 58245d25a4d1148aad5dc0898d46a66e17e0dd27..00ad2a40f5fab8b37b2d6148084a06d4fa932019 100644 GIT binary patch literal 4459 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 literal 0 HcmV?d00001 diff --git a/styles/ru.module.css b/styles/ru.module.css new file mode 100644 index 0000000..539b520 --- /dev/null +++ b/styles/ru.module.css @@ -0,0 +1,8 @@ +@font-face { + font-family: PixeloidSans; + src: url(../public/fonts/PixeloidSans/PixeloidSans.ttf); +} + +.ruLang { + font-family: "PixeloidSans" !important; +} From 765d886eb84b67ec8e84b8292e0400eb2f85da04 Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Fri, 31 Mar 2023 17:21:38 +0200 Subject: [PATCH 57/84] Minor fixes --- components/ui/BeastModalView/BeastModalView.tsx | 2 +- .../ui/BeastTemplateContent/BeastTemplateContent.tsx | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/components/ui/BeastModalView/BeastModalView.tsx b/components/ui/BeastModalView/BeastModalView.tsx index 16f7e72..0a52c4a 100644 --- a/components/ui/BeastModalView/BeastModalView.tsx +++ b/components/ui/BeastModalView/BeastModalView.tsx @@ -848,7 +848,7 @@ const BeastModalView: FC = ({ ? "border-rose-500 text-rose-600" : "border-pink-500 text-pink-600" : "border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300", - "w-1/4 py-4 px-1 text-center border-b-2 font-medium text-md focus:outline-none", + "w-1/4 py-4 px-1 text-center border-b-2 font-medium text-md focus:outline-none focus-visible:outline-none", )} aria-current={ tab.name === filter ? "page" : undefined diff --git a/components/ui/BeastTemplateContent/BeastTemplateContent.tsx b/components/ui/BeastTemplateContent/BeastTemplateContent.tsx index 5db159b..c00ab63 100644 --- a/components/ui/BeastTemplateContent/BeastTemplateContent.tsx +++ b/components/ui/BeastTemplateContent/BeastTemplateContent.tsx @@ -438,10 +438,9 @@ const BeastTemplateContent: FC = ({ } onClick={() => { router.push({ - pathname: "/beast/[pid]", - query: { - pid: beast.dexNumber + "-" + beast.skin.replace(/\s/g, "-"), - }, + pathname: `/beast/${ + beast.dexNumber + "-" + beast.skin.replace(/\s/g, "-") + }`, }) }} > From f6c12077ee0c64cfaddb653c330314816265c3ea Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Fri, 31 Mar 2023 17:56:08 +0200 Subject: [PATCH 58/84] layout fix beast template pages --- .../BeastTemplateContent.tsx | 66 ++++++++++++++----- .../BeastTemplateHero/BeastTemplateHero.tsx | 2 +- .../ui/ProductBeastView/ProductBeastView.tsx | 5 ++ pages/beast/[beastDexSkin].tsx | 1 - public/overview.svg | 1 + 5 files changed, 58 insertions(+), 17 deletions(-) create mode 100644 public/overview.svg diff --git a/components/ui/BeastTemplateContent/BeastTemplateContent.tsx b/components/ui/BeastTemplateContent/BeastTemplateContent.tsx index c00ab63..0b50499 100644 --- a/components/ui/BeastTemplateContent/BeastTemplateContent.tsx +++ b/components/ui/BeastTemplateContent/BeastTemplateContent.tsx @@ -2,6 +2,9 @@ import { FC, useState } from "react" import { useRouter } from "next/router" import styled from "styled-components" import arrow from "public/arrowIcon.svg" +import listIcon from "public/icons8-list-48.png" +import document from "public/document.svg" +import overview from "public/overview.svg" type Props = { currBeast: any @@ -27,7 +30,7 @@ const Container = styled.div` font-size: 4rem; } & h2 { - font-size: 2.5rem; + font-size: 2rem; } & h3 { font-size: 1.5rem; @@ -87,9 +90,14 @@ const Column2 = styled.div` ` const Header = styled.div` - padding-bottom: 1rem; - border-bottom: 2px solid #a3a4a5; - margin-bottom: 1rem; + padding: 1rem; + display: flex; + justify-content: space-between; + align-items: center; + background-color: rgba(95, 81, 81, 0.07); + border: 1px solid #2e3340; + border-radius: 0.5rem; + font-size: 2rem; :hover { cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) @@ -98,10 +106,18 @@ const Header = styled.div` } ` +const Icon = styled.img` + height: auto; + max-height: 1.5rem; + display: inline-block; + padding-right: 0.5rem; +` + const Name = styled.h2` display: inline; width: fit-content; padding-right: 1rem; + line-height: normal; ` const Arrow = styled.img` @@ -111,9 +127,18 @@ const Arrow = styled.img` &.opened { transform: rotate(0deg); + position: relative; + top: -0.4rem; } ` +const Content = styled.div` + padding: 1rem; + border: 1px solid #2e3340; + border-radius: 0.5rem; + margin-top: 0.25rem; +` + // Description section const DescriptionDiv = styled.div` margin-bottom: 1rem; @@ -128,12 +153,12 @@ const PropContent = styled.div` display: grid; grid-template-columns: auto auto; grid-template-rows: auto; - gap: 3%; - margin: 0 0 3rem 0; + gap: 3% 2%; + margin: 0 0 2rem 0; ` const PropBox = styled.div` - background-color: #292c2e; + background-color: #212127; padding: 1rem; border-radius: 0.5rem; height: auto; @@ -194,7 +219,7 @@ const SkinContent = styled.div` ` const SkinBox = styled.div` - background-color: #292c2e; + background-color: #212127; /* background-color: #243540; */ height: 6.5vw; border-radius: 0.5rem; @@ -331,10 +356,12 @@ const BeastTemplateContent: FC = ({ } const ToggleCard = ({ + icon, title, content, defaultActive, }: { + icon: any title: any content: any defaultActive: Boolean @@ -344,14 +371,20 @@ const BeastTemplateContent: FC = ({ return ( <>
    setIsActive(!isActive)}> - {title} - {isActive ? ( - - ) : ( - - )} +
    + + {title} +
    + +
    + {isActive ? ( + + ) : ( + + )} +
    - {isActive && <>{content}} + {isActive && {content}} ) } @@ -476,6 +509,7 @@ const BeastTemplateContent: FC = ({ = ({ = ({ ` height: fit-content; width: auto; - background-color: #292c2e; + background-color: #212127; /* background-color: #243540; */ border-radius: 1rem; text-align: center; diff --git a/components/ui/ProductBeastView/ProductBeastView.tsx b/components/ui/ProductBeastView/ProductBeastView.tsx index 5c90535..83b8154 100644 --- a/components/ui/ProductBeastView/ProductBeastView.tsx +++ b/components/ui/ProductBeastView/ProductBeastView.tsx @@ -61,6 +61,11 @@ const AccordionTitle = styled.div` font-size: 2rem; line-height: normal; + :hover { + cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer !important; + } & div { align-items: center; diff --git a/pages/beast/[beastDexSkin].tsx b/pages/beast/[beastDexSkin].tsx index 69924ee..4196928 100644 --- a/pages/beast/[beastDexSkin].tsx +++ b/pages/beast/[beastDexSkin].tsx @@ -59,7 +59,6 @@ const BeastDetails: NextPage = () => { return (
    - {loading &&
    LOADING STAY CALM
    } {beastDexSkin != null && ( <> diff --git a/public/overview.svg b/public/overview.svg new file mode 100644 index 0000000..a47230a --- /dev/null +++ b/public/overview.svg @@ -0,0 +1 @@ + \ No newline at end of file From dcc9e6ee6918c8f6c7d6a4303a17c2ff3af71074 Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Tue, 11 Apr 2023 03:47:39 +0200 Subject: [PATCH 59/84] minor fixes --- .../BeastMarketFilters/BeastMarketFilters.tsx | 42 ++++++++++++++---- .../ui/BeastMarketHero/BeastMarketHero.tsx | 10 +++-- pages/profile/[address].tsx | 26 ++++++----- public/139_normal.png | Bin 0 -> 26303 bytes 4 files changed, 54 insertions(+), 24 deletions(-) create mode 100644 public/139_normal.png diff --git a/components/ui/BeastMarketFilters/BeastMarketFilters.tsx b/components/ui/BeastMarketFilters/BeastMarketFilters.tsx index 8454134..fccedc9 100644 --- a/components/ui/BeastMarketFilters/BeastMarketFilters.tsx +++ b/components/ui/BeastMarketFilters/BeastMarketFilters.tsx @@ -21,7 +21,9 @@ const FuncArgInput = styled.input` padding: 8px; padding-left: 15px; width: 100%; - cursor: pointer; + cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer !important; margin-bottom: 0; outline: none; &::placeholder { @@ -63,7 +65,9 @@ const CheckboxWrapper = styled.div` margin-right: 0.5em; border: 0.2px solid #fff; outline: none; - cursor: pointer; + cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer !important; } input[type="checkbox"]:disabled { border-color: #c0c0c0; @@ -84,6 +88,12 @@ const CheckboxWrapper = styled.div` input[type="checkbox"]:checked { background-color: #f3cb23; } + &:hover { + background-color: #181d24; + cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer !important; + } ` const DialogPanel = styled(Dialog.Panel)` background: #111823; @@ -98,7 +108,9 @@ const Switch = styled.label` ` const SwitchSlider = styled.span` position: absolute; - cursor: pointer; + cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer !important; top: 0; left: 0; right: 0; @@ -136,6 +148,18 @@ const SwitchInput = styled.input` } ` +const Input = styled.input` + cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer !important; +` + +const Label = styled.label` + cursor: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAzElEQVRYR+2X0Q6AIAhF5f8/2jYXZkwEjNSVvVUjDpcrGgT7FUkI2D9xRfQETwNIiWO85wfINfQUEyxBG2ArsLwC0jioGt5zFcwF4OYDPi/mBYKm4t0U8ATgRm3ThFoAqkhNgWkA0jJLvaOVSs7j3qMnSgXWBMiWPXe94QqMBMBc1VZIvaTu5u5pQewq0EqNZvIEMCmxAawK0DNkay9QmfFNAJUXfgGgUkLaE7j/h8fnASkxHTz0DGIBMCnBeeM7AArpUd3mz2x3C7wADglA8BcWMZhZAAAAAElFTkSuQmCC) + 14 0, + pointer !important; +` + type Props = { filters: any selectedFilters: any @@ -322,7 +346,7 @@ const BeastMarketFilters: FC = ({ key={option.value} className="flex items-center" > - = ({ className="h-4 w-4 rounded border-gray-300 focus:ring-indigo-500" /> - + ), )} @@ -545,7 +569,7 @@ const BeastMarketFilters: FC = ({ key={option.value} className="flex items-center" > - = ({ } className="h-4 w-4 rounded border-gray-300 focus:ring-indigo-500" /> - + ), )} diff --git a/components/ui/BeastMarketHero/BeastMarketHero.tsx b/components/ui/BeastMarketHero/BeastMarketHero.tsx index 1c28f39..3c25241 100644 --- a/components/ui/BeastMarketHero/BeastMarketHero.tsx +++ b/components/ui/BeastMarketHero/BeastMarketHero.tsx @@ -4,6 +4,7 @@ import BeastMarketSkinOverviewModal from "../BeastMarketSkinOverviewModal" import beastTemplates from "data/beastTemplates" import { FC, useState, Fragment, useEffect } from "react" import { useUser } from "@components/user/UserProvider" +import DappyImg from "public/139_normal.png" const Main = styled.main` display: flex; @@ -415,10 +416,11 @@ const BeastMarketHero: FC = ({ beast }) => { // beastTemplates[beastTemplateID as keyof typeof beastTemplates] // ?.marketThumbnail || thumbnail.src // } - src={ - "https://basicbeasts.mypinata.cloud/ipfs/" + - beastTemplates[691 as keyof typeof beastTemplates]?.image - } + // src={ + // "https://basicbeasts.mypinata.cloud/ipfs/" + + // beastTemplates[691 as keyof typeof beastTemplates]?.image + // } + src={DappyImg.src} /> {" "}
    diff --git a/pages/profile/[address].tsx b/pages/profile/[address].tsx index 47947e1..204d2df 100644 --- a/pages/profile/[address].tsx +++ b/pages/profile/[address].tsx @@ -236,12 +236,12 @@ const Profile: NextPage = () => { let collectionRef = getAccount(acct).getCapability(BasicBeasts.CollectionPublicPath) .borrow<&{BasicBeasts.BeastCollectionPublic}>() - ?? panic("Could not get public beast collection reference") - - let beastIDs = collectionRef.getIDs() + + if(collectionRef!=nil) { + let beastIDs = collectionRef!.getIDs() for id in beastIDs { - let borrowedBeast = collectionRef.borrowBeast(id: id)! + let borrowedBeast = collectionRef!.borrowBeast(id: id)! let beast = Beast( id: borrowedBeast.id, serialNumber: borrowedBeast.serialNumber, @@ -267,6 +267,8 @@ const Profile: NextPage = () => { ) beastCollection.append(beast) } + } + return beastCollection } @@ -426,15 +428,17 @@ const Profile: NextPage = () => { let collectionRef = getAccount(acct).getCapability(Pack.CollectionPublicPath) .borrow<&{Pack.PackCollectionPublic}>() - ?? panic("Could not get public Pack collection reference") - let PackIDs = collectionRef.getIDs() + if(collectionRef != nil) { + let PackIDs = collectionRef!.getIDs() - for id in PackIDs { - let pack = collectionRef.borrowPack(id: id)! - - packCollection.append(pack) - } + for id in PackIDs { + let pack = collectionRef!.borrowPack(id: id)! + + packCollection.append(pack) + } + } + return packCollection } diff --git a/public/139_normal.png b/public/139_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..814bde4cbc79f498956bfe136e956939c066dff6 GIT binary patch literal 26303 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 bZmZ6NE-u8V+@bJmX9Q7UGeQeP+jvU2&X literal 0 HcmV?d00001 From 04e20769cdffe847b3d2b4ebabf9dcb047925a08 Mon Sep 17 00:00:00 2001 From: bz <88026162+bz-hashtag-0780@users.noreply.github.com> Date: Tue, 11 Apr 2023 06:39:44 +0200 Subject: [PATCH 60/84] minor fixes --- components/ui/BeastTab/BeastTab.tsx | 2 +- .../BeastTemplateHero/BeastTemplateHero.tsx | 2 +- .../ui/ProductBeastView/ProductBeastView.tsx | 12 ++------ components/ui/RankingList/RankingList.tsx | 28 +++++++++---------- framework/hooks/use-user-beasts.hook.ts | 5 ++-- pages/profile/[address].tsx | 12 +------- 6 files changed, 21 insertions(+), 40 deletions(-) diff --git a/components/ui/BeastTab/BeastTab.tsx b/components/ui/BeastTab/BeastTab.tsx index 43cf9e3..da827be 100644 --- a/components/ui/BeastTab/BeastTab.tsx +++ b/components/ui/BeastTab/BeastTab.tsx @@ -665,7 +665,7 @@ const BeastTab: FC = ({ packId={selectedBeast?.beastTemplateID || "1"} evolvedBeastId={evolvedBeastId} /> - {displayBeasts != null ? ( + {displayBeasts?.length > 0 ? (