Files
ELY-Browser/crates/ely_app/src/shell/site_permissions.rs
T

60 lines
1.9 KiB
Rust

use ely_domain::{SiteOrigin, SitePermissionDecision, SitePermissionFeature};
use gpui::Context;
use super::{ElyShell, ShellState};
impl ElyShell {
pub(super) fn set_site_permission(
&mut self,
origin: SiteOrigin,
feature: SitePermissionFeature,
decision: SitePermissionDecision,
cx: &mut Context<Self>,
) {
if let ShellState::Ready(core) = &mut self.state
&& core.set_site_permission(origin, feature, decision).is_ok()
{
cx.notify();
}
}
pub(super) fn revoke_site_permission(
&mut self,
origin: SiteOrigin,
feature: SitePermissionFeature,
cx: &mut Context<Self>,
) {
if let ShellState::Ready(core) = &mut self.state
&& core.revoke_site_permission(&origin, feature).is_ok()
{
cx.notify();
}
}
pub(super) fn request_clear_site_permissions_confirmation(&mut self, cx: &mut Context<Self>) {
if let ShellState::Ready(core) = &mut self.state
&& let Ok(snapshot) = core.snapshot()
{
self.site_permissions_clear_confirmation = Some(snapshot.active_profile_id);
cx.notify();
}
}
pub(super) fn cancel_clear_site_permissions_confirmation(&mut self, cx: &mut Context<Self>) {
self.site_permissions_clear_confirmation = None;
cx.notify();
}
pub(super) fn clear_active_profile_site_permissions(&mut self, cx: &mut Context<Self>) {
if let ShellState::Ready(core) = &mut self.state
&& let Ok(snapshot) = core.snapshot()
&& self.site_permissions_clear_confirmation.as_ref()
== Some(&snapshot.active_profile_id)
&& core.clear_active_profile_site_permissions().is_ok()
{
self.site_permissions_clear_confirmation = None;
cx.notify();
}
}
}