use serde::{Deserialize, Serialize};
use serde_json::Value as JsonValue;
use std::collections::HashMap;
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct LocalProfile {
pub profile_id: u64,
pub display_name: String,
pub full_name: String,
pub image: Option<String>,
pub contact_link: Option<String>,
pub local_alias: String,
#[serde(flatten)]
pub _unknown_fields: HashMap<String, JsonValue>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct User {
pub user_id: u64,
pub agent_user_id: String,
pub user_contact_id: u64,
pub local_display_name: String,
pub profile: LocalProfile,
pub active_user: bool,
pub show_ntfs: bool,
#[serde(flatten)]
pub _unknown_fields: HashMap<String, JsonValue>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct UserInfo {
pub user: User,
pub unread_count: u64,
#[serde(flatten)]
pub _unknown_fields: HashMap<String, JsonValue>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct Contact {
pub contact_id: u64,
pub local_display_name: String,
pub via_group: Option<u64>,
#[serde(flatten)]
pub _unknown_fields: HashMap<String, JsonValue>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase", rename_all_fields = "camelCase")]
#[serde(tag = "type")]
pub enum ChatInfo {
Direct {
contact: Contact,
#[serde(flatten)]
_unknown_fields: HashMap<String, JsonValue>,
},
Group {
#[serde(flatten)]
_unknown_fields: HashMap<String, JsonValue>,
},
ContactRequest {
#[serde(flatten)]
_unknown_fields: HashMap<String, JsonValue>,
},
#[serde(untagged)]
Unknown(JsonValue),
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct ChatItem {
#[serde(flatten)]
pub _unknown_fields: HashMap<String, JsonValue>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct Chat {
pub chat_info: ChatInfo,
#[serde(flatten)]
pub _unknown_fields: HashMap<String, JsonValue>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct UserContactLink {
pub conn_req_contact: String,
pub auto_accept: Option<AutoAccept>,
#[serde(flatten)]
pub _unknown_fields: HashMap<String, JsonValue>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct AutoAccept {
pub accept_incognito: bool,
pub auto_reply: Option<MsgContent>,
#[serde(flatten)]
pub _unknown_fields: HashMap<String, JsonValue>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase", rename_all_fields = "camelCase")]
pub enum MsgContent {
Text {
text: String,
#[serde(flatten)]
_unknown_fields: HashMap<String, JsonValue>,
},
Link {
text: String,
#[serde(flatten)]
_unknown_fields: HashMap<String, JsonValue>,
},
Image {
image: String, #[serde(flatten)]
_unknown_fields: HashMap<String, JsonValue>,
},
File {
text: String,
#[serde(flatten)]
_unknown_fields: HashMap<String, JsonValue>,
},
Unknown(JsonValue),
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase", rename_all_fields = "camelCase")]
#[serde(tag = "type")]
pub enum ChatError {
Error {
error_type: ChatErrorType,
#[serde(flatten)]
_unknown_fields: HashMap<String, JsonValue>,
},
ErrorAgent {
agent_error: JsonValue,
#[serde(flatten)]
_unknown_fields: HashMap<String, JsonValue>,
},
ErrorStore {
store_error: JsonValue,
},
Unknown(JsonValue),
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase", rename_all_fields = "camelCase")]
pub enum ChatErrorType {
NoActiveUser,
ActiveUserExists,
}