use std::collections::HashMap;
pub trait PluginServiceBridge: Send + Sync + 'static {
fn as_any(&self) -> &dyn std::any::Any;
fn translate(&self, plugin_name: &str, key: &str, args: &HashMap<String, String>) -> String;
fn current_locale(&self) -> String;
fn set_js_execution_state(&self, state: String);
fn clear_js_execution_state(&self);
fn get_theme_schema(&self) -> serde_json::Value;
fn get_builtin_themes(&self) -> serde_json::Value;
fn register_plugin_strings(
&self,
_plugin_name: &str,
_strings: HashMap<String, HashMap<String, String>>,
) {
}
fn unregister_plugin_strings(&self, _plugin_name: &str) {}
fn register_command(&self, command: crate::command::Command);
fn unregister_command(&self, name: &str);
fn unregister_commands_by_prefix(&self, prefix: &str);
fn unregister_commands_by_plugin(&self, plugin_name: &str);
fn plugins_dir(&self) -> std::path::PathBuf;
fn config_dir(&self) -> std::path::PathBuf;
}
pub struct NoopServiceBridge;
impl PluginServiceBridge for NoopServiceBridge {
fn as_any(&self) -> &dyn std::any::Any {
self
}
fn translate(&self, _plugin_name: &str, key: &str, _args: &HashMap<String, String>) -> String {
key.to_string()
}
fn current_locale(&self) -> String {
"en".to_string()
}
fn set_js_execution_state(&self, _state: String) {}
fn clear_js_execution_state(&self) {}
fn get_theme_schema(&self) -> serde_json::Value {
serde_json::Value::Null
}
fn get_builtin_themes(&self) -> serde_json::Value {
serde_json::Value::Null
}
fn register_plugin_strings(
&self,
_plugin_name: &str,
_strings: HashMap<String, HashMap<String, String>>,
) {
}
fn unregister_plugin_strings(&self, _plugin_name: &str) {}
fn register_command(&self, _command: crate::command::Command) {}
fn unregister_command(&self, _name: &str) {}
fn unregister_commands_by_prefix(&self, _prefix: &str) {}
fn unregister_commands_by_plugin(&self, _plugin_name: &str) {}
fn plugins_dir(&self) -> std::path::PathBuf {
std::path::PathBuf::from("/tmp/plugins")
}
fn config_dir(&self) -> std::path::PathBuf {
std::path::PathBuf::from("/tmp/config")
}
}