pub trait PromptHandler: Send + Sync {
// Required methods
fn prompt(
&self,
plugin: &str,
capabilities: &Capabilities,
) -> Result<PromptResult, PromptError>;
fn is_interactive(&self) -> bool;
// Provided method
fn prompt_escalation(
&self,
plugin: &str,
old_caps: &Capabilities,
new_caps: &Capabilities,
) -> Result<PromptResult, PromptError> { ... }
}Expand description
Trait for handling permission prompts
Framework users implement this trait to customize how permission prompts are displayed and how user input is collected.
§Example
use sen_plugin_host::permission::{PromptHandler, PromptResult, PromptError};
use sen_plugin_api::Capabilities;
struct GuiPromptHandler {
// GUI framework handle
}
impl PromptHandler for GuiPromptHandler {
fn prompt(
&self,
plugin: &str,
capabilities: &Capabilities,
) -> Result<PromptResult, PromptError> {
// Show GUI dialog
// For now, just approve
Ok(PromptResult::AllowOnce)
}
fn is_interactive(&self) -> bool {
true
}
}Required Methods§
Sourcefn prompt(
&self,
plugin: &str,
capabilities: &Capabilities,
) -> Result<PromptResult, PromptError>
fn prompt( &self, plugin: &str, capabilities: &Capabilities, ) -> Result<PromptResult, PromptError>
Display a permission prompt and get user’s decision
Sourcefn is_interactive(&self) -> bool
fn is_interactive(&self) -> bool
Check if this handler supports interactive prompts
Provided Methods§
Sourcefn prompt_escalation(
&self,
plugin: &str,
old_caps: &Capabilities,
new_caps: &Capabilities,
) -> Result<PromptResult, PromptError>
fn prompt_escalation( &self, plugin: &str, old_caps: &Capabilities, new_caps: &Capabilities, ) -> Result<PromptResult, PromptError>
Display an escalation warning and get user’s decision