From f302dc39a22c6bcb2d44e17d1e4f938847755e0b Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Sun, 1 Mar 2026 16:42:13 -0800 Subject: [PATCH] Move local plugin install command into plugins_ext --- crates-tauri/yaak-app/src/lib.rs | 35 ++---------------------- crates-tauri/yaak-app/src/plugins_ext.rs | 25 ++++++++++++++++- crates/yaak-plugins/index.ts | 4 +++ src-web/hooks/useInstallPlugin.ts | 4 +-- src-web/lib/tauri.ts | 1 - 5 files changed, 33 insertions(+), 36 deletions(-) diff --git a/crates-tauri/yaak-app/src/lib.rs b/crates-tauri/yaak-app/src/lib.rs index b9298342..bb463b7e 100644 --- a/crates-tauri/yaak-app/src/lib.rs +++ b/crates-tauri/yaak-app/src/lib.rs @@ -37,8 +37,8 @@ use yaak_grpc::{Code, ServiceDefinition, serialize_message}; use yaak_mac_window::AppHandleMacWindowExt; use yaak_models::models::{ AnyModel, CookieJar, Environment, GrpcConnection, GrpcConnectionState, GrpcEvent, - GrpcEventType, HttpRequest, HttpResponse, HttpResponseEvent, HttpResponseState, Plugin, - PluginSource, Workspace, WorkspaceMeta, + GrpcEventType, HttpRequest, HttpResponse, HttpResponseEvent, HttpResponseState, Workspace, + WorkspaceMeta, }; use yaak_models::util::{BatchUpsertResult, UpdateSource, get_workspace_export_resources}; use yaak_plugins::events::{ @@ -1345,35 +1345,6 @@ async fn cmd_send_http_request( Ok(r) } -#[tauri::command] -async fn cmd_install_plugin( - directory: &str, - url: Option, - plugin_manager: State<'_, PluginManager>, - app_handle: AppHandle, - window: WebviewWindow, -) -> YaakResult { - 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] async fn cmd_reload_plugins( app_handle: AppHandle, @@ -1658,7 +1629,6 @@ pub fn run() { cmd_workspace_actions, cmd_folder_actions, cmd_import_data, - cmd_install_plugin, cmd_metadata, cmd_new_child_window, cmd_new_main_window, @@ -1727,6 +1697,7 @@ pub fn run() { git_ext::cmd_git_rm_remote, // // Plugin commands + plugins_ext::cmd_plugins_install_from_directory, plugins_ext::cmd_plugins_search, plugins_ext::cmd_plugins_install, plugins_ext::cmd_plugins_uninstall, diff --git a/crates-tauri/yaak-app/src/plugins_ext.rs b/crates-tauri/yaak-app/src/plugins_ext.rs index ced6bca8..ca23b10c 100644 --- a/crates-tauri/yaak-app/src/plugins_ext.rs +++ b/crates-tauri/yaak-app/src/plugins_ext.rs @@ -22,7 +22,8 @@ use tauri::{ use tokio::sync::Mutex; use ts_rs::TS; 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::{ PluginNameVersion, PluginSearchResponse, PluginUpdatesResponse, check_plugin_updates, search_plugins, @@ -164,6 +165,28 @@ pub async fn cmd_plugins_install( Ok(()) } +#[command] +pub async fn cmd_plugins_install_from_directory( + window: WebviewWindow, + directory: &str, +) -> Result { + 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::()).clone()); + plugin_manager.add_plugin(&window.plugin_context(), &plugin).await?; + + Ok(plugin) +} + #[command] pub async fn cmd_plugins_uninstall( plugin_id: &str, diff --git a/crates/yaak-plugins/index.ts b/crates/yaak-plugins/index.ts index 04eeb0dd..bfe7065d 100644 --- a/crates/yaak-plugins/index.ts +++ b/crates/yaak-plugins/index.ts @@ -24,3 +24,7 @@ export async function checkPluginUpdates() { export async function updateAllPlugins() { return invoke('cmd_plugins_update_all', {}); } + +export async function installPluginFromDirectory(directory: string) { + return invoke('cmd_plugins_install_from_directory', { directory }); +} diff --git a/src-web/hooks/useInstallPlugin.ts b/src-web/hooks/useInstallPlugin.ts index 4fcaa601..a5528170 100644 --- a/src-web/hooks/useInstallPlugin.ts +++ b/src-web/hooks/useInstallPlugin.ts @@ -1,11 +1,11 @@ -import { invokeCmd } from '../lib/tauri'; +import { installPluginFromDirectory } from '@yaakapp-internal/plugins'; import { useFastMutation } from './useFastMutation'; export function useInstallPlugin() { return useFastMutation({ mutationKey: ['install_plugin'], mutationFn: async (directory: string) => { - await invokeCmd('cmd_install_plugin', { directory }); + await installPluginFromDirectory(directory); }, }); } diff --git a/src-web/lib/tauri.ts b/src-web/lib/tauri.ts index b714d61f..95fa68cc 100644 --- a/src-web/lib/tauri.ts +++ b/src-web/lib/tauri.ts @@ -36,7 +36,6 @@ type TauriCmd = | 'cmd_http_request_body' | 'cmd_http_response_body' | 'cmd_import_data' - | 'cmd_install_plugin' | 'cmd_metadata' | 'cmd_restart' | 'cmd_new_child_window'