Function: useMessages()

typescript
1
useMessages(): object

Defined in: hooks/index.ts:486

Hook for accessing DIDComm message context and operations.

Provides functionality for managing DIDComm messages including reading, deleting, and filtering messages by type. This hook must be used within a MessagesProvider.

Returns

Messages context containing:

  • messages: Array of all messages with their read status metadata
  • receivedMessages: Filtered array containing only received messages
  • sentMessages: Filtered array containing only sent messages
  • unreadMessages: Filtered array containing only unread messages
  • readMessage: Async function to mark a specific message as read
  • deleteMessage: Async function to permanently delete a message
  • getMessages: Async function to refresh and reload messages from storage

deleteMessage()

typescript
1
deleteMessage: (message) => Promise<void>

Function to delete a message

Parameters

message

Message

Returns

Promise<void>

getMessages()

typescript
1
getMessages: () => Promise<object[]>

Function to refresh messages from storage

Returns

Promise<object[]>

messages

typescript
1
messages: object[]

Array of all messages with their read status

readMessage()

typescript
1
readMessage: (message) => Promise<void>

Function to mark a message as read

Parameters

message

Message

Returns

Promise<void>

receivedMessages

typescript
1
receivedMessages: Message[]

Array of received messages only

sentMessages

typescript
1
sentMessages: Message[]

Array of sent messages only

unreadMessages

typescript
1
unreadMessages: Message[]

Array of unread messages only

Throws

When used outside of MessagesProvider

Example

tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { useMessages } from '@trust0/identus-react/hooks';
function MessageInbox() {
const {
messages,
unreadMessages,
readMessage,
deleteMessage,
getMessages
} = useMessages();
const handleReadMessage = async (message) => {
try {
await readMessage(message);
console.log('Message marked as read');
} catch (error) {
console.error('Failed to mark message as read:', error);
}
};
const handleDeleteMessage = async (message) => {
try {
await deleteMessage(message);
console.log('Message deleted');
} catch (error) {
console.error('Failed to delete message:', error);
}
};
const refreshMessages = async () => {
try {
await getMessages();
console.log('Messages refreshed');
} catch (error) {
console.error('Failed to refresh messages:', error);
}
};
return (
<div>
<h3>Messages ({messages.length})</h3>
<p>Unread: {unreadMessages.length}</p>
<button onClick={refreshMessages}>Refresh</button>
{messages.map((item, index) => (
<div key={index} className={!item.read ? 'unread' : ''}>
<p>From: {item.message.from?.toString()}</p>
<p>Type: {item.message.piuri}</p>
<button onClick={() => handleReadMessage(item.message)}>
Mark as Read
</button>
<button onClick={() => handleDeleteMessage(item.message)}>
Delete
</button>
</div>
))}
</div>
);
}