From 147ef9e6697143f23bd8fbf4e5649e1e89c8dc55 Mon Sep 17 00:00:00 2001 From: Sewmina Date: Wed, 9 Apr 2025 13:03:05 +0530 Subject: [PATCH] v1 rc1 --- public/UnityBuild/tetris/Build/prod.data | Bin 13174237 -> 13174239 bytes public/UnityBuild/tetris/Build/prod.wasm | Bin 32656967 -> 32657017 bytes src/components/GameModal.tsx | 25 ++++++++++++++++------- src/components/HeroSection.tsx | 23 +++++++++++++-------- src/components/OpenGames.tsx | 23 +++++++++++++-------- src/components/RematchModal.tsx | 6 +----- src/components/YourGames.tsx | 24 ++++++++++++++-------- src/data/shared.ts | 3 +++ src/shared/constants.ts | 2 +- src/shared/solana_helpers.ts | 13 +++--------- src/types/GameHistory.ts | 20 +++++++++--------- src/types/Submission.tsx | 2 +- 12 files changed, 80 insertions(+), 61 deletions(-) diff --git a/public/UnityBuild/tetris/Build/prod.data b/public/UnityBuild/tetris/Build/prod.data index c9a3a54d398667b455ff4e803c78478e06d911c6..025b42ac9db8279bd79915710f9add31f86140b3 100644 GIT binary patch delta 6922 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 delta 6776 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 diff --git a/public/UnityBuild/tetris/Build/prod.wasm b/public/UnityBuild/tetris/Build/prod.wasm index 4c3334fda522dff6811af6ba413d8188d35aa0c4..78fca7a48d04db282811167a5b6d975d26cbb179 100644 GIT binary patch delta 2830 zcmZwEdwk7x9LMqV`<Y+#B^P^75^G zJKvcflVh|p{ zgBXm5@Gu_15DdjIJc{8Mfn1ElD2&D!Jch^d1fIlGcpA^(S&YRvj7J`x!}FMcd`!e7 z6ksx@U@E3zI%ePn%tRq(VK!dG9L&W_FnAgBFdqxB5R32%im({3VhLWuQY^!AtibD7 ziB(vQHFyJWVl9fX4kdUC>#+fEqZIF8BR1h(Y{nM6hcax%Hf+ZZ?8N)nh27YLz1W8j z@FDi&BOJg%9Ky#qj3YRTavZ~PoInLC@d-Y~NqmOSaSC7HOMHc|@eRJkX`I1Xe1~&5 zj|-^6_o&82{D2?v6Mn`oxP)KvTdDKX?{jwAg+ZnBHV4uyQ@tV3#JEe^ctUNz!*g+; z9bbB6OJH!UwZxZEfBJ?Aypw7>yjHRu zVFr|C$D7>q^;{;W`Na@ZT#!}69IVI*Fhdp9uM#?Os#FW>I)+WtMo z)n;8uMv^&Dw~xp5*D6Jarns#{b8uuznEByoAf~7=Bh-pE-4gmln56PRyeV`pjt+Bq zZ6^9GuhV3g2O2poZ-{BxF(n}~*c1%cuQSHe-Wulpx)i1&nov9jT7PoE{Z6=(|@|m37)wN9j^A+h$JyGHQytP%F ziNjOuZeV3P9F7dmc7JED!|&7vIIvVZ!f!>H?wht{n)Hf5dVT$u7@j)1&+ZUuUA2H& zT@mPHITv^ftytr(3^cQB6Md?FoT(ar+-2DXS(O3&fy=luEvwR+3B^{NN|54Gf|U>@ zRBao`N{kY#)K=n@Ym_=lyi!+5Q0gg(N`1wv_>>09wMvq5 zozhTgq$Deil_pA4rJ2%PX`x)Nq$n+wR!VE7jdFvMs@$mDq};6BqNFLeDs7c?rVY)3v*E}ss3qnA{G~W3 zQ_F@Ul~Qx%%-o6y?vX1|%1Y~$y+1uYPyO+FKhHVmIp6a==R8=nzuaC-O1IJ->CSZD zbieifj{DZ6>CXH92tXMGA_&27Ap~Vn4xw*GbiP!N4-o#rNh0z#;v3MKfFdh>y5&GAYF$GhRjtor0bj-jz zco#E~iCK6LvoQyAF%MbDMh@n~;C(E>LgZo*7GnvPA`c(nLoCBbSdJA~iI4FKR^d~8 zhR^W@R$~p;VjaH3dThW(TA+GdPQLIFAdsh)cMPE4Ydua1GaS12=ICKjJn@a0ho$ zil6W^?%@~wir;V_5Ab`w^Zp;%yBvp{`3tt#iB^8at#T?+#X~e^tfJr{t0`B zUyLI(+A`Zt*coPDzAMBT<8bA;qr#V7SX{<(nWSUOLQR*XYXK¥PNw`A#3xYV5=6 zCayHj6}V!jkJp*JZ%wJ0>>FP*%qPYX9_>iZ+%VOV>=W<_@%uea;GD~mVNi%tk8oEtFv+kA5_LJShOy82o zKr`BPFv)m|Y`2wXY8Ba0CO9j*nK`mN#&5nSrLI|BWS27|&PG)UyA>N^B~My?htJ^? zx+bu?)yBss&zvo?+vRqhV^uVX#dclGY1|j1D*3Yy|7Chcv5i0R7aq>cD7I!paVSp3 zSMgK)l>nuT5~u_z!HP=>QOYXilu*U3lvgS!9wkhvs8mwImC8yLrK%F4L@L#kD8;Kp zE7g@6N=@YvrIu1#iBTR^>L`yXb(MNbtWsZzQyM4@l}1WqrHK-+G*uFmW=eApVD7>O&OpJR0b)7l{96DGE^C+3|B@dBbC>c zH zl{v~>WuB6yWGgw!e8nj5D+`o`O0Kdxw1l8seG(_qO4Lr zRX$TbSH4hID{GXs$~xssWxcXN*{I|zUnyTJo0QGU7UdgdtFlemuIx~DD&H!*l-uAER#Dh0|ZrBFGo6e-2Z8Re{UPC2h!P%bK$ nl*`H$<*M?7a!t9e+)!>Rx0D~1+e(RYN4aZl%P20j?v4B#@k08k diff --git a/src/components/GameModal.tsx b/src/components/GameModal.tsx index 7780434..61fb4d6 100644 --- a/src/components/GameModal.tsx +++ b/src/components/GameModal.tsx @@ -8,7 +8,8 @@ import { PriceSelection } from "./PriceSelection"; import { GameSelection } from "./GameSelection"; import { createBet } from "@/shared/solana_helpers"; import { Game } from "@/types/Game"; -import { EXPLORER_TX_TEMPLATE } from "@/data/shared"; +import { connection, EXPLORER_TX_TEMPLATE } from "@/data/shared"; +import { CONFIRMATION_THRESHOLD } from "@/shared/constants"; interface GameModalProps { isOpen: boolean; @@ -61,23 +62,33 @@ export default function GameModal({ isOpen, onClose }: GameModalProps) { } setIsProcessing(true); + toast.loading("Creating bet"); try { const tx = await createBet(wallet, user?.id ?? "", selectedPrice, selectedGame.id, false); const url = EXPLORER_TX_TEMPLATE.replace("{address}", tx); if (tx.length > 5) { - toast.success(`Bet created successfully!`, { - action: { - label: "View TX", - onClick: () => window.open(url, "_blank"), - }, - }); + connection.confirmTransaction(tx, CONFIRMATION_THRESHOLD).finally(()=>{ + toast.dismiss(); + + toast.success(`Bet created successfully!`, { + action: { + label: "View TX", + onClick: () => window.open(url, "_blank"), + }, + }); + + }) + } onClose(); } catch (error) { console.error("Error creating bet:", error); toast.error("Failed to create bet. Please try again."); + toast.dismiss(); + } finally { setIsProcessing(false); + } }; diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx index 1536791..f5d2454 100644 --- a/src/components/HeroSection.tsx +++ b/src/components/HeroSection.tsx @@ -7,7 +7,7 @@ import GameModal from "./GameModal"; import { HowItWorksModal } from "./HowItWorksModal"; import YourGames from "./YourGames"; import { Bet } from "@/types/Bet"; -import { fetchOpenBets, createBet, joinBet, getVaultByAddress } from "@/shared/solana_helpers"; +import { fetchOpenBets, createBet, getVaultByAddress } from "@/shared/solana_helpers"; import { ConnectedSolanaWallet, usePrivy, useSolanaWallets } from "@privy-io/react-auth"; import { RematchModal } from "./RematchModal"; @@ -21,7 +21,6 @@ export default function HeroSection() { const [lastActiveBet, setLastActiveBet] = useState(); const [rematchInProgress, setRematchInProgress] = useState(false); const [rematchTxError, setRematchTxError] = useState(false); - const [rematchBetAddress, setRematchBetAddress] = useState(null); const { wallets, ready } = useSolanaWallets(); const { user } = usePrivy(); @@ -102,8 +101,8 @@ export default function HeroSection() { const pollUntilFound = async ( maxRetries = 10, delayMs = 3000 - ): Promise => { - for (let i = 0; i < maxRetries; i++) { + ): Promise => { + for (let i:number = 0; i < maxRetries; i++) { const vault = await getVaultByAddress(solWallet, tx); if (vault) return vault; console.log(`Waiting for vault account... (${i + 1}/${maxRetries})`); @@ -166,8 +165,8 @@ export default function HeroSection() { address: string, maxRetries = 10, delayMs = 3000 - ): Promise => { - for (let i = 0; i < maxRetries; i++) { + ): Promise => { + for (let i:number = 0; i < maxRetries; i++) { console.log(`Polling vault for address ${address}... (${i + 1}/${maxRetries})`); const vault = await getVaultByAddress(solWallet, address); if (vault) return vault; @@ -175,13 +174,14 @@ export default function HeroSection() { } console.warn("Vault not found after max retries."); - return null; + return; }; - const rematchVault:Bet = await pollForVault(rematchAddress); + const rematchVault:Bet | undefined = await pollForVault(rematchAddress); if (rematchVault) { - const tx = await joinBet(solWallet, user?.id!, rematchVault.id, rematchVault.address); + // const tx = await joinBet(solWallet, user?.id!, rematchVault.id, rematchVault.address); + setMyActiveBet(rematchVault); setLastActiveBet(rematchVault); setRematch(false); @@ -286,6 +286,7 @@ export default function HeroSection() { return ( <> {myActiveBet && !rematch ? ( + (myActiveBet.owner_id && myActiveBet.joiner_id) ? (