From e9a9291ce86e7ff90b0e13641a4f217bfb4c6fa8 Mon Sep 17 00:00:00 2001 From: jikstra Date: Tue, 14 Jan 2020 09:18:57 +0100 Subject: [PATCH] add dc_get_chatlist_json method to ffi, fix cargo error for reqwest --- deltachat-ffi/src/lib.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/deltachat-ffi/src/lib.rs b/deltachat-ffi/src/lib.rs index f63feef7d..de23a9f33 100644 --- a/deltachat-ffi/src/lib.rs +++ b/deltachat-ffi/src/lib.rs @@ -698,6 +698,40 @@ pub unsafe extern "C" fn dc_get_chatlist( .unwrap_or_else(|_| ptr::null_mut()) } +#[no_mangle] +pub unsafe extern "C" fn dc_get_chatlist_json( + context: *mut dc_context_t, + flags: libc::c_int, + query_str: *const libc::c_char, + query_id: u32, +) -> *mut libc::c_char { + if context.is_null() { + eprintln!("ignoring careless call to dc_get_chatlist()"); + return ptr::null_mut(); + } + let ffi_context = &*context; + let qs = to_opt_string_lossy(query_str); + + let qi = if query_id == 0 { None } else { Some(query_id) }; + ffi_context + .with_inner(|ctx| { + match chatlist::Chatlist::try_load( + ctx, + flags as usize, + qs.as_ref().map(|x| x.as_str()), + qi, + ) { + Ok(list) => { + list.to_json() + } + Err(_) => ptr::null_mut(), + } + }) + .unwrap_or_else(|_| ptr::null_mut()) +} + + + #[no_mangle] pub unsafe extern "C" fn dc_create_chat_by_msg_id(context: *mut dc_context_t, msg_id: u32) -> u32 { if context.is_null() {