Skip to content

Commit

Permalink
fix: app creation via methodCall (#274)
Browse files Browse the repository at this point in the history
  • Loading branch information
joe-p authored May 20, 2024
1 parent 0e45624 commit 2b76e83
Show file tree
Hide file tree
Showing 5 changed files with 372 additions and 237 deletions.
24 changes: 12 additions & 12 deletions docs/code/classes/types_composer.default.md
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ The built atomic transaction composer and the transactions

#### Defined in

[src/types/composer.ts:711](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L711)
[src/types/composer.ts:724](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L724)

___

Expand All @@ -488,7 +488,7 @@ ___

#### Defined in

[src/types/composer.ts:590](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L590)
[src/types/composer.ts:603](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L603)

___

Expand All @@ -509,7 +509,7 @@ ___

#### Defined in

[src/types/composer.ts:539](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L539)
[src/types/composer.ts:552](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L552)

___

Expand All @@ -530,7 +530,7 @@ ___

#### Defined in

[src/types/composer.ts:519](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L519)
[src/types/composer.ts:532](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L532)

___

Expand All @@ -551,7 +551,7 @@ ___

#### Defined in

[src/types/composer.ts:554](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L554)
[src/types/composer.ts:567](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L567)

___

Expand All @@ -572,7 +572,7 @@ ___

#### Defined in

[src/types/composer.ts:564](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L564)
[src/types/composer.ts:577](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L577)

___

Expand All @@ -593,7 +593,7 @@ ___

#### Defined in

[src/types/composer.ts:576](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L576)
[src/types/composer.ts:589](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L589)

___

Expand Down Expand Up @@ -634,7 +634,7 @@ ___

#### Defined in

[src/types/composer.ts:630](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L630)
[src/types/composer.ts:643](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L643)

___

Expand Down Expand Up @@ -676,7 +676,7 @@ ___

#### Defined in

[src/types/composer.ts:507](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L507)
[src/types/composer.ts:520](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L520)

___

Expand All @@ -697,7 +697,7 @@ ___

#### Defined in

[src/types/composer.ts:648](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L648)
[src/types/composer.ts:661](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L661)

___

Expand Down Expand Up @@ -743,7 +743,7 @@ The execution result

#### Defined in

[src/types/composer.ts:753](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L753)
[src/types/composer.ts:766](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L766)

___

Expand All @@ -762,4 +762,4 @@ The newly built atomic transaction composer and the transactions

#### Defined in

[src/types/composer.ts:743](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L743)
[src/types/composer.ts:756](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/types/composer.ts#L756)
22 changes: 21 additions & 1 deletion src/types/algorand-client.spec.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
/* eslint-disable no-console */
import { TestContractClient } from '../../tests/example-contracts/client/TestContractClient'
import algosdk from 'algosdk'
import { APP_SPEC, TestContractClient } from '../../tests/example-contracts/client/TestContractClient'
import * as algokit from '../index'
import { algorandFixture } from '../testing'
import { TransactionSignerAccount } from './account'
import AlgorandClient from './algorand-client'
import { MethodCallParams } from './composer'

async function compileProgram(algorand: AlgorandClient, b64Teal: string) {
const teal = new Uint8Array(Buffer.from(b64Teal, 'base64'))
const result = await algorand.client.algod.compile(teal).do()

return new Uint8Array(Buffer.from(result.result, 'base64'))
}

describe('AlgorandClient', () => {
let algorand: AlgorandClient
let alice: TransactionSignerAccount
Expand Down Expand Up @@ -196,4 +204,16 @@ describe('AlgorandClient', () => {
})
expect(await algod.accountAssetInformation(alice.addr, Number(assetId)).do()).toBeDefined()
})

test('methodCall create', async () => {
const contract = new algosdk.ABIContract(APP_SPEC.contract)

await algorand.send.methodCall({
sender: alice.addr,
appId: 0n,
method: contract.getMethodByName('createApplication'),
approvalProgram: await compileProgram(algorand, APP_SPEC.source.approval),
clearProgram: await compileProgram(algorand, APP_SPEC.source.clear),
})
})
})
17 changes: 15 additions & 2 deletions src/types/composer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -484,10 +484,23 @@ export default class AlgokitComposer {

const methodAtc = new algosdk.AtomicTransactionComposer()

const appID = Number(params.appId || 0)
methodAtc.addMethodCall({
...params,
appID: Number(params.appId || 0),
appID,
sender: params.sender,
suggestedParams,
onComplete: params.onComplete,
appAccounts: params.accountReferences,
appForeignApps: params.appReferences?.map((x) => Number(x)),
appForeignAssets: params.assetReferences?.map((x) => Number(x)),
approvalProgram: params.approvalProgram,
clearProgram: params.clearProgram,
extraPages: params.extraPages,
numLocalInts: params.schema?.localUints || (appID === 0 ? 0 : undefined),
numLocalByteSlices: params.schema?.localByteSlices || (appID === 0 ? 0 : undefined),
numGlobalInts: params.schema?.globalUints || (appID === 0 ? 0 : undefined),
numGlobalByteSlices: params.schema?.globalByteSlices || (appID === 0 ? 0 : undefined),
method: params.method,
signer: params.signer ? ('signer' in params.signer ? params.signer.signer : params.signer) : this.getSigner(params.sender),
methodArgs: methodArgs,
// note, lease, and rekeyTo are set in the common build step
Expand Down
Loading

0 comments on commit 2b76e83

Please sign in to comment.