Move local plugin install command into plugins_ext

This commit is contained in:
Gregory Schier
2026-03-01 16:42:13 -08:00
parent 2ca51125a4
commit f302dc39a2
5 changed files with 33 additions and 36 deletions

View File

@@ -37,8 +37,8 @@ use yaak_grpc::{Code, ServiceDefinition, serialize_message};
use yaak_mac_window::AppHandleMacWindowExt; use yaak_mac_window::AppHandleMacWindowExt;
use yaak_models::models::{ use yaak_models::models::{
AnyModel, CookieJar, Environment, GrpcConnection, GrpcConnectionState, GrpcEvent, AnyModel, CookieJar, Environment, GrpcConnection, GrpcConnectionState, GrpcEvent,
GrpcEventType, HttpRequest, HttpResponse, HttpResponseEvent, HttpResponseState, Plugin, GrpcEventType, HttpRequest, HttpResponse, HttpResponseEvent, HttpResponseState, Workspace,
PluginSource, Workspace, WorkspaceMeta, WorkspaceMeta,
}; };
use yaak_models::util::{BatchUpsertResult, UpdateSource, get_workspace_export_resources}; use yaak_models::util::{BatchUpsertResult, UpdateSource, get_workspace_export_resources};
use yaak_plugins::events::{ use yaak_plugins::events::{
@@ -1345,35 +1345,6 @@ async fn cmd_send_http_request<R: Runtime>(
Ok(r) Ok(r)
} }
#[tauri::command]
async fn cmd_install_plugin<R: Runtime>(
directory: &str,
url: Option<String>,
plugin_manager: State<'_, PluginManager>,
app_handle: AppHandle<R>,
window: WebviewWindow<R>,
) -> YaakResult<Plugin> {
let plugin = app_handle.db().upsert_plugin(
&Plugin {
directory: directory.into(),
url,
enabled: true,
source: PluginSource::Filesystem,
..Default::default()
},
&UpdateSource::from_window_label(window.label()),
)?;
plugin_manager
.add_plugin(
&PluginContext::new(Some(window.label().to_string()), window.workspace_id()),
&plugin,
)
.await?;
Ok(plugin)
}
#[tauri::command] #[tauri::command]
async fn cmd_reload_plugins<R: Runtime>( async fn cmd_reload_plugins<R: Runtime>(
app_handle: AppHandle<R>, app_handle: AppHandle<R>,
@@ -1658,7 +1629,6 @@ pub fn run() {
cmd_workspace_actions, cmd_workspace_actions,
cmd_folder_actions, cmd_folder_actions,
cmd_import_data, cmd_import_data,
cmd_install_plugin,
cmd_metadata, cmd_metadata,
cmd_new_child_window, cmd_new_child_window,
cmd_new_main_window, cmd_new_main_window,
@@ -1727,6 +1697,7 @@ pub fn run() {
git_ext::cmd_git_rm_remote, git_ext::cmd_git_rm_remote,
// //
// Plugin commands // Plugin commands
plugins_ext::cmd_plugins_install_from_directory,
plugins_ext::cmd_plugins_search, plugins_ext::cmd_plugins_search,
plugins_ext::cmd_plugins_install, plugins_ext::cmd_plugins_install,
plugins_ext::cmd_plugins_uninstall, plugins_ext::cmd_plugins_uninstall,

View File

@@ -22,7 +22,8 @@ use tauri::{
use tokio::sync::Mutex; use tokio::sync::Mutex;
use ts_rs::TS; use ts_rs::TS;
use yaak_api::yaak_api_client; use yaak_api::yaak_api_client;
use yaak_models::models::Plugin; use yaak_models::models::{Plugin, PluginSource};
use yaak_models::util::UpdateSource;
use yaak_plugins::api::{ use yaak_plugins::api::{
PluginNameVersion, PluginSearchResponse, PluginUpdatesResponse, check_plugin_updates, PluginNameVersion, PluginSearchResponse, PluginUpdatesResponse, check_plugin_updates,
search_plugins, search_plugins,
@@ -164,6 +165,28 @@ pub async fn cmd_plugins_install<R: Runtime>(
Ok(()) Ok(())
} }
#[command]
pub async fn cmd_plugins_install_from_directory<R: Runtime>(
window: WebviewWindow<R>,
directory: &str,
) -> Result<Plugin> {
let plugin = window.db().upsert_plugin(
&Plugin {
directory: directory.into(),
url: None,
enabled: true,
source: PluginSource::Filesystem,
..Default::default()
},
&UpdateSource::from_window_label(window.label()),
)?;
let plugin_manager = Arc::new((*window.state::<PluginManager>()).clone());
plugin_manager.add_plugin(&window.plugin_context(), &plugin).await?;
Ok(plugin)
}
#[command] #[command]
pub async fn cmd_plugins_uninstall<R: Runtime>( pub async fn cmd_plugins_uninstall<R: Runtime>(
plugin_id: &str, plugin_id: &str,

View File

@@ -24,3 +24,7 @@ export async function checkPluginUpdates() {
export async function updateAllPlugins() { export async function updateAllPlugins() {
return invoke<PluginNameVersion[]>('cmd_plugins_update_all', {}); return invoke<PluginNameVersion[]>('cmd_plugins_update_all', {});
} }
export async function installPluginFromDirectory(directory: string) {
return invoke<void>('cmd_plugins_install_from_directory', { directory });
}

View File

@@ -1,11 +1,11 @@
import { invokeCmd } from '../lib/tauri'; import { installPluginFromDirectory } from '@yaakapp-internal/plugins';
import { useFastMutation } from './useFastMutation'; import { useFastMutation } from './useFastMutation';
export function useInstallPlugin() { export function useInstallPlugin() {
return useFastMutation<void, unknown, string>({ return useFastMutation<void, unknown, string>({
mutationKey: ['install_plugin'], mutationKey: ['install_plugin'],
mutationFn: async (directory: string) => { mutationFn: async (directory: string) => {
await invokeCmd('cmd_install_plugin', { directory }); await installPluginFromDirectory(directory);
}, },
}); });
} }

View File

@@ -36,7 +36,6 @@ type TauriCmd =
| 'cmd_http_request_body' | 'cmd_http_request_body'
| 'cmd_http_response_body' | 'cmd_http_response_body'
| 'cmd_import_data' | 'cmd_import_data'
| 'cmd_install_plugin'
| 'cmd_metadata' | 'cmd_metadata'
| 'cmd_restart' | 'cmd_restart'
| 'cmd_new_child_window' | 'cmd_new_child_window'