feat: implement photo albums (media groups) and persist account selection

Group photos with shared media_album_id into single album bubbles with
grid layout (up to 3x cols). Album navigation treats grouped photos as
one unit (j/k skip entire album). Persist selected account to
accounts.toml so it survives app restart.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Mikhail Kilin
2026-02-22 16:18:04 +03:00
parent 8bd08318bb
commit 78fe09bf11
18 changed files with 1011 additions and 30 deletions

View File

@@ -115,6 +115,7 @@ pub struct TestMessageBuilder {
reply_to: Option<ReplyInfo>,
forward_from: Option<ForwardInfo>,
reactions: Vec<ReactionInfo>,
media_album_id: i64,
}
impl TestMessageBuilder {
@@ -134,6 +135,7 @@ impl TestMessageBuilder {
reply_to: None,
forward_from: None,
reactions: vec![],
media_album_id: 0,
}
}
@@ -187,8 +189,13 @@ impl TestMessageBuilder {
self
}
pub fn media_album_id(mut self, id: i64) -> Self {
self.media_album_id = id;
self
}
pub fn build(self) -> MessageInfo {
MessageInfo::new(
let mut msg = MessageInfo::new(
MessageId::new(self.id),
self.sender_name,
self.is_outgoing,
@@ -203,7 +210,9 @@ impl TestMessageBuilder {
self.reply_to,
self.forward_from,
self.reactions,
)
);
msg.metadata.media_album_id = self.media_album_id;
msg
}
}