@@ -58,7 +58,7 @@ export function react(options: ReactOptions = {}): ReactResult {
5858 const cosmwasmCodegenDirPath = join ( out , 'cosmwasm-codegen' )
5959
6060 // Guard speicfic contracts to not have the abstract app generated
61- const guardedContracts = contracts . filter ( ( { namespace } ) =>
61+ const contractsWithoutAbstractApp = contracts . filter ( ( { namespace } ) =>
6262 disableAppstractAppFor . includes ( namespace ) ,
6363 )
6464
@@ -68,19 +68,19 @@ export function react(options: ReactOptions = {}): ReactResult {
6868 . filter (
6969 ( { namespace } ) =>
7070 ! disableAppstractAppFor . includes ( namespace ) &&
71- guardedContracts . every (
71+ contractsWithoutAbstractApp . every (
7272 ( guardedContract ) => guardedContract . namespace !== namespace ,
7373 ) ,
7474 )
7575 . map ( ( { name, path } ) => ( { name, dir : path } ) ) ,
7676 outPath : cosmwasmCodegenDirPath ,
7777 } )
7878
79- if ( guardedContracts . length !== 0 )
79+ if ( contractsWithoutAbstractApp . length !== 0 )
8080 await codegen ( {
8181 options : { ...codegenOptions , abstractApp : { enabled : false } } ,
8282 contracts : [
83- ...guardedContracts ,
83+ ...contractsWithoutAbstractApp ,
8484 ...contracts . filter ( ( { namespace } ) =>
8585 disableAppstractAppFor . includes ( namespace ) ,
8686 ) ,
@@ -91,45 +91,14 @@ export function react(options: ReactOptions = {}): ReactResult {
9191 const imports : string [ ] = [ ]
9292 const content : string [ ] = [ ]
9393
94- content . push ( dedent `
95- function useAbstractModuleQueryClient(
96- args: Omit<Parameters<typeof useAbstractModuleQueryClient_>[0], 'client'>,
97- options?: Parameters<typeof useAbstractModuleQueryClient_>[1],
98- ) {
99- const { data: client } = useCosmWasmClient({chainName: args.chainName})
100- return useAbstractModuleQueryClient_(
101- {
102- client,
103- ...args,
104- },
105- options,
106- )
107- }
108-
109- function useAbstractModuleClient(
110- args: Omit<
111- Parameters<typeof useAbstractModuleClient_>[0],
112- 'client' | 'sender'
113- >,
114- options?: Parameters<typeof useAbstractModuleClient_>[1],
115- ) {
116- const { data: client } = useSigningCosmWasmClient({chainName: args.chainName})
117- const { data: sender } = useSenderAddress({chainName: args.chainName})
118- return useAbstractModuleClient_(
119- {
120- client,
121- sender,
122- ...args,
123- },
124- options,
125- )
126- }
127- ` )
128-
12994 for ( const contract of contracts ) {
13095 {
13196 const contractNamePascalCase = pascalCase ( contract . name )
13297
98+ const hasAbstractApp = contractsWithoutAbstractApp . every (
99+ ( contractWithoutAbstractApp ) =>
100+ contractWithoutAbstractApp !== contract ,
101+ )
133102 {
134103 // NOTE: The `@abstract-money/codegen` points to the old name of the core
135104 // package `@abstract-money/abstract.js`, and has to be changed to the
@@ -238,17 +207,22 @@ export function react(options: ReactOptions = {}): ReactResult {
238207 }
239208
240209 imports . push (
241- `import { ${ contractNamePascalCase } AppQueryClient, ${ contractNamePascalCase } AppClient } from './${ relative (
210+ `import { ${ contractNamePascalCase } ${
211+ hasAbstractApp ? 'App' : ''
212+ } QueryClient, ${ contractNamePascalCase } ${
213+ hasAbstractApp ? 'App' : ''
214+ } Client } from './${ relative (
242215 out ,
243216 join ( cosmwasmCodegenDirPath , `${ contractNamePascalCase } .client` ) ,
244217 ) } '`,
245218 )
246219
247- content . push (
248- `const ${ constantCase ( contract . name ) } _MODULE_ID = '${
249- contract . namespace
250- } :${ contract . name } '`,
251- )
220+ if ( hasAbstractApp )
221+ content . push (
222+ `const ${ constantCase ( contract . name ) } _MODULE_ID = '${
223+ contract . namespace
224+ } :${ contract . name } '`,
225+ )
252226
253227 {
254228 const queryHooks = new Map < Hook , string > ( [ ] )
@@ -259,26 +233,42 @@ export function react(options: ReactOptions = {}): ReactResult {
259233 const hookNameWithoutModuleAndQuery = hookName
260234 . replace ( pascalCase ( contract . name ) , '' )
261235 . replace ( 'Query' , '' ) as Hook
236+ const queryClientCamelCase = hasAbstractApp
237+ ? `${ contractNameCamelCase } AppQueryClient`
238+ : `${ contractNameCamelCase } QueryClient`
239+ const queryClientPascalCase = hasAbstractApp
240+ ? `${ contractNamePascalCase } AppQueryClient`
241+ : `${ contractNamePascalCase } QueryClient`
262242 queryHooks . set (
263243 hookNameWithoutModuleAndQuery ,
264244 dedent `
265245 ({ options, ${
266246 hasArgs ? 'args, ' : ''
267247 } ...rest }: Omit<Parameters<typeof ${ hookName } <${ contractNamePascalCase } Types.${ queryHookNameToResponseTypeMap . get (
268248 hookName ,
269- ) } >>[0], 'client'> & { accountId?: AccountId; chainName: string | undefined }) => {
249+ ) } >>[0], 'client'> & { ${
250+ hasAbstractApp
251+ ? 'accountId?: AccountId;'
252+ : 'contractAddress: string | undefined;'
253+ } chainName: string | undefined }) => {
270254 const {
271- data: ${ contractNameCamelCase } AppQueryClient ,
272- isLoading: is${ contractNamePascalCase } AppQueryClientLoading ,
273- isError: is${ contractNamePascalCase } AppQueryClientError ,
274- error: ${ contractNameCamelCase } AppQueryClientError ,
275- } = useAbstractModuleQueryClient (
255+ data: ${ queryClientCamelCase } ,
256+ isLoading: is${ queryClientPascalCase } Loading ,
257+ isError: is${ queryClientPascalCase } Error ,
258+ error: ${ queryClientCamelCase } Error ,
259+ } = use ${ hasAbstractApp ? 'Abstract' : '' } ModuleQueryClient (
276260 {
277- moduleId: ${ constantCase ( contract . name ) } _MODULE_ID,
261+ ${
262+ hasAbstractApp
263+ ? `moduleId: ${ constantCase (
264+ contract . name ,
265+ ) } _MODULE_ID,`
266+ : ''
267+ }
278268 ...rest,
279- Module: ${ contractNamePascalCase } AppQueryClient ,
269+ Module: ${ queryClientPascalCase } ,
280270 },
281- { enabled: options?.enabled },
271+ ${ hasAbstractApp ? '{ enabled: options?.enabled }' : '' }
282272 )
283273
284274 const {
@@ -287,18 +277,18 @@ export function react(options: ReactOptions = {}): ReactResult {
287277 isError: is${ hookNamePascalCaseWithoutUse } Error,
288278 error: ${ hookNameCamelCaseWithoutUse } Error,
289279 } = use${ hookNamePascalCaseWithoutUse } ({
290- client: ${ contractNameCamelCase } AppQueryClient ,
280+ client: ${ queryClientCamelCase } ,
291281 options,
292282 ${ hasArgs ? 'args, ' : '' }
293283 })
294284
295- if (is${ contractNamePascalCase } AppQueryClientError )
285+ if (is${ queryClientPascalCase } Error )
296286 return {
297287 data: undefined,
298288 isLoading: false,
299289 isError: true,
300290 isSuccess: false,
301- error: ${ contractNameCamelCase } AppQueryClientError ,
291+ error: ${ queryClientCamelCase } Error ,
302292 } as const
303293 if (is${ hookNamePascalCaseWithoutUse } Error)
304294 return {
@@ -308,7 +298,7 @@ export function react(options: ReactOptions = {}): ReactResult {
308298 isSuccess: false,
309299 error: ${ hookNameCamelCaseWithoutUse } Error,
310300 } as const
311- if (is${ contractNamePascalCase } AppQueryClientLoading || is${ hookNamePascalCaseWithoutUse } Loading)
301+ if (is${ queryClientPascalCase } Loading || is${ hookNamePascalCaseWithoutUse } Loading)
312302 return {
313303 data: undefined,
314304 isLoading: true,
@@ -332,11 +322,24 @@ export function react(options: ReactOptions = {}): ReactResult {
332322 const hookNameWithoutModuleAndMutation = hookName
333323 . replace ( pascalCase ( contract . name ) , '' )
334324 . replace ( 'Mutation' , '' ) as Hook
325+
326+ const clientCamelCase = hasAbstractApp
327+ ? `${ contractNameCamelCase } AppClient`
328+ : `${ contractNameCamelCase } Client`
329+ const clientPascalCase = hasAbstractApp
330+ ? `${ contractNamePascalCase } AppClient`
331+ : `${ contractNamePascalCase } Client`
335332 mutationHooks . set (
336333 hookNameWithoutModuleAndMutation ,
337334 dedent `
338335 (
339- { chainName, accountId }: { chainName: string | undefined; accountId?: AccountId },
336+ { chainName, ${
337+ hasAbstractApp ? 'accountId' : 'contractAddress'
338+ } }: { chainName: string | undefined; ${
339+ hasAbstractApp
340+ ? 'accountId?: AccountId'
341+ : 'contractAddress: string | undefined'
342+ } },
340343 options?: Omit<
341344 UseMutationOptions<
342345 ExecuteResult,
@@ -347,17 +350,23 @@ export function react(options: ReactOptions = {}): ReactResult {
347350 >,
348351 ) => {
349352 const {
350- data: ${ contractNameCamelCase } AbstractModuleClient ,
353+ data: ${ clientCamelCase } ,
351354 // TODO: figure out what to do with those
352- // isLoading: is${ contractNamePascalCase } AbstractModuleClientLoading ,
353- // isError: is${ contractNamePascalCase } AbstractModuleClientError ,
354- // error: ${ contractNameCamelCase } AbstractModuleClientError ,
355- } = useAbstractModuleClient (
355+ // isLoading: is${ clientPascalCase } Loading ,
356+ // isError: is${ clientPascalCase } Error ,
357+ // error: ${ clientCamelCase } Error ,
358+ } = use ${ hasAbstractApp ? 'Abstract' : '' } ModuleClient (
356359 {
360+ ${
361+ hasAbstractApp
362+ ? `
357363 moduleId: ${ constantCase ( contract . name ) } _MODULE_ID,
358364 accountId,
365+ `
366+ : 'contractAddress,'
367+ }
359368 chainName,
360- Module: ${ contractNamePascalCase } AppClient ,
369+ Module: ${ clientPascalCase } ,
361370 }
362371 )
363372
@@ -368,23 +377,23 @@ export function react(options: ReactOptions = {}): ReactResult {
368377 } = ${ hookName } (options)
369378
370379 const mutate = useMemo(() => {
371- if (!${ contractNameCamelCase } AbstractModuleClient ) return undefined
380+ if (!${ clientCamelCase } ) return undefined
372381
373382 return (
374383 variables: Omit<Parameters<typeof mutate_>[0], 'client'>,
375384 options?: Parameters<typeof mutate_>[1],
376- ) => mutate_({ client: ${ contractNameCamelCase } AbstractModuleClient , ...variables }, options)
377- }, [mutate_, ${ contractNameCamelCase } AbstractModuleClient ])
385+ ) => mutate_({ client: ${ clientCamelCase } , ...variables }, options)
386+ }, [mutate_, ${ clientCamelCase } ])
378387
379388 const mutateAsync = useMemo(() => {
380- if (!${ contractNameCamelCase } AbstractModuleClient ) return undefined
389+ if (!${ clientCamelCase } ) return undefined
381390
382391 return (
383392 variables: Omit<Parameters<typeof mutateAsync_>[0], 'client'>,
384393 options?: Parameters<typeof mutateAsync_>[1],
385394 ) =>
386- mutateAsync_({ client: ${ contractNameCamelCase } AbstractModuleClient , ...variables }, options)
387- }, [mutateAsync_, ${ contractNameCamelCase } AbstractModuleClient ])
395+ mutateAsync_({ client: ${ clientCamelCase } , ...variables }, options)
396+ }, [mutateAsync_, ${ clientCamelCase } ])
388397
389398 return { mutate, mutateAsync, ...rest } as const
390399 }
@@ -421,18 +430,20 @@ export function react(options: ReactOptions = {}): ReactResult {
421430 import { useMemo } from 'react'
422431
423432 import {
424- useAbstractModuleClient as useAbstractModuleClient_,
425- useAbstractModuleQueryClient as useAbstractModuleQueryClient_,
433+ useAbstractModuleClient,
434+ useAbstractModuleQueryClient,
435+ ${
436+ contractsWithoutAbstractApp . length !== 0
437+ ? `
438+ useModuleClient,
439+ useModuleQueryClient,
440+ `
441+ : ''
442+ }
426443 } from '@abstract-money/react/utils'
427444
428445 import { AccountId } from '@abstract-money/core'
429446
430- import {
431- useCosmWasmClient,
432- useSigningCosmWasmClient,
433- useSenderAddress
434- } from '@abstract-money/react/hooks'
435-
436447 ${ imports . join ( '\n\n' ) }
437448 ` ,
438449 // (actionsImportValues.length
0 commit comments