I am trying to sign a transaction on the frontend and send the signed bytes to the backend to execute the transaction. However, I am having difficulty signing the transaction. I have a HashConnect pairing with my app, and I have my signer, but I am not having any luck signing. I've tried several different things, and I'm currently here:
const transactionId = new TransactionId(AccountId.fromString(accountId));
const transaction = new TopicMessageSubmitTransaction()
.setTopicId(id)
.setMessage(JSON.stringify(message))
.setTransactionId(transactionId);
const signedTransaction = await transaction.signWithSigner(signer);
I am receiving the following error:
TopicMessageSubmitTransaction.js:293 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'seconds')
at TopicMessageSubmitTransaction.freezeWith (TopicMessageSubmitTransaction.js:293:1)
at HashConnectSigner.signTransaction (signer.ts:66:1)
at TopicMessageSubmitTransaction.signWithSigner (Transaction.js:990:1)
at postReply (Thread.js:133:1)
at onSubmit (Thread.js:252:1)
at HTMLUnknownElement.callCallback (react-dom.development.js:4164:1)
at Object.invokeGuardedCallbackDev (react-dom.development.js:4213:1)
at invokeGuardedCallback (react-dom.development.js:4277:1)
at invokeGuardedCallbackAndCatchFirstError (react-dom.development.js:4291:1)
at executeDispatch (react-dom.development.js:9041:1)
The reason you get the error because you did not freeze the transaction. To fix your problem you have to freeze your transaction by calling
freezeWithSigner(signer)
Here is the example code