Skip to content

Commit

Permalink
feat(kadena-sdk): refactor transfers for more flexibility
Browse files Browse the repository at this point in the history
  • Loading branch information
barthuijgen committed Jan 15, 2025
1 parent 0315f6b commit 28c1d0a
Show file tree
Hide file tree
Showing 22 changed files with 1,584 additions and 518 deletions.
31 changes: 20 additions & 11 deletions packages/apps/wallet-sdk-example/src/pages/Transfer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ import { AlertDialog } from '../components/AlertDialog';
import { useFunctionTracker } from '../hooks/functionTracker';
import { useWalletState } from '../state/wallet';

type SimpleCreateTransfer = Parameters<
typeof walletSdk.createSimpleTransfer
type createTransferCreateCommand = Parameters<
typeof walletSdk.createTransferCreateCommand
>[0];

type CrossChainCreateTransfer = Parameters<
Expand All @@ -48,8 +48,8 @@ export const Transfer = () => {
amount: string;
} | null>(null);

const trackCreateSimpleTransfer = useFunctionTracker(
'walletSdk.createSimpleTransfer',
const trackCreateTransferCreateCommand = useFunctionTracker(
'walletSdk.createTransferCreateCommand',
);
const trackCreateCrossChainTransfer = useFunctionTracker(
'walletSdk.createCrossChainTransfer',
Expand Down Expand Up @@ -90,7 +90,7 @@ export const Transfer = () => {
targetChainId: wallet.selectedToChain,
});
} else {
trackCreateSimpleTransfer.setArgs({
trackCreateTransferCreateCommand.setArgs({
amount,
sender: wallet.account.name,
receiver: receiverAccount,
Expand Down Expand Up @@ -123,6 +123,9 @@ export const Transfer = () => {
'Cannot perform a cross-chain transfer to the same chain',
);
}
if (!receiverAccount.startsWith('k:')) {
throw new Error('Receiver account must be a k: account');
}

let transaction: IUnsignedCommand;

Expand All @@ -149,15 +152,21 @@ export const Transfer = () => {
transaction = walletSdk.createCrossChainTransfer(crossChainTransferArgs);
return await wallet.signTransaction(transaction);
} else {
const functionArgs: SimpleCreateTransfer & { networkId: string } = {
const functionArgs: createTransferCreateCommand = {
amount,
sender: wallet.account.name,
receiver: receiverAccount,
receiver: {
account: receiverAccount,
keyset: {
keys: [receiverAccount.split(':')[1]],
pred: 'keys-all',
},
},
chainId: fromChain,
networkId: wallet.selectedNetwork,
};

transaction = walletSdk.createSimpleTransfer(functionArgs);
transaction = walletSdk.createTransferCreateCommand(functionArgs);
return await wallet.signTransaction(transaction);
}
};
Expand Down Expand Up @@ -196,7 +205,7 @@ export const Transfer = () => {

/* -- Start demo ---------------*/
trackGasEstimate.setArgs(null);
trackCreateSimpleTransfer.setArgs(null);
trackCreateTransferCreateCommand.setArgs(null);
trackCreateCrossChainTransfer.setArgs(null);
/* -- End demo ---------------*/
}
Expand Down Expand Up @@ -228,7 +237,7 @@ export const Transfer = () => {

/* -- Start demo ---------------*/
trackGasEstimate.setArgs(null);
trackCreateSimpleTransfer.setArgs(null);
trackCreateTransferCreateCommand.setArgs(null);
trackCreateCrossChainTransfer.setArgs(null);
/* -- End demo ---------------*/
navigate('/list');
Expand Down Expand Up @@ -350,7 +359,7 @@ export const Transfer = () => {
data={
isCrossChain
? trackCreateCrossChainTransfer.data
: trackCreateSimpleTransfer.data
: trackCreateTransferCreateCommand.data
}
/>
</div>
Expand Down
6 changes: 6 additions & 0 deletions packages/libs/wallet-sdk/codegen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ const config: CodegenConfig = {
config: { useTypeImports: true },
},
},
config: {
scalars: {
BigInt: 'number',
DateTime: 'string',
},
},
hooks: {
afterAllFileWrite(...files) {
for (let i = 0; i < files.length; i++) {
Expand Down
4 changes: 2 additions & 2 deletions packages/libs/wallet-sdk/src/gql/gql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-
* Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size
*/
const documents = {
"\n fragment TransferFields on Transfer {\n amount\n chainId\n orderIndex\n receiverAccount\n requestKey\n senderAccount\n moduleName\n block {\n hash\n height\n creationTime\n }\n transaction {\n cmd {\n networkId\n payload {\n __typename\n ... on ExecutionPayload {\n code\n data\n }\n ... on ContinuationPayload {\n step\n pactId\n }\n }\n signers {\n clist {\n name\n args\n }\n }\n }\n result {\n __typename\n ... on TransactionResult {\n goodResult\n badResult\n events {\n edges {\n node {\n name\n parameters\n }\n }\n }\n }\n }\n }\n }\n": types.TransferFieldsFragmentDoc,
"\n fragment TransferFields on Transfer {\n amount\n chainId\n orderIndex\n receiverAccount\n requestKey\n senderAccount\n moduleName\n block {\n hash\n height\n creationTime\n minerAccount {\n accountName\n }\n }\n transaction {\n cmd {\n networkId\n meta {\n gasPrice\n sender\n }\n payload {\n __typename\n ... on ExecutionPayload {\n code\n data\n }\n ... on ContinuationPayload {\n step\n pactId\n }\n }\n signers {\n clist {\n name\n args\n }\n }\n }\n result {\n __typename\n ... on TransactionResult {\n goodResult\n badResult\n gas\n events {\n edges {\n node {\n name\n parameters\n }\n }\n }\n }\n }\n }\n }\n": types.TransferFieldsFragmentDoc,
"\n query accountTransfers(\n $accountName: String!\n $fungibleName: String\n $first: Int\n $last: Int\n $before: String\n $after: String\n ) {\n lastBlockHeight\n fungibleAccount(accountName: $accountName, fungibleName: $fungibleName) {\n transfers(first: $first, last: $last, before: $before, after: $after) {\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n ...TransferFields\n crossChainTransfer {\n ...TransferFields\n }\n }\n }\n }\n }\n }\n": types.AccountTransfersDocument,
"\n query accountChainTransfers(\n $accountName: String!\n $chainId: String\n $fungibleName: String\n $first: Int\n $last: Int\n $before: String\n $after: String\n ) {\n lastBlockHeight\n transfers(\n accountName: $accountName\n chainId: $chainId\n fungibleName: $fungibleName\n first: $first\n last: $last\n before: $before\n after: $after\n ) {\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n ...TransferFields\n crossChainTransfer {\n ...TransferFields\n }\n }\n }\n }\n }\n": types.AccountChainTransfersDocument,
"\n query accountTransferRequestKey($requestKey: String!, $accountName: String) {\n lastBlockHeight\n transfers(requestKey: $requestKey, accountName: $accountName) {\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n ...TransferFields\n }\n }\n }\n }\n": types.AccountTransferRequestKeyDocument,
Expand All @@ -37,7 +37,7 @@ export function graphql(source: string): unknown;
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n fragment TransferFields on Transfer {\n amount\n chainId\n orderIndex\n receiverAccount\n requestKey\n senderAccount\n moduleName\n block {\n hash\n height\n creationTime\n }\n transaction {\n cmd {\n networkId\n payload {\n __typename\n ... on ExecutionPayload {\n code\n data\n }\n ... on ContinuationPayload {\n step\n pactId\n }\n }\n signers {\n clist {\n name\n args\n }\n }\n }\n result {\n __typename\n ... on TransactionResult {\n goodResult\n badResult\n events {\n edges {\n node {\n name\n parameters\n }\n }\n }\n }\n }\n }\n }\n"): (typeof documents)["\n fragment TransferFields on Transfer {\n amount\n chainId\n orderIndex\n receiverAccount\n requestKey\n senderAccount\n moduleName\n block {\n hash\n height\n creationTime\n }\n transaction {\n cmd {\n networkId\n payload {\n __typename\n ... on ExecutionPayload {\n code\n data\n }\n ... on ContinuationPayload {\n step\n pactId\n }\n }\n signers {\n clist {\n name\n args\n }\n }\n }\n result {\n __typename\n ... on TransactionResult {\n goodResult\n badResult\n events {\n edges {\n node {\n name\n parameters\n }\n }\n }\n }\n }\n }\n }\n"];
export function graphql(source: "\n fragment TransferFields on Transfer {\n amount\n chainId\n orderIndex\n receiverAccount\n requestKey\n senderAccount\n moduleName\n block {\n hash\n height\n creationTime\n minerAccount {\n accountName\n }\n }\n transaction {\n cmd {\n networkId\n meta {\n gasPrice\n sender\n }\n payload {\n __typename\n ... on ExecutionPayload {\n code\n data\n }\n ... on ContinuationPayload {\n step\n pactId\n }\n }\n signers {\n clist {\n name\n args\n }\n }\n }\n result {\n __typename\n ... on TransactionResult {\n goodResult\n badResult\n gas\n events {\n edges {\n node {\n name\n parameters\n }\n }\n }\n }\n }\n }\n }\n"): (typeof documents)["\n fragment TransferFields on Transfer {\n amount\n chainId\n orderIndex\n receiverAccount\n requestKey\n senderAccount\n moduleName\n block {\n hash\n height\n creationTime\n minerAccount {\n accountName\n }\n }\n transaction {\n cmd {\n networkId\n meta {\n gasPrice\n sender\n }\n payload {\n __typename\n ... on ExecutionPayload {\n code\n data\n }\n ... on ContinuationPayload {\n step\n pactId\n }\n }\n signers {\n clist {\n name\n args\n }\n }\n }\n result {\n __typename\n ... on TransactionResult {\n goodResult\n badResult\n gas\n events {\n edges {\n node {\n name\n parameters\n }\n }\n }\n }\n }\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
Expand Down
Loading

0 comments on commit 28c1d0a

Please sign in to comment.