Delta Chat Core C-API
Public Member Functions | List of all members
mrchat_t Class Reference

An object representing a single chat in memory. More...

#include <mrchat.h>

Public Member Functions

void mrchat_unref (mrchat_t *chat)
 Free a chat object. More...
 
uint32_t mrchat_get_id (mrchat_t *chat)
 Get chat ID. More...
 
int mrchat_get_type (mrchat_t *chat)
 Get chat type. More...
 
char * mrchat_get_name (mrchat_t *chat)
 Get name of a chat. More...
 
char * mrchat_get_subtitle (mrchat_t *chat)
 Get a subtitle for a chat. More...
 
char * mrchat_get_profile_image (mrchat_t *chat)
 Get the chat's profile image. More...
 
char * mrchat_get_draft (mrchat_t *chat)
 Get draft for the chat, if any. More...
 
time_t mrchat_get_draft_timestamp (mrchat_t *chat)
 Get timestamp of the draft. More...
 
int mrchat_get_archived (mrchat_t *chat)
 Get archived state. More...
 
int mrchat_is_unpromoted (mrchat_t *chat)
 Check if a chat is still unpromoted. More...
 
int mrchat_is_self_talk (mrchat_t *chat)
 Check if a chat is a self talk. More...
 

Detailed Description

An object representing a single chat in memory.

Chat objects are created using eg. mrmailbox_get_chat() and are not updated on database changes; if you want an update, you have to recreate the object.

Member Function Documentation

void mrchat_unref ( mrchat_t chat)

Free a chat object.

Parameters
chatChat object are returned eg. by mrmailbox_get_chat().
Returns
None.
uint32_t mrchat_get_id ( mrchat_t chat)

Get chat ID.

The chat ID is the ID under which the chat is filed in the database.

Special IDs:

  • MR_CHAT_ID_DEADDROP (1) - Messages sent from unknown/unwanted users to us, chats_contacts is not set up. This group may be shown normally.
  • MR_CHAT_ID_STARRED (5) - Virtual chat containing all starred messages-
  • MR_CHAT_ID_ARCHIVED_LINK (6) - A link at the end of the chatlist, if present the UI should show the button "Archived chats"-

"Normal" chat IDs are larger than these special IDs (larger than MR_CHAT_ID_LAST_SPECIAL).

Parameters
chatThe chat object.
Returns
Chat ID. 0 on errors.
int mrchat_get_type ( mrchat_t chat)

Get chat type.

Currently, there are two chat types:

  • MR_CHAT_TYPE_NORMAL (100) - a normal chat is a chat with a single contact, chats_contacts contains one record for the user. MR_CONTACT_ID_SELF (see mrcontact_t::m_id) is added only for a self talk; in addition to this, for self talks also the flag MRP_SELFTALK is set.
  • MR_CHAT_TYPE_GROUP (120) - a group chat, chats_contacts conain all group members, incl. MR_CONTACT_ID_SELF
Parameters
chatThe chat object.
Returns
Chat type.
char * mrchat_get_name ( mrchat_t chat)

Get name of a chat.

For one-to-one chats, this is the name of the contact. For group chats, this is the name given eg. to mrmailbox_create_group_chat() or received by a group-creation message.

To change the name, use mrmailbox_set_chat_name()

See also: mrchat_get_subtitle()

Parameters
chatThe chat object.
Returns
Chat name as a string. Must be free()'d after usage. Never NULL.
char * mrchat_get_subtitle ( mrchat_t chat)

Get a subtitle for a chat.

The subtitle is eg. the email-address or the number of group members.

See also: mrchat_get_name()

Parameters
chatThe chat object to calulate the subtitle for.
Returns
Subtitle as a string. Must be free()'d after usage. Never NULL.
char * mrchat_get_profile_image ( mrchat_t chat)

Get the chat's profile image.

The profile image is set using mrmailbox_set_chat_profile_image() for groups. For normal chats, the profile image is set using mrmailbox_set_contact_profile_image() (not yet implemented).

Parameters
chatThe chat object.
Returns
Path and file if the profile image, if any. NULL otherwise. Must be free()'d after usage.
char * mrchat_get_draft ( mrchat_t chat)

Get draft for the chat, if any.

A draft is a message that the user started to compose but that is not sent yet. You can save a draft for a chat using mrmailbox_set_draft().

Drafts are considered when sorting messages and are also returned eg. by mrchatlist_get_summary().

Parameters
chatThe chat object.
Returns
Draft text, must be free()'d. Returns NULL if there is no draft.
time_t mrchat_get_draft_timestamp ( mrchat_t chat)

Get timestamp of the draft.

The draft itself can be get using mrchat_get_draft().

Parameters
chatThe chat object.
Returns
Timestamp of the draft. 0 if there is no draft.
int mrchat_get_archived ( mrchat_t chat)

Get archived state.

  • 0 = normal chat, not archived, not sticky.
  • 1 = chat archived
  • 2 = chat sticky (reserved for future use, if you do not support this value, just treat the chat as a normal one)

To archive or unarchive chats, use mrmailbox_archive_chat(). If chats are archived, this should be shown in the UI by a little icon or text, eg. the search will also return archived chats.

Parameters
chatThe chat object.
Returns
Archived state.
int mrchat_is_unpromoted ( mrchat_t chat)

Check if a chat is still unpromoted.

Chats are unpromoted until the first message is sent. With unpromoted chats, members can be sent, settings can be modified without the need of special status messages being sent.

After the creation with mrmailbox_create_group_chat() the chat is usuall unpromoted until the first call to mrmailbox_send_msg() or mrmailbox_send_text_msg().

Parameters
chatThe chat object.
Returns
1=chat is still unpromoted, no message was ever send to the chat, 0=chat is not unpromoted, messages were send and/or received
int mrchat_is_self_talk ( mrchat_t chat)

Check if a chat is a self talk.

Self talks are normal chats with the only contact MR_CONTACT_ID_SELF.

Parameters
chatThe chat object.
Returns
1=chat is self talk, 0=chat is no self talk

The documentation for this class was generated from the following files: