Skip to content

Commit

Permalink
package/asset: Add extrinsic before dispatch
Browse files Browse the repository at this point in the history
Signed-off-by: Shreevatsa N <[email protected]>
  • Loading branch information
vatsa287 committed Mar 6, 2024
1 parent 83e0dcf commit d6571de
Showing 1 changed file with 35 additions and 4 deletions.
39 changes: 35 additions & 4 deletions packages/asset/src/Asset.chain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
AuthorizationId,
ASSET_PREFIX,
DidUri,
SubmittableExtrinsic,
} from '@cord.network/types'

import type { Option } from '@cord.network/types'
Expand All @@ -20,15 +21,24 @@ import { Chain } from '@cord.network/network'
import { ConfigService } from '@cord.network/config'
import { SDKErrors } from '@cord.network/utils'

/* TODO: Write method description, params, return types to all methods */

export async function isAssetStored(assetUri: AssetUri): Promise<boolean> {
try {
const api = ConfigService.get('api')

console.log("AssetUri Local:", assetUri)

const identifier = uriToIdentifier(assetUri)

console.log("identifier Local:", identifier)

const encoded = (await api.query.asset.assets(
identifier
)) as Option<PalletAssetAssetEntry>
console.log("encoded Local:", encoded)

return !encoded.isNone
return encoded.isSome
} catch (error) {
const errorMessage =
error instanceof Error ? error.message : JSON.stringify(error)
Expand Down Expand Up @@ -77,20 +87,22 @@ export async function dispatchCreateToChain(
}
}

export async function dispatchIssueToChain(
export async function prepareExtrinsic(
assetEntry: IAssetIssuance,
authorAccount: CordKeyringPair,
authorizationUri: AuthorizationUri,
signCallback: SignExtrinsicCallback
): Promise<AssetUri> {
): Promise<SubmittableExtrinsic> {
try {
const api = ConfigService.get('api')

const authorizationId: AuthorizationId = uriToIdentifier(authorizationUri)

const exists = await isAssetStored(assetEntry.entry.assetId as AssetUri)

if (!exists) {
console.log("exists Local:", exists, assetEntry)

if (!exists) {
throw new SDKErrors.CordDispatchError(`Asset Entry not found on chain.`)
}

Expand All @@ -107,6 +119,25 @@ export async function dispatchIssueToChain(
authorAccount.address
)

return extrinsic
} catch (error) {
const errorMessage =
error instanceof Error ? error.message : JSON.stringify(error)
throw new SDKErrors.CordDispatchError(
`Error preparing extrinsic: "${errorMessage}".`
)
}
}

export async function dispatchIssueToChain(
assetEntry: IAssetIssuance,
authorAccount: CordKeyringPair,
authorizationUri: AuthorizationUri,
signCallback: SignExtrinsicCallback
): Promise<AssetUri> {
try {

const extrinsic = await prepareExtrinsic(assetEntry, authorAccount, authorizationUri, signCallback)
await Chain.signAndSubmitTx(extrinsic, authorAccount)

return assetEntry.uri
Expand Down

0 comments on commit d6571de

Please sign in to comment.