Skip to content

Commit 1ab5fd2

Browse files
Create user bank to claim fees (#13147)
### Description Currently if the user has no audio user bank, fee claiming wont work, so instead of passing a user bank address, pass their eth one and derive the user bank. ### How Has This Been Tested? _Please describe the tests that you ran to verify your changes. Provide repro instructions & any configuration._ claimed fees on prod
1 parent 3e68018 commit 1ab5fd2

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

packages/web/src/hooks/useClaimFees.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
QUERY_KEYS
66
} from '@audius/common/api'
77
import { Feature } from '@audius/common/models'
8+
import { createUserBankIfNeeded } from '@audius/common/services'
89
import { solana } from '@reown/appkit/networks'
910
import type { Provider as SolanaProvider } from '@reown/appkit-adapter-solana/react'
1011
import { VersionedTransaction } from '@solana/web3.js'
@@ -15,12 +16,13 @@ import {
1516
} from '@tanstack/react-query'
1617

1718
import { appkitModal } from 'app/ReownAppKitModal'
19+
import { track } from 'services/analytics'
1820
import { reportToSentry } from 'store/errors/reportToSentry'
1921

2022
export type UseClaimFeesParams = {
2123
tokenMint: string
2224
ownerWalletAddress: string
23-
receiverWalletAddress: string
25+
ownerEthAddress: string
2426
}
2527

2628
export type ClaimFeesResponse = {
@@ -43,7 +45,7 @@ export const useClaimFees = (
4345
mutationFn: async ({
4446
tokenMint,
4547
ownerWalletAddress,
46-
receiverWalletAddress
48+
ownerEthAddress
4749
}: UseClaimFeesParams): Promise<ClaimFeesResponse> => {
4850
const sdk = await audiusSdk()
4951
await appkitModal.switchNetwork(solana)
@@ -54,12 +56,20 @@ export const useClaimFees = (
5456
if (!ownerWalletAddress) {
5557
throw new Error('Missing owner wallet address')
5658
}
59+
if (!ownerEthAddress) {
60+
throw new Error('Missing owner ETH address')
61+
}
62+
const userBank = await createUserBankIfNeeded(sdk, {
63+
recordAnalytics: track,
64+
mint: 'wAUDIO',
65+
ethAddress: ownerEthAddress
66+
})
5767

5868
// Get the claim fee transaction from the relay
5969
const claimFeesResponse = await sdk.services.solanaRelay.claimFees({
6070
tokenMint,
6171
ownerWalletAddress,
62-
receiverWalletAddress
72+
receiverWalletAddress: userBank.toString()
6373
})
6474

6575
const { claimFeesTx: claimFeesTxSerialized } = claimFeesResponse

packages/web/src/pages/asset-detail-page/components/AssetInfoSection.tsx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ export const AssetInfoSection = ({ mint }: AssetInfoSectionProps) => {
448448
}, [mint, toast])
449449

450450
const handleClaimFees = useCallback(() => {
451-
if (!externalSolWallet || !mint || !currentUser?.spl_wallet) {
451+
if (!externalSolWallet || !mint || !currentUser?.wallet) {
452452
toast(toastMessages.feesClaimFailed)
453453
reportToSentry({
454454
error: new Error('Unknown error while claiming fees'),
@@ -467,7 +467,7 @@ export const AssetInfoSection = ({ mint }: AssetInfoSectionProps) => {
467467
claimFees({
468468
tokenMint: mint,
469469
ownerWalletAddress: externalSolWallet.address,
470-
receiverWalletAddress: currentUser.spl_wallet // Using same wallet for owner and receiver
470+
ownerEthAddress: currentUser.wallet!
471471
})
472472
}, [externalSolWallet, mint, currentUser, claimFees, toast, coin])
473473

@@ -604,9 +604,7 @@ export const AssetInfoSection = ({ mint }: AssetInfoSectionProps) => {
604604
unclaimedFees={unclaimedFees}
605605
formattedUnclaimedFees={formattedUnclaimedFees}
606606
isClaimFeesPending={isClaimFeesPending}
607-
isClaimFeesDisabled={
608-
isClaimFeesPending || !externalSolWallet || !currentUser?.spl_wallet
609-
}
607+
isClaimFeesDisabled={isClaimFeesPending || !externalSolWallet}
610608
handleClaimFees={handleClaimFees}
611609
/>
612610
) : null}

0 commit comments

Comments
 (0)