use std::rc::Rc;
use teksilo_core::modal::{ModalCloseBehavior, ModalPresentation, ModalRequest};
use teksilo_core::widget::EventContext;
use crate::dialog::ModalContainer;
use crate::notification::NotificationArchiveModel;
use crate::notification::log::NotificationLog;
pub struct NotificationLogDialog;
impl NotificationLogDialog {
pub fn show(archive: Rc<NotificationArchiveModel>, ctx: &mut EventContext) {
Self::show_with(archive, ctx, |log| log);
}
pub fn show_with(
archive: Rc<NotificationArchiveModel>,
ctx: &mut EventContext,
configure: impl FnOnce(NotificationLog) -> NotificationLog + 'static,
) {
ctx.present_modal(
ModalRequest::deferred(move |tree| {
let log = configure(NotificationLog::new(archive));
tree.add(
ModalContainer::new(log)
.title(teksilo_i18n::tr_widget!(notifications_title()))
.min_width(640.0),
)
})
.presentation(ModalPresentation::Auto)
.close_behavior(ModalCloseBehavior::EscapeOrClickOutside)
.size(720, 520),
);
}
}