SignumJS
Search…
⌃K

Show attached messages

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:
A fully working example is available here​
​
Following functions from SignumJS are used in this example
Javascript
Typescript
<script/>
const {
composeApi,
isAttachmentVersion,
TransactionType,
TransactionArbitrarySubtype,
Address
} = require('@signumjs/core');
const {ChainTime} = require('@signumjs/util')
​
// Create the Api instance to connect to a blockchain node
const api = composeApi({
nodeHost: "https://europe.signum.network"
});
​
// here we check for a certain attachment type, and get the text message if not encrypted
const getMessageText = transaction =>
isAttachmentVersion(transaction, 'EncryptedMessage')
? '<encrypted>'
: transaction.attachment.message;
​
async function listMessages(account) {
try {
const accountId = Address.create(account).getNumericId()
​
// here we can explicitly filter by Transaction Types
const {transactions} = await api.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 way
transactions.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 node
const api = composeApi({
nodeHost: "https://europe.signum.network"
});
​
// here we check for a certain attachment type, and get the text message if not encrypted
const getMessageText = (transaction: Transaction): string =>
isAttachmentVersion(transaction, 'EncryptedMessage')
? '<encrypted>'
: transaction.attachment.message;
​
async function listMessages(account: string): Promise<void> {
try {
const accountId = Address.create(account).getNumericId()
​
// here we can explicitly filter by Transaction Types
const {transactions} = await api.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 way
transactions.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 node
const api = sig$.composeApi({
nodeHost: "https://europe.signum.network"
});
​
// here we check for a certain attachment type, and get the text message if not encrypted
const getMessageText = transaction =>
sig$.isAttachmentVersion(transaction, 'EncryptedMessage')
? '<encrypted>'
: transaction.attachment.message;
​
async function listMessages(account) {
try {
const accountId = sig$.Address.create(account).getNumericId()
​
// here we can explicitly filter by Transaction Types
const {transactions} = await api.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 way
transactions.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)
}
}