From 2ccc5cd5ba3f83b5fa54e06147458b78401acdf1 Mon Sep 17 00:00:00 2001 From: Harman-singh-waraich Date: Tue, 11 Feb 2025 19:02:16 +0530 Subject: [PATCH 1/3] fix(kleros-sdk): fix-key-check --- kleros-sdk/src/dataMappings/utils/index.ts | 3 +++ .../src/dataMappings/utils/replacePlaceholdersWithValues.ts | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/kleros-sdk/src/dataMappings/utils/index.ts b/kleros-sdk/src/dataMappings/utils/index.ts index bacf46150..1c9d85d45 100644 --- a/kleros-sdk/src/dataMappings/utils/index.ts +++ b/kleros-sdk/src/dataMappings/utils/index.ts @@ -1,3 +1,6 @@ export * from "./populateTemplate"; export * from "./retrieveVariables"; export * from "./disputeDetailsTypes"; + +export const isUndefined = (maybeObject: any): maybeObject is undefined | null => + typeof maybeObject === "undefined" || maybeObject === null; diff --git a/kleros-sdk/src/dataMappings/utils/replacePlaceholdersWithValues.ts b/kleros-sdk/src/dataMappings/utils/replacePlaceholdersWithValues.ts index 2f5520ef7..655cad0c5 100644 --- a/kleros-sdk/src/dataMappings/utils/replacePlaceholdersWithValues.ts +++ b/kleros-sdk/src/dataMappings/utils/replacePlaceholdersWithValues.ts @@ -2,6 +2,7 @@ import mustache from "mustache"; import retrieveVariables from "./retrieveVariables"; import { ActionMapping } from "./actionTypes"; import { InvalidContextError } from "../../errors"; +import { isUndefined } from "."; export function replacePlaceholdersWithValues( mapping: ActionMapping, @@ -35,7 +36,8 @@ const validateContext = (template: string, context: Record) => const variables = retrieveVariables(template); variables.forEach((variable) => { - if (!context[variable]) throw new InvalidContextError(`Expected key "${variable}" to be provided in context.`); + if (isUndefined(context[variable])) + throw new InvalidContextError(`Expected key "${variable}" to be provided in context.`); }); return true; }; From a270973bfb1d9989a9a26597da5bd3610bc9129a Mon Sep 17 00:00:00 2001 From: Harman-singh-waraich Date: Tue, 11 Feb 2025 19:02:43 +0530 Subject: [PATCH 2/3] refactor(web-devtools): error-display --- web-devtools/src/app/(main)/dispute-template/page.tsx | 6 +++++- web-devtools/src/hooks/queries/useDisputeTemplateFromId.ts | 3 ++- web-devtools/src/utils/isEmtpy.ts | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 web-devtools/src/utils/isEmtpy.ts diff --git a/web-devtools/src/app/(main)/dispute-template/page.tsx b/web-devtools/src/app/(main)/dispute-template/page.tsx index ff9802520..47deac524 100644 --- a/web-devtools/src/app/(main)/dispute-template/page.tsx +++ b/web-devtools/src/app/(main)/dispute-template/page.tsx @@ -26,6 +26,8 @@ import ReactMarkdown from "components/ReactMarkdown"; import FetchDisputeRequestInput, { DisputeRequest } from "./FetchDisputeRequestInput"; import FetchFromIDInput from "./FetchFromIdInput"; import CustomContextInputs from "./CustomContextInputs"; +import { debounceErrorToast } from "utils/debounceErrorToast"; +import { isEmpty } from "utils/isEmtpy"; const Container = styled.div` height: auto; @@ -193,12 +195,14 @@ const DisputeTemplateView = () => { if (customContext) initialContext = { ...initialContext, ...customContext }; const fetchData = async () => { + if (isEmpty(disputeTemplateInput)) return; try { const data = dataMappingsInput ? await executeActions(JSON.parse(dataMappingsInput), initialContext) : {}; const finalDisputeDetails = populateTemplate(disputeTemplateInput, data); setDisputeDetails(finalDisputeDetails); - } catch (e) { + } catch (e: any) { console.error(e); + debounceErrorToast(e?.message); setDisputeDetails(undefined); } finally { setLoading(false); diff --git a/web-devtools/src/hooks/queries/useDisputeTemplateFromId.ts b/web-devtools/src/hooks/queries/useDisputeTemplateFromId.ts index fc33ae2b7..44626bef5 100644 --- a/web-devtools/src/hooks/queries/useDisputeTemplateFromId.ts +++ b/web-devtools/src/hooks/queries/useDisputeTemplateFromId.ts @@ -5,6 +5,7 @@ import { isUndefined } from "utils/isUndefined"; import { graphql } from "src/graphql-generated"; import { DisputeTemplateQuery } from "src/graphql-generated/graphql"; +import { isEmpty } from "utils/isEmtpy"; const disputeTemplateQuery = graphql(` query DisputeTemplate($id: ID!) { @@ -18,7 +19,7 @@ const disputeTemplateQuery = graphql(` `); export const useDisputeTemplateFromId = (templateId?: string) => { - const isEnabled = !isUndefined(templateId); + const isEnabled = !isUndefined(templateId) && !isEmpty(templateId); const { graphqlBatcher } = useGraphqlBatcher(); return useQuery({ diff --git a/web-devtools/src/utils/isEmtpy.ts b/web-devtools/src/utils/isEmtpy.ts new file mode 100644 index 000000000..db4a97dbd --- /dev/null +++ b/web-devtools/src/utils/isEmtpy.ts @@ -0,0 +1 @@ +export const isEmpty = (str: string): boolean => str.trim() === ""; From 35e703166f957c6bbe2e1022bf490ea7aefd43c0 Mon Sep 17 00:00:00 2001 From: Harman-singh-waraich Date: Tue, 11 Feb 2025 19:07:41 +0530 Subject: [PATCH 3/3] fix(web-devtools): filename-typo --- web-devtools/src/app/(main)/dispute-template/page.tsx | 2 +- web-devtools/src/hooks/queries/useDisputeTemplateFromId.ts | 2 +- web-devtools/src/utils/{isEmtpy.ts => isEmpty.ts} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename web-devtools/src/utils/{isEmtpy.ts => isEmpty.ts} (100%) diff --git a/web-devtools/src/app/(main)/dispute-template/page.tsx b/web-devtools/src/app/(main)/dispute-template/page.tsx index 47deac524..e1522060b 100644 --- a/web-devtools/src/app/(main)/dispute-template/page.tsx +++ b/web-devtools/src/app/(main)/dispute-template/page.tsx @@ -27,7 +27,7 @@ import FetchDisputeRequestInput, { DisputeRequest } from "./FetchDisputeRequestI import FetchFromIDInput from "./FetchFromIdInput"; import CustomContextInputs from "./CustomContextInputs"; import { debounceErrorToast } from "utils/debounceErrorToast"; -import { isEmpty } from "utils/isEmtpy"; +import { isEmpty } from "utils/isEmpty"; const Container = styled.div` height: auto; diff --git a/web-devtools/src/hooks/queries/useDisputeTemplateFromId.ts b/web-devtools/src/hooks/queries/useDisputeTemplateFromId.ts index 44626bef5..74f98ea1e 100644 --- a/web-devtools/src/hooks/queries/useDisputeTemplateFromId.ts +++ b/web-devtools/src/hooks/queries/useDisputeTemplateFromId.ts @@ -5,7 +5,7 @@ import { isUndefined } from "utils/isUndefined"; import { graphql } from "src/graphql-generated"; import { DisputeTemplateQuery } from "src/graphql-generated/graphql"; -import { isEmpty } from "utils/isEmtpy"; +import { isEmpty } from "utils/isEmpty"; const disputeTemplateQuery = graphql(` query DisputeTemplate($id: ID!) { diff --git a/web-devtools/src/utils/isEmtpy.ts b/web-devtools/src/utils/isEmpty.ts similarity index 100% rename from web-devtools/src/utils/isEmtpy.ts rename to web-devtools/src/utils/isEmpty.ts