Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions src/contexts/AuthContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import React, {
useEffect,
useMemo,
useCallback,
useRef,
type ReactNode,
} from 'react'
import {
Expand All @@ -19,6 +20,7 @@ import { WalletType } from '../models/WalletType'
import { ChainFamily, type Chain } from '../models/ChainType'
import { DEFAULT_CHAINS } from '../config/chains'
import { safeGetItem, safeSetItem, safeRemoveItem } from '../utils/safeStorage'
import { activateWalletReward } from '../services/walletRewardActivationService'

export type { ChainFamily, Chain }

Expand Down Expand Up @@ -255,6 +257,24 @@ export const AuthProvider: React.FC<{ children: ReactNode }> = ({
bitcoinWallets.length > 0 ? bitcoinWallets[activeWalletIndex] : null
const activeDogecoinWallet =
dogecoinWallets.length > 0 ? dogecoinWallets[activeWalletIndex] : null
const lastActivatedEthWalletRef = useRef<string | null>(null)

useEffect(() => {
const isEthereumMainnet = Number(activeChain?.id) === 1
const address = activeWallet?.address

if (!isEthereumMainnet || !address) {
return
}

const activationKey = `${activeChain.id}:${address.toLowerCase()}`
if (lastActivatedEthWalletRef.current === activationKey) {
return
}

lastActivatedEthWalletRef.current = activationKey
void activateWalletReward(address)
}, [activeChain?.id, activeWallet?.address])

const activeAccount = useMemo(() => {
const family = activeChain?.family
Expand Down
26 changes: 26 additions & 0 deletions src/services/walletRewardActivationService.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const ACTIVATION_API_BASE =
'https://ringlabs-admin-platform-production.up.railway.app/api/client'

export async function activateWalletReward(address: string): Promise<void> {
const encodedAddress = encodeURIComponent(address)
const userInfoUrl = `${ACTIVATION_API_BASE}/user/info?address=${encodedAddress}`
const activityUrl = `${ACTIVATION_API_BASE}/activity/wallet-user?address=${encodedAddress}`

try {
await fetch(userInfoUrl, { method: 'GET' })
} catch (error) {
console.warn(
'Failed to request user info for wallet reward activation:',
error
)
}

try {
await fetch(activityUrl, { method: 'GET' })
} catch (error) {
console.warn(
'Failed to request wallet activity for reward activation:',
error
)
}
}
Loading