---
# System prepended metadata

title: Chat QML API

---

# Chat QML API

The wallet model (exposed as `chatsModel`) is used for functions pertaining to chatting.

### Methods

Methods can be invoked by calling them directly on the `chatsModel`, ie `chatsModel.getOldestMessageTimestamp()`.

#### `getOldestMessageTimestamp()` : `QVariant<int64>`

Returns the last set UNIX timestamp of the oldest message. See `setLastMessageTimestamp` for logic on how this is determined.

**WIP**

*chatsModel.sendMessage(message: string)* - send a message to currently active channel

*chatsModel.joinChat(channel: string, chatTypeInt: int)* - join a channel

*chatsModel.groups.join()* - confirm joining group

*chatsModel.leaveActiveChat()* - leave currently active channel

*chatsModel.clearChatHistory()* - clear chat history of currently active channel

*chatsModel.groups.rename(newName: string)* - rename current active group

*chatsModel.blockContact(id: string)* - block contact

*chatsModel.addContact(id: string)*

*chatsModel.groups.create(groupName: string, pubKeys: string)*

### Signals
The `chatsModel` exposes the following signals, which can be consumed in QML using the `Connections` component (with a target of `chatsModel` and prefixed with `on`).
| Name          | Parameters     | Description  |
|---------------|----------|--------------|
| `oldestMessageTimestampChanged` | none | fired when the oldest message timestamp has changed |
**WIP**

### QtProperties
The following properties can be accessed directly on the `chatsModel`, ie `chatsModel.oldestMsgTimestamp`
| Name          | Type | Accessibility | Signal | Description  |
|---------------|------|---------------|--------|--------------|
| `oldestMsgTimestamp` | `QVariant<int64>` | `read` | `oldestMessageTimestampChanged` | Gets the last set UNIX timestamp of the oldest message. See `setLastMessageTimestamp` for logic on how this is determined. |
**WIP**

### WIP

#### ChannelsList
`QAbstractListModel` to expose chat channels.
The following roles are available to the model when bound to a QML control:

| Name          | Description  |
|---------------|--------------|
| `name` | name of the channel |
**WIP**

*chatsModel.chats* - get channel list (list)

channel object:
* name - 
* timestamp - 
* lastMessage.text - 
* unviewedMessagesCount - 
* identicon - 
* chatType - 
* color - 

*chatsModel.activeChannelIndex* - 
*chatsModel.activeChannel* - return currently active channel (object)

active channel object:
* id - 
* name - 
* color - 
* identicon - 
* chatType - (int)
* members - (list)
  * userName
  * pubKey
  * isAdmin
  * joined
  * identicon
* isMember(pubKey: string) - check if `pubkey` is a group member (bool)
* isAdmin(pubKey: string) - check if `pubkey` is a group admin (bool)

*chatsModel.messageList* - returns messages for the current channel (list)

message object:
* userName - 
* message - 
* timestamp - 
* clock - 
* identicon - 
* isCurrentUser - 
* contentType - 
* sticker - 
* fromAuthor - 
* chatId - 
* sectionIdentifier - 
* messageId - 
