mirror of
https://github.com/chatmail/core.git
synced 2026-05-22 08:16:32 +03:00
globally search for media (#3528)
* get_chat_media() from any chat similar to search_msgs() * do not return hidden media this fixes the issue that drafts and other hidden messages pop up in the gallery. * add a test for get_chat_media() * use None instead of ChatId::new(0) * clarify scope of 'any' in get_chat_media() * adapt json rpc to changed get_chat_media() * jsonrpc: chat_get_media turn chat_id into option and also still allow `0` for dev convenience (though I'm not totally sure if thats the right decision) * cargo fmt Co-authored-by: Simon Laux <mobile.info@simonlaux.de>
This commit is contained in:
@@ -1263,7 +1263,7 @@ void dc_marknoticed_chat (dc_context_t* context, uint32_t ch
|
||||
|
||||
|
||||
/**
|
||||
* Returns all message IDs of the given types in a chat.
|
||||
* Returns all message IDs of the given types in a given chat or any chat.
|
||||
* Typically used to show a gallery.
|
||||
* The result must be dc_array_unref()'d
|
||||
*
|
||||
@@ -1273,7 +1273,8 @@ void dc_marknoticed_chat (dc_context_t* context, uint32_t ch
|
||||
*
|
||||
* @memberof dc_context_t
|
||||
* @param context The context object as returned from dc_context_new().
|
||||
* @param chat_id The chat ID to get all messages with media from.
|
||||
* @param chat_id >0: get messages with media from this chat ID.
|
||||
* 0: get messages with media from any chat of the currently used account.
|
||||
* @param msg_type Specify a message type to query here, one of the @ref DC_MSG constants.
|
||||
* @param msg_type2 Alternative message type to search for. 0 to skip.
|
||||
* @param msg_type3 Alternative message type to search for. 0 to skip.
|
||||
@@ -1284,7 +1285,6 @@ dc_array_t* dc_get_chat_media (dc_context_t* context, uint32_t ch
|
||||
|
||||
/**
|
||||
* Search next/previous message based on a given message and a list of types.
|
||||
* The
|
||||
* Typically used to implement the "next" and "previous" buttons
|
||||
* in a gallery or in a media player.
|
||||
*
|
||||
|
||||
@@ -1208,6 +1208,11 @@ pub unsafe extern "C" fn dc_get_chat_media(
|
||||
return ptr::null_mut();
|
||||
}
|
||||
let ctx = &*context;
|
||||
let chat_id = if chat_id == 0 {
|
||||
None
|
||||
} else {
|
||||
Some(ChatId::new(chat_id))
|
||||
};
|
||||
let msg_type = from_prim(msg_type).expect(&format!("invalid msg_type = {}", msg_type));
|
||||
let or_msg_type2 =
|
||||
from_prim(or_msg_type2).expect(&format!("incorrect or_msg_type2 = {}", or_msg_type2));
|
||||
@@ -1216,16 +1221,10 @@ pub unsafe extern "C" fn dc_get_chat_media(
|
||||
|
||||
block_on(async move {
|
||||
Box::into_raw(Box::new(
|
||||
chat::get_chat_media(
|
||||
ctx,
|
||||
ChatId::new(chat_id),
|
||||
msg_type,
|
||||
or_msg_type2,
|
||||
or_msg_type3,
|
||||
)
|
||||
.await
|
||||
.unwrap_or_log_default(ctx, "Failed get_chat_media")
|
||||
.into(),
|
||||
chat::get_chat_media(ctx, chat_id, msg_type, or_msg_type2, or_msg_type3)
|
||||
.await
|
||||
.unwrap_or_log_default(ctx, "Failed get_chat_media")
|
||||
.into(),
|
||||
))
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user