From 7e62bb6b68ced89a344ab9ed5c78a2173fb0a257 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Wed, 2 Oct 2024 12:19:43 -0700 Subject: [PATCH] Fix prompt --- src-tauri/src/lib.rs | 16 ++-------------- src-web/components/DialogContext.tsx | 11 +++++++++-- src-web/components/GlobalHooks.tsx | 3 +++ src-web/hooks/Prompt.tsx | 9 ++++----- src-web/hooks/usePrompt.ts | 11 ++++++++--- 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index f50b8cdf..a2e244bd 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -46,19 +46,7 @@ use yaak_models::models::{ CookieJar, Environment, EnvironmentVariable, Folder, GrpcConnection, GrpcEvent, GrpcEventType, GrpcRequest, HttpRequest, HttpResponse, KeyValue, ModelType, Plugin, Settings, Workspace, }; -use yaak_models::queries::{ - cancel_pending_grpc_connections, cancel_pending_responses, create_default_http_response, - delete_all_grpc_connections, delete_all_http_responses, delete_cookie_jar, delete_environment, - delete_folder, delete_grpc_connection, delete_grpc_request, delete_http_request, - delete_http_response, delete_plugin, delete_workspace, duplicate_grpc_request, - duplicate_http_request, generate_model_id, get_cookie_jar, get_environment, get_folder, - get_grpc_connection, get_grpc_request, get_http_request, get_http_response, get_key_value_raw, - get_or_create_settings, get_plugin, get_workspace, list_cookie_jars, list_environments, - list_folders, list_grpc_connections, list_grpc_events, list_grpc_requests, list_http_requests, - list_http_responses, list_plugins, list_workspaces, set_key_value_raw, update_response_if_id, - update_settings, upsert_cookie_jar, upsert_environment, upsert_folder, upsert_grpc_connection, - upsert_grpc_event, upsert_grpc_request, upsert_http_request, upsert_plugin, upsert_workspace, -}; +use yaak_models::queries::{cancel_pending_grpc_connections, cancel_pending_responses, create_default_http_response, delete_all_grpc_connections, delete_all_http_responses, delete_cookie_jar, delete_environment, delete_folder, delete_grpc_connection, delete_grpc_request, delete_http_request, delete_http_response, delete_plugin, delete_workspace, duplicate_grpc_request, duplicate_http_request, generate_id, generate_model_id, get_cookie_jar, get_environment, get_folder, get_grpc_connection, get_grpc_request, get_http_request, get_http_response, get_key_value_raw, get_or_create_settings, get_plugin, get_workspace, list_cookie_jars, list_environments, list_folders, list_grpc_connections, list_grpc_events, list_grpc_requests, list_http_requests, list_http_responses, list_plugins, list_workspaces, set_key_value_raw, update_response_if_id, update_settings, upsert_cookie_jar, upsert_environment, upsert_folder, upsert_grpc_connection, upsert_grpc_event, upsert_grpc_request, upsert_http_request, upsert_plugin, upsert_workspace}; use yaak_plugin_runtime::events::{ BootResponse, CallHttpRequestActionRequest, FilterResponse, FindHttpResponsesResponse, GetHttpRequestActionsResponse, GetHttpRequestByIdResponse, GetTemplateFunctionsResponse, Icon, @@ -2172,7 +2160,7 @@ async fn call_frontend( event_name: &str, args: T, ) -> PromptTextResponse { - let reply_id = format!("{event_name}_reply"); + let reply_id = format!("{event_name}_reply_{}", generate_id()); let payload = FrontendCall { args, reply_id: reply_id.clone(), diff --git a/src-web/components/DialogContext.tsx b/src-web/components/DialogContext.tsx index fbff736b..961521f5 100644 --- a/src-web/components/DialogContext.tsx +++ b/src-web/components/DialogContext.tsx @@ -49,11 +49,18 @@ export const DialogProvider = ({ children }: { children: React.ReactNode }) => { return {children}; }; -function DialogInstance({ id, render, ...props }: DialogEntry) { +function DialogInstance({ id, render, onClose, ...props }: DialogEntry) { const { actions } = useContext(DialogContext); const children = render({ hide: () => actions.hide(id) }); return ( - actions.hide(id)} {...props}> + { + onClose?.(); + actions.hide(id); + }} + {...props} + > {children} ); diff --git a/src-web/components/GlobalHooks.tsx b/src-web/components/GlobalHooks.tsx index 3d212524..f191bd65 100644 --- a/src-web/components/GlobalHooks.tsx +++ b/src-web/components/GlobalHooks.tsx @@ -75,6 +75,7 @@ export function GlobalHooks() { const setEnvironments = useSetAtom(environmentsAtom); useListenToTauriEvent('upserted_model', ({ payload }) => { + console.log('Upserted model', payload.model); const { model, windowLabel } = payload; const queryKey = model.model === 'http_response' @@ -132,6 +133,8 @@ export function GlobalHooks() { const { model, windowLabel } = payload; if (shouldIgnoreModel(model, windowLabel)) return; + console.log('Delete model', payload.model); + if (model.model === 'workspace') { setWorkspaces(removeById(model)); } else if (model.model === 'plugin') { diff --git a/src-web/hooks/Prompt.tsx b/src-web/hooks/Prompt.tsx index 5ce95b78..e669cf6d 100644 --- a/src-web/hooks/Prompt.tsx +++ b/src-web/hooks/Prompt.tsx @@ -7,12 +7,12 @@ import { HStack } from '../components/core/Stacks'; export type PromptProps = Omit & { description?: ReactNode; - onHide: () => void; + onCancel: () => void; onResult: (value: string | null) => void; }; export function Prompt({ - onHide, + onCancel, label, defaultValue, placeholder, @@ -25,10 +25,9 @@ export function Prompt({ const handleSubmit = useCallback( (e: FormEvent) => { e.preventDefault(); - onHide(); onResult(value); }, - [onHide, onResult, value], + [onResult, value], ); return ( @@ -46,7 +45,7 @@ export function Prompt({ onChange={setValue} /> -