Skip to content

Commit

Permalink
Fix prompt
Browse files Browse the repository at this point in the history
  • Loading branch information
gschier committed Oct 2, 2024
1 parent 3b2ee25 commit 7e62bb6
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 24 deletions.
16 changes: 2 additions & 14 deletions src-tauri/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -2172,7 +2160,7 @@ async fn call_frontend<T: Serialize + Clone, R: Runtime>(
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(),
Expand Down
11 changes: 9 additions & 2 deletions src-web/components/DialogContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,18 @@ export const DialogProvider = ({ children }: { children: React.ReactNode }) => {
return <DialogContext.Provider value={state}>{children}</DialogContext.Provider>;
};

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 (
<Dialog open onClose={() => actions.hide(id)} {...props}>
<Dialog
open
onClose={() => {
onClose?.();
actions.hide(id);
}}
{...props}
>
{children}
</Dialog>
);
Expand Down
3 changes: 3 additions & 0 deletions src-web/components/GlobalHooks.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ export function GlobalHooks() {
const setEnvironments = useSetAtom(environmentsAtom);

useListenToTauriEvent<ModelPayload>('upserted_model', ({ payload }) => {
console.log('Upserted model', payload.model);
const { model, windowLabel } = payload;
const queryKey =
model.model === 'http_response'
Expand Down Expand Up @@ -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') {
Expand Down
9 changes: 4 additions & 5 deletions src-web/hooks/Prompt.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ import { HStack } from '../components/core/Stacks';

export type PromptProps = Omit<PromptTextRequest, 'id' | 'title' | 'description'> & {
description?: ReactNode;
onHide: () => void;
onCancel: () => void;
onResult: (value: string | null) => void;
};

export function Prompt({
onHide,
onCancel,
label,
defaultValue,
placeholder,
Expand All @@ -25,10 +25,9 @@ export function Prompt({
const handleSubmit = useCallback(
(e: FormEvent<HTMLFormElement>) => {
e.preventDefault();
onHide();
onResult(value);
},
[onHide, onResult, value],
[onResult, value],
);

return (
Expand All @@ -46,7 +45,7 @@ export function Prompt({
onChange={setValue}
/>
<HStack space={2} justifyContent="end">
<Button onClick={onHide} variant="border" color="secondary">
<Button onClick={onCancel} variant="border" color="secondary">
{cancelText || 'Cancel'}
</Button>
<Button type="submit" color="primary">
Expand Down
11 changes: 8 additions & 3 deletions src-web/hooks/usePrompt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type { PromptProps } from './Prompt';
import { Prompt } from './Prompt';

type Props = Pick<DialogProps, 'title' | 'description'> &
Omit<PromptProps, 'onClose' | 'onHide' | 'onResult'> & { id: string };
Omit<PromptProps, 'onClose' | 'onCancel' | 'onResult'> & { id: string };

export function usePrompt() {
const dialog = useDialog();
Expand All @@ -16,11 +16,16 @@ export function usePrompt() {
description,
hideX: true,
size: 'sm',
onClose: () => {
// Click backdrop, close, or escape
resolve(null);
},
render: ({ hide }) =>
Prompt({
onHide: () => {
hide();
onCancel: () => {
// Click cancel button within dialog
resolve(null);
hide();
},
onResult: resolve,
...props,
Expand Down

0 comments on commit 7e62bb6

Please sign in to comment.