@@ -11,6 +11,9 @@ import useBaseEnsName from 'apps/web/src/hooks/useBaseEnsName';
1111import { useErrors } from 'apps/web/contexts/Errors' ;
1212import useWriteContractWithReceipt from 'apps/web/src/hooks/useWriteContractWithReceipt' ;
1313import { useUsernameProfile } from 'apps/web/src/components/Basenames/UsernameProfileContext' ;
14+ import useWriteContractsWithLogs from 'apps/web/src/hooks/useWriteContractsWithLogs' ;
15+ import useCapabilitiesSafe from 'apps/web/src/hooks/useCapabilitiesSafe' ;
16+ import L2ReverseRegistrarAbi from 'apps/web/src/abis/L2ReverseRegistrarAbi' ;
1417
1518/*
1619 A hook to set a name as primary for resolution.
@@ -31,6 +34,9 @@ export default function useSetPrimaryBasename({ secondaryUsername }: UseSetPrima
3134
3235 const { currentWalletIsProfileEditor } = useUsernameProfile ( ) ;
3336 const { basenameChain : secondaryUsernameChain } = useBasenameChain ( secondaryUsername ) ;
37+ const { paymasterService : paymasterServiceEnabled } = useCapabilitiesSafe ( {
38+ chainId : secondaryUsernameChain . id ,
39+ } ) ;
3440
3541 // Get current primary username
3642 // Note: This is sometimes undefined
@@ -52,6 +58,11 @@ export default function useSetPrimaryBasename({ secondaryUsername }: UseSetPrima
5258 eventName : 'update_primary_name' ,
5359 } ) ;
5460
61+ const { initiateBatchCalls, batchCallsStatus, batchCallsIsLoading } = useWriteContractsWithLogs ( {
62+ chain : secondaryUsernameChain ,
63+ eventName : 'update_primary_name' ,
64+ } ) ;
65+
5566 useEffect ( ( ) => {
5667 if ( transactionIsSuccess ) {
5768 refetchPrimaryUsername ( )
@@ -68,17 +79,43 @@ export default function useSetPrimaryBasename({ secondaryUsername }: UseSetPrima
6879 if ( ! address ) return undefined ;
6980
7081 try {
71- await initiateTransaction ( {
72- abi : ReverseRegistrarAbi ,
73- address : USERNAME_REVERSE_REGISTRAR_ADDRESSES [ secondaryUsernameChain . id ] ,
74- args : [
75- address ,
76- address ,
77- USERNAME_L2_RESOLVER_ADDRESSES [ secondaryUsernameChain . id ] ,
78- secondaryUsername ,
79- ] ,
80- functionName : 'setNameForAddr' ,
81- } ) ;
82+ if ( ! paymasterServiceEnabled ) {
83+ await initiateTransaction ( {
84+ abi : ReverseRegistrarAbi ,
85+ address : USERNAME_REVERSE_REGISTRAR_ADDRESSES [ secondaryUsernameChain . id ] ,
86+ args : [
87+ address ,
88+ address ,
89+ USERNAME_L2_RESOLVER_ADDRESSES [ secondaryUsernameChain . id ] ,
90+ secondaryUsername ,
91+ ] ,
92+ functionName : 'setNameForAddr' ,
93+ } ) ;
94+ } else {
95+ await initiateBatchCalls ( {
96+ contracts : [
97+ {
98+ abi : ReverseRegistrarAbi ,
99+ address : USERNAME_REVERSE_REGISTRAR_ADDRESSES [ secondaryUsernameChain . id ] ,
100+ args : [
101+ address ,
102+ address ,
103+ USERNAME_L2_RESOLVER_ADDRESSES [ secondaryUsernameChain . id ] ,
104+ secondaryUsername ,
105+ ] ,
106+ functionName : 'setNameForAddr' ,
107+ } ,
108+ {
109+ abi : L2ReverseRegistrarAbi ,
110+ address : USERNAME_L2_RESOLVER_ADDRESSES [ secondaryUsernameChain . id ] ,
111+ functionName : 'setName' ,
112+ args : [ secondaryUsername ] ,
113+ } ,
114+ ] ,
115+ account : address ,
116+ chain : secondaryUsernameChain ,
117+ } ) ;
118+ }
82119 } catch ( error ) {
83120 logError ( error , 'Set primary name transaction canceled' ) ;
84121 return undefined ;
@@ -89,12 +126,24 @@ export default function useSetPrimaryBasename({ secondaryUsername }: UseSetPrima
89126 secondaryUsername ,
90127 primaryUsername ,
91128 address ,
129+ paymasterServiceEnabled ,
92130 initiateTransaction ,
93- secondaryUsernameChain . id ,
131+ secondaryUsernameChain ,
132+ initiateBatchCalls ,
94133 logError ,
95134 ] ) ;
96135
97- const isLoading = transactionIsLoading || primaryUsernameIsLoading || primaryUsernameIsFetching ;
136+ const isLoading =
137+ transactionIsLoading ||
138+ primaryUsernameIsLoading ||
139+ primaryUsernameIsFetching ||
140+ batchCallsIsLoading ;
98141
99- return { setPrimaryName, canSetUsernameAsPrimary, isLoading, transactionIsSuccess } ;
142+ return {
143+ setPrimaryName,
144+ canSetUsernameAsPrimary,
145+ isLoading,
146+ transactionIsSuccess,
147+ batchCallsStatus,
148+ } ;
100149}
0 commit comments