mirror of
https://github.com/chatmail/core.git
synced 2026-05-17 05:46:30 +03:00
refactor(message): rustiy api
This commit is contained in:
committed by
holger krekel
parent
48d1de3678
commit
1265016a55
@@ -1172,7 +1172,7 @@ pub unsafe extern "C" fn dc_get_msg_info(
|
|||||||
}
|
}
|
||||||
let ffi_context = &*context;
|
let ffi_context = &*context;
|
||||||
ffi_context
|
ffi_context
|
||||||
.with_inner(|ctx| message::dc_get_msg_info(ctx, msg_id))
|
.with_inner(|ctx| message::get_msg_info(ctx, msg_id))
|
||||||
.unwrap_or_else(|_| ptr::null_mut())
|
.unwrap_or_else(|_| ptr::null_mut())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1187,7 +1187,7 @@ pub unsafe extern "C" fn dc_get_mime_headers(
|
|||||||
}
|
}
|
||||||
let ffi_context = &*context;
|
let ffi_context = &*context;
|
||||||
ffi_context
|
ffi_context
|
||||||
.with_inner(|ctx| message::dc_get_mime_headers(ctx, msg_id))
|
.with_inner(|ctx| message::get_mime_headers(ctx, msg_id))
|
||||||
.unwrap_or_else(|_| ptr::null_mut())
|
.unwrap_or_else(|_| ptr::null_mut())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1203,7 +1203,7 @@ pub unsafe extern "C" fn dc_delete_msgs(
|
|||||||
}
|
}
|
||||||
let ffi_context = &*context;
|
let ffi_context = &*context;
|
||||||
ffi_context
|
ffi_context
|
||||||
.with_inner(|ctx| message::dc_delete_msgs(ctx, msg_ids, msg_cnt))
|
.with_inner(|ctx| message::delete_msgs(ctx, msg_ids, msg_cnt))
|
||||||
.unwrap_or(())
|
.unwrap_or(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1252,7 +1252,7 @@ pub unsafe extern "C" fn dc_markseen_msgs(
|
|||||||
}
|
}
|
||||||
let ffi_context = &*context;
|
let ffi_context = &*context;
|
||||||
ffi_context
|
ffi_context
|
||||||
.with_inner(|ctx| message::dc_markseen_msgs(ctx, msg_ids, msg_cnt as usize))
|
.with_inner(|ctx| message::markseen_msgs(ctx, msg_ids, msg_cnt as usize))
|
||||||
.ok();
|
.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1269,7 +1269,7 @@ pub unsafe extern "C" fn dc_star_msgs(
|
|||||||
}
|
}
|
||||||
let ffi_context = &*context;
|
let ffi_context = &*context;
|
||||||
ffi_context
|
ffi_context
|
||||||
.with_inner(|ctx| message::dc_star_msgs(ctx, msg_ids, msg_cnt, star))
|
.with_inner(|ctx| message::star_msgs(ctx, msg_ids, msg_cnt, star))
|
||||||
.ok();
|
.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1282,7 +1282,7 @@ pub unsafe extern "C" fn dc_get_msg(context: *mut dc_context_t, msg_id: u32) ->
|
|||||||
let ffi_context = &*context;
|
let ffi_context = &*context;
|
||||||
ffi_context
|
ffi_context
|
||||||
.with_inner(|ctx| {
|
.with_inner(|ctx| {
|
||||||
let message = match message::dc_get_msg(ctx, msg_id) {
|
let message = match message::Message::load_from_db(ctx, msg_id) {
|
||||||
Ok(msg) => msg,
|
Ok(msg) => msg,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error!(ctx, "Error getting msg #{}: {}", msg_id, e);
|
error!(ctx, "Error getting msg #{}: {}", msg_id, e);
|
||||||
@@ -2176,7 +2176,7 @@ pub unsafe extern "C" fn dc_msg_new(
|
|||||||
let viewtype = from_prim(viewtype).expect(&format!("invalid viewtype = {}", viewtype));
|
let viewtype = from_prim(viewtype).expect(&format!("invalid viewtype = {}", viewtype));
|
||||||
let msg = MessageWrapper {
|
let msg = MessageWrapper {
|
||||||
context,
|
context,
|
||||||
message: message::dc_msg_new(viewtype),
|
message: message::Message::new(viewtype),
|
||||||
};
|
};
|
||||||
Box::into_raw(Box::new(msg))
|
Box::into_raw(Box::new(msg))
|
||||||
}
|
}
|
||||||
@@ -2198,7 +2198,7 @@ pub unsafe extern "C" fn dc_msg_get_id(msg: *mut dc_msg_t) -> u32 {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_id(&ffi_msg.message)
|
ffi_msg.message.get_id()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2208,7 +2208,7 @@ pub unsafe extern "C" fn dc_msg_get_from_id(msg: *mut dc_msg_t) -> u32 {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_from_id(&ffi_msg.message)
|
ffi_msg.message.get_from_id()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2218,7 +2218,7 @@ pub unsafe extern "C" fn dc_msg_get_chat_id(msg: *mut dc_msg_t) -> u32 {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_chat_id(&ffi_msg.message)
|
ffi_msg.message.get_chat_id()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2228,7 +2228,9 @@ pub unsafe extern "C" fn dc_msg_get_viewtype(msg: *mut dc_msg_t) -> libc::c_int
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_viewtype(&ffi_msg.message)
|
ffi_msg
|
||||||
|
.message
|
||||||
|
.get_viewtype()
|
||||||
.to_i64()
|
.to_i64()
|
||||||
.expect("impossible: Viewtype -> i64 conversion failed") as libc::c_int
|
.expect("impossible: Viewtype -> i64 conversion failed") as libc::c_int
|
||||||
}
|
}
|
||||||
@@ -2240,7 +2242,7 @@ pub unsafe extern "C" fn dc_msg_get_state(msg: *mut dc_msg_t) -> libc::c_int {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_state(&ffi_msg.message) as libc::c_int
|
ffi_msg.message.get_state() as libc::c_int
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2250,7 +2252,7 @@ pub unsafe extern "C" fn dc_msg_get_timestamp(msg: *mut dc_msg_t) -> i64 {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_timestamp(&ffi_msg.message)
|
ffi_msg.message.get_timestamp()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2260,7 +2262,7 @@ pub unsafe extern "C" fn dc_msg_get_received_timestamp(msg: *mut dc_msg_t) -> i6
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_received_timestamp(&ffi_msg.message)
|
ffi_msg.message.get_received_timestamp()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2270,7 +2272,7 @@ pub unsafe extern "C" fn dc_msg_get_sort_timestamp(msg: *mut dc_msg_t) -> i64 {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_sort_timestamp(&ffi_msg.message)
|
ffi_msg.message.get_sort_timestamp()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2280,7 +2282,7 @@ pub unsafe extern "C" fn dc_msg_get_text(msg: *mut dc_msg_t) -> *mut libc::c_cha
|
|||||||
return dc_strdup(ptr::null());
|
return dc_strdup(ptr::null());
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_text(&ffi_msg.message)
|
ffi_msg.message.get_text()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2293,7 +2295,9 @@ pub unsafe extern "C" fn dc_msg_get_file(msg: *mut dc_msg_t) -> *mut libc::c_cha
|
|||||||
let ffi_context = &*ffi_msg.context;
|
let ffi_context = &*ffi_msg.context;
|
||||||
ffi_context
|
ffi_context
|
||||||
.with_inner(|ctx| {
|
.with_inner(|ctx| {
|
||||||
message::dc_msg_get_file(ctx, &ffi_msg.message)
|
ffi_msg
|
||||||
|
.message
|
||||||
|
.get_file(ctx)
|
||||||
.and_then(|p| p.to_c_string().ok())
|
.and_then(|p| p.to_c_string().ok())
|
||||||
.map(|cs| dc_strdup(cs.as_ptr()))
|
.map(|cs| dc_strdup(cs.as_ptr()))
|
||||||
.unwrap_or_else(|| "".strdup())
|
.unwrap_or_else(|| "".strdup())
|
||||||
@@ -2308,7 +2312,7 @@ pub unsafe extern "C" fn dc_msg_get_filename(msg: *mut dc_msg_t) -> *mut libc::c
|
|||||||
return dc_strdup(ptr::null());
|
return dc_strdup(ptr::null());
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_filename(&ffi_msg.message)
|
ffi_msg.message.get_filename()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2318,7 +2322,7 @@ pub unsafe extern "C" fn dc_msg_get_filemime(msg: *mut dc_msg_t) -> *mut libc::c
|
|||||||
return dc_strdup(ptr::null());
|
return dc_strdup(ptr::null());
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_filemime(&ffi_msg.message).strdup()
|
ffi_msg.message.get_filemime().strdup()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2330,7 +2334,7 @@ pub unsafe extern "C" fn dc_msg_get_filebytes(msg: *mut dc_msg_t) -> u64 {
|
|||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
let ffi_context = &*ffi_msg.context;
|
let ffi_context = &*ffi_msg.context;
|
||||||
ffi_context
|
ffi_context
|
||||||
.with_inner(|ctx| message::dc_msg_get_filebytes(ctx, &ffi_msg.message))
|
.with_inner(|ctx| ffi_msg.message.get_filebytes(ctx))
|
||||||
.unwrap_or(0)
|
.unwrap_or(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2341,7 +2345,7 @@ pub unsafe extern "C" fn dc_msg_get_width(msg: *mut dc_msg_t) -> libc::c_int {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_width(&ffi_msg.message)
|
ffi_msg.message.get_width()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2351,7 +2355,7 @@ pub unsafe extern "C" fn dc_msg_get_height(msg: *mut dc_msg_t) -> libc::c_int {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_height(&ffi_msg.message)
|
ffi_msg.message.get_height()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2361,7 +2365,7 @@ pub unsafe extern "C" fn dc_msg_get_duration(msg: *mut dc_msg_t) -> libc::c_int
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_duration(&ffi_msg.message)
|
ffi_msg.message.get_duration()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2371,7 +2375,7 @@ pub unsafe extern "C" fn dc_msg_get_showpadlock(msg: *mut dc_msg_t) -> libc::c_i
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_get_showpadlock(&ffi_msg.message) as libc::c_int
|
ffi_msg.message.get_showpadlock() as libc::c_int
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2393,7 +2397,7 @@ pub unsafe extern "C" fn dc_msg_get_summary(
|
|||||||
let ffi_context = &*ffi_msg.context;
|
let ffi_context = &*ffi_msg.context;
|
||||||
ffi_context
|
ffi_context
|
||||||
.with_inner(|ctx| {
|
.with_inner(|ctx| {
|
||||||
let lot = message::dc_msg_get_summary(ctx, &mut ffi_msg.message, maybe_chat);
|
let lot = ffi_msg.message.get_summary(ctx, maybe_chat);
|
||||||
Box::into_raw(Box::new(lot))
|
Box::into_raw(Box::new(lot))
|
||||||
})
|
})
|
||||||
.unwrap_or_else(|_| ptr::null_mut())
|
.unwrap_or_else(|_| ptr::null_mut())
|
||||||
@@ -2412,11 +2416,9 @@ pub unsafe extern "C" fn dc_msg_get_summarytext(
|
|||||||
let ffi_context = &*ffi_msg.context;
|
let ffi_context = &*ffi_msg.context;
|
||||||
ffi_context
|
ffi_context
|
||||||
.with_inner(|ctx| {
|
.with_inner(|ctx| {
|
||||||
message::dc_msg_get_summarytext(
|
ffi_msg
|
||||||
ctx,
|
.message
|
||||||
&mut ffi_msg.message,
|
.get_summarytext(ctx, approx_characters.try_into().unwrap())
|
||||||
approx_characters.try_into().unwrap(),
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
.unwrap_or_else(|_| "".strdup())
|
.unwrap_or_else(|_| "".strdup())
|
||||||
}
|
}
|
||||||
@@ -2428,7 +2430,7 @@ pub unsafe extern "C" fn dc_msg_has_deviating_timestamp(msg: *mut dc_msg_t) -> l
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_has_deviating_timestamp(&ffi_msg.message)
|
ffi_msg.message.has_deviating_timestamp()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2438,7 +2440,7 @@ pub unsafe extern "C" fn dc_msg_has_location(msg: *mut dc_msg_t) -> libc::c_int
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_has_location(&ffi_msg.message) as libc::c_int
|
ffi_msg.message.has_location() as libc::c_int
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2448,7 +2450,7 @@ pub unsafe extern "C" fn dc_msg_is_sent(msg: *mut dc_msg_t) -> libc::c_int {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_is_sent(&ffi_msg.message).into()
|
ffi_msg.message.is_sent().into()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2458,7 +2460,7 @@ pub unsafe extern "C" fn dc_msg_is_starred(msg: *mut dc_msg_t) -> libc::c_int {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_is_starred(&ffi_msg.message).into()
|
ffi_msg.message.is_starred().into()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2468,7 +2470,7 @@ pub unsafe extern "C" fn dc_msg_is_forwarded(msg: *mut dc_msg_t) -> libc::c_int
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_is_forwarded(&ffi_msg.message).into()
|
ffi_msg.message.is_forwarded().into()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2478,7 +2480,7 @@ pub unsafe extern "C" fn dc_msg_is_info(msg: *mut dc_msg_t) -> libc::c_int {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_is_info(&ffi_msg.message).into()
|
ffi_msg.message.is_info().into()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2488,7 +2490,7 @@ pub unsafe extern "C" fn dc_msg_is_increation(msg: *mut dc_msg_t) -> libc::c_int
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_is_increation(&ffi_msg.message).into()
|
ffi_msg.message.is_increation().into()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2498,7 +2500,7 @@ pub unsafe extern "C" fn dc_msg_is_setupmessage(msg: *mut dc_msg_t) -> libc::c_i
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
message::dc_msg_is_setupmessage(&ffi_msg.message).into()
|
ffi_msg.message.is_setupmessage().into()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2510,7 +2512,7 @@ pub unsafe extern "C" fn dc_msg_get_setupcodebegin(msg: *mut dc_msg_t) -> *mut l
|
|||||||
let ffi_msg = &*msg;
|
let ffi_msg = &*msg;
|
||||||
let ffi_context = &*ffi_msg.context;
|
let ffi_context = &*ffi_msg.context;
|
||||||
ffi_context
|
ffi_context
|
||||||
.with_inner(|ctx| message::dc_msg_get_setupcodebegin(ctx, &ffi_msg.message))
|
.with_inner(|ctx| ffi_msg.message.get_setupcodebegin(ctx))
|
||||||
.unwrap_or_else(|_| "".strdup())
|
.unwrap_or_else(|_| "".strdup())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2522,7 +2524,7 @@ pub unsafe extern "C" fn dc_msg_set_text(msg: *mut dc_msg_t, text: *mut libc::c_
|
|||||||
}
|
}
|
||||||
let ffi_msg = &mut *msg;
|
let ffi_msg = &mut *msg;
|
||||||
// TODO: {text} equal to NULL is treated as "", which is strange. Does anyone rely on it?
|
// TODO: {text} equal to NULL is treated as "", which is strange. Does anyone rely on it?
|
||||||
message::dc_msg_set_text(&mut ffi_msg.message, text)
|
ffi_msg.message.set_text(text)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2536,7 +2538,7 @@ pub unsafe extern "C" fn dc_msg_set_file(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let ffi_msg = &mut *msg;
|
let ffi_msg = &mut *msg;
|
||||||
message::dc_msg_set_file(&mut ffi_msg.message, file, filemime)
|
ffi_msg.message.set_file(file, filemime)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2550,7 +2552,7 @@ pub unsafe extern "C" fn dc_msg_set_dimension(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let ffi_msg = &mut *msg;
|
let ffi_msg = &mut *msg;
|
||||||
message::dc_msg_set_dimension(&mut ffi_msg.message, width, height)
|
ffi_msg.message.set_dimension(width, height)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2560,7 +2562,7 @@ pub unsafe extern "C" fn dc_msg_set_duration(msg: *mut dc_msg_t, duration: libc:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let ffi_msg = &mut *msg;
|
let ffi_msg = &mut *msg;
|
||||||
message::dc_msg_set_duration(&mut ffi_msg.message, duration)
|
ffi_msg.message.set_duration(duration)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2574,7 +2576,7 @@ pub unsafe extern "C" fn dc_msg_set_location(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let ffi_msg = &mut *msg;
|
let ffi_msg = &mut *msg;
|
||||||
message::dc_msg_set_location(&mut ffi_msg.message, latitude, longitude)
|
ffi_msg.message.set_location(latitude, longitude)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@@ -2592,7 +2594,9 @@ pub unsafe extern "C" fn dc_msg_latefiling_mediasize(
|
|||||||
let ffi_context = &*ffi_msg.context;
|
let ffi_context = &*ffi_msg.context;
|
||||||
ffi_context
|
ffi_context
|
||||||
.with_inner(|ctx| {
|
.with_inner(|ctx| {
|
||||||
message::dc_msg_latefiling_mediasize(ctx, &mut ffi_msg.message, width, height, duration)
|
ffi_msg
|
||||||
|
.message
|
||||||
|
.latefiling_mediasize(ctx, width, height, duration)
|
||||||
})
|
})
|
||||||
.ok();
|
.ok();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ use deltachat::error::Error;
|
|||||||
use deltachat::job::*;
|
use deltachat::job::*;
|
||||||
use deltachat::location;
|
use deltachat::location;
|
||||||
use deltachat::lot::LotState;
|
use deltachat::lot::LotState;
|
||||||
use deltachat::message::*;
|
use deltachat::message::{self, Message, MessageState};
|
||||||
use deltachat::peerstate::*;
|
use deltachat::peerstate::*;
|
||||||
use deltachat::qr::*;
|
use deltachat::qr::*;
|
||||||
use deltachat::sql;
|
use deltachat::sql;
|
||||||
@@ -216,44 +216,40 @@ unsafe fn poke_spec(context: &Context, spec: *const libc::c_char) -> libc::c_int
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsafe fn log_msg(context: &Context, prefix: impl AsRef<str>, msg: &Message) {
|
unsafe fn log_msg(context: &Context, prefix: impl AsRef<str>, msg: &Message) {
|
||||||
let contact = Contact::get_by_id(context, dc_msg_get_from_id(msg)).expect("invalid contact");
|
let contact = Contact::get_by_id(context, msg.get_from_id()).expect("invalid contact");
|
||||||
let contact_name = contact.get_name();
|
let contact_name = contact.get_name();
|
||||||
let contact_id = contact.get_id();
|
let contact_id = contact.get_id();
|
||||||
|
|
||||||
let statestr = match dc_msg_get_state(msg) {
|
let statestr = match msg.get_state() {
|
||||||
MessageState::OutPending => " o",
|
MessageState::OutPending => " o",
|
||||||
MessageState::OutDelivered => " √",
|
MessageState::OutDelivered => " √",
|
||||||
MessageState::OutMdnRcvd => " √√",
|
MessageState::OutMdnRcvd => " √√",
|
||||||
MessageState::OutFailed => " !!",
|
MessageState::OutFailed => " !!",
|
||||||
_ => "",
|
_ => "",
|
||||||
};
|
};
|
||||||
let temp2 = dc_timestamp_to_str(dc_msg_get_timestamp(msg));
|
let temp2 = dc_timestamp_to_str(msg.get_timestamp());
|
||||||
let msgtext = dc_msg_get_text(msg);
|
let msgtext = msg.get_text();
|
||||||
info!(
|
info!(
|
||||||
context,
|
context,
|
||||||
"{}#{}{}{}: {} (Contact#{}): {} {}{}{}{} [{}]",
|
"{}#{}{}{}: {} (Contact#{}): {} {}{}{}{} [{}]",
|
||||||
prefix.as_ref(),
|
prefix.as_ref(),
|
||||||
dc_msg_get_id(msg) as libc::c_int,
|
msg.get_id() as libc::c_int,
|
||||||
if dc_msg_get_showpadlock(msg) {
|
if msg.get_showpadlock() { "🔒" } else { "" },
|
||||||
"🔒"
|
if msg.has_location() { "📍" } else { "" },
|
||||||
} else {
|
|
||||||
""
|
|
||||||
},
|
|
||||||
if dc_msg_has_location(msg) { "📍" } else { "" },
|
|
||||||
&contact_name,
|
&contact_name,
|
||||||
contact_id,
|
contact_id,
|
||||||
as_str(msgtext),
|
as_str(msgtext),
|
||||||
if dc_msg_is_starred(msg) { "★" } else { "" },
|
if msg.is_starred() { "★" } else { "" },
|
||||||
if dc_msg_get_from_id(msg) == 1 as libc::c_uint {
|
if msg.get_from_id() == 1 as libc::c_uint {
|
||||||
""
|
""
|
||||||
} else if dc_msg_get_state(msg) == MessageState::InSeen {
|
} else if msg.get_state() == MessageState::InSeen {
|
||||||
"[SEEN]"
|
"[SEEN]"
|
||||||
} else if dc_msg_get_state(msg) == MessageState::InNoticed {
|
} else if msg.get_state() == MessageState::InNoticed {
|
||||||
"[NOTICED]"
|
"[NOTICED]"
|
||||||
} else {
|
} else {
|
||||||
"[FRESH]"
|
"[FRESH]"
|
||||||
},
|
},
|
||||||
if dc_msg_is_info(msg) { "[INFO]" } else { "" },
|
if msg.is_info() { "[INFO]" } else { "" },
|
||||||
statestr,
|
statestr,
|
||||||
&temp2,
|
&temp2,
|
||||||
);
|
);
|
||||||
@@ -278,7 +274,7 @@ unsafe fn log_msglist(context: &Context, msglist: &Vec<u32>) -> Result<(), Error
|
|||||||
);
|
);
|
||||||
lines_out += 1
|
lines_out += 1
|
||||||
}
|
}
|
||||||
let msg = dc_get_msg(context, msg_id)?;
|
let msg = Message::load_from_db(context, msg_id)?;
|
||||||
log_msg(context, "Msg", &msg);
|
log_msg(context, "Msg", &msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -467,9 +463,9 @@ pub unsafe fn dc_cmdline(context: &Context, line: &str) -> Result<(), failure::E
|
|||||||
"get-setupcodebegin" => {
|
"get-setupcodebegin" => {
|
||||||
ensure!(!arg1.is_empty(), "Argument <msg-id> missing.");
|
ensure!(!arg1.is_empty(), "Argument <msg-id> missing.");
|
||||||
let msg_id: u32 = arg1.parse()?;
|
let msg_id: u32 = arg1.parse()?;
|
||||||
let msg = dc_get_msg(context, msg_id)?;
|
let msg = Message::load_from_db(context, msg_id)?;
|
||||||
if dc_msg_is_setupmessage(&msg) {
|
if msg.is_setupmessage() {
|
||||||
let setupcodebegin = dc_msg_get_setupcodebegin(context, &msg);
|
let setupcodebegin = msg.get_setupcodebegin(context);
|
||||||
println!(
|
println!(
|
||||||
"The setup code for setup message Msg#{} starts with: {}",
|
"The setup code for setup message Msg#{} starts with: {}",
|
||||||
msg_id,
|
msg_id,
|
||||||
@@ -825,14 +821,14 @@ pub unsafe fn dc_cmdline(context: &Context, line: &str) -> Result<(), failure::E
|
|||||||
ensure!(sel_chat.is_some(), "No chat selected.");
|
ensure!(sel_chat.is_some(), "No chat selected.");
|
||||||
ensure!(!arg1.is_empty(), "No file given.");
|
ensure!(!arg1.is_empty(), "No file given.");
|
||||||
|
|
||||||
let mut msg = dc_msg_new(if arg0 == "sendimage" {
|
let mut msg = Message::new(if arg0 == "sendimage" {
|
||||||
Viewtype::Image
|
Viewtype::Image
|
||||||
} else {
|
} else {
|
||||||
Viewtype::File
|
Viewtype::File
|
||||||
});
|
});
|
||||||
dc_msg_set_file(&mut msg, arg1_c, ptr::null());
|
msg.set_file(arg1_c, ptr::null());
|
||||||
if !arg2.is_empty() {
|
if !arg2.is_empty() {
|
||||||
dc_msg_set_text(&mut msg, arg2_c);
|
msg.set_text(arg2_c);
|
||||||
}
|
}
|
||||||
chat::send_msg(context, sel_chat.as_ref().unwrap().get_id(), &mut msg)?;
|
chat::send_msg(context, sel_chat.as_ref().unwrap().get_id(), &mut msg)?;
|
||||||
}
|
}
|
||||||
@@ -854,8 +850,8 @@ pub unsafe fn dc_cmdline(context: &Context, line: &str) -> Result<(), failure::E
|
|||||||
ensure!(sel_chat.is_some(), "No chat selected.");
|
ensure!(sel_chat.is_some(), "No chat selected.");
|
||||||
|
|
||||||
if !arg1.is_empty() {
|
if !arg1.is_empty() {
|
||||||
let mut draft = dc_msg_new(Viewtype::Text);
|
let mut draft = Message::new(Viewtype::Text);
|
||||||
dc_msg_set_text(&mut draft, arg1_c);
|
draft.set_text(arg1_c);
|
||||||
chat::set_draft(
|
chat::set_draft(
|
||||||
context,
|
context,
|
||||||
sel_chat.as_ref().unwrap().get_id(),
|
sel_chat.as_ref().unwrap().get_id(),
|
||||||
@@ -904,7 +900,7 @@ pub unsafe fn dc_cmdline(context: &Context, line: &str) -> Result<(), failure::E
|
|||||||
"msginfo" => {
|
"msginfo" => {
|
||||||
ensure!(!arg1.is_empty(), "Argument <msg-id> missing.");
|
ensure!(!arg1.is_empty(), "Argument <msg-id> missing.");
|
||||||
let id = arg1.parse()?;
|
let id = arg1.parse()?;
|
||||||
let res = dc_get_msg_info(context, id);
|
let res = message::get_msg_info(context, id);
|
||||||
println!("{}", as_str(res));
|
println!("{}", as_str(res));
|
||||||
}
|
}
|
||||||
"listfresh" => {
|
"listfresh" => {
|
||||||
@@ -928,13 +924,13 @@ pub unsafe fn dc_cmdline(context: &Context, line: &str) -> Result<(), failure::E
|
|||||||
ensure!(!arg1.is_empty(), "Argument <msg-id> missing.");
|
ensure!(!arg1.is_empty(), "Argument <msg-id> missing.");
|
||||||
let mut msg_ids = [0; 1];
|
let mut msg_ids = [0; 1];
|
||||||
msg_ids[0] = arg1.parse()?;
|
msg_ids[0] = arg1.parse()?;
|
||||||
dc_markseen_msgs(context, msg_ids.as_mut_ptr(), 1);
|
message::markseen_msgs(context, msg_ids.as_mut_ptr(), 1);
|
||||||
}
|
}
|
||||||
"star" | "unstar" => {
|
"star" | "unstar" => {
|
||||||
ensure!(!arg1.is_empty(), "Argument <msg-id> missing.");
|
ensure!(!arg1.is_empty(), "Argument <msg-id> missing.");
|
||||||
let mut msg_ids = [0; 1];
|
let mut msg_ids = [0; 1];
|
||||||
msg_ids[0] = arg1.parse()?;
|
msg_ids[0] = arg1.parse()?;
|
||||||
dc_star_msgs(
|
message::star_msgs(
|
||||||
context,
|
context,
|
||||||
msg_ids.as_mut_ptr(),
|
msg_ids.as_mut_ptr(),
|
||||||
1,
|
1,
|
||||||
@@ -945,7 +941,7 @@ pub unsafe fn dc_cmdline(context: &Context, line: &str) -> Result<(), failure::E
|
|||||||
ensure!(!arg1.is_empty(), "Argument <msg-id> missing.");
|
ensure!(!arg1.is_empty(), "Argument <msg-id> missing.");
|
||||||
let mut ids = [0; 1];
|
let mut ids = [0; 1];
|
||||||
ids[0] = arg1.parse()?;
|
ids[0] = arg1.parse()?;
|
||||||
dc_delete_msgs(context, ids.as_mut_ptr(), 1);
|
message::delete_msgs(context, ids.as_mut_ptr(), 1);
|
||||||
}
|
}
|
||||||
"listcontacts" | "contacts" | "listverified" => {
|
"listcontacts" | "contacts" | "listverified" => {
|
||||||
let contacts = Contact::get_all(
|
let contacts = Contact::get_all(
|
||||||
|
|||||||
48
src/chat.rs
48
src/chat.rs
@@ -11,7 +11,7 @@ use crate::dc_tools::*;
|
|||||||
use crate::error::Error;
|
use crate::error::Error;
|
||||||
use crate::events::Event;
|
use crate::events::Event;
|
||||||
use crate::job::*;
|
use crate::job::*;
|
||||||
use crate::message::*;
|
use crate::message::{self, Message, MessageState};
|
||||||
use crate::param::*;
|
use crate::param::*;
|
||||||
use crate::sql::{self, Sql};
|
use crate::sql::{self, Sql};
|
||||||
use crate::stock::StockMessage;
|
use crate::stock::StockMessage;
|
||||||
@@ -484,7 +484,7 @@ pub fn create_by_msg_id(context: &Context, msg_id: u32) -> Result<u32, Error> {
|
|||||||
let mut chat_id = 0;
|
let mut chat_id = 0;
|
||||||
let mut send_event = false;
|
let mut send_event = false;
|
||||||
|
|
||||||
if let Ok(msg) = dc_msg_load_from_db(context, msg_id) {
|
if let Ok(msg) = Message::load_from_db(context, msg_id) {
|
||||||
if let Ok(chat) = Chat::load_from_db(context, msg.chat_id) {
|
if let Ok(chat) = Chat::load_from_db(context, msg.chat_id) {
|
||||||
if chat.id > DC_CHAT_ID_LAST_SPECIAL {
|
if chat.id > DC_CHAT_ID_LAST_SPECIAL {
|
||||||
chat_id = chat.id;
|
chat_id = chat.id;
|
||||||
@@ -691,13 +691,13 @@ fn prepare_msg_common(context: &Context, chat_id: u32, msg: &mut Message) -> Res
|
|||||||
// - from FILE to AUDIO/VIDEO/IMAGE
|
// - from FILE to AUDIO/VIDEO/IMAGE
|
||||||
// - from FILE/IMAGE to GIF */
|
// - from FILE/IMAGE to GIF */
|
||||||
if let Some((better_type, better_mime)) =
|
if let Some((better_type, better_mime)) =
|
||||||
dc_msg_guess_msgtype_from_suffix(Path::new(&path_filename))
|
message::guess_msgtype_from_suffix(Path::new(&path_filename))
|
||||||
{
|
{
|
||||||
msg.type_0 = better_type;
|
msg.type_0 = better_type;
|
||||||
msg.param.set(Param::MimeType, better_mime);
|
msg.param.set(Param::MimeType, better_mime);
|
||||||
}
|
}
|
||||||
} else if !msg.param.exists(Param::MimeType) {
|
} else if !msg.param.exists(Param::MimeType) {
|
||||||
if let Some((_, mime)) = dc_msg_guess_msgtype_from_suffix(Path::new(&path_filename)) {
|
if let Some((_, mime)) = message::guess_msgtype_from_suffix(Path::new(&path_filename)) {
|
||||||
msg.param.set(Param::MimeType, mime);
|
msg.param.set(Param::MimeType, mime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -783,7 +783,7 @@ pub fn send_msg(context: &Context, chat_id: u32, msg: &mut Message) -> Result<u3
|
|||||||
chat_id == 0 || chat_id == msg.chat_id,
|
chat_id == 0 || chat_id == msg.chat_id,
|
||||||
"Inconsistent chat ID"
|
"Inconsistent chat ID"
|
||||||
);
|
);
|
||||||
dc_update_msg_state(context, msg.id, MessageState::OutPending);
|
message::update_msg_state(context, msg.id, MessageState::OutPending);
|
||||||
}
|
}
|
||||||
|
|
||||||
ensure!(
|
ensure!(
|
||||||
@@ -809,14 +809,14 @@ pub fn send_msg(context: &Context, chat_id: u32, msg: &mut Message) -> Result<u3
|
|||||||
// avoid hanging if user tampers with db
|
// avoid hanging if user tampers with db
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
if let Ok(mut copy) = dc_get_msg(context, id as u32) {
|
if let Ok(mut copy) = Message::load_from_db(context, id as u32) {
|
||||||
// TODO: handle cleanup and return early instead
|
// TODO: handle cleanup and return early instead
|
||||||
send_msg(context, 0, &mut copy).unwrap();
|
send_msg(context, 0, &mut copy).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
msg.param.remove(Param::PrepForwards);
|
msg.param.remove(Param::PrepForwards);
|
||||||
dc_msg_save_param_to_disk(context, msg);
|
msg.save_param_to_disk(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -834,7 +834,7 @@ pub unsafe fn send_text_msg(
|
|||||||
chat_id
|
chat_id
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut msg = dc_msg_new(Viewtype::Text);
|
let mut msg = Message::new(Viewtype::Text);
|
||||||
msg.text = Some(text_to_send);
|
msg.text = Some(text_to_send);
|
||||||
send_msg(context, chat_id, &mut msg)
|
send_msg(context, chat_id, &mut msg)
|
||||||
}
|
}
|
||||||
@@ -861,7 +861,7 @@ pub unsafe fn set_draft(context: &Context, chat_id: u32, msg: Option<&mut Messag
|
|||||||
fn maybe_delete_draft(context: &Context, chat_id: u32) -> bool {
|
fn maybe_delete_draft(context: &Context, chat_id: u32) -> bool {
|
||||||
let draft = get_draft_msg_id(context, chat_id);
|
let draft = get_draft_msg_id(context, chat_id);
|
||||||
if draft != 0 {
|
if draft != 0 {
|
||||||
dc_delete_msg_from_db(context, draft);
|
Message::delete_from_db(context, draft);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
false
|
false
|
||||||
@@ -881,7 +881,7 @@ fn do_set_draft(context: &Context, chat_id: u32, msg: &mut Message) -> bool {
|
|||||||
_ => {
|
_ => {
|
||||||
if let Some(path_filename) = msg.param.get(Param::File) {
|
if let Some(path_filename) = msg.param.get(Param::File) {
|
||||||
let mut path_filename = path_filename.to_string();
|
let mut path_filename = path_filename.to_string();
|
||||||
if dc_msg_is_increation(msg) && !dc_is_blobdir_path(context, &path_filename) {
|
if msg.is_increation() && !dc_is_blobdir_path(context, &path_filename) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if !dc_make_rel_and_copy(context, &mut path_filename) {
|
if !dc_make_rel_and_copy(context, &mut path_filename) {
|
||||||
@@ -938,7 +938,7 @@ pub fn get_draft(context: &Context, chat_id: u32) -> Result<Option<Message>, Err
|
|||||||
if draft_msg_id == 0 {
|
if draft_msg_id == 0 {
|
||||||
return Ok(None);
|
return Ok(None);
|
||||||
}
|
}
|
||||||
Ok(Some(dc_msg_load_from_db(context, draft_msg_id)?))
|
Ok(Some(Message::load_from_db(context, draft_msg_id)?))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_chat_msgs(context: &Context, chat_id: u32, flags: u32, marker1before: u32) -> Vec<u32> {
|
pub fn get_chat_msgs(context: &Context, chat_id: u32, flags: u32, marker1before: u32) -> Vec<u32> {
|
||||||
@@ -1133,7 +1133,7 @@ pub unsafe fn get_next_media(
|
|||||||
) -> u32 {
|
) -> u32 {
|
||||||
let mut ret = 0;
|
let mut ret = 0;
|
||||||
|
|
||||||
if let Ok(msg) = dc_msg_load_from_db(context, curr_msg_id) {
|
if let Ok(msg) = Message::load_from_db(context, curr_msg_id) {
|
||||||
let list = get_chat_media(
|
let list = get_chat_media(
|
||||||
context,
|
context,
|
||||||
msg.chat_id,
|
msg.chat_id,
|
||||||
@@ -1301,8 +1301,8 @@ pub unsafe fn create_group_chat(
|
|||||||
|
|
||||||
if chat_id != 0 {
|
if chat_id != 0 {
|
||||||
if add_to_chat_contacts_table(context, chat_id, 1) {
|
if add_to_chat_contacts_table(context, chat_id, 1) {
|
||||||
let mut draft_msg = dc_msg_new(Viewtype::Text);
|
let mut draft_msg = Message::new(Viewtype::Text);
|
||||||
dc_msg_set_text(&mut draft_msg, draft_txt.as_ptr());
|
draft_msg.set_text(draft_txt.as_ptr());
|
||||||
set_draft_raw(context, chat_id, &mut draft_msg);
|
set_draft_raw(context, chat_id, &mut draft_msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1347,7 +1347,7 @@ pub fn add_contact_to_chat_ex(
|
|||||||
if contact.is_err() || chat_id <= DC_CHAT_ID_LAST_SPECIAL {
|
if contact.is_err() || chat_id <= DC_CHAT_ID_LAST_SPECIAL {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
let mut msg = dc_msg_new_untyped();
|
let mut msg = Message::default();
|
||||||
|
|
||||||
reset_gossiped_timestamp(context, chat_id);
|
reset_gossiped_timestamp(context, chat_id);
|
||||||
let contact = contact.unwrap();
|
let contact = contact.unwrap();
|
||||||
@@ -1495,7 +1495,7 @@ pub unsafe fn remove_contact_from_chat(
|
|||||||
"Cannot remove special contact"
|
"Cannot remove special contact"
|
||||||
);
|
);
|
||||||
|
|
||||||
let mut msg = dc_msg_new_untyped();
|
let mut msg = Message::default();
|
||||||
let mut success = false;
|
let mut success = false;
|
||||||
|
|
||||||
/* we do not check if "contact_id" exists but just delete all records with the id from chats_contacts */
|
/* we do not check if "contact_id" exists but just delete all records with the id from chats_contacts */
|
||||||
@@ -1593,7 +1593,7 @@ pub unsafe fn set_chat_name(
|
|||||||
ensure!(chat_id > DC_CHAT_ID_LAST_SPECIAL, "Invalid chat ID");
|
ensure!(chat_id > DC_CHAT_ID_LAST_SPECIAL, "Invalid chat ID");
|
||||||
|
|
||||||
let chat = Chat::load_from_db(context, chat_id)?;
|
let chat = Chat::load_from_db(context, chat_id)?;
|
||||||
let mut msg = dc_msg_new_untyped();
|
let mut msg = Message::default();
|
||||||
|
|
||||||
if real_group_exists(context, chat_id) {
|
if real_group_exists(context, chat_id) {
|
||||||
if &chat.name == new_name.as_ref() {
|
if &chat.name == new_name.as_ref() {
|
||||||
@@ -1682,7 +1682,7 @@ pub fn set_chat_profile_image(
|
|||||||
chat.param.set(Param::ProfileImage, &new_image_rel);
|
chat.param.set(Param::ProfileImage, &new_image_rel);
|
||||||
if chat.update_param(context).is_ok() {
|
if chat.update_param(context).is_ok() {
|
||||||
if chat.is_promoted() {
|
if chat.is_promoted() {
|
||||||
let mut msg = dc_msg_new_untyped();
|
let mut msg = Message::default();
|
||||||
msg.param
|
msg.param
|
||||||
.set_int(Param::Cmd, SystemMessage::GroupImageChanged as i32);
|
.set_int(Param::Cmd, SystemMessage::GroupImageChanged as i32);
|
||||||
msg.type_0 = Viewtype::Text;
|
msg.type_0 = Viewtype::Text;
|
||||||
@@ -1753,7 +1753,7 @@ pub unsafe fn forward_msgs(
|
|||||||
|
|
||||||
for id in ids {
|
for id in ids {
|
||||||
let src_msg_id = id;
|
let src_msg_id = id;
|
||||||
let msg = dc_msg_load_from_db(context, src_msg_id as u32);
|
let msg = Message::load_from_db(context, src_msg_id as u32);
|
||||||
if msg.is_err() {
|
if msg.is_err() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1784,7 +1784,7 @@ pub unsafe fn forward_msgs(
|
|||||||
msg.param.set(Param::PrepForwards, new_msg_id.to_string());
|
msg.param.set(Param::PrepForwards, new_msg_id.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
dc_msg_save_param_to_disk(context, &mut msg);
|
msg.save_param_to_disk(context);
|
||||||
msg.param = save_param;
|
msg.param = save_param;
|
||||||
} else {
|
} else {
|
||||||
msg.state = MessageState::OutPending;
|
msg.state = MessageState::OutPending;
|
||||||
@@ -1910,12 +1910,12 @@ mod tests {
|
|||||||
unsafe {
|
unsafe {
|
||||||
let t = dummy_context();
|
let t = dummy_context();
|
||||||
let chat_id = create_by_contact_id(&t.ctx, DC_CONTACT_ID_SELF).unwrap();
|
let chat_id = create_by_contact_id(&t.ctx, DC_CONTACT_ID_SELF).unwrap();
|
||||||
let mut msg = dc_msg_new(Viewtype::Text);
|
let mut msg = Message::new(Viewtype::Text);
|
||||||
dc_msg_set_text(&mut msg, b"hello\x00" as *const u8 as *const libc::c_char);
|
msg.set_text(b"hello\x00" as *const u8 as *const libc::c_char);
|
||||||
set_draft(&t.ctx, chat_id, Some(&mut msg));
|
set_draft(&t.ctx, chat_id, Some(&mut msg));
|
||||||
let draft = get_draft(&t.ctx, chat_id).unwrap().unwrap();
|
let draft = get_draft(&t.ctx, chat_id).unwrap().unwrap();
|
||||||
let msg_text = dc_msg_get_text(&msg);
|
let msg_text = msg.get_text();
|
||||||
let draft_text = dc_msg_get_text(&draft);
|
let draft_text = draft.get_text();
|
||||||
assert_eq!(as_str(msg_text), as_str(draft_text));
|
assert_eq!(as_str(msg_text), as_str(draft_text));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use crate::contact::*;
|
|||||||
use crate::context::*;
|
use crate::context::*;
|
||||||
use crate::error::Result;
|
use crate::error::Result;
|
||||||
use crate::lot::Lot;
|
use crate::lot::Lot;
|
||||||
use crate::message::*;
|
use crate::message::Message;
|
||||||
use crate::stock::StockMessage;
|
use crate::stock::StockMessage;
|
||||||
|
|
||||||
/// An object representing a single chatlist in memory.
|
/// An object representing a single chatlist in memory.
|
||||||
@@ -271,7 +271,7 @@ impl Chatlist {
|
|||||||
let mut lastcontact = None;
|
let mut lastcontact = None;
|
||||||
|
|
||||||
let lastmsg = if 0 != lastmsg_id {
|
let lastmsg = if 0 != lastmsg_id {
|
||||||
if let Ok(lastmsg) = dc_msg_load_from_db(context, lastmsg_id) {
|
if let Ok(lastmsg) = Message::load_from_db(context, lastmsg_id) {
|
||||||
if lastmsg.from_id != 1 as libc::c_uint
|
if lastmsg.from_id != 1 as libc::c_uint
|
||||||
&& (chat.typ == Chattype::Group || chat.typ == Chattype::VerifiedGroup)
|
&& (chat.typ == Chattype::Group || chat.typ == Chattype::VerifiedGroup)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ use crate::job_thread::JobThread;
|
|||||||
use crate::key::*;
|
use crate::key::*;
|
||||||
use crate::login_param::LoginParam;
|
use crate::login_param::LoginParam;
|
||||||
use crate::lot::Lot;
|
use crate::lot::Lot;
|
||||||
use crate::message::*;
|
use crate::message::{self, Message};
|
||||||
use crate::param::Params;
|
use crate::param::Params;
|
||||||
use crate::smtp::*;
|
use crate::smtp::*;
|
||||||
use crate::sql::Sql;
|
use crate::sql::Sql;
|
||||||
@@ -144,8 +144,8 @@ impl Context {
|
|||||||
let l2 = LoginParam::from_database(self, "configured_");
|
let l2 = LoginParam::from_database(self, "configured_");
|
||||||
let displayname = self.sql.get_config(self, "displayname");
|
let displayname = self.sql.get_config(self, "displayname");
|
||||||
let chats = get_chat_cnt(self) as usize;
|
let chats = get_chat_cnt(self) as usize;
|
||||||
let real_msgs = dc_get_real_msg_cnt(self) as usize;
|
let real_msgs = message::get_real_msg_cnt(self) as usize;
|
||||||
let deaddrop_msgs = dc_get_deaddrop_msg_cnt(self) as usize;
|
let deaddrop_msgs = message::get_deaddrop_msg_cnt(self) as usize;
|
||||||
let contacts = Contact::get_real_cnt(self) as usize;
|
let contacts = Contact::get_real_cnt(self) as usize;
|
||||||
let is_configured = self
|
let is_configured = self
|
||||||
.sql
|
.sql
|
||||||
@@ -354,15 +354,15 @@ impl Context {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Ok(msg) = dc_msg_new_load(self, msg_id) {
|
if let Ok(msg) = Message::load_from_db(self, msg_id) {
|
||||||
if dc_msg_is_setupmessage(&msg) {
|
if msg.is_setupmessage() {
|
||||||
// do not move setup messages;
|
// do not move setup messages;
|
||||||
// there may be a non-delta device that wants to handle it
|
// there may be a non-delta device that wants to handle it
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.is_mvbox(folder) {
|
if self.is_mvbox(folder) {
|
||||||
dc_update_msg_move_state(self, &msg.rfc724_mid, MoveState::Stay);
|
message::update_msg_move_state(self, &msg.rfc724_mid, MoveState::Stay);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1 = dc message, 2 = reply to dc message
|
// 1 = dc message, 2 = reply to dc message
|
||||||
@@ -374,7 +374,7 @@ impl Context {
|
|||||||
Params::new(),
|
Params::new(),
|
||||||
0,
|
0,
|
||||||
);
|
);
|
||||||
dc_update_msg_move_state(self, &msg.rfc724_mid, MoveState::Moving);
|
message::update_msg_move_state(self, &msg.rfc724_mid, MoveState::Moving);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ use crate::error::*;
|
|||||||
use crate::events::Event;
|
use crate::events::Event;
|
||||||
use crate::job::*;
|
use crate::job::*;
|
||||||
use crate::key::*;
|
use crate::key::*;
|
||||||
use crate::message::*;
|
use crate::message::Message;
|
||||||
use crate::param::*;
|
use crate::param::*;
|
||||||
use crate::pgp::*;
|
use crate::pgp::*;
|
||||||
use crate::sql::{self, Sql};
|
use crate::sql::{self, Sql};
|
||||||
@@ -127,7 +127,7 @@ pub unsafe fn dc_initiate_key_transfer(context: &Context) -> *mut libc::c_char {
|
|||||||
dc_get_fine_path_filename(context, "$BLOBDIR", "autocrypt-setup-message.html");
|
dc_get_fine_path_filename(context, "$BLOBDIR", "autocrypt-setup-message.html");
|
||||||
if dc_write_file(context, &setup_file_name, setup_file_content.as_bytes()) {
|
if dc_write_file(context, &setup_file_name, setup_file_content.as_bytes()) {
|
||||||
if let Ok(chat_id) = chat::create_by_contact_id(context, 1) {
|
if let Ok(chat_id) = chat::create_by_contact_id(context, 1) {
|
||||||
msg = dc_msg_new_untyped();
|
msg = Message::default();
|
||||||
msg.type_0 = Viewtype::File;
|
msg.type_0 = Viewtype::File;
|
||||||
msg.param
|
msg.param
|
||||||
.set(Param::File, setup_file_name.to_string_lossy());
|
.set(Param::File, setup_file_name.to_string_lossy());
|
||||||
@@ -157,8 +157,8 @@ pub unsafe fn dc_initiate_key_transfer(context: &Context) -> *mut libc::c_char {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
std::thread::sleep(std::time::Duration::from_secs(1));
|
std::thread::sleep(std::time::Duration::from_secs(1));
|
||||||
if let Ok(msg) = dc_get_msg(context, msg_id) {
|
if let Ok(msg) = Message::load_from_db(context, msg_id) {
|
||||||
if dc_msg_is_sent(&msg) {
|
if msg.is_sent() {
|
||||||
info!(context, "... setup message sent.",);
|
info!(context, "... setup message sent.",);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -264,18 +264,18 @@ pub unsafe fn dc_continue_key_transfer(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let msg = dc_get_msg(context, msg_id);
|
let msg = Message::load_from_db(context, msg_id);
|
||||||
if msg.is_err() {
|
if msg.is_err() {
|
||||||
error!(context, "Message is no Autocrypt Setup Message.");
|
error!(context, "Message is no Autocrypt Setup Message.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
let msg = msg.unwrap();
|
let msg = msg.unwrap();
|
||||||
if !dc_msg_is_setupmessage(&msg) {
|
if !msg.is_setupmessage() {
|
||||||
error!(context, "Message is no Autocrypt Setup Message.");
|
error!(context, "Message is no Autocrypt Setup Message.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(filename) = dc_msg_get_file(context, &msg) {
|
if let Some(filename) = msg.get_file(context) {
|
||||||
if let Some(buf) = dc_read_file_safe(context, filename) {
|
if let Some(buf) = dc_read_file_safe(context, filename) {
|
||||||
norm_sc = dc_normalize_setup_code(context, setup_code);
|
norm_sc = dc_normalize_setup_code(context, setup_code);
|
||||||
if norm_sc.is_null() {
|
if norm_sc.is_null() {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ use crate::dc_tools::*;
|
|||||||
use crate::e2ee::*;
|
use crate::e2ee::*;
|
||||||
use crate::error::Error;
|
use crate::error::Error;
|
||||||
use crate::location;
|
use crate::location;
|
||||||
use crate::message::*;
|
use crate::message::{self, Message};
|
||||||
use crate::param::*;
|
use crate::param::*;
|
||||||
use crate::stock::StockMessage;
|
use crate::stock::StockMessage;
|
||||||
use crate::x::*;
|
use crate::x::*;
|
||||||
@@ -115,7 +115,7 @@ pub unsafe fn dc_mimefactory_load_msg(
|
|||||||
) -> Result<MimeFactory, Error> {
|
) -> Result<MimeFactory, Error> {
|
||||||
ensure!(msg_id > DC_CHAT_ID_LAST_SPECIAL, "Invalid chat id");
|
ensure!(msg_id > DC_CHAT_ID_LAST_SPECIAL, "Invalid chat id");
|
||||||
|
|
||||||
let msg = dc_msg_load_from_db(context, msg_id)?;
|
let msg = Message::load_from_db(context, msg_id)?;
|
||||||
let chat = Chat::load_from_db(context, msg.chat_id)?;
|
let chat = Chat::load_from_db(context, msg.chat_id)?;
|
||||||
let mut factory = MimeFactory::new(context, msg);
|
let mut factory = MimeFactory::new(context, msg);
|
||||||
factory.chat = Some(chat);
|
factory.chat = Some(chat);
|
||||||
@@ -239,7 +239,7 @@ pub unsafe fn dc_mimefactory_load_msg(
|
|||||||
factory.loaded = Loaded::Message;
|
factory.loaded = Loaded::Message;
|
||||||
factory.timestamp = factory.msg.timestamp_sort;
|
factory.timestamp = factory.msg.timestamp_sort;
|
||||||
factory.rfc724_mid = factory.msg.rfc724_mid.clone();
|
factory.rfc724_mid = factory.msg.rfc724_mid.clone();
|
||||||
factory.increation = dc_msg_is_increation(&factory.msg);
|
factory.increation = factory.msg.is_increation();
|
||||||
|
|
||||||
Ok(factory)
|
Ok(factory)
|
||||||
}
|
}
|
||||||
@@ -285,7 +285,7 @@ pub unsafe fn dc_mimefactory_load_mdn<'a>(
|
|||||||
bail!("MDNs disabled ")
|
bail!("MDNs disabled ")
|
||||||
}
|
}
|
||||||
|
|
||||||
let msg = dc_msg_load_from_db(context, msg_id)?;
|
let msg = Message::load_from_db(context, msg_id)?;
|
||||||
let mut factory = MimeFactory::new(context, msg);
|
let mut factory = MimeFactory::new(context, msg);
|
||||||
let contact = Contact::load_from_db(factory.context, factory.msg.from_id)?;
|
let contact = Contact::load_from_db(factory.context, factory.msg.from_id)?;
|
||||||
|
|
||||||
@@ -705,7 +705,7 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut MimeFactory
|
|||||||
|
|
||||||
if let Some(grpimage) = grpimage {
|
if let Some(grpimage) = grpimage {
|
||||||
info!(factory.context, "setting group image '{}'", grpimage);
|
info!(factory.context, "setting group image '{}'", grpimage);
|
||||||
let mut meta = dc_msg_new_untyped();
|
let mut meta = Message::default();
|
||||||
meta.type_0 = Viewtype::Image;
|
meta.type_0 = Viewtype::Image;
|
||||||
meta.param.set(Param::File, grpimage);
|
meta.param.set(Param::File, grpimage);
|
||||||
|
|
||||||
@@ -917,7 +917,7 @@ pub unsafe fn dc_mimefactory_render(context: &Context, factory: &mut MimeFactory
|
|||||||
.stock_str(StockMessage::EncryptedMsg)
|
.stock_str(StockMessage::EncryptedMsg)
|
||||||
.into_owned()
|
.into_owned()
|
||||||
} else {
|
} else {
|
||||||
to_string(dc_msg_get_summarytext(context, &mut factory.msg, 32))
|
to_string(factory.msg.get_summarytext(context, 32))
|
||||||
};
|
};
|
||||||
let p2 = factory
|
let p2 = factory
|
||||||
.context
|
.context
|
||||||
@@ -1040,7 +1040,7 @@ unsafe fn get_subject(
|
|||||||
let ret: *mut libc::c_char;
|
let ret: *mut libc::c_char;
|
||||||
|
|
||||||
let raw_subject =
|
let raw_subject =
|
||||||
dc_msg_get_summarytext_by_raw(msg.type_0, msg.text.as_ref(), &mut msg.param, 32, context);
|
message::get_summarytext_by_raw(msg.type_0, msg.text.as_ref(), &mut msg.param, 32, context);
|
||||||
|
|
||||||
let fwd = if 0 != afwd_email { "Fwd: " } else { "" };
|
let fwd = if 0 != afwd_email { "Fwd: " } else { "" };
|
||||||
if msg.param.get_cmd() == SystemMessage::AutocryptSetupMessage {
|
if msg.param.get_cmd() == SystemMessage::AutocryptSetupMessage {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ use crate::error::Result;
|
|||||||
use crate::events::Event;
|
use crate::events::Event;
|
||||||
use crate::job::*;
|
use crate::job::*;
|
||||||
use crate::location;
|
use crate::location;
|
||||||
use crate::message::*;
|
use crate::message::{self, MessageState};
|
||||||
use crate::param::*;
|
use crate::param::*;
|
||||||
use crate::peerstate::*;
|
use crate::peerstate::*;
|
||||||
use crate::securejoin::handle_securejoin_handshake;
|
use crate::securejoin::handle_securejoin_handshake;
|
||||||
@@ -354,14 +354,14 @@ unsafe fn add_parts(
|
|||||||
let mut old_server_folder = std::ptr::null_mut();
|
let mut old_server_folder = std::ptr::null_mut();
|
||||||
let mut old_server_uid = 0;
|
let mut old_server_uid = 0;
|
||||||
|
|
||||||
if 0 != dc_rfc724_mid_exists(
|
if 0 != message::rfc724_mid_exists(
|
||||||
context,
|
context,
|
||||||
&rfc724_mid,
|
&rfc724_mid,
|
||||||
&mut old_server_folder,
|
&mut old_server_folder,
|
||||||
&mut old_server_uid,
|
&mut old_server_uid,
|
||||||
) {
|
) {
|
||||||
if as_str(old_server_folder) != server_folder.as_ref() || old_server_uid != server_uid {
|
if as_str(old_server_folder) != server_folder.as_ref() || old_server_uid != server_uid {
|
||||||
dc_update_server_uid(context, &rfc724_mid, server_folder.as_ref(), server_uid);
|
message::update_server_uid(context, &rfc724_mid, server_folder.as_ref(), server_uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(old_server_folder.cast());
|
free(old_server_folder.cast());
|
||||||
@@ -840,7 +840,7 @@ unsafe fn handle_reports(
|
|||||||
let mut chat_id_0 = 0;
|
let mut chat_id_0 = 0;
|
||||||
let mut msg_id = 0;
|
let mut msg_id = 0;
|
||||||
|
|
||||||
if 0 != dc_mdn_from_ext(
|
if 0 != message::mdn_from_ext(
|
||||||
context,
|
context,
|
||||||
from_id,
|
from_id,
|
||||||
as_str(rfc724_mid_0),
|
as_str(rfc724_mid_0),
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ use crate::dc_tools::*;
|
|||||||
use crate::events::Event;
|
use crate::events::Event;
|
||||||
use crate::job::{job_add, Action};
|
use crate::job::{job_add, Action};
|
||||||
use crate::login_param::LoginParam;
|
use crate::login_param::LoginParam;
|
||||||
use crate::message::{dc_rfc724_mid_exists, dc_update_msg_move_state, dc_update_server_uid};
|
use crate::message::{self, update_msg_move_state, update_server_uid};
|
||||||
use crate::oauth2::dc_get_oauth2_access_token;
|
use crate::oauth2::dc_get_oauth2_access_token;
|
||||||
use crate::param::Params;
|
use crate::param::Params;
|
||||||
|
|
||||||
@@ -1652,7 +1652,7 @@ unsafe fn precheck_imf(
|
|||||||
let mut old_server_folder: *mut libc::c_char = ptr::null_mut();
|
let mut old_server_folder: *mut libc::c_char = ptr::null_mut();
|
||||||
let mut old_server_uid: u32 = 0i32 as u32;
|
let mut old_server_uid: u32 = 0i32 as u32;
|
||||||
let mut mark_seen: libc::c_int = 0i32;
|
let mut mark_seen: libc::c_int = 0i32;
|
||||||
msg_id = dc_rfc724_mid_exists(
|
msg_id = message::rfc724_mid_exists(
|
||||||
context,
|
context,
|
||||||
&rfc724_mid,
|
&rfc724_mid,
|
||||||
&mut old_server_folder,
|
&mut old_server_folder,
|
||||||
@@ -1667,10 +1667,10 @@ unsafe fn precheck_imf(
|
|||||||
mark_seen = 1i32
|
mark_seen = 1i32
|
||||||
} else if as_str(old_server_folder) != server_folder {
|
} else if as_str(old_server_folder) != server_folder {
|
||||||
info!(context, "[move] detected moved message {}", rfc724_mid,);
|
info!(context, "[move] detected moved message {}", rfc724_mid,);
|
||||||
dc_update_msg_move_state(context, &rfc724_mid, MoveState::Stay);
|
update_msg_move_state(context, &rfc724_mid, MoveState::Stay);
|
||||||
}
|
}
|
||||||
if as_str(old_server_folder) != server_folder || old_server_uid != server_uid {
|
if as_str(old_server_folder) != server_folder || old_server_uid != server_uid {
|
||||||
dc_update_server_uid(context, &rfc724_mid, server_folder, server_uid);
|
update_server_uid(context, &rfc724_mid, server_folder, server_uid);
|
||||||
}
|
}
|
||||||
context.do_heuristics_moves(server_folder, msg_id);
|
context.do_heuristics_moves(server_folder, msg_id);
|
||||||
if 0 != mark_seen {
|
if 0 != mark_seen {
|
||||||
|
|||||||
33
src/job.rs
33
src/job.rs
@@ -16,7 +16,7 @@ use crate::events::Event;
|
|||||||
use crate::imap::*;
|
use crate::imap::*;
|
||||||
use crate::location;
|
use crate::location;
|
||||||
use crate::login_param::LoginParam;
|
use crate::login_param::LoginParam;
|
||||||
use crate::message::*;
|
use crate::message::{self, Message, MessageState};
|
||||||
use crate::param::*;
|
use crate::param::*;
|
||||||
use crate::sql;
|
use crate::sql;
|
||||||
use crate::x::*;
|
use crate::x::*;
|
||||||
@@ -156,7 +156,7 @@ impl Job {
|
|||||||
/* if there is a msg-id and it does not exist in the db, cancel sending.
|
/* if there is a msg-id and it does not exist in the db, cancel sending.
|
||||||
this happends if dc_delete_msgs() was called
|
this happends if dc_delete_msgs() was called
|
||||||
before the generated mime was sent out */
|
before the generated mime was sent out */
|
||||||
if 0 != self.foreign_id && !dc_msg_exists(context, self.foreign_id) {
|
if 0 != self.foreign_id && !message::exists(context, self.foreign_id) {
|
||||||
warn!(
|
warn!(
|
||||||
context,
|
context,
|
||||||
"Message {} for job {} does not exist", self.foreign_id, self.job_id,
|
"Message {} for job {} does not exist", self.foreign_id, self.job_id,
|
||||||
@@ -175,7 +175,7 @@ impl Job {
|
|||||||
} else {
|
} else {
|
||||||
dc_delete_file(context, filename);
|
dc_delete_file(context, filename);
|
||||||
if 0 != self.foreign_id {
|
if 0 != self.foreign_id {
|
||||||
dc_update_msg_state(
|
message::update_msg_state(
|
||||||
context,
|
context,
|
||||||
self.foreign_id,
|
self.foreign_id,
|
||||||
MessageState::OutDelivered,
|
MessageState::OutDelivered,
|
||||||
@@ -226,7 +226,7 @@ impl Job {
|
|||||||
ok_to_continue = true;
|
ok_to_continue = true;
|
||||||
}
|
}
|
||||||
if ok_to_continue {
|
if ok_to_continue {
|
||||||
if let Ok(msg) = dc_msg_load_from_db(context, self.foreign_id) {
|
if let Ok(msg) = Message::load_from_db(context, self.foreign_id) {
|
||||||
if context
|
if context
|
||||||
.sql
|
.sql
|
||||||
.get_config_int(context, "folders_configured")
|
.get_config_int(context, "folders_configured")
|
||||||
@@ -251,7 +251,12 @@ impl Job {
|
|||||||
self.try_again_later(3i32, None);
|
self.try_again_later(3i32, None);
|
||||||
}
|
}
|
||||||
ImapResult::Success => {
|
ImapResult::Success => {
|
||||||
dc_update_server_uid(context, &msg.rfc724_mid, &dest_folder, dest_uid);
|
message::update_server_uid(
|
||||||
|
context,
|
||||||
|
&msg.rfc724_mid,
|
||||||
|
&dest_folder,
|
||||||
|
dest_uid,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
ImapResult::Failed | ImapResult::AlreadyDone => {}
|
ImapResult::Failed | ImapResult::AlreadyDone => {}
|
||||||
}
|
}
|
||||||
@@ -265,11 +270,11 @@ impl Job {
|
|||||||
let mut delete_from_server = 1;
|
let mut delete_from_server = 1;
|
||||||
let inbox = context.inbox.read().unwrap();
|
let inbox = context.inbox.read().unwrap();
|
||||||
|
|
||||||
if let Ok(mut msg) = dc_msg_load_from_db(context, self.foreign_id) {
|
if let Ok(mut msg) = Message::load_from_db(context, self.foreign_id) {
|
||||||
if !msg.rfc724_mid.is_empty() {
|
if !msg.rfc724_mid.is_empty() {
|
||||||
let ok_to_continue1;
|
let ok_to_continue1;
|
||||||
/* eg. device messages have no Message-ID */
|
/* eg. device messages have no Message-ID */
|
||||||
if dc_rfc724_mid_cnt(context, &msg.rfc724_mid) != 1 {
|
if message::rfc724_mid_cnt(context, &msg.rfc724_mid) != 1 {
|
||||||
info!(
|
info!(
|
||||||
context,
|
context,
|
||||||
"The message is deleted from the server when all parts are deleted.",
|
"The message is deleted from the server when all parts are deleted.",
|
||||||
@@ -307,7 +312,7 @@ impl Job {
|
|||||||
ok_to_continue1 = true;
|
ok_to_continue1 = true;
|
||||||
}
|
}
|
||||||
if ok_to_continue1 {
|
if ok_to_continue1 {
|
||||||
dc_delete_msg_from_db(context, msg.id);
|
Message::delete_from_db(context, msg.id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -330,7 +335,7 @@ impl Job {
|
|||||||
ok_to_continue = true;
|
ok_to_continue = true;
|
||||||
}
|
}
|
||||||
if ok_to_continue {
|
if ok_to_continue {
|
||||||
if let Ok(msg) = dc_msg_load_from_db(context, self.foreign_id) {
|
if let Ok(msg) = Message::load_from_db(context, self.foreign_id) {
|
||||||
let server_folder = msg.server_folder.as_ref().unwrap();
|
let server_folder = msg.server_folder.as_ref().unwrap();
|
||||||
match inbox.set_seen(context, server_folder, msg.server_uid) {
|
match inbox.set_seen(context, server_folder, msg.server_uid) {
|
||||||
ImapResult::Failed => {}
|
ImapResult::Failed => {}
|
||||||
@@ -671,13 +676,13 @@ pub unsafe fn job_send_msg(context: &Context, msg_id: u32) -> libc::c_int {
|
|||||||
mimefactory.msg.param.set_int(Param::Height, height as i32);
|
mimefactory.msg.param.set_int(Param::Height, height as i32);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dc_msg_save_param_to_disk(context, &mut mimefactory.msg);
|
mimefactory.msg.save_param_to_disk(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* create message */
|
/* create message */
|
||||||
if !dc_mimefactory_render(context, &mut mimefactory) {
|
if !dc_mimefactory_render(context, &mut mimefactory) {
|
||||||
dc_set_msg_failed(context, msg_id, as_opt_str(mimefactory.error));
|
message::set_msg_failed(context, msg_id, as_opt_str(mimefactory.error));
|
||||||
} else if 0
|
} else if 0
|
||||||
!= mimefactory
|
!= mimefactory
|
||||||
.msg
|
.msg
|
||||||
@@ -692,7 +697,7 @@ pub unsafe fn job_send_msg(context: &Context, msg_id: u32) -> libc::c_int {
|
|||||||
msg_id,
|
msg_id,
|
||||||
mimefactory.msg.param.get_int(Param::GuranteeE2ee),
|
mimefactory.msg.param.get_int(Param::GuranteeE2ee),
|
||||||
);
|
);
|
||||||
dc_set_msg_failed(
|
message::set_msg_failed(
|
||||||
context,
|
context,
|
||||||
msg_id,
|
msg_id,
|
||||||
Some("End-to-end-encryption unavailable unexpectedly."),
|
Some("End-to-end-encryption unavailable unexpectedly."),
|
||||||
@@ -739,7 +744,7 @@ pub unsafe fn job_send_msg(context: &Context, msg_id: u32) -> libc::c_int {
|
|||||||
== 0
|
== 0
|
||||||
{
|
{
|
||||||
mimefactory.msg.param.set_int(Param::GuranteeE2ee, 1);
|
mimefactory.msg.param.set_int(Param::GuranteeE2ee, 1);
|
||||||
dc_msg_save_param_to_disk(context, &mut mimefactory.msg);
|
mimefactory.msg.save_param_to_disk(context);
|
||||||
}
|
}
|
||||||
success = add_smtp_job(context, Action::SendMsgToSmtp, &mut mimefactory);
|
success = add_smtp_job(context, Action::SendMsgToSmtp, &mut mimefactory);
|
||||||
}
|
}
|
||||||
@@ -940,7 +945,7 @@ fn job_perform(context: &Context, thread: Thread, probe_network: bool) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if job.action == Action::SendMsgToSmtp {
|
if job.action == Action::SendMsgToSmtp {
|
||||||
dc_set_msg_failed(context, job.foreign_id, job.pending_error.as_ref());
|
message::set_msg_failed(context, job.foreign_id, job.pending_error.as_ref());
|
||||||
}
|
}
|
||||||
job.delete(context);
|
job.delete(context);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ use crate::dc_tools::*;
|
|||||||
use crate::error::Error;
|
use crate::error::Error;
|
||||||
use crate::events::Event;
|
use crate::events::Event;
|
||||||
use crate::job::*;
|
use crate::job::*;
|
||||||
use crate::message::*;
|
use crate::message::Message;
|
||||||
use crate::param::*;
|
use crate::param::*;
|
||||||
use crate::sql;
|
use crate::sql;
|
||||||
use crate::stock::StockMessage;
|
use crate::stock::StockMessage;
|
||||||
@@ -214,7 +214,7 @@ pub fn send_locations_to_chat(context: &Context, chat_id: u32, seconds: i64) {
|
|||||||
.is_ok()
|
.is_ok()
|
||||||
{
|
{
|
||||||
if 0 != seconds && !is_sending_locations_before {
|
if 0 != seconds && !is_sending_locations_before {
|
||||||
msg = dc_msg_new(Viewtype::Text);
|
msg = Message::new(Viewtype::Text);
|
||||||
msg.text =
|
msg.text =
|
||||||
Some(context.stock_system_msg(StockMessage::MsgLocationEnabled, "", "", 0));
|
Some(context.stock_system_msg(StockMessage::MsgLocationEnabled, "", "", 0));
|
||||||
msg.param.set_int(Param::Cmd, 8);
|
msg.param.set_int(Param::Cmd, 8);
|
||||||
@@ -601,7 +601,7 @@ pub fn job_do_DC_JOB_MAYBE_SEND_LOCATIONS(context: &Context, _job: &Job) {
|
|||||||
// the easiest way to determine this, is to check for an empty message queue.
|
// the easiest way to determine this, is to check for an empty message queue.
|
||||||
// (might not be 100%, however, as positions are sent combined later
|
// (might not be 100%, however, as positions are sent combined later
|
||||||
// and dc_set_location() is typically called periodically, this is ok)
|
// and dc_set_location() is typically called periodically, this is ok)
|
||||||
let mut msg = dc_msg_new(Viewtype::Text);
|
let mut msg = Message::new(Viewtype::Text);
|
||||||
msg.hidden = true;
|
msg.hidden = true;
|
||||||
msg.param.set_int(Param::Cmd, 9);
|
msg.param.set_int(Param::Cmd, 9);
|
||||||
Some((chat_id, msg))
|
Some((chat_id, msg))
|
||||||
|
|||||||
991
src/message.rs
991
src/message.rs
File diff suppressed because it is too large
Load Diff
@@ -13,7 +13,7 @@ use crate::error::Error;
|
|||||||
use crate::events::Event;
|
use crate::events::Event;
|
||||||
use crate::key::*;
|
use crate::key::*;
|
||||||
use crate::lot::LotState;
|
use crate::lot::LotState;
|
||||||
use crate::message::*;
|
use crate::message::Message;
|
||||||
use crate::param::*;
|
use crate::param::*;
|
||||||
use crate::peerstate::*;
|
use crate::peerstate::*;
|
||||||
use crate::qr::check_qr;
|
use crate::qr::check_qr;
|
||||||
@@ -266,7 +266,7 @@ fn send_handshake_msg(
|
|||||||
fingerprint: Option<String>,
|
fingerprint: Option<String>,
|
||||||
grpid: impl AsRef<str>,
|
grpid: impl AsRef<str>,
|
||||||
) {
|
) {
|
||||||
let mut msg = dc_msg_new_untyped();
|
let mut msg = Message::default();
|
||||||
msg.type_0 = Viewtype::Text;
|
msg.type_0 = Viewtype::Text;
|
||||||
msg.text = Some(format!("Secure-Join: {}", step));
|
msg.text = Some(format!("Secure-Join: {}", step));
|
||||||
msg.hidden = true;
|
msg.hidden = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user