Function: useMessages()

typescript
1
useMessages(): object

Defined in: packages/identus-react/src/hooks/useMessages.ts:81

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

deleteMessage()

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

Function to delete a message

Parameters

message

Message

Returns

Promise<void>

load()

typescript
1
load: () => Promise<void>

Function to refresh messages from storage

Returns

Promise<void>

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>
);
}