diff --git a/packages/plugin-runtime-types/src/bindings/gen_events.ts b/packages/plugin-runtime-types/src/bindings/gen_events.ts index 79d5de19..24a283e4 100644 --- a/packages/plugin-runtime-types/src/bindings/gen_events.ts +++ b/packages/plugin-runtime-types/src/bindings/gen_events.ts @@ -40,9 +40,9 @@ export type CallTemplateFunctionRequest = { name: string, args: CallTemplateFunc export type CallTemplateFunctionResponse = { value: string | null, error?: string, }; -export type CallWebSocketRequestActionArgs = { websocketRequest: WebsocketRequest, }; +export type CallWebsocketRequestActionArgs = { websocketRequest: WebsocketRequest, }; -export type CallWebSocketRequestActionRequest = { index: number, pluginRefId: string, args: CallWebSocketRequestActionArgs, }; +export type CallWebsocketRequestActionRequest = { index: number, pluginRefId: string, args: CallWebsocketRequestActionArgs, }; export type CallWorkspaceActionArgs = { workspace: Workspace, }; @@ -389,7 +389,7 @@ export type GetThemesRequest = Record; export type GetThemesResponse = { themes: Array, }; -export type GetWebSocketRequestActionsResponse = { actions: Array, pluginRefId: string, }; +export type GetWebsocketRequestActionsResponse = { actions: Array, pluginRefId: string, }; export type GetWorkspaceActionsResponse = { actions: Array, pluginRefId: string, }; @@ -411,7 +411,7 @@ export type ImportResponse = { resources: ImportResources, }; export type InternalEvent = { id: string, pluginRefId: string, pluginName: string, replyId: string | null, context: PluginContext, payload: InternalEventPayload, }; -export type InternalEventPayload = { "type": "boot_request" } & BootRequest | { "type": "boot_response" } | { "type": "reload_response" } & ReloadResponse | { "type": "terminate_request" } | { "type": "terminate_response" } | { "type": "import_request" } & ImportRequest | { "type": "import_response" } & ImportResponse | { "type": "filter_request" } & FilterRequest | { "type": "filter_response" } & FilterResponse | { "type": "export_http_request_request" } & ExportHttpRequestRequest | { "type": "export_http_request_response" } & ExportHttpRequestResponse | { "type": "send_http_request_request" } & SendHttpRequestRequest | { "type": "send_http_request_response" } & SendHttpRequestResponse | { "type": "list_cookie_names_request" } & ListCookieNamesRequest | { "type": "list_cookie_names_response" } & ListCookieNamesResponse | { "type": "get_cookie_value_request" } & GetCookieValueRequest | { "type": "get_cookie_value_response" } & GetCookieValueResponse | { "type": "get_http_request_actions_request" } & EmptyPayload | { "type": "get_http_request_actions_response" } & GetHttpRequestActionsResponse | { "type": "call_http_request_action_request" } & CallHttpRequestActionRequest | { "type": "get_web_socket_request_actions_request" } & EmptyPayload | { "type": "get_web_socket_request_actions_response" } & GetWebSocketRequestActionsResponse | { "type": "call_web_socket_request_action_request" } & CallWebSocketRequestActionRequest | { "type": "get_workspace_actions_request" } & EmptyPayload | { "type": "get_workspace_actions_response" } & GetWorkspaceActionsResponse | { "type": "call_workspace_action_request" } & CallWorkspaceActionRequest | { "type": "get_folder_actions_request" } & EmptyPayload | { "type": "get_folder_actions_response" } & GetFolderActionsResponse | { "type": "call_folder_action_request" } & CallFolderActionRequest | { "type": "get_grpc_request_actions_request" } & EmptyPayload | { "type": "get_grpc_request_actions_response" } & GetGrpcRequestActionsResponse | { "type": "call_grpc_request_action_request" } & CallGrpcRequestActionRequest | { "type": "get_template_function_summary_request" } & EmptyPayload | { "type": "get_template_function_summary_response" } & GetTemplateFunctionSummaryResponse | { "type": "get_template_function_config_request" } & GetTemplateFunctionConfigRequest | { "type": "get_template_function_config_response" } & GetTemplateFunctionConfigResponse | { "type": "call_template_function_request" } & CallTemplateFunctionRequest | { "type": "call_template_function_response" } & CallTemplateFunctionResponse | { "type": "get_http_authentication_summary_request" } & EmptyPayload | { "type": "get_http_authentication_summary_response" } & GetHttpAuthenticationSummaryResponse | { "type": "get_http_authentication_config_request" } & GetHttpAuthenticationConfigRequest | { "type": "get_http_authentication_config_response" } & GetHttpAuthenticationConfigResponse | { "type": "call_http_authentication_request" } & CallHttpAuthenticationRequest | { "type": "call_http_authentication_response" } & CallHttpAuthenticationResponse | { "type": "call_http_authentication_action_request" } & CallHttpAuthenticationActionRequest | { "type": "call_http_authentication_action_response" } & EmptyPayload | { "type": "copy_text_request" } & CopyTextRequest | { "type": "copy_text_response" } & EmptyPayload | { "type": "render_http_request_request" } & RenderHttpRequestRequest | { "type": "render_http_request_response" } & RenderHttpRequestResponse | { "type": "render_grpc_request_request" } & RenderGrpcRequestRequest | { "type": "render_grpc_request_response" } & RenderGrpcRequestResponse | { "type": "template_render_request" } & TemplateRenderRequest | { "type": "template_render_response" } & TemplateRenderResponse | { "type": "get_key_value_request" } & GetKeyValueRequest | { "type": "get_key_value_response" } & GetKeyValueResponse | { "type": "set_key_value_request" } & SetKeyValueRequest | { "type": "set_key_value_response" } & SetKeyValueResponse | { "type": "delete_key_value_request" } & DeleteKeyValueRequest | { "type": "delete_key_value_response" } & DeleteKeyValueResponse | { "type": "open_window_request" } & OpenWindowRequest | { "type": "window_navigate_event" } & WindowNavigateEvent | { "type": "window_close_event" } | { "type": "close_window_request" } & CloseWindowRequest | { "type": "show_toast_request" } & ShowToastRequest | { "type": "show_toast_response" } & EmptyPayload | { "type": "prompt_text_request" } & PromptTextRequest | { "type": "prompt_text_response" } & PromptTextResponse | { "type": "window_info_request" } & WindowInfoRequest | { "type": "window_info_response" } & WindowInfoResponse | { "type": "get_http_request_by_id_request" } & GetHttpRequestByIdRequest | { "type": "get_http_request_by_id_response" } & GetHttpRequestByIdResponse | { "type": "find_http_responses_request" } & FindHttpResponsesRequest | { "type": "find_http_responses_response" } & FindHttpResponsesResponse | { "type": "list_http_requests_request" } & ListHttpRequestsRequest | { "type": "list_http_requests_response" } & ListHttpRequestsResponse | { "type": "list_folders_request" } & ListFoldersRequest | { "type": "list_folders_response" } & ListFoldersResponse | { "type": "get_themes_request" } & GetThemesRequest | { "type": "get_themes_response" } & GetThemesResponse | { "type": "empty_response" } & EmptyPayload | { "type": "error_response" } & ErrorResponse; +export type InternalEventPayload = { "type": "boot_request" } & BootRequest | { "type": "boot_response" } | { "type": "reload_response" } & ReloadResponse | { "type": "terminate_request" } | { "type": "terminate_response" } | { "type": "import_request" } & ImportRequest | { "type": "import_response" } & ImportResponse | { "type": "filter_request" } & FilterRequest | { "type": "filter_response" } & FilterResponse | { "type": "export_http_request_request" } & ExportHttpRequestRequest | { "type": "export_http_request_response" } & ExportHttpRequestResponse | { "type": "send_http_request_request" } & SendHttpRequestRequest | { "type": "send_http_request_response" } & SendHttpRequestResponse | { "type": "list_cookie_names_request" } & ListCookieNamesRequest | { "type": "list_cookie_names_response" } & ListCookieNamesResponse | { "type": "get_cookie_value_request" } & GetCookieValueRequest | { "type": "get_cookie_value_response" } & GetCookieValueResponse | { "type": "get_http_request_actions_request" } & EmptyPayload | { "type": "get_http_request_actions_response" } & GetHttpRequestActionsResponse | { "type": "call_http_request_action_request" } & CallHttpRequestActionRequest | { "type": "get_websocket_request_actions_request" } & EmptyPayload | { "type": "get_websocket_request_actions_response" } & GetWebsocketRequestActionsResponse | { "type": "call_websocket_request_action_request" } & CallWebsocketRequestActionRequest | { "type": "get_workspace_actions_request" } & EmptyPayload | { "type": "get_workspace_actions_response" } & GetWorkspaceActionsResponse | { "type": "call_workspace_action_request" } & CallWorkspaceActionRequest | { "type": "get_folder_actions_request" } & EmptyPayload | { "type": "get_folder_actions_response" } & GetFolderActionsResponse | { "type": "call_folder_action_request" } & CallFolderActionRequest | { "type": "get_grpc_request_actions_request" } & EmptyPayload | { "type": "get_grpc_request_actions_response" } & GetGrpcRequestActionsResponse | { "type": "call_grpc_request_action_request" } & CallGrpcRequestActionRequest | { "type": "get_template_function_summary_request" } & EmptyPayload | { "type": "get_template_function_summary_response" } & GetTemplateFunctionSummaryResponse | { "type": "get_template_function_config_request" } & GetTemplateFunctionConfigRequest | { "type": "get_template_function_config_response" } & GetTemplateFunctionConfigResponse | { "type": "call_template_function_request" } & CallTemplateFunctionRequest | { "type": "call_template_function_response" } & CallTemplateFunctionResponse | { "type": "get_http_authentication_summary_request" } & EmptyPayload | { "type": "get_http_authentication_summary_response" } & GetHttpAuthenticationSummaryResponse | { "type": "get_http_authentication_config_request" } & GetHttpAuthenticationConfigRequest | { "type": "get_http_authentication_config_response" } & GetHttpAuthenticationConfigResponse | { "type": "call_http_authentication_request" } & CallHttpAuthenticationRequest | { "type": "call_http_authentication_response" } & CallHttpAuthenticationResponse | { "type": "call_http_authentication_action_request" } & CallHttpAuthenticationActionRequest | { "type": "call_http_authentication_action_response" } & EmptyPayload | { "type": "copy_text_request" } & CopyTextRequest | { "type": "copy_text_response" } & EmptyPayload | { "type": "render_http_request_request" } & RenderHttpRequestRequest | { "type": "render_http_request_response" } & RenderHttpRequestResponse | { "type": "render_grpc_request_request" } & RenderGrpcRequestRequest | { "type": "render_grpc_request_response" } & RenderGrpcRequestResponse | { "type": "template_render_request" } & TemplateRenderRequest | { "type": "template_render_response" } & TemplateRenderResponse | { "type": "get_key_value_request" } & GetKeyValueRequest | { "type": "get_key_value_response" } & GetKeyValueResponse | { "type": "set_key_value_request" } & SetKeyValueRequest | { "type": "set_key_value_response" } & SetKeyValueResponse | { "type": "delete_key_value_request" } & DeleteKeyValueRequest | { "type": "delete_key_value_response" } & DeleteKeyValueResponse | { "type": "open_window_request" } & OpenWindowRequest | { "type": "window_navigate_event" } & WindowNavigateEvent | { "type": "window_close_event" } | { "type": "close_window_request" } & CloseWindowRequest | { "type": "show_toast_request" } & ShowToastRequest | { "type": "show_toast_response" } & EmptyPayload | { "type": "prompt_text_request" } & PromptTextRequest | { "type": "prompt_text_response" } & PromptTextResponse | { "type": "window_info_request" } & WindowInfoRequest | { "type": "window_info_response" } & WindowInfoResponse | { "type": "get_http_request_by_id_request" } & GetHttpRequestByIdRequest | { "type": "get_http_request_by_id_response" } & GetHttpRequestByIdResponse | { "type": "find_http_responses_request" } & FindHttpResponsesRequest | { "type": "find_http_responses_response" } & FindHttpResponsesResponse | { "type": "list_http_requests_request" } & ListHttpRequestsRequest | { "type": "list_http_requests_response" } & ListHttpRequestsResponse | { "type": "list_folders_request" } & ListFoldersRequest | { "type": "list_folders_response" } & ListFoldersResponse | { "type": "get_themes_request" } & GetThemesRequest | { "type": "get_themes_response" } & GetThemesResponse | { "type": "empty_response" } & EmptyPayload | { "type": "error_response" } & ErrorResponse; export type JsonPrimitive = string | number | boolean | null; @@ -521,7 +521,7 @@ export type ThemeComponentColors = { surface?: string, surfaceHighlight?: string export type ThemeComponents = { dialog?: ThemeComponentColors, menu?: ThemeComponentColors, toast?: ThemeComponentColors, sidebar?: ThemeComponentColors, responsePane?: ThemeComponentColors, appHeader?: ThemeComponentColors, button?: ThemeComponentColors, banner?: ThemeComponentColors, templateTag?: ThemeComponentColors, urlBar?: ThemeComponentColors, editor?: ThemeComponentColors, input?: ThemeComponentColors, }; -export type WebSocketRequestAction = { label: string, icon?: Icon, }; +export type WebsocketRequestAction = { label: string, icon?: Icon, }; export type WindowInfoRequest = { label: string, }; diff --git a/packages/plugin-runtime-types/src/plugins/WebSocketRequestActionPlugin.ts b/packages/plugin-runtime-types/src/plugins/WebSocketRequestActionPlugin.ts index b619ba15..22dc2791 100644 --- a/packages/plugin-runtime-types/src/plugins/WebSocketRequestActionPlugin.ts +++ b/packages/plugin-runtime-types/src/plugins/WebSocketRequestActionPlugin.ts @@ -1,6 +1,6 @@ -import type { CallWebSocketRequestActionArgs, WebSocketRequestAction } from '../bindings/gen_events'; +import type { CallWebsocketRequestActionArgs, WebsocketRequestAction } from '../bindings/gen_events'; import type { Context } from './Context'; -export type WebSocketRequestActionPlugin = WebSocketRequestAction & { - onSelect(ctx: Context, args: CallWebSocketRequestActionArgs): Promise | void; +export type WebsocketRequestActionPlugin = WebsocketRequestAction & { + onSelect(ctx: Context, args: CallWebsocketRequestActionArgs): Promise | void; }; diff --git a/packages/plugin-runtime-types/src/plugins/index.ts b/packages/plugin-runtime-types/src/plugins/index.ts index 0f479d02..7fb13081 100644 --- a/packages/plugin-runtime-types/src/plugins/index.ts +++ b/packages/plugin-runtime-types/src/plugins/index.ts @@ -4,7 +4,7 @@ import type { Context } from './Context'; import type { FilterPlugin } from './FilterPlugin'; import { GrpcRequestActionPlugin } from './GrpcRequestActionPlugin'; import type { HttpRequestActionPlugin } from './HttpRequestActionPlugin'; -import type { WebSocketRequestActionPlugin } from './WebSocketRequestActionPlugin'; +import type { WebsocketRequestActionPlugin } from './WebSocketRequestActionPlugin'; import type { WorkspaceActionPlugin } from './WorkspaceActionPlugin'; import type { FolderActionPlugin } from './FolderActionPlugin'; import type { ImporterPlugin } from './ImporterPlugin'; @@ -29,7 +29,7 @@ export type PluginDefinition = { filter?: FilterPlugin; authentication?: AuthenticationPlugin; httpRequestActions?: HttpRequestActionPlugin[]; - websocketRequestActions?: WebSocketRequestActionPlugin[]; + websocketRequestActions?: WebsocketRequestActionPlugin[]; workspaceActions?: WorkspaceActionPlugin[]; folderActions?: FolderActionPlugin[]; grpcRequestActions?: GrpcRequestActionPlugin[]; diff --git a/plugins/action-copy-curl/src/index.ts b/plugins/action-copy-curl/src/index.ts index ff6f5ffe..af6eeb9a 100644 --- a/plugins/action-copy-curl/src/index.ts +++ b/plugins/action-copy-curl/src/index.ts @@ -22,45 +22,6 @@ export const plugin: PluginDefinition = { }, }, ], - websocketRequestActions: [ - { - label: 'Test WebSocket Action', - icon: 'bug', - async onSelect(ctx, args) { - await ctx.toast.show({ - message: `WebSocket action called for: ${args.websocketRequest.name}`, - icon: 'bug', - color: 'info', - }); - }, - }, - ], - workspaceActions: [ - { - label: 'Test Workspace Action', - icon: 'bug', - async onSelect(ctx, args) { - await ctx.toast.show({ - message: `Workspace action called for: ${args.workspace.name}`, - icon: 'bug', - color: 'info', - }); - }, - }, - ], - folderActions: [ - { - label: 'Test Folder Action', - icon: 'bug', - async onSelect(ctx, args) { - await ctx.toast.show({ - message: `Folder action called for: ${args.folder.name}`, - icon: 'bug', - color: 'info', - }); - }, - }, - ], }; export async function convertToCurl(request: Partial) { diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 2e4e18ce..1bd87743 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -43,12 +43,12 @@ use yaak_models::util::{BatchUpsertResult, UpdateSource, get_workspace_export_re use yaak_plugins::events::{ CallFolderActionArgs, CallFolderActionRequest, CallGrpcRequestActionArgs, CallGrpcRequestActionRequest, CallHttpRequestActionArgs, CallHttpRequestActionRequest, - CallWebSocketRequestActionArgs, CallWebSocketRequestActionRequest, CallWorkspaceActionArgs, + CallWebsocketRequestActionArgs, CallWebsocketRequestActionRequest, CallWorkspaceActionArgs, CallWorkspaceActionRequest, Color, FilterResponse, GetFolderActionsResponse, GetGrpcRequestActionsResponse, GetHttpAuthenticationConfigResponse, GetHttpAuthenticationSummaryResponse, GetHttpRequestActionsResponse, GetTemplateFunctionConfigResponse, GetTemplateFunctionSummaryResponse, - GetWebSocketRequestActionsResponse, GetWorkspaceActionsResponse, InternalEvent, + GetWebsocketRequestActionsResponse, GetWorkspaceActionsResponse, InternalEvent, InternalEventPayload, JsonPrimitive, PluginContext, RenderPurpose, ShowToastRequest, }; use yaak_plugins::manager::PluginManager; @@ -880,22 +880,22 @@ async fn cmd_http_request_actions( async fn cmd_websocket_request_actions( window: WebviewWindow, plugin_manager: State<'_, PluginManager>, -) -> YaakResult> { +) -> YaakResult> { Ok(plugin_manager.get_websocket_request_actions(&window).await?) } #[tauri::command] async fn cmd_call_websocket_request_action( window: WebviewWindow, - req: CallWebSocketRequestActionRequest, + req: CallWebsocketRequestActionRequest, plugin_manager: State<'_, PluginManager>, ) -> YaakResult<()> { let websocket_request = window.db().get_websocket_request(&req.args.websocket_request.id)?; Ok(plugin_manager .call_websocket_request_action( &window, - CallWebSocketRequestActionRequest { - args: CallWebSocketRequestActionArgs { websocket_request }, + CallWebsocketRequestActionRequest { + args: CallWebsocketRequestActionArgs { websocket_request }, ..req }, ) diff --git a/src-tauri/yaak-plugins/bindings/gen_events.ts b/src-tauri/yaak-plugins/bindings/gen_events.ts index 79d5de19..24a283e4 100644 --- a/src-tauri/yaak-plugins/bindings/gen_events.ts +++ b/src-tauri/yaak-plugins/bindings/gen_events.ts @@ -40,9 +40,9 @@ export type CallTemplateFunctionRequest = { name: string, args: CallTemplateFunc export type CallTemplateFunctionResponse = { value: string | null, error?: string, }; -export type CallWebSocketRequestActionArgs = { websocketRequest: WebsocketRequest, }; +export type CallWebsocketRequestActionArgs = { websocketRequest: WebsocketRequest, }; -export type CallWebSocketRequestActionRequest = { index: number, pluginRefId: string, args: CallWebSocketRequestActionArgs, }; +export type CallWebsocketRequestActionRequest = { index: number, pluginRefId: string, args: CallWebsocketRequestActionArgs, }; export type CallWorkspaceActionArgs = { workspace: Workspace, }; @@ -389,7 +389,7 @@ export type GetThemesRequest = Record; export type GetThemesResponse = { themes: Array, }; -export type GetWebSocketRequestActionsResponse = { actions: Array, pluginRefId: string, }; +export type GetWebsocketRequestActionsResponse = { actions: Array, pluginRefId: string, }; export type GetWorkspaceActionsResponse = { actions: Array, pluginRefId: string, }; @@ -411,7 +411,7 @@ export type ImportResponse = { resources: ImportResources, }; export type InternalEvent = { id: string, pluginRefId: string, pluginName: string, replyId: string | null, context: PluginContext, payload: InternalEventPayload, }; -export type InternalEventPayload = { "type": "boot_request" } & BootRequest | { "type": "boot_response" } | { "type": "reload_response" } & ReloadResponse | { "type": "terminate_request" } | { "type": "terminate_response" } | { "type": "import_request" } & ImportRequest | { "type": "import_response" } & ImportResponse | { "type": "filter_request" } & FilterRequest | { "type": "filter_response" } & FilterResponse | { "type": "export_http_request_request" } & ExportHttpRequestRequest | { "type": "export_http_request_response" } & ExportHttpRequestResponse | { "type": "send_http_request_request" } & SendHttpRequestRequest | { "type": "send_http_request_response" } & SendHttpRequestResponse | { "type": "list_cookie_names_request" } & ListCookieNamesRequest | { "type": "list_cookie_names_response" } & ListCookieNamesResponse | { "type": "get_cookie_value_request" } & GetCookieValueRequest | { "type": "get_cookie_value_response" } & GetCookieValueResponse | { "type": "get_http_request_actions_request" } & EmptyPayload | { "type": "get_http_request_actions_response" } & GetHttpRequestActionsResponse | { "type": "call_http_request_action_request" } & CallHttpRequestActionRequest | { "type": "get_web_socket_request_actions_request" } & EmptyPayload | { "type": "get_web_socket_request_actions_response" } & GetWebSocketRequestActionsResponse | { "type": "call_web_socket_request_action_request" } & CallWebSocketRequestActionRequest | { "type": "get_workspace_actions_request" } & EmptyPayload | { "type": "get_workspace_actions_response" } & GetWorkspaceActionsResponse | { "type": "call_workspace_action_request" } & CallWorkspaceActionRequest | { "type": "get_folder_actions_request" } & EmptyPayload | { "type": "get_folder_actions_response" } & GetFolderActionsResponse | { "type": "call_folder_action_request" } & CallFolderActionRequest | { "type": "get_grpc_request_actions_request" } & EmptyPayload | { "type": "get_grpc_request_actions_response" } & GetGrpcRequestActionsResponse | { "type": "call_grpc_request_action_request" } & CallGrpcRequestActionRequest | { "type": "get_template_function_summary_request" } & EmptyPayload | { "type": "get_template_function_summary_response" } & GetTemplateFunctionSummaryResponse | { "type": "get_template_function_config_request" } & GetTemplateFunctionConfigRequest | { "type": "get_template_function_config_response" } & GetTemplateFunctionConfigResponse | { "type": "call_template_function_request" } & CallTemplateFunctionRequest | { "type": "call_template_function_response" } & CallTemplateFunctionResponse | { "type": "get_http_authentication_summary_request" } & EmptyPayload | { "type": "get_http_authentication_summary_response" } & GetHttpAuthenticationSummaryResponse | { "type": "get_http_authentication_config_request" } & GetHttpAuthenticationConfigRequest | { "type": "get_http_authentication_config_response" } & GetHttpAuthenticationConfigResponse | { "type": "call_http_authentication_request" } & CallHttpAuthenticationRequest | { "type": "call_http_authentication_response" } & CallHttpAuthenticationResponse | { "type": "call_http_authentication_action_request" } & CallHttpAuthenticationActionRequest | { "type": "call_http_authentication_action_response" } & EmptyPayload | { "type": "copy_text_request" } & CopyTextRequest | { "type": "copy_text_response" } & EmptyPayload | { "type": "render_http_request_request" } & RenderHttpRequestRequest | { "type": "render_http_request_response" } & RenderHttpRequestResponse | { "type": "render_grpc_request_request" } & RenderGrpcRequestRequest | { "type": "render_grpc_request_response" } & RenderGrpcRequestResponse | { "type": "template_render_request" } & TemplateRenderRequest | { "type": "template_render_response" } & TemplateRenderResponse | { "type": "get_key_value_request" } & GetKeyValueRequest | { "type": "get_key_value_response" } & GetKeyValueResponse | { "type": "set_key_value_request" } & SetKeyValueRequest | { "type": "set_key_value_response" } & SetKeyValueResponse | { "type": "delete_key_value_request" } & DeleteKeyValueRequest | { "type": "delete_key_value_response" } & DeleteKeyValueResponse | { "type": "open_window_request" } & OpenWindowRequest | { "type": "window_navigate_event" } & WindowNavigateEvent | { "type": "window_close_event" } | { "type": "close_window_request" } & CloseWindowRequest | { "type": "show_toast_request" } & ShowToastRequest | { "type": "show_toast_response" } & EmptyPayload | { "type": "prompt_text_request" } & PromptTextRequest | { "type": "prompt_text_response" } & PromptTextResponse | { "type": "window_info_request" } & WindowInfoRequest | { "type": "window_info_response" } & WindowInfoResponse | { "type": "get_http_request_by_id_request" } & GetHttpRequestByIdRequest | { "type": "get_http_request_by_id_response" } & GetHttpRequestByIdResponse | { "type": "find_http_responses_request" } & FindHttpResponsesRequest | { "type": "find_http_responses_response" } & FindHttpResponsesResponse | { "type": "list_http_requests_request" } & ListHttpRequestsRequest | { "type": "list_http_requests_response" } & ListHttpRequestsResponse | { "type": "list_folders_request" } & ListFoldersRequest | { "type": "list_folders_response" } & ListFoldersResponse | { "type": "get_themes_request" } & GetThemesRequest | { "type": "get_themes_response" } & GetThemesResponse | { "type": "empty_response" } & EmptyPayload | { "type": "error_response" } & ErrorResponse; +export type InternalEventPayload = { "type": "boot_request" } & BootRequest | { "type": "boot_response" } | { "type": "reload_response" } & ReloadResponse | { "type": "terminate_request" } | { "type": "terminate_response" } | { "type": "import_request" } & ImportRequest | { "type": "import_response" } & ImportResponse | { "type": "filter_request" } & FilterRequest | { "type": "filter_response" } & FilterResponse | { "type": "export_http_request_request" } & ExportHttpRequestRequest | { "type": "export_http_request_response" } & ExportHttpRequestResponse | { "type": "send_http_request_request" } & SendHttpRequestRequest | { "type": "send_http_request_response" } & SendHttpRequestResponse | { "type": "list_cookie_names_request" } & ListCookieNamesRequest | { "type": "list_cookie_names_response" } & ListCookieNamesResponse | { "type": "get_cookie_value_request" } & GetCookieValueRequest | { "type": "get_cookie_value_response" } & GetCookieValueResponse | { "type": "get_http_request_actions_request" } & EmptyPayload | { "type": "get_http_request_actions_response" } & GetHttpRequestActionsResponse | { "type": "call_http_request_action_request" } & CallHttpRequestActionRequest | { "type": "get_websocket_request_actions_request" } & EmptyPayload | { "type": "get_websocket_request_actions_response" } & GetWebsocketRequestActionsResponse | { "type": "call_websocket_request_action_request" } & CallWebsocketRequestActionRequest | { "type": "get_workspace_actions_request" } & EmptyPayload | { "type": "get_workspace_actions_response" } & GetWorkspaceActionsResponse | { "type": "call_workspace_action_request" } & CallWorkspaceActionRequest | { "type": "get_folder_actions_request" } & EmptyPayload | { "type": "get_folder_actions_response" } & GetFolderActionsResponse | { "type": "call_folder_action_request" } & CallFolderActionRequest | { "type": "get_grpc_request_actions_request" } & EmptyPayload | { "type": "get_grpc_request_actions_response" } & GetGrpcRequestActionsResponse | { "type": "call_grpc_request_action_request" } & CallGrpcRequestActionRequest | { "type": "get_template_function_summary_request" } & EmptyPayload | { "type": "get_template_function_summary_response" } & GetTemplateFunctionSummaryResponse | { "type": "get_template_function_config_request" } & GetTemplateFunctionConfigRequest | { "type": "get_template_function_config_response" } & GetTemplateFunctionConfigResponse | { "type": "call_template_function_request" } & CallTemplateFunctionRequest | { "type": "call_template_function_response" } & CallTemplateFunctionResponse | { "type": "get_http_authentication_summary_request" } & EmptyPayload | { "type": "get_http_authentication_summary_response" } & GetHttpAuthenticationSummaryResponse | { "type": "get_http_authentication_config_request" } & GetHttpAuthenticationConfigRequest | { "type": "get_http_authentication_config_response" } & GetHttpAuthenticationConfigResponse | { "type": "call_http_authentication_request" } & CallHttpAuthenticationRequest | { "type": "call_http_authentication_response" } & CallHttpAuthenticationResponse | { "type": "call_http_authentication_action_request" } & CallHttpAuthenticationActionRequest | { "type": "call_http_authentication_action_response" } & EmptyPayload | { "type": "copy_text_request" } & CopyTextRequest | { "type": "copy_text_response" } & EmptyPayload | { "type": "render_http_request_request" } & RenderHttpRequestRequest | { "type": "render_http_request_response" } & RenderHttpRequestResponse | { "type": "render_grpc_request_request" } & RenderGrpcRequestRequest | { "type": "render_grpc_request_response" } & RenderGrpcRequestResponse | { "type": "template_render_request" } & TemplateRenderRequest | { "type": "template_render_response" } & TemplateRenderResponse | { "type": "get_key_value_request" } & GetKeyValueRequest | { "type": "get_key_value_response" } & GetKeyValueResponse | { "type": "set_key_value_request" } & SetKeyValueRequest | { "type": "set_key_value_response" } & SetKeyValueResponse | { "type": "delete_key_value_request" } & DeleteKeyValueRequest | { "type": "delete_key_value_response" } & DeleteKeyValueResponse | { "type": "open_window_request" } & OpenWindowRequest | { "type": "window_navigate_event" } & WindowNavigateEvent | { "type": "window_close_event" } | { "type": "close_window_request" } & CloseWindowRequest | { "type": "show_toast_request" } & ShowToastRequest | { "type": "show_toast_response" } & EmptyPayload | { "type": "prompt_text_request" } & PromptTextRequest | { "type": "prompt_text_response" } & PromptTextResponse | { "type": "window_info_request" } & WindowInfoRequest | { "type": "window_info_response" } & WindowInfoResponse | { "type": "get_http_request_by_id_request" } & GetHttpRequestByIdRequest | { "type": "get_http_request_by_id_response" } & GetHttpRequestByIdResponse | { "type": "find_http_responses_request" } & FindHttpResponsesRequest | { "type": "find_http_responses_response" } & FindHttpResponsesResponse | { "type": "list_http_requests_request" } & ListHttpRequestsRequest | { "type": "list_http_requests_response" } & ListHttpRequestsResponse | { "type": "list_folders_request" } & ListFoldersRequest | { "type": "list_folders_response" } & ListFoldersResponse | { "type": "get_themes_request" } & GetThemesRequest | { "type": "get_themes_response" } & GetThemesResponse | { "type": "empty_response" } & EmptyPayload | { "type": "error_response" } & ErrorResponse; export type JsonPrimitive = string | number | boolean | null; @@ -521,7 +521,7 @@ export type ThemeComponentColors = { surface?: string, surfaceHighlight?: string export type ThemeComponents = { dialog?: ThemeComponentColors, menu?: ThemeComponentColors, toast?: ThemeComponentColors, sidebar?: ThemeComponentColors, responsePane?: ThemeComponentColors, appHeader?: ThemeComponentColors, button?: ThemeComponentColors, banner?: ThemeComponentColors, templateTag?: ThemeComponentColors, urlBar?: ThemeComponentColors, editor?: ThemeComponentColors, input?: ThemeComponentColors, }; -export type WebSocketRequestAction = { label: string, icon?: Icon, }; +export type WebsocketRequestAction = { label: string, icon?: Icon, }; export type WindowInfoRequest = { label: string, }; diff --git a/src-tauri/yaak-plugins/src/events.rs b/src-tauri/yaak-plugins/src/events.rs index af8334f7..bf7f9702 100644 --- a/src-tauri/yaak-plugins/src/events.rs +++ b/src-tauri/yaak-plugins/src/events.rs @@ -91,9 +91,9 @@ pub enum InternalEventPayload { CallHttpRequestActionRequest(CallHttpRequestActionRequest), // WebSocket Request Actions - GetWebSocketRequestActionsRequest(EmptyPayload), - GetWebSocketRequestActionsResponse(GetWebSocketRequestActionsResponse), - CallWebSocketRequestActionRequest(CallWebSocketRequestActionRequest), + GetWebsocketRequestActionsRequest(EmptyPayload), + GetWebsocketRequestActionsResponse(GetWebsocketRequestActionsResponse), + CallWebsocketRequestActionRequest(CallWebsocketRequestActionRequest), // Workspace Actions GetWorkspaceActionsRequest(EmptyPayload), @@ -1143,15 +1143,15 @@ pub struct CallHttpRequestActionArgs { #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to = "gen_events.ts")] -pub struct GetWebSocketRequestActionsResponse { - pub actions: Vec, +pub struct GetWebsocketRequestActionsResponse { + pub actions: Vec, pub plugin_ref_id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to = "gen_events.ts")] -pub struct WebSocketRequestAction { +pub struct WebsocketRequestAction { pub label: String, #[ts(optional)] pub icon: Option, @@ -1160,16 +1160,16 @@ pub struct WebSocketRequestAction { #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to = "gen_events.ts")] -pub struct CallWebSocketRequestActionRequest { +pub struct CallWebsocketRequestActionRequest { pub index: i32, pub plugin_ref_id: String, - pub args: CallWebSocketRequestActionArgs, + pub args: CallWebsocketRequestActionArgs, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to = "gen_events.ts")] -pub struct CallWebSocketRequestActionArgs { +pub struct CallWebsocketRequestActionArgs { pub websocket_request: WebsocketRequest, } diff --git a/src-tauri/yaak-plugins/src/manager.rs b/src-tauri/yaak-plugins/src/manager.rs index c49c24b1..3d089f78 100644 --- a/src-tauri/yaak-plugins/src/manager.rs +++ b/src-tauri/yaak-plugins/src/manager.rs @@ -7,13 +7,13 @@ use crate::events::{ CallHttpAuthenticationActionArgs, CallHttpAuthenticationActionRequest, CallHttpAuthenticationRequest, CallHttpAuthenticationResponse, CallHttpRequestActionRequest, CallTemplateFunctionArgs, CallTemplateFunctionRequest, CallTemplateFunctionResponse, - CallWebSocketRequestActionRequest, CallWorkspaceActionRequest, EmptyPayload, ErrorResponse, + CallWebsocketRequestActionRequest, CallWorkspaceActionRequest, EmptyPayload, ErrorResponse, FilterRequest, FilterResponse, GetFolderActionsResponse, GetGrpcRequestActionsResponse, GetHttpAuthenticationConfigRequest, GetHttpAuthenticationConfigResponse, GetHttpAuthenticationSummaryResponse, GetHttpRequestActionsResponse, GetTemplateFunctionConfigRequest, GetTemplateFunctionConfigResponse, GetTemplateFunctionSummaryResponse, GetThemesRequest, GetThemesResponse, - GetWebSocketRequestActionsResponse, GetWorkspaceActionsResponse, ImportRequest, ImportResponse, + GetWebsocketRequestActionsResponse, GetWorkspaceActionsResponse, ImportRequest, ImportResponse, InternalEvent, InternalEventPayload, JsonPrimitive, PluginContext, RenderPurpose, }; use crate::native_template_functions::{template_function_keyring, template_function_secure}; @@ -486,17 +486,17 @@ impl PluginManager { pub async fn get_websocket_request_actions( &self, window: &WebviewWindow, - ) -> Result> { + ) -> Result> { let reply_events = self .send_and_wait( &PluginContext::new(window), - &InternalEventPayload::GetWebSocketRequestActionsRequest(EmptyPayload {}), + &InternalEventPayload::GetWebsocketRequestActionsRequest(EmptyPayload {}), ) .await?; let mut all_actions = Vec::new(); for event in reply_events { - if let InternalEventPayload::GetWebSocketRequestActionsResponse(resp) = event.payload { + if let InternalEventPayload::GetWebsocketRequestActionsResponse(resp) = event.payload { all_actions.push(resp.clone()); } } @@ -631,14 +631,14 @@ impl PluginManager { pub async fn call_websocket_request_action( &self, window: &WebviewWindow, - req: CallWebSocketRequestActionRequest, + req: CallWebsocketRequestActionRequest, ) -> Result<()> { let ref_id = req.plugin_ref_id.clone(); let plugin = self.get_plugin_by_ref_id(ref_id.as_str()).await.ok_or(PluginNotFoundErr(ref_id))?; let event = plugin.build_event_to_send( &PluginContext::new(window), - &InternalEventPayload::CallWebSocketRequestActionRequest(req), + &InternalEventPayload::CallWebsocketRequestActionRequest(req), None, ); plugin.send(&event).await?; diff --git a/src-web/components/Sidebar.tsx b/src-web/components/Sidebar.tsx index 80284eba..e09835b0 100644 --- a/src-web/components/Sidebar.tsx +++ b/src-web/components/Sidebar.tsx @@ -38,7 +38,6 @@ import { getGrpcRequestActions } from '../hooks/useGrpcRequestActions'; import { useHotKey } from '../hooks/useHotKey'; import { getHttpRequestActions } from '../hooks/useHttpRequestActions'; import { getWebSocketRequestActions } from '../hooks/useWebSocketRequestActions'; -import { getWorkspaceActions } from '../hooks/useWorkspaceActions'; import { getFolderActions } from '../hooks/useFolderActions'; import { useListenToTauriEvent } from '../hooks/useListenToTauriEvent'; import { getModelAncestors } from '../hooks/useModelAncestors'; @@ -388,24 +387,13 @@ function Sidebar({ className }: { className?: string }) { if (request != null) await a.call(request); }, })), - ...(items.length === 1 && child.model === 'workspace' - ? await getWorkspaceActions() - : [] - ).map((a) => ({ - label: a.label, - leftSlot: , - onSelect: async () => { - const model = getModel(child.model, child.id); - if (model != null) await a.call(model as any); - }, - })), ...(items.length === 1 && child.model === 'folder' ? await getFolderActions() : []).map( (a) => ({ label: a.label, leftSlot: , onSelect: async () => { - const model = getModel(child.model, child.id); - if (model != null) await a.call(model as any); + const model = getModel('folder', child.id); + if (model != null) await a.call(model); }, }), ), diff --git a/src-web/components/WorkspaceActionsDropdown.tsx b/src-web/components/WorkspaceActionsDropdown.tsx index 707a5531..25a44102 100644 --- a/src-web/components/WorkspaceActionsDropdown.tsx +++ b/src-web/components/WorkspaceActionsDropdown.tsx @@ -14,6 +14,7 @@ import { } from '../hooks/useActiveWorkspace'; import { useCreateWorkspace } from '../hooks/useCreateWorkspace'; import { useDeleteSendHistory } from '../hooks/useDeleteSendHistory'; +import { useWorkspaceActions } from '../hooks/useWorkspaceActions'; import { showDialog } from '../lib/dialog'; import { jotaiStore } from '../lib/jotai'; import { revealInFinderText } from '../lib/reveal'; @@ -36,6 +37,7 @@ export const WorkspaceActionsDropdown = memo(function WorkspaceActionsDropdown({ const createWorkspace = useCreateWorkspace(); const workspaceMeta = useAtomValue(activeWorkspaceMetaAtom); const { mutate: deleteSendHistory } = useDeleteSendHistory(); + const workspaceActions = useWorkspaceActions(); const { workspaceItems, itemsAfter } = useMemo<{ workspaceItems: RadioDropdownItem[]; @@ -49,6 +51,14 @@ export const WorkspaceActionsDropdown = memo(function WorkspaceActionsDropdown({ })); const itemsAfter: DropdownItem[] = [ + ...workspaceActions.map((a) => ({ + label: a.label, + leftSlot: , + onSelect: async () => { + if (workspace != null) await a.call(workspace); + }, + })), + ...(workspaceActions.length > 0 ? [{ type: 'separator' as const }] : []), { label: 'Workspace Settings', leftSlot: , diff --git a/src-web/components/core/Editor/twig/twig.test.ts b/src-web/components/core/Editor/twig/twig.test.ts index 706cb4db..c000face 100644 --- a/src-web/components/core/Editor/twig/twig.test.ts +++ b/src-web/components/core/Editor/twig/twig.test.ts @@ -1,3 +1,5 @@ +// biome-ignore-all lint/suspicious/noTemplateCurlyInString: We're testing this, specifically + import { describe, expect, test } from 'vitest'; import { parser } from './twig';