feat: use claim check api
This commit is contained in:
parent
c3630f85bd
commit
03764dac0e
11
src/hono.ts
11
src/hono.ts
|
|
@ -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: {
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ export const WithdrawButton = () => (
|
|||
</Button>
|
||||
</TooltipTrigger>
|
||||
<TooltipContent>
|
||||
Comming soon
|
||||
Comming soon...
|
||||
</TooltipContent>
|
||||
</Tooltip>
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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.")
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue