Expose pinned messages through iOS FFI

This commit is contained in:
Mikhail Kilin
2026-05-21 00:23:33 +03:00
parent 161cc343da
commit 4fd2a18ed9
5 changed files with 64 additions and 5 deletions

View File

@@ -218,6 +218,13 @@ impl<C: TdClientTrait> CoreSession<C> {
.collect())
}
pub async fn pinned_messages(&mut self, chat_id: ChatId) -> Result<Vec<CoreMessage>, String> {
self.client
.get_pinned_messages(chat_id)
.await
.map(|messages| messages.iter().map(CoreMessage::from).collect())
}
pub async fn copy_payload(
&mut self,
chat_id: ChatId,
@@ -907,6 +914,24 @@ mod tests {
);
}
#[tokio::test]
async fn pinned_messages_are_mapped_for_native_clients() {
let chat_id = ChatId::new(42);
let pinned = MessageBuilder::new(MessageId::new(10))
.sender_name("Alice")
.text("Pinned")
.build();
let mut client = FakeTdClient::new();
client.set_current_pinned_message(Some(pinned));
let mut session = CoreSession::new(client);
let pinned = session.pinned_messages(chat_id).await.unwrap();
assert_eq!(pinned.len(), 1);
assert_eq!(pinned[0].id, MessageId::new(10));
assert_eq!(pinned[0].text, "Pinned");
}
#[tokio::test]
async fn facade_delegates_auth_forward_reactions_and_downloads() {
let chat_id = ChatId::new(42);

View File

@@ -114,7 +114,13 @@ impl MessageClient for FakeTdClient {
}
async fn get_pinned_messages(&mut self, _chat_id: ChatId) -> Result<Vec<MessageInfo>, String> {
Ok(vec![])
Ok(self
.current_pinned_message
.lock()
.unwrap()
.clone()
.into_iter()
.collect())
}
async fn load_current_pinned_message(&mut self, _chat_id: ChatId) {}