fix: Update the channel title after joining if the QR code included a wrong title

This commit is contained in:
Hocuri
2026-05-20 16:47:43 +02:00
parent 8ac6c8a4aa
commit 60334b701b
2 changed files with 10 additions and 8 deletions

View File

@@ -3660,17 +3660,20 @@ pub(crate) async fn create_out_broadcast_ex(
|row| row.get(0), |row| row.get(0),
)?; )?;
ensure!(cnt == 0, "{cnt} chats exist with grpid {grpid}"); ensure!(cnt == 0, "{cnt} chats exist with grpid {grpid}");
let mut params: Params = Params::new();
params.update_timestamp(Param::GroupNameTimestamp, time())?;
t.execute( t.execute(
"INSERT INTO chats "INSERT INTO chats
(type, name, name_normalized, grpid, created_timestamp) (type, name, name_normalized, grpid, created_timestamp, param)
VALUES(?, ?, ?, ?, ?)", VALUES(?, ?, ?, ?, ?, ?)",
( (
Chattype::OutBroadcast, Chattype::OutBroadcast,
&chat_name, &chat_name,
normalize_text(&chat_name), normalize_text(&chat_name),
&grpid, &grpid,
timestamp, timestamp,
params.to_string(),
), ),
)?; )?;
let chat_id = ChatId::new(t.last_insert_rowid().try_into()?); let chat_id = ChatId::new(t.last_insert_rowid().try_into()?);

View File

@@ -2922,17 +2922,16 @@ async fn test_broadcast_change_name() -> Result<()> {
let fiona = &tcm.fiona().await; let fiona = &tcm.fiona().await;
let broadcast_id = create_broadcast(alice, "Channel".to_string()).await?; let broadcast_id = create_broadcast(alice, "Channel".to_string()).await?;
let qr = get_securejoin_qr(alice, Some(broadcast_id)).await.unwrap(); let mut qr = get_securejoin_qr(alice, Some(broadcast_id)).await.unwrap();
// Something goes wrong with the title, e.g. maybe it gets ellipsized
tcm.section("Alice changes the chat name after creating the QR code, but before someone joins"); // Note that the title always comes at the end for human readability
set_chat_name(alice, broadcast_id, "Updated name after creating QR code").await?; qr += "+wrong+title";
alice.pop_sent_msg().await;
{ {
tcm.section("Alice invites Bob to her channel"); tcm.section("Alice invites Bob to her channel");
let bob_chat_id = tcm.exec_securejoin_qr(bob, alice, &qr).await; let bob_chat_id = tcm.exec_securejoin_qr(bob, alice, &qr).await;
let bob_chat = Chat::load_from_db(bob, bob_chat_id).await?; let bob_chat = Chat::load_from_db(bob, bob_chat_id).await?;
assert_eq!(bob_chat.name, "Updated name after creating QR code"); assert_eq!(bob_chat.name, "Channel");
} }
tcm.section("Alice invites Fiona to her channel"); tcm.section("Alice invites Fiona to her channel");