|
|
|
@ -4,7 +4,7 @@ use gtk::{glib, CompositeTemplate}; |
|
|
|
use sourceview::prelude::*; |
|
|
|
use sourceview::prelude::*; |
|
|
|
|
|
|
|
|
|
|
|
use crate::{ |
|
|
|
use crate::{ |
|
|
|
components::{CopyableRow, ToastableDialog}, |
|
|
|
components::{CopyableRow, ToastableDialog, UserProfileDialog}, |
|
|
|
prelude::*, |
|
|
|
prelude::*, |
|
|
|
session::model::Event, |
|
|
|
session::model::Event, |
|
|
|
toast, utils, |
|
|
|
toast, utils, |
|
|
|
@ -82,6 +82,18 @@ mod imp { |
|
|
|
self.navigation_view.push_by_tag("source"); |
|
|
|
self.navigation_view.push_by_tag("source"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// Open the profile of the sender.
|
|
|
|
|
|
|
|
#[template_callback] |
|
|
|
|
|
|
|
fn open_sender_profile(&self) { |
|
|
|
|
|
|
|
let Some(sender) = self.event.borrow().as_ref().map(Event::sender) else { |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let dialog = UserProfileDialog::new(); |
|
|
|
|
|
|
|
dialog.set_room_member(sender); |
|
|
|
|
|
|
|
dialog.present(Some(&*self.obj())); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// View the original source.
|
|
|
|
/// View the original source.
|
|
|
|
#[template_callback] |
|
|
|
#[template_callback] |
|
|
|
fn show_original_source(&self) { |
|
|
|
fn show_original_source(&self) { |
|
|
|
|