@@ -143,13 +143,13 @@ function filterProxies (allAccounts: string[], tx: Call | SubmittableExtrinsic<'
143143}
144144
145145// This function shouldn't depend on proxyAddress, it can fetch multisig info based on source multisig account.
146- async function queryForMultisig ( api : ApiPromise , requestAddress : string | null , tx : SubmittableExtrinsic < 'promise' > ) : Promise < MultiState | null > {
146+ async function queryForMultisig ( api : ApiPromise , requestAddress : string | null , isProxyActive : boolean , proxyAddress : string | null , tx : SubmittableExtrinsic < 'promise' > ) : Promise < MultiState | null > {
147147 const multiModule = api . tx . multisig ? 'multisig' : 'utility' ;
148148
149149 if ( isFunction ( api . query [ multiModule ] ?. multisigs ) ) {
150- const address = requestAddress ;
150+ const address = ( proxyAddress && isProxyActive ) ? proxyAddress : requestAddress ;
151151 const { threshold, who } = extractExternal ( address ) ;
152- const hash = ( address ? api . tx . proxy . proxy ( requestAddress || '' , null , tx ) : tx ) . method . hash ;
152+ const hash = ( proxyAddress && isProxyActive ? api . tx . proxy . proxy ( requestAddress || '' , null , tx ) : tx ) . method . hash ;
153153
154154 const optMulti = await api . query [ multiModule ] . multisigs < Option < Multisig > > ( address , hash ) ;
155155 const multi = optMulti . unwrapOr ( null ) ;
@@ -206,8 +206,9 @@ function Address ({ currentItem, onChange, onEnter, passwordError, requestAddres
206206 ( ) : [ string | null , AddressFlags ] => {
207207 // If certain conditions are met, then proxyAddress would have higher priority over multisig signatories.
208208 // proxyAddress would be used to sign tx in that scenario.
209- const signAddress = ( isProxyActive && proxyInfo && proxyAddress ) ||
210- ( multiInfo && multiAddress ) ||
209+ // Avail: Above seems wrong, I let it for further upstream updates, but I switched the order back
210+ const signAddress = ( multiInfo && multiAddress ) ||
211+ ( isProxyActive && proxyInfo && proxyAddress ) ||
211212 requestAddress ;
212213
213214 try {
@@ -242,22 +243,22 @@ function Address ({ currentItem, onChange, onEnter, passwordError, requestAddres
242243 useEffect ( ( ) : void => {
243244 setMultInfo ( null ) ;
244245
245- currentItem . extrinsic && extractExternal ( requestAddress ) . isMultisig &&
246- queryForMultisig ( api , requestAddress , currentItem . extrinsic )
246+ currentItem . extrinsic && extractExternal ( proxyAddress && isProxyActive ? proxyAddress : requestAddress ) . isMultisig &&
247+ queryForMultisig ( api , requestAddress , isProxyActive , proxyAddress , currentItem . extrinsic )
247248 . then ( ( info ) : void => {
248249 if ( mountedRef . current ) {
249250 setMultInfo ( info ) ;
250251 setIsMultiCall ( info ?. isMultiCall || false ) ;
251252 }
252253 } )
253254 . catch ( console . error ) ;
254- } , [ api , currentItem . extrinsic , mountedRef , requestAddress ] ) ;
255+ } , [ api , currentItem . extrinsic , isProxyActive , mountedRef , proxyAddress , requestAddress ] ) ;
255256
256257 useEffect ( ( ) : void => {
257258 onChange ( {
258259 isMultiCall,
259260 isUnlockCached,
260- multiRoot : multiInfo && ( ! isProxyActive || ! proxyInfo ) ? multiInfo . address : null ,
261+ multiRoot : multiInfo ? multiInfo . address : null ,
261262 proxyRoot : ( proxyInfo && isProxyActive ) ? proxyInfo . address : null ,
262263 signAddress,
263264 signPassword
@@ -286,7 +287,7 @@ function Address ({ currentItem, onChange, onEnter, passwordError, requestAddres
286287 />
287288 </ Modal . Columns >
288289 ) }
289- { multiInfo && ( ! isProxyActive || ! proxyInfo ) && (
290+ { multiInfo && (
290291 < Modal . Columns hint = { t ( 'The signatory is one of the allowed accounts on the multisig, making a recorded approval for the transaction.' ) } >
291292 < InputAddress
292293 filter = { multiInfo . whoFilter }
0 commit comments