mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-06-09 16:12:51 +02:00
Fix prompt
This commit is contained in:
+2
-14
@@ -46,19 +46,7 @@ use yaak_models::models::{
|
|||||||
CookieJar, Environment, EnvironmentVariable, Folder, GrpcConnection, GrpcEvent, GrpcEventType,
|
CookieJar, Environment, EnvironmentVariable, Folder, GrpcConnection, GrpcEvent, GrpcEventType,
|
||||||
GrpcRequest, HttpRequest, HttpResponse, KeyValue, ModelType, Plugin, Settings, Workspace,
|
GrpcRequest, HttpRequest, HttpResponse, KeyValue, ModelType, Plugin, Settings, Workspace,
|
||||||
};
|
};
|
||||||
use yaak_models::queries::{
|
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};
|
||||||
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_plugin_runtime::events::{
|
use yaak_plugin_runtime::events::{
|
||||||
BootResponse, CallHttpRequestActionRequest, FilterResponse, FindHttpResponsesResponse,
|
BootResponse, CallHttpRequestActionRequest, FilterResponse, FindHttpResponsesResponse,
|
||||||
GetHttpRequestActionsResponse, GetHttpRequestByIdResponse, GetTemplateFunctionsResponse, Icon,
|
GetHttpRequestActionsResponse, GetHttpRequestByIdResponse, GetTemplateFunctionsResponse, Icon,
|
||||||
@@ -2172,7 +2160,7 @@ async fn call_frontend<T: Serialize + Clone, R: Runtime>(
|
|||||||
event_name: &str,
|
event_name: &str,
|
||||||
args: T,
|
args: T,
|
||||||
) -> PromptTextResponse {
|
) -> PromptTextResponse {
|
||||||
let reply_id = format!("{event_name}_reply");
|
let reply_id = format!("{event_name}_reply_{}", generate_id());
|
||||||
let payload = FrontendCall {
|
let payload = FrontendCall {
|
||||||
args,
|
args,
|
||||||
reply_id: reply_id.clone(),
|
reply_id: reply_id.clone(),
|
||||||
|
|||||||
@@ -49,11 +49,18 @@ export const DialogProvider = ({ children }: { children: React.ReactNode }) => {
|
|||||||
return <DialogContext.Provider value={state}>{children}</DialogContext.Provider>;
|
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 { actions } = useContext(DialogContext);
|
||||||
const children = render({ hide: () => actions.hide(id) });
|
const children = render({ hide: () => actions.hide(id) });
|
||||||
return (
|
return (
|
||||||
<Dialog open onClose={() => actions.hide(id)} {...props}>
|
<Dialog
|
||||||
|
open
|
||||||
|
onClose={() => {
|
||||||
|
onClose?.();
|
||||||
|
actions.hide(id);
|
||||||
|
}}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
{children}
|
{children}
|
||||||
</Dialog>
|
</Dialog>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ export function GlobalHooks() {
|
|||||||
const setEnvironments = useSetAtom(environmentsAtom);
|
const setEnvironments = useSetAtom(environmentsAtom);
|
||||||
|
|
||||||
useListenToTauriEvent<ModelPayload>('upserted_model', ({ payload }) => {
|
useListenToTauriEvent<ModelPayload>('upserted_model', ({ payload }) => {
|
||||||
|
console.log('Upserted model', payload.model);
|
||||||
const { model, windowLabel } = payload;
|
const { model, windowLabel } = payload;
|
||||||
const queryKey =
|
const queryKey =
|
||||||
model.model === 'http_response'
|
model.model === 'http_response'
|
||||||
@@ -132,6 +133,8 @@ export function GlobalHooks() {
|
|||||||
const { model, windowLabel } = payload;
|
const { model, windowLabel } = payload;
|
||||||
if (shouldIgnoreModel(model, windowLabel)) return;
|
if (shouldIgnoreModel(model, windowLabel)) return;
|
||||||
|
|
||||||
|
console.log('Delete model', payload.model);
|
||||||
|
|
||||||
if (model.model === 'workspace') {
|
if (model.model === 'workspace') {
|
||||||
setWorkspaces(removeById(model));
|
setWorkspaces(removeById(model));
|
||||||
} else if (model.model === 'plugin') {
|
} else if (model.model === 'plugin') {
|
||||||
|
|||||||
@@ -7,12 +7,12 @@ import { HStack } from '../components/core/Stacks';
|
|||||||
|
|
||||||
export type PromptProps = Omit<PromptTextRequest, 'id' | 'title' | 'description'> & {
|
export type PromptProps = Omit<PromptTextRequest, 'id' | 'title' | 'description'> & {
|
||||||
description?: ReactNode;
|
description?: ReactNode;
|
||||||
onHide: () => void;
|
onCancel: () => void;
|
||||||
onResult: (value: string | null) => void;
|
onResult: (value: string | null) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
export function Prompt({
|
export function Prompt({
|
||||||
onHide,
|
onCancel,
|
||||||
label,
|
label,
|
||||||
defaultValue,
|
defaultValue,
|
||||||
placeholder,
|
placeholder,
|
||||||
@@ -25,10 +25,9 @@ export function Prompt({
|
|||||||
const handleSubmit = useCallback(
|
const handleSubmit = useCallback(
|
||||||
(e: FormEvent<HTMLFormElement>) => {
|
(e: FormEvent<HTMLFormElement>) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
onHide();
|
|
||||||
onResult(value);
|
onResult(value);
|
||||||
},
|
},
|
||||||
[onHide, onResult, value],
|
[onResult, value],
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -46,7 +45,7 @@ export function Prompt({
|
|||||||
onChange={setValue}
|
onChange={setValue}
|
||||||
/>
|
/>
|
||||||
<HStack space={2} justifyContent="end">
|
<HStack space={2} justifyContent="end">
|
||||||
<Button onClick={onHide} variant="border" color="secondary">
|
<Button onClick={onCancel} variant="border" color="secondary">
|
||||||
{cancelText || 'Cancel'}
|
{cancelText || 'Cancel'}
|
||||||
</Button>
|
</Button>
|
||||||
<Button type="submit" color="primary">
|
<Button type="submit" color="primary">
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import type { PromptProps } from './Prompt';
|
|||||||
import { Prompt } from './Prompt';
|
import { Prompt } from './Prompt';
|
||||||
|
|
||||||
type Props = Pick<DialogProps, 'title' | 'description'> &
|
type Props = Pick<DialogProps, 'title' | 'description'> &
|
||||||
Omit<PromptProps, 'onClose' | 'onHide' | 'onResult'> & { id: string };
|
Omit<PromptProps, 'onClose' | 'onCancel' | 'onResult'> & { id: string };
|
||||||
|
|
||||||
export function usePrompt() {
|
export function usePrompt() {
|
||||||
const dialog = useDialog();
|
const dialog = useDialog();
|
||||||
@@ -16,11 +16,16 @@ export function usePrompt() {
|
|||||||
description,
|
description,
|
||||||
hideX: true,
|
hideX: true,
|
||||||
size: 'sm',
|
size: 'sm',
|
||||||
|
onClose: () => {
|
||||||
|
// Click backdrop, close, or escape
|
||||||
|
resolve(null);
|
||||||
|
},
|
||||||
render: ({ hide }) =>
|
render: ({ hide }) =>
|
||||||
Prompt({
|
Prompt({
|
||||||
onHide: () => {
|
onCancel: () => {
|
||||||
hide();
|
// Click cancel button within dialog
|
||||||
resolve(null);
|
resolve(null);
|
||||||
|
hide();
|
||||||
},
|
},
|
||||||
onResult: resolve,
|
onResult: resolve,
|
||||||
...props,
|
...props,
|
||||||
|
|||||||
Reference in New Issue
Block a user