diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e3d68c6 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,27 @@ +{ + "workbench.editor.enablePreview": false, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "standard.autoFixOnSave": true, + "standard.nodePath": "", + "eslint.options": {}, + "previewServer.ui": {}, + "prettier.semi": false, + "editor.formatOnSave": true, + "editor.formatOnType": true, + "eslint.format.enable": true, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + "prettier.tabWidth": 4, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "window.zoomLevel": 1, + "workbench.colorTheme": "Solidity Visual Developer Dark", + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "typescript.updateImportsOnFileMove.enabled": "never" +} diff --git a/src/contractMessage/decoder/index.ts b/src/contractMessage/decoder/index.ts index d25b4c8..a5612b0 100644 --- a/src/contractMessage/decoder/index.ts +++ b/src/contractMessage/decoder/index.ts @@ -60,6 +60,7 @@ export class ContractMessageDecoder { timestamp: "", // Add timestamp logic here if available from: msg.Msg.From, to: msg.Msg.To, + value: msg.Msg.Value, method: decodeInputRes.data.method, params: decodeInputRes.data.params, status: msg.MsgRct ? msg.MsgRct.ExitCode : "", diff --git a/src/contractMessage/types/index.ts b/src/contractMessage/types/index.ts index 3463432..85b20e4 100644 --- a/src/contractMessage/types/index.ts +++ b/src/contractMessage/types/index.ts @@ -19,7 +19,7 @@ ********************************************************************************/ import { CidProperty } from "../../basic/cid/types" -import { Entity } from "@unipackage/ddd" +import { ValueFields } from "@unipackage/utils" /** * Interface representing a ContractMessage. @@ -35,6 +35,8 @@ export interface ContractMessage { from: string /** Recipient's address to which the contract message is directed. */ to: string + /** The amount sent by the contract message. */ + value: string /** Method associated with the contract message. */ method: string /** Parameters of the contract message. */ @@ -48,4 +50,26 @@ export interface ContractMessage { /** * class representing a ContractMessage. */ -export class ContractMessage extends Entity {} +export class ContractMessage { + /** + * Creates an instance of the ContractMessage. + * @param data - The initial data for the ContractMessage. + */ + constructor(data: ValueFields) { + if (!data) { + throw new Error("Invalid data provided to the constructor") + } + Object.assign(this, data) + } + + /** + * Gets the values of the ContractMessage. + * @returns ValueFields. + */ + values(): ValueFields { + return Object.fromEntries( + Object.entries(this) + .filter(([key, value]) => this.hasOwnProperty(key) && typeof value !== "function") + ) as ValueFields; + } +} diff --git a/test/contractMessage/contractMessage.test.ts b/test/contractMessage/contractMessage.test.ts index 0b92e09..6c607c7 100644 --- a/test/contractMessage/contractMessage.test.ts +++ b/test/contractMessage/contractMessage.test.ts @@ -30,6 +30,7 @@ describe("ContractMessage Entity", () => { timestamp: "2023-01-01T12:00:00Z", from: "senderAddress", to: "recipientAddress", + value: "1000000000", method: "transfer", params: { /* Add parameter properties */ diff --git a/test/contractMessage/decoder.test.ts b/test/contractMessage/decoder.test.ts index 4a066f6..a4367db 100644 --- a/test/contractMessage/decoder.test.ts +++ b/test/contractMessage/decoder.test.ts @@ -86,6 +86,7 @@ describe("ContractMessageDecoder", () => { timestamp: "", from: "f410fhuebctou6znv3xghmceeesoz2gxegxpoopw46jq", to: "f410few7qcnlenzfodimzo72ki7kmh5zlg6munfg5l4q", + value: "1000000000", method: "appendDatasetCollateral", params: { datasetId: BigInt(1),