Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(kadena-sdk): refactor transfers for more flexibility #2767

Merged
merged 8 commits into from
Jan 28, 2025
4 changes: 1 addition & 3 deletions .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,8 @@
"@kadena/bootstrap-lib",
"@kadena/tools",
"@kadena-dev/e2e-base",
"e2e-docs",
"e2e-tools",
"e2e-graph",
"e2e-proof-of-us",
"@kadena/docs"
"e2e-proof-of-us"
]
}
5 changes: 5 additions & 0 deletions .changeset/selfish-jokes-yell.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@kadena/wallet-sdk': minor
---

Provide new create transfer methods (breaking change)
1 change: 1 addition & 0 deletions packages/apps/wallet-sdk-example/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ function App() {

useEffect(() => {
const transport = (log: ILogObject) => {
console.log(log);
const id = notificationIdCounter.current++;
const notification: ILogNotification = { ...log, id };

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ const HighlightBlock: React.FC<{ data: string; language: string }> = ({
}) => {
const elRef = useRef<HTMLElement>(null);
useEffect(() => {
if (elRef.current) hljs.highlightElement(elRef.current);
if (elRef.current && elRef.current.dataset.highlighted !== 'yes') {
hljs.highlightElement(elRef.current);
}
}, []);
return (
<pre className={sdkDisplayCode}>
Expand Down
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
4 changes: 2 additions & 2 deletions packages/apps/wallet-sdk-example/src/pages/Transfers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,9 @@ export const Transfers = () => {
? `-${transfer.amount}`
: `+${transfer.amount}`}
</Text>
{transfer.transactionFeeTransfer && (
{transfer.transactionFee && (
<Text className="text-negative">
{`-${transfer.transactionFeeTransfer.amount}`}
{`-${transfer.transactionFee.amount}`}
</Text>
)}
</Stack>
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
Loading
Loading