From 4ce6bb455c2b228ce6d92e9a78d001502d2ad5d5 Mon Sep 17 00:00:00 2001 From: AIFlow_ML Date: Tue, 28 Jan 2025 13:19:17 +0700 Subject: [PATCH] fixed all logical and typing issue --- packages/plugin-quai/src/actions/transfer.ts | 52 ++++++++---------- packages/plugin-quai/src/utils/index.ts | 55 ++++++++++++++++---- 2 files changed, 67 insertions(+), 40 deletions(-) diff --git a/packages/plugin-quai/src/actions/transfer.ts b/packages/plugin-quai/src/actions/transfer.ts index 3911a8a5c20..f2d272d4303 100644 --- a/packages/plugin-quai/src/actions/transfer.ts +++ b/packages/plugin-quai/src/actions/transfer.ts @@ -46,7 +46,7 @@ export default { "PAY_ON_QUAI", ], // eslint-disable-next-line - validate: async (runtime: IAgentRuntime, message: Memory) => { + validate: async (runtime: IAgentRuntime, _message: Memory) => { return validateSettings(runtime); }, description: @@ -61,15 +61,13 @@ export default { console.log("Starting TRANSFER_TOKEN handler..."); // Initialize or update state - if (!state) { - state = (await runtime.composeState(message)) as State; - } else { - state = await runtime.updateRecentMessageState(state); - } + const currentState = !state + ? await runtime.composeState(message) + : await runtime.updateRecentMessageState(state); // Compose transfer context const transferContext = composeContext({ - state, + state: currentState, template: transferTemplate, }); @@ -96,37 +94,31 @@ export default { try { const account = getQuaiAccount(runtime); - const amount = formatUnits(content.amount, "wei"); - - var txObj: TransactionRequest = {}; - if (content.tokenAddress) { - // TODO: transfer QRC20s - } else { - txObj = { - to: content.recipient, + const amount = formatUnits(content.amount, "wei"); + + // Declare transaction object at function scope + const txObj: TransactionRequest = content.tokenAddress + ? {} // TODO: transfer QRC20s + : { + to: content.recipient, value: amount, from: account.address, }; - console.log( - "Transferring", - amount, - "QUAI", - "to", - content.recipient - ); - } - - const tx = await account.sendTransaction(txObj) - console.log( - "Transfer completed successfully! tx: " + tx.hash + "Transferring", + amount, + "QUAI", + "to", + content.recipient ); + + const tx = await account.sendTransaction(txObj); + + console.log(`Transfer completed successfully! tx: ${tx.hash}`); if (callback) { callback({ - text: - "Transfer completed successfully! tx: " + - tx.hash, + text: `Transfer completed successfully! tx: ${tx.hash}`, content: {}, }); } diff --git a/packages/plugin-quai/src/utils/index.ts b/packages/plugin-quai/src/utils/index.ts index 78f389745ac..6c2769cc633 100644 --- a/packages/plugin-quai/src/utils/index.ts +++ b/packages/plugin-quai/src/utils/index.ts @@ -35,27 +35,62 @@ export interface TransferContent extends Content { } export function isTransferContent( - content: any + content: unknown ): content is TransferContent { + if (!content || typeof content !== 'object') { + return false; + } + + const contentObj = content as { tokenAddress?: unknown; recipient?: unknown; amount?: unknown }; + // Validate types const validTypes = - (content.tokenAddress === null || typeof content.tokenAddress === "string") && - typeof content.recipient === "string" && - (typeof content.amount === "string" || - typeof content.amount === "number"); + (contentObj.tokenAddress === null || typeof contentObj.tokenAddress === "string") && + typeof contentObj.recipient === "string" && + (typeof contentObj.amount === "string" || + typeof contentObj.amount === "number"); if (!validTypes) { return false; } // Validate addresses (20-bytes with 0x prefix) + const recipient = contentObj.recipient as string; + const tokenAddress = contentObj.tokenAddress as string | null; + const validRecipient = - content.recipient.startsWith("0x") && - content.recipient.length === 42; + recipient.startsWith("0x") && + recipient.length === 42; // If tokenAddress is provided, validate it - const validTokenAddress = content.tokenAddress === null || - (content.tokenAddress.startsWith("0x") && - content.tokenAddress.length === 42); + const validTokenAddress = tokenAddress === null || + (tokenAddress.startsWith("0x") && + tokenAddress.length === 42); return validRecipient && validTokenAddress; } + +// export function isTransferContent( +// content: any +// ): content is TransferContent { +// // Validate types +// const validTypes = +// (content.tokenAddress === null || typeof content.tokenAddress === "string") && +// typeof content.recipient === "string" && +// (typeof content.amount === "string" || +// typeof content.amount === "number"); +// if (!validTypes) { +// return false; +// } + +// // Validate addresses (20-bytes with 0x prefix) +// const validRecipient = +// content.recipient.startsWith("0x") && +// content.recipient.length === 42; + +// // If tokenAddress is provided, validate it +// const validTokenAddress = content.tokenAddress === null || +// (content.tokenAddress.startsWith("0x") && +// content.tokenAddress.length === 42); + +// return validRecipient && validTokenAddress; +