mirror of
https://github.com/chatmail/core.git
synced 2026-04-17 21:46:35 +03:00
325 lines
11 KiB
Rust
325 lines
11 KiB
Rust
//! # Constants
|
|
#![allow(non_camel_case_types, dead_code)]
|
|
|
|
use deltachat_derive::*;
|
|
use lazy_static::lazy_static;
|
|
|
|
lazy_static! {
|
|
pub static ref DC_VERSION_STR: String = env!("CARGO_PKG_VERSION").to_string();
|
|
}
|
|
|
|
// some defaults
|
|
const DC_E2EE_DEFAULT_ENABLED: i32 = 1;
|
|
const DC_INBOX_WATCH_DEFAULT: i32 = 1;
|
|
const DC_SENTBOX_WATCH_DEFAULT: i32 = 1;
|
|
const DC_MVBOX_WATCH_DEFAULT: i32 = 1;
|
|
const DC_MVBOX_MOVE_DEFAULT: i32 = 1;
|
|
|
|
#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql)]
|
|
#[repr(u8)]
|
|
pub enum Blocked {
|
|
Not = 0,
|
|
Manually = 1,
|
|
Deaddrop = 2,
|
|
}
|
|
|
|
impl Default for Blocked {
|
|
fn default() -> Self {
|
|
Blocked::Not
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql)]
|
|
#[repr(u8)]
|
|
pub enum ShowEmails {
|
|
Off = 0,
|
|
AcceptedContacts = 1,
|
|
All = 2,
|
|
}
|
|
|
|
impl Default for ShowEmails {
|
|
fn default() -> Self {
|
|
ShowEmails::Off // also change Config.ShowEmails props(default) on changes
|
|
}
|
|
}
|
|
|
|
pub const DC_IMAP_SEEN: u32 = 0x1;
|
|
|
|
pub const DC_HANDSHAKE_CONTINUE_NORMAL_PROCESSING: i32 = 0x01;
|
|
pub const DC_HANDSHAKE_STOP_NORMAL_PROCESSING: i32 = 0x02;
|
|
pub const DC_HANDSHAKE_ADD_DELETE_JOB: i32 = 0x04;
|
|
|
|
pub const DC_GCL_ARCHIVED_ONLY: usize = 0x01;
|
|
pub const DC_GCL_NO_SPECIALS: usize = 0x02;
|
|
pub const DC_GCL_ADD_ALLDONE_HINT: usize = 0x04;
|
|
|
|
pub const DC_GCM_ADDDAYMARKER: u32 = 0x01;
|
|
|
|
pub const DC_GCL_VERIFIED_ONLY: usize = 0x01;
|
|
pub const DC_GCL_ADD_SELF: usize = 0x02;
|
|
|
|
// unchanged user avatars are resent to the recipients every some days
|
|
pub const DC_RESEND_USER_AVATAR_DAYS: i64 = 14;
|
|
|
|
// values for DC_PARAM_FORCE_PLAINTEXT
|
|
pub(crate) const DC_FP_NO_AUTOCRYPT_HEADER: i32 = 2;
|
|
pub(crate) const DC_FP_ADD_AUTOCRYPT_HEADER: i32 = 1;
|
|
|
|
/// virtual chat showing all messages belonging to chats flagged with chats.blocked=2
|
|
pub(crate) const DC_CHAT_ID_DEADDROP: u32 = 1;
|
|
/// messages that should be deleted get this chat_id; the messages are deleted from the working thread later then. This is also needed as rfc724_mid should be preset as long as the message is not deleted on the server (otherwise it is downloaded again)
|
|
pub const DC_CHAT_ID_TRASH: u32 = 3;
|
|
/// a message is just in creation but not yet assigned to a chat (eg. we may need the message ID to set up blobs; this avoids unready message to be sent and shown)
|
|
const DC_CHAT_ID_MSGS_IN_CREATION: u32 = 4;
|
|
/// virtual chat showing all messages flagged with msgs.starred=2
|
|
pub const DC_CHAT_ID_STARRED: u32 = 5;
|
|
/// only an indicator in a chatlist
|
|
pub const DC_CHAT_ID_ARCHIVED_LINK: u32 = 6;
|
|
/// only an indicator in a chatlist
|
|
pub const DC_CHAT_ID_ALLDONE_HINT: u32 = 7;
|
|
/// larger chat IDs are "real" chats, their messages are "real" messages.
|
|
pub const DC_CHAT_ID_LAST_SPECIAL: u32 = 9;
|
|
|
|
#[derive(
|
|
Debug,
|
|
Display,
|
|
Clone,
|
|
Copy,
|
|
PartialEq,
|
|
Eq,
|
|
FromPrimitive,
|
|
ToPrimitive,
|
|
FromSql,
|
|
ToSql,
|
|
IntoStaticStr,
|
|
)]
|
|
#[repr(u32)]
|
|
pub enum Chattype {
|
|
Undefined = 0,
|
|
Single = 100,
|
|
Group = 120,
|
|
VerifiedGroup = 130,
|
|
}
|
|
|
|
impl Default for Chattype {
|
|
fn default() -> Self {
|
|
Chattype::Undefined
|
|
}
|
|
}
|
|
|
|
pub const DC_MSG_ID_MARKER1: u32 = 1;
|
|
pub const DC_MSG_ID_DAYMARKER: u32 = 9;
|
|
pub const DC_MSG_ID_LAST_SPECIAL: u32 = 9;
|
|
|
|
/// approx. max. length returned by dc_msg_get_text()
|
|
const DC_MAX_GET_TEXT_LEN: usize = 30000;
|
|
/// approx. max. length returned by dc_get_msg_info()
|
|
const DC_MAX_GET_INFO_LEN: usize = 100000;
|
|
|
|
pub const DC_CONTACT_ID_UNDEFINED: u32 = 0;
|
|
pub const DC_CONTACT_ID_SELF: u32 = 1;
|
|
pub const DC_CONTACT_ID_INFO: u32 = 2;
|
|
pub const DC_CONTACT_ID_DEVICE: u32 = 5;
|
|
pub const DC_CONTACT_ID_LAST_SPECIAL: u32 = 9;
|
|
|
|
// decorative address that is used for DC_CONTACT_ID_DEVICE
|
|
// when an api that returns an email is called.
|
|
pub const DC_CONTACT_ID_DEVICE_ADDR: &str = "device@localhost";
|
|
|
|
// Flags for empty server job
|
|
|
|
pub const DC_EMPTY_MVBOX: u32 = 0x01;
|
|
pub const DC_EMPTY_INBOX: u32 = 0x02;
|
|
|
|
// Flags for configuring IMAP and SMTP servers.
|
|
// These flags are optional
|
|
// and may be set together with the username, password etc.
|
|
// via dc_set_config() using the key "server_flags".
|
|
|
|
/// Force OAuth2 authorization. This flag does not skip automatic configuration.
|
|
/// Before calling configure() with DC_LP_AUTH_OAUTH2 set,
|
|
/// the user has to confirm access at the URL returned by dc_get_oauth2_url().
|
|
pub const DC_LP_AUTH_OAUTH2: i32 = 0x2;
|
|
|
|
/// Force NORMAL authorization, this is the default.
|
|
/// If this flag is set, automatic configuration is skipped.
|
|
pub const DC_LP_AUTH_NORMAL: i32 = 0x4;
|
|
|
|
/// Connect to IMAP via STARTTLS.
|
|
/// If this flag is set, automatic configuration is skipped.
|
|
pub const DC_LP_IMAP_SOCKET_STARTTLS: i32 = 0x100;
|
|
|
|
/// Connect to IMAP via SSL.
|
|
/// If this flag is set, automatic configuration is skipped.
|
|
pub const DC_LP_IMAP_SOCKET_SSL: i32 = 0x200;
|
|
|
|
/// Connect to IMAP unencrypted, this should not be used.
|
|
/// If this flag is set, automatic configuration is skipped.
|
|
pub const DC_LP_IMAP_SOCKET_PLAIN: i32 = 0x400;
|
|
|
|
/// Connect to SMTP via STARTTLS.
|
|
/// If this flag is set, automatic configuration is skipped.
|
|
pub const DC_LP_SMTP_SOCKET_STARTTLS: usize = 0x10000;
|
|
|
|
/// Connect to SMTP via SSL.
|
|
/// If this flag is set, automatic configuration is skipped.
|
|
pub const DC_LP_SMTP_SOCKET_SSL: usize = 0x20000;
|
|
|
|
/// Connect to SMTP unencrypted, this should not be used.
|
|
/// If this flag is set, automatic configuration is skipped.
|
|
pub const DC_LP_SMTP_SOCKET_PLAIN: usize = 0x40000;
|
|
|
|
/// if none of these flags are set, the default is chosen
|
|
pub const DC_LP_AUTH_FLAGS: i32 = (DC_LP_AUTH_OAUTH2 | DC_LP_AUTH_NORMAL);
|
|
/// if none of these flags are set, the default is chosen
|
|
pub const DC_LP_IMAP_SOCKET_FLAGS: i32 =
|
|
(DC_LP_IMAP_SOCKET_STARTTLS | DC_LP_IMAP_SOCKET_SSL | DC_LP_IMAP_SOCKET_PLAIN);
|
|
/// if none of these flags are set, the default is chosen
|
|
pub const DC_LP_SMTP_SOCKET_FLAGS: usize =
|
|
(DC_LP_SMTP_SOCKET_STARTTLS | DC_LP_SMTP_SOCKET_SSL | DC_LP_SMTP_SOCKET_PLAIN);
|
|
|
|
// QR code scanning (view from Bob, the joiner)
|
|
pub const DC_VC_AUTH_REQUIRED: i32 = 2;
|
|
pub const DC_VC_CONTACT_CONFIRM: i32 = 6;
|
|
pub const DC_BOB_ERROR: i32 = 0;
|
|
pub const DC_BOB_SUCCESS: i32 = 1;
|
|
|
|
// max. width/height of an avatar
|
|
pub const AVATAR_SIZE: u32 = 192;
|
|
|
|
#[derive(Debug, Display, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive, FromSql, ToSql)]
|
|
#[repr(i32)]
|
|
pub enum Viewtype {
|
|
Unknown = 0,
|
|
/// Text message.
|
|
/// The text of the message is set using dc_msg_set_text()
|
|
/// and retrieved with dc_msg_get_text().
|
|
Text = 10,
|
|
|
|
/// Image message.
|
|
/// If the image is an animated GIF, the type DC_MSG_GIF should be used.
|
|
/// File, width and height are set via dc_msg_set_file(), dc_msg_set_dimension
|
|
/// and retrieved via dc_msg_set_file(), dc_msg_set_dimension().
|
|
Image = 20,
|
|
|
|
/// Animated GIF message.
|
|
/// File, width and height are set via dc_msg_set_file(), dc_msg_set_dimension()
|
|
/// and retrieved via dc_msg_get_file(), dc_msg_get_width(), dc_msg_get_height().
|
|
Gif = 21,
|
|
|
|
/// Message containing a sticker, similar to image.
|
|
/// If possible, the ui should display the image without borders in a transparent way.
|
|
/// A click on a sticker will offer to install the sticker set in some future.
|
|
Sticker = 23,
|
|
|
|
/// Message containing an Audio file.
|
|
/// File and duration are set via dc_msg_set_file(), dc_msg_set_duration()
|
|
/// and retrieved via dc_msg_get_file(), dc_msg_get_duration().
|
|
Audio = 40,
|
|
|
|
/// A voice message that was directly recorded by the user.
|
|
/// For all other audio messages, the type #DC_MSG_AUDIO should be used.
|
|
/// File and duration are set via dc_msg_set_file(), dc_msg_set_duration()
|
|
/// and retrieved via dc_msg_get_file(), dc_msg_get_duration()
|
|
Voice = 41,
|
|
|
|
/// Video messages.
|
|
/// File, width, height and durarion
|
|
/// are set via dc_msg_set_file(), dc_msg_set_dimension(), dc_msg_set_duration()
|
|
/// and retrieved via
|
|
/// dc_msg_get_file(), dc_msg_get_width(),
|
|
/// dc_msg_get_height(), dc_msg_get_duration().
|
|
Video = 50,
|
|
|
|
/// Message containing any file, eg. a PDF.
|
|
/// The file is set via dc_msg_set_file()
|
|
/// and retrieved via dc_msg_get_file().
|
|
File = 60,
|
|
}
|
|
|
|
impl Default for Viewtype {
|
|
fn default() -> Self {
|
|
Viewtype::Unknown
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn derive_display_works_as_expected() {
|
|
assert_eq!(format!("{}", Viewtype::Audio), "Audio");
|
|
}
|
|
}
|
|
|
|
// These constants are used as events
|
|
// reported to the callback given to dc_context_new().
|
|
// If you do not want to handle an event, it is always safe to return 0,
|
|
// so there is no need to add a "case" for every event.
|
|
|
|
const DC_EVENT_FILE_COPIED: usize = 2055; // deprecated;
|
|
const DC_EVENT_IS_OFFLINE: usize = 2081; // deprecated;
|
|
const DC_ERROR_SEE_STRING: usize = 0; // deprecated;
|
|
const DC_ERROR_SELF_NOT_IN_GROUP: usize = 1; // deprecated;
|
|
const DC_STR_SELFNOTINGRP: usize = 21; // deprecated;
|
|
|
|
// TODO: Strings need some doumentation about used placeholders.
|
|
// These constants are used to set stock translation strings
|
|
|
|
const DC_STR_NOMESSAGES: usize = 1;
|
|
const DC_STR_SELF: usize = 2;
|
|
const DC_STR_DRAFT: usize = 3;
|
|
const DC_STR_MEMBER: usize = 4;
|
|
const DC_STR_CONTACT: usize = 6;
|
|
const DC_STR_VOICEMESSAGE: usize = 7;
|
|
const DC_STR_DEADDROP: usize = 8;
|
|
const DC_STR_IMAGE: usize = 9;
|
|
const DC_STR_VIDEO: usize = 10;
|
|
const DC_STR_AUDIO: usize = 11;
|
|
const DC_STR_FILE: usize = 12;
|
|
const DC_STR_STATUSLINE: usize = 13;
|
|
const DC_STR_NEWGROUPDRAFT: usize = 14;
|
|
const DC_STR_MSGGRPNAME: usize = 15;
|
|
const DC_STR_MSGGRPIMGCHANGED: usize = 16;
|
|
const DC_STR_MSGADDMEMBER: usize = 17;
|
|
const DC_STR_MSGDELMEMBER: usize = 18;
|
|
const DC_STR_MSGGROUPLEFT: usize = 19;
|
|
const DC_STR_GIF: usize = 23;
|
|
const DC_STR_ENCRYPTEDMSG: usize = 24;
|
|
const DC_STR_E2E_AVAILABLE: usize = 25;
|
|
const DC_STR_ENCR_TRANSP: usize = 27;
|
|
const DC_STR_ENCR_NONE: usize = 28;
|
|
const DC_STR_CANTDECRYPT_MSG_BODY: usize = 29;
|
|
const DC_STR_FINGERPRINTS: usize = 30;
|
|
const DC_STR_READRCPT: usize = 31;
|
|
const DC_STR_READRCPT_MAILBODY: usize = 32;
|
|
const DC_STR_MSGGRPIMGDELETED: usize = 33;
|
|
const DC_STR_E2E_PREFERRED: usize = 34;
|
|
const DC_STR_CONTACT_VERIFIED: usize = 35;
|
|
const DC_STR_CONTACT_NOT_VERIFIED: usize = 36;
|
|
const DC_STR_CONTACT_SETUP_CHANGED: usize = 37;
|
|
const DC_STR_ARCHIVEDCHATS: usize = 40;
|
|
const DC_STR_STARREDMSGS: usize = 41;
|
|
const DC_STR_AC_SETUP_MSG_SUBJECT: usize = 42;
|
|
const DC_STR_AC_SETUP_MSG_BODY: usize = 43;
|
|
const DC_STR_SELFTALK_SUBTITLE: usize = 50;
|
|
const DC_STR_CANNOT_LOGIN: usize = 60;
|
|
const DC_STR_SERVER_RESPONSE: usize = 61;
|
|
const DC_STR_MSGACTIONBYUSER: usize = 62;
|
|
const DC_STR_MSGACTIONBYME: usize = 63;
|
|
const DC_STR_MSGLOCATIONENABLED: usize = 64;
|
|
const DC_STR_MSGLOCATIONDISABLED: usize = 65;
|
|
const DC_STR_LOCATION: usize = 66;
|
|
const DC_STR_STICKER: usize = 67;
|
|
const DC_STR_COUNT: usize = 67;
|
|
|
|
pub const DC_JOB_DELETE_MSG_ON_IMAP: i32 = 110;
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, FromPrimitive, ToPrimitive)]
|
|
#[repr(u8)]
|
|
pub enum KeyType {
|
|
Public = 0,
|
|
Private = 1,
|
|
}
|