feat: use claim check api

This commit is contained in:
DIYgod 2024-09-04 18:22:05 +08:00
parent c3630f85bd
commit 03764dac0e
No known key found for this signature in database
5 changed files with 26 additions and 42 deletions

View File

@ -2675,6 +2675,17 @@ declare const _routes: hono_hono_base.HonoBase<Env, {
status: 200;
};
};
"/wallets/transactions/claim-check": {
$get: {
input: {};
output: {
code: 0;
data: boolean;
};
outputFormat: "json" | "text";
status: 200;
};
};
"/wallets": {
$get: {
input: {

View File

@ -2,42 +2,15 @@ import { TooltipTrigger } from "@radix-ui/react-tooltip"
import { Button } from "@renderer/components/ui/button"
import { Tooltip, TooltipContent } from "@renderer/components/ui/tooltip"
import {
useClaimCheck,
useClaimWalletDailyRewardMutation,
useClaimWalletDailyRewardTtl,
} from "@renderer/queries/wallet"
import { useEffect, useState } from "react"
export const ClaimDailyReward = () => {
const mutation = useClaimWalletDailyRewardMutation()
const ttl = useClaimWalletDailyRewardTtl()
const [ttlState, setTtlState] = useState(ttl.data?.data.ttl ?? 0)
const hour = Math.floor(ttlState / 3600)
.toString()
.padStart(2, "0")
const minute = Math.floor((ttlState % 3600) / 60)
.toString()
.padStart(2, "0")
const canClaim = ttlState <= 0
// refresh ttl every second
useEffect(() => {
const timer = setInterval(() => {
setTtlState((prev) => (prev > 0 ? prev - 1 : 0))
}, 1000)
return () => clearInterval(timer)
}, [])
// update ttl when ttl changes
useEffect(() => {
if (ttl.data?.data.ttl) {
setTtlState(ttl.data.data.ttl)
}
}, [ttl.data?.data.ttl])
const check = useClaimCheck()
const canClaim = check.data?.data
return (
<Tooltip>
@ -49,14 +22,14 @@ export const ClaimDailyReward = () => {
disabled={!canClaim}
>
{canClaim ?
"Mint Daily Power" :
`Mint in ${hour}:${minute}`}
"Claim Daily Power" :
"Claimed today"}
</Button>
</TooltipTrigger>
<TooltipContent>
{canClaim ?
"Mint your 2 Daily Power now!" :
`You can mint your Daily Power in ${hour}:${minute}.`}
"Claim your 2 Daily Power now!" :
`You have already claimed today.`}
</TooltipContent>
</Tooltip>
)

View File

@ -73,7 +73,7 @@ export const MyWalletSection = () => {
<TooltipPortal>
<TooltipContent align="start" className="z-[999]">
<p>1. Daily Power can only be used for tipping others.</p>
<p>2. You mint Daily Power for free once every 24 hours.</p>
<p>2. You can claim 2 free Daily Power daily.</p>
</TooltipContent>
</TooltipPortal>
</Tooltip>

View File

@ -13,7 +13,7 @@ export const WithdrawButton = () => (
</Button>
</TooltipTrigger>
<TooltipContent>
Comming soon
Comming soon...
</TooltipContent>
</Tooltip>
)

View File

@ -20,9 +20,9 @@ export const wallet = {
},
),
claimDailyRewardTtl: () =>
defineQuery(["wallet", "claimDailyRewardTtl"], async () =>
apiClient.wallets.transactions.claim_daily_ttl.$get()),
claimCheck: () =>
defineQuery(["wallet", "claimCheck"], async () =>
apiClient.wallets.transactions["claim-check"].$get()),
transactions: {
get: (
@ -64,8 +64,8 @@ export const useCreateWalletMutation = () =>
},
})
export const useClaimWalletDailyRewardTtl = () =>
useAuthQuery(wallet.claimDailyRewardTtl(), { refetchInterval: 5000 })
export const useClaimCheck = () =>
useAuthQuery(wallet.claimCheck())
export const useClaimWalletDailyRewardMutation = () =>
useMutation({
@ -76,7 +76,7 @@ export const useClaimWalletDailyRewardMutation = () =>
},
onSuccess() {
wallet.get().invalidate()
wallet.claimDailyRewardTtl().invalidate()
wallet.claimCheck().invalidate()
window.posthog?.capture("daily_reward_claimed")
toast("🎉 Daily reward claimed.")
},