mirror of
https://github.com/chatmail/core.git
synced 2026-05-17 05:46:30 +03:00
Fix one clippy::unneeded_unwrap warning
This commit is contained in:
129
src/chat.rs
129
src/chat.rs
@@ -1414,83 +1414,82 @@ pub unsafe fn add_contact_to_chat_ex(
|
|||||||
let contact = contact.unwrap();
|
let contact = contact.unwrap();
|
||||||
|
|
||||||
/*this also makes sure, not contacts are added to special or normal chats*/
|
/*this also makes sure, not contacts are added to special or normal chats*/
|
||||||
let chat = Chat::load_from_db(context, chat_id);
|
if let Ok(mut chat) = Chat::load_from_db(context, chat_id) {
|
||||||
|
if !(!real_group_exists(context, chat_id)
|
||||||
|
|| !Contact::real_exists_by_id(context, contact_id)
|
||||||
|
&& contact_id != DC_CONTACT_ID_SELF as u32)
|
||||||
|
{
|
||||||
|
if !(is_contact_in_chat(context, chat_id, 1 as u32) == 1) {
|
||||||
|
log_event!(
|
||||||
|
context,
|
||||||
|
Event::ERROR_SELF_NOT_IN_GROUP,
|
||||||
|
0,
|
||||||
|
"Cannot add contact to group; self not in group.",
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
/* we should respect this - whatever we send to the group, it gets discarded anyway! */
|
||||||
|
if 0 != flags & 0x1
|
||||||
|
&& chat.param.get_int(Param::Unpromoted).unwrap_or_default() == 1
|
||||||
|
{
|
||||||
|
chat.param.remove(Param::Unpromoted);
|
||||||
|
chat.update_param().unwrap();
|
||||||
|
}
|
||||||
|
let self_addr = context
|
||||||
|
.sql
|
||||||
|
.get_config(context, "configured_addr")
|
||||||
|
.unwrap_or_default();
|
||||||
|
if contact.get_addr() != &self_addr {
|
||||||
|
// ourself is added using DC_CONTACT_ID_SELF, do not add it explicitly.
|
||||||
|
// if SELF is not in the group, members cannot be added at all.
|
||||||
|
|
||||||
if !(!real_group_exists(context, chat_id)
|
if 0 != is_contact_in_chat(context, chat_id, contact_id) {
|
||||||
|| !Contact::real_exists_by_id(context, contact_id)
|
if 0 == flags & 0x1 {
|
||||||
&& contact_id != DC_CONTACT_ID_SELF as u32
|
success = 1;
|
||||||
|| chat.is_err())
|
OK_TO_CONTINUE = false;
|
||||||
{
|
}
|
||||||
let mut chat = chat.unwrap();
|
} else {
|
||||||
|
// else continue and send status mail
|
||||||
if !(is_contact_in_chat(context, chat_id, 1 as u32) == 1) {
|
if chat.typ == Chattype::VerifiedGroup {
|
||||||
log_event!(
|
if contact.is_verified() != VerifiedStatus::BidirectVerified {
|
||||||
context,
|
error!(
|
||||||
Event::ERROR_SELF_NOT_IN_GROUP,
|
|
||||||
0,
|
|
||||||
"Cannot add contact to group; self not in group.",
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
/* we should respect this - whatever we send to the group, it gets discarded anyway! */
|
|
||||||
if 0 != flags & 0x1 && chat.param.get_int(Param::Unpromoted).unwrap_or_default() == 1 {
|
|
||||||
chat.param.remove(Param::Unpromoted);
|
|
||||||
chat.update_param().unwrap();
|
|
||||||
}
|
|
||||||
let self_addr = context
|
|
||||||
.sql
|
|
||||||
.get_config(context, "configured_addr")
|
|
||||||
.unwrap_or_default();
|
|
||||||
if contact.get_addr() != &self_addr {
|
|
||||||
// ourself is added using DC_CONTACT_ID_SELF, do not add it explicitly.
|
|
||||||
// if SELF is not in the group, members cannot be added at all.
|
|
||||||
|
|
||||||
if 0 != is_contact_in_chat(context, chat_id, contact_id) {
|
|
||||||
if 0 == flags & 0x1 {
|
|
||||||
success = 1;
|
|
||||||
OK_TO_CONTINUE = false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// else continue and send status mail
|
|
||||||
if chat.typ == Chattype::VerifiedGroup {
|
|
||||||
if contact.is_verified() != VerifiedStatus::BidirectVerified {
|
|
||||||
error!(
|
|
||||||
context, 0,
|
context, 0,
|
||||||
"Only bidirectional verified contacts can be added to verified groups."
|
"Only bidirectional verified contacts can be added to verified groups."
|
||||||
);
|
);
|
||||||
OK_TO_CONTINUE = false;
|
OK_TO_CONTINUE = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if OK_TO_CONTINUE {
|
||||||
|
if 0 == add_to_chat_contacts_table(context, chat_id, contact_id) {
|
||||||
|
OK_TO_CONTINUE = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if OK_TO_CONTINUE {
|
if OK_TO_CONTINUE {
|
||||||
if 0 == add_to_chat_contacts_table(context, chat_id, contact_id) {
|
if chat.param.get_int(Param::Unpromoted).unwrap_or_default() == 0 {
|
||||||
OK_TO_CONTINUE = false;
|
msg.type_0 = Viewtype::Text;
|
||||||
|
msg.text = Some(context.stock_system_msg(
|
||||||
|
StockMessage::MsgAddMember,
|
||||||
|
contact.get_addr(),
|
||||||
|
"",
|
||||||
|
DC_CONTACT_ID_SELF as u32,
|
||||||
|
));
|
||||||
|
msg.param.set_int(Param::Cmd, 4);
|
||||||
|
msg.param.set(Param::Arg, contact.get_addr());
|
||||||
|
msg.param.set_int(Param::Arg2, flags);
|
||||||
|
msg.id = send_msg(context, chat_id, &mut msg).unwrap_or_default();
|
||||||
|
context.call_cb(
|
||||||
|
Event::MSGS_CHANGED,
|
||||||
|
chat_id as uintptr_t,
|
||||||
|
msg.id as uintptr_t,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
context.call_cb(Event::MSGS_CHANGED, chat_id as uintptr_t, 0 as uintptr_t);
|
||||||
|
success = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if OK_TO_CONTINUE {
|
|
||||||
if chat.param.get_int(Param::Unpromoted).unwrap_or_default() == 0 {
|
|
||||||
msg.type_0 = Viewtype::Text;
|
|
||||||
msg.text = Some(context.stock_system_msg(
|
|
||||||
StockMessage::MsgAddMember,
|
|
||||||
contact.get_addr(),
|
|
||||||
"",
|
|
||||||
DC_CONTACT_ID_SELF as u32,
|
|
||||||
));
|
|
||||||
msg.param.set_int(Param::Cmd, 4);
|
|
||||||
msg.param.set(Param::Arg, contact.get_addr());
|
|
||||||
msg.param.set_int(Param::Arg2, flags);
|
|
||||||
msg.id = send_msg(context, chat_id, &mut msg).unwrap_or_default();
|
|
||||||
context.call_cb(
|
|
||||||
Event::MSGS_CHANGED,
|
|
||||||
chat_id as uintptr_t,
|
|
||||||
msg.id as uintptr_t,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
context.call_cb(Event::MSGS_CHANGED, chat_id as uintptr_t, 0 as uintptr_t);
|
|
||||||
success = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
success
|
success
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user