Delta Chat Core C-API
dc_chat.h
1 #ifndef __DC_CHAT_H__
2 #define __DC_CHAT_H__
3 #ifdef __cplusplus
4 extern "C" {
5 #endif
6 
7 
8 /* values for the chats.blocked database field */
9 #define DC_CHAT_NOT_BLOCKED 0
10 #define DC_CHAT_MANUALLY_BLOCKED 1
11 #define DC_CHAT_DEADDROP_BLOCKED 2
12 
13 
15 struct _dc_chat
16 {
18  uint32_t magic;
19  uint32_t id;
20  int type;
21  char* name;
22  int archived;
23  dc_context_t* context;
24  char* grpid;
25  int blocked;
26  dc_param_t* param;
27  time_t gossiped_timestamp;
28  int is_sending_locations;
29 };
30 
31 int dc_chat_load_from_db (dc_chat_t*, uint32_t id);
32 int dc_chat_update_param (dc_chat_t*);
33 
34 #define DC_CHAT_TYPE_IS_MULTI(a) ((a)==DC_CHAT_TYPE_GROUP || (a)==DC_CHAT_TYPE_VERIFIED_GROUP)
35 #define DC_CHAT_TYPE_CAN_SEND(a) ((a)==DC_CHAT_TYPE_SINGLE || (a)==DC_CHAT_TYPE_GROUP || (a)==DC_CHAT_TYPE_VERIFIED_GROUP)
36 
37 #define DC_CHAT_PREFIX "Chat:" /* you MUST NOT modify this or the following strings */
38 
39 
40 // Context functions to work with chats
41 int dc_add_to_chat_contacts_table (dc_context_t*, uint32_t chat_id, uint32_t contact_id);
42 int dc_is_contact_in_chat (dc_context_t*, uint32_t chat_id, uint32_t contact_id);
43 size_t dc_get_chat_cnt (dc_context_t*);
44 uint32_t dc_get_chat_id_by_grpid (dc_context_t*, const char* grpid, int* ret_blocked, int* ret_verified);
45 void dc_create_or_lookup_nchat_by_contact_id (dc_context_t*, uint32_t contact_id, int create_blocked, uint32_t* ret_chat_id, int* ret_chat_blocked);
46 void dc_lookup_real_nchat_by_contact_id (dc_context_t*, uint32_t contact_id, uint32_t* ret_chat_id, int* ret_chat_blocked);
47 void dc_unarchive_chat (dc_context_t*, uint32_t chat_id);
48 void dc_block_chat (dc_context_t*, uint32_t chat_id, int new_blocking);
49 void dc_unblock_chat (dc_context_t*, uint32_t chat_id);
50 void dc_add_device_msg (dc_context_t*, uint32_t chat_id, const char* text);
51 int dc_get_chat_contact_cnt (dc_context_t*, uint32_t chat_id);
52 int dc_is_group_explicitly_left (dc_context_t*, const char* grpid);
53 void dc_set_group_explicitly_left (dc_context_t*, const char* grpid);
54 
55 #define DC_FROM_HANDSHAKE 0x01
56 int dc_add_contact_to_chat_ex (dc_context_t*, uint32_t chat_id, uint32_t contact_id, int flags);
57 
58 void dc_reset_gossiped_timestamp (dc_context_t*, uint32_t chat_id);
59 void dc_set_gossiped_timestamp (dc_context_t*, uint32_t chat_id, time_t);
60 
61 
62 #ifdef __cplusplus
63 } /* /extern "C" */
64 #endif
65 #endif /* __DC_CHAT_H__ */
dc_chat_t
dc_context_t
dc_context_t::dc_is_contact_in_chat
int dc_is_contact_in_chat(dc_context_t *context, uint32_t chat_id, uint32_t contact_id)
Check if a given contact ID is a member of a group chat.
Definition: dc_chat.c:1960