---
# System prepended metadata

title: Chat List

---

# Chat List

## Join or start a public chat

key source file: [`ui/app/AppLayouts/Chat/ContactsColumn/AddChat.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/ContactsColumn/AddChat.qml#L52)

key source file: [`ui/app/AppLayouts/Chat/ContactsColumn.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/ContactsColumn.qml#L32)

key source file: [`ui/app/AppLayouts/Chat/components/PublicChatPopup.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/components/PublicChatPopup.qml#L31)

key source file: [`src/app/chat/view.nim`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/src/app/chat/view.nim#L588)

key source file: [`src/status/chat.nim`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/src/status/chat.nim#L131)

key source file: [`src/status/libstatus/chat.nim`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/src/status/libstatus/chat.nim#L21)

The public channel is joined by calling `chatsModel.joinChat(channelName.text, Constants.chatTypePublic)`
On the backend, the join action calls `status_chat.saveChat`, and adds a mailserver optic, it also emits a `channelJoined` event which will cause the UI to display that new channel

## Search for a Chat

key source file: [`ui/app/AppLayouts/Chat/ContactsColumn/AddChat.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/ContactsColumn.qml#L93)

key source file: [`ui/app/AppLayouts/Chat/ContactsColumn/ChannelList.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/ContactsColumn/ChannelList.qml#L41)

key source file: [`ui/app/AppLayouts/Chat/ContactsColumn/Channel.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/ContactsColumn/Channel.qml#L44)

The searchbox is aliased to as `searchStr`

```
property alias searchStr: searchBox.text
```

The ChannelList receives this as a paramter to the chat list and this is then passed to each member of the channel list

```
ChannelList {
    id: channelList
    searchStr: contactsColumn.searchStr.toLowerCase()
    channelModel: chatsModel.chats
}
```

The filtering works by checking the search string against the channel name and using this to set the item as visible or invisible

```
property bool isVisible: searchStr === "" || name.includes(searchStr)
```

## Suggested Channels

key source file: [`ui/app/AppLayouts/Chat/data/channelList.js`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/data/channelList.js#L1)

key source file: [`ui/app/AppLayouts/Chat/ContactsColumn/EmptyView.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/ContactsColumn/EmptyView.qml#L120)

key source file: [`ui/app/AppLayouts/Chat/components/SuggestedChannels.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/components/SuggestedChannels.qml#L9)

key source file: [`ui/app/AppLayouts/Chat/components/SuggestedChannel.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/components/SuggestedChannel.qml#L5)

## Badges

key source file: [`ui/app/AppLayouts/Chat/ContactsColumn/Channel.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/ContactsColumn/Channel.qml#L167)

### unread message counter

key source file: [`ui/app/AppLayouts/Chat/ContactsColumn/ChannelList.qml#`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/ContactsColumn/ChannelList.qml#L38)

key source file: [`src/status/chat/chat.nim`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/src/status/chat/chat.nim#L72)

This information comes from the property `unviewedMessagesCount` which is defined for each channel on the `channelListContent.channelModel`

### mentions @

key source file: [`ui/app/AppLayouts/Chat/ContactsColumn/ChannelList.qml#`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/ContactsColumn/ChannelList.qml#L39)

key source file: [`src/status/chat/chat.nim`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/src/status/chat/chat.nim#L76)

This information comes from the property `hasMentions` which is defined for each channel on the `channelListContent.channelModel`

## Context menu

key source file: [`ui/app/AppLayouts/Chat/ContactsColumn/Channel.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/ContactsColumn/Channel.qml#L188)

key source file: [`ui/app/AppLayouts/Chat/ContactsColumn/ChannelList.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/ContactsColumn/ChannelList.qml#L76)

key source file: [`ui/app/AppLayouts/Chat/components/ChannelContextMenu.qml`](https://github.com/status-im/status-desktop/blob/65a0cfbcd30eb7bde4e24cdb1680b3e03d8b1992/ui/app/AppLayouts/Chat/components/ChannelContextMenu.qml#L8)