Browse Source

global-account-data: Be stricter about the private media preview setting

Currently, it would show media previews for non-public rooms, but it
is safer to show it for values that we know are private.
fractal-13
Kévin Commaille 7 months ago committed by Kévin Commaille
parent
commit
ee78895cca
  1. 7
      src/session/model/global_account_data.rs
  2. 2
      src/session/view/content/room_history/message_row/visual_media.rs

7
src/session/model/global_account_data.rs

@ -12,7 +12,7 @@ use tokio::task::AbortHandle;
use tracing::error;
use super::{Room, Session};
use crate::{spawn, spawn_tokio};
use crate::{session::model::JoinRuleValue, spawn, spawn_tokio};
/// We default the media previews setting to private.
const DEFAULT_MEDIA_PREVIEWS: MediaPreviews = MediaPreviews::Private;
@ -271,7 +271,10 @@ impl GlobalAccountData {
pub(crate) fn should_room_show_media_previews(&self, room: &Room) -> bool {
match &*self.imp().media_previews_enabled.borrow() {
MediaPreviews::Off => false,
MediaPreviews::Private => !room.join_rule().anyone_can_join(),
MediaPreviews::Private => matches!(
room.join_rule().value(),
JoinRuleValue::Invite | JoinRuleValue::RoomMembership
),
_ => true,
}
}

2
src/session/view/content/room_history/message_row/visual_media.rs

@ -475,7 +475,7 @@ mod imp {
return;
};
let join_rule_handler = room.join_rule().connect_anyone_can_join_notify(clone!(
let join_rule_handler = room.join_rule().connect_value_notify(clone!(
#[weak(rename_to = imp)]
self,
move |_| {

Loading…
Cancel
Save