This example demonstrates how to read attached messages (not enrcrypted)
In the basic examples we still show how to use SignumJS depending the way you are using SignumJS, i.e. imported via NodeJS package manager or as minified bundle. In case you haven't read about the module system, take a quick look there:
isAttachmentVersion function to check, whether a message is encrypted or not.
TransactionType enums to filter for the specific message types
Address Value Object to parse and convert the given address
ChainTime Value Object to convert between blockchain timestamp and real date
const {composeApi,isAttachmentVersion,TransactionType,TransactionArbitrarySubtype,Address} =require('@signumjs/core');const {ChainTime} =require('@signumjs/util')// Create the Api instance to connect to a blockchain nodeconstapi=composeApi({ nodeHost:"https://europe.signum.network"});// here we check for a certain attachment type, and get the text message if not encryptedconstgetMessageText= transaction =>isAttachmentVersion(transaction,'EncryptedMessage')?'<encrypted>':transaction.attachment.message;asyncfunctionlistMessages(account) {try {constaccountId=Address.create(account).getNumericId()// here we can explicitly filter by Transaction Typesconst {transactions} =awaitapi.account.getAccountTransactions( { accountId, lastIndex:20,// getting only the most recent 20 type:TransactionType.Arbitrary, subtype:TransactionArbitrarySubtype.Message } );// now we iterate through the transactions and print in a formatted waytransactions.forEach(t => {console.info(`On ${ChainTime.fromChainTimestamp(t.blockTimestamp).getDate()}`)console.info(`From ${t.senderRS}`)console.info(`To ${t.recipientRS}`)console.info('Message:\n',getMessageText(t),'\n---') }) } catch (e) {handleError(e) }}
import { composeApi, isAttachmentVersion, TransactionType, TransactionArbitrarySubtype, Address, Transaction} from'@signumjs/core';import {ChainTime} from'@signumjs/util'// Create the Api instance to connect to a blockchain nodeconstapi=composeApi({ nodeHost:"https://europe.signum.network"});// here we check for a certain attachment type, and get the text message if not encryptedconstgetMessageText= (transaction:Transaction):string=>isAttachmentVersion(transaction,'EncryptedMessage')?'<encrypted>':transaction.attachment.message;asyncfunctionlistMessages(account:string):Promise<void> {try {constaccountId=Address.create(account).getNumericId()// here we can explicitly filter by Transaction Typesconst {transactions} =awaitapi.account.getAccountTransactions( { accountId, lastIndex:20,// getting only the most recent 20 type:TransactionType.Arbitrary, subtype:TransactionArbitrarySubtype.Message } );// now we iterate through the transactions and print in a formatted waytransactions.forEach(t => {console.info(`On ${ChainTime.fromChainTimestamp(t.blockTimestamp).getDate()}`)console.info(`From ${t.senderRS}`)console.info(`To ${t.recipientRS}`)console.info('Message:\n',getMessageText(t),'\n---') }) } catch (e:any) {console.log(e) }}
// you need to have imported in your index.html:/*<script src='https://cdn.jsdelivr.net/npm/@signumjs/core/dist/signumjs.min.js'></script><script src='https://cdn.jsdelivr.net/npm/@signumjs/util/dist/signumjs.util.min.js'></script>*/// Create the Api instance to connect to a blockchain nodeconstapi=sig$.composeApi({ nodeHost:"https://europe.signum.network"});// here we check for a certain attachment type, and get the text message if not encryptedconstgetMessageText= transaction =>sig$.isAttachmentVersion(transaction,'EncryptedMessage')?'<encrypted>':transaction.attachment.message;asyncfunctionlistMessages(account) {try {constaccountId=sig$.Address.create(account).getNumericId()// here we can explicitly filter by Transaction Typesconst {transactions} =awaitapi.account.getAccountTransactions( { accountId, lastIndex:20,// getting only the most recent 20 type:sig$.TransactionType.Arbitrary, subtype:sig$.TransactionArbitrarySubtype.Message } );// now we iterate through the transactions and print in a formatted waytransactions.forEach(t => {console.info(`On ${sig$util.ChainTime.fromChainTimestamp(t.blockTimestamp).getDate()}`)console.info(`From ${t.senderRS}`)console.info(`To ${t.recipientRS}`)console.info('Message:\n',getMessageText(t),'\n---') }) } catch (e) {console.error(e) }}