From 3d8e462e629c232a4db0816f1856cd01dc61a2a7 Mon Sep 17 00:00:00 2001
From: abefernan <44572727+abefernan@users.noreply.github.com>
Date: Wed, 26 Jul 2023 17:43:30 +0200
Subject: [PATCH] Add parseError instead of lossy
---
.../TxMsgExecuteContractDetails.tsx | 34 ++++-
.../TxMsgInstantiateContract2Details.tsx | 36 +++++-
.../TxMsgInstantiateContractDetails.tsx | 34 ++++-
.../TxMsgMigrateContractDetails.tsx | 121 +++++++++++-------
4 files changed, 170 insertions(+), 55 deletions(-)
diff --git a/components/dataViews/TransactionInfo/TxMsgExecuteContractDetails.tsx b/components/dataViews/TransactionInfo/TxMsgExecuteContractDetails.tsx
index f333334..ea94301 100644
--- a/components/dataViews/TransactionInfo/TxMsgExecuteContractDetails.tsx
+++ b/components/dataViews/TransactionInfo/TxMsgExecuteContractDetails.tsx
@@ -1,6 +1,8 @@
import { fromUtf8 } from "@cosmjs/encoding";
import { MsgExecuteContract } from "cosmjs-types/cosmwasm/wasm/v1/tx";
import dynamic from "next/dynamic";
+import { useState } from "react";
+import { JSONValue } from "vanilla-jsoneditor";
import { useChains } from "../../../context/ChainsContext";
import { printableCoins } from "../../../lib/displayHelpers";
import HashView from "../HashView";
@@ -13,6 +15,20 @@ interface TxMsgExecuteContractDetailsProps {
const TxMsgExecuteContractDetails = ({ msgValue }: TxMsgExecuteContractDetailsProps) => {
const { chain } = useChains();
+ const [parseError, setParseError] = useState("");
+
+ const json: JSONValue = (() => {
+ if (parseError) {
+ return {};
+ }
+
+ try {
+ return JSON.parse(fromUtf8(msgValue.msg));
+ } catch (e) {
+ setParseError(e instanceof Error ? e.message : "Failed to decode UTF-8 msg");
+ return {};
+ }
+ })();
return (
<>
@@ -29,9 +45,15 @@ const TxMsgExecuteContractDetails = ({ msgValue }: TxMsgExecuteContractDetailsPr
{printableCoins(msgValue.funds, chain)}
-
-
-
+ {parseError ? (
+
+ {parseError}
+
+ ) : (
+
+
+
+ )}
>
);
diff --git a/components/dataViews/TransactionInfo/TxMsgInstantiateContract2Details.tsx b/components/dataViews/TransactionInfo/TxMsgInstantiateContract2Details.tsx
index 00cefe9..c390a8d 100644
--- a/components/dataViews/TransactionInfo/TxMsgInstantiateContract2Details.tsx
+++ b/components/dataViews/TransactionInfo/TxMsgInstantiateContract2Details.tsx
@@ -1,6 +1,8 @@
-import { fromUtf8 } from "@cosmjs/encoding";
+import { fromUtf8, toHex } from "@cosmjs/encoding";
import { MsgInstantiateContract2 } from "cosmjs-types/cosmwasm/wasm/v1/tx";
import dynamic from "next/dynamic";
+import { useState } from "react";
+import { JSONValue } from "vanilla-jsoneditor";
import { useChains } from "../../../context/ChainsContext";
import { printableCoins } from "../../../lib/displayHelpers";
import HashView from "../HashView";
@@ -13,6 +15,20 @@ interface TxMsgInstantiateContract2DetailsProps {
const TxMsgInstantiateContract2Details = ({ msgValue }: TxMsgInstantiateContract2DetailsProps) => {
const { chain } = useChains();
+ const [parseError, setParseError] = useState("");
+
+ const json: JSONValue = (() => {
+ if (parseError) {
+ return {};
+ }
+
+ try {
+ return JSON.parse(fromUtf8(msgValue.msg));
+ } catch (e) {
+ setParseError(e instanceof Error ? e.message : "Failed to decode UTF-8 msg");
+ return {};
+ }
+ })();
return (
<>
@@ -45,9 +61,15 @@ const TxMsgInstantiateContract2Details = ({ msgValue }: TxMsgInstantiateContract
{printableCoins(msgValue.funds, chain)}
-
-
-
+ {parseError ? (
+
+ {parseError}
+
+ ) : (
+
+
+
+ )}
>
);
diff --git a/components/dataViews/TransactionInfo/TxMsgInstantiateContractDetails.tsx b/components/dataViews/TransactionInfo/TxMsgInstantiateContractDetails.tsx
index c50db10..fe6513a 100644
--- a/components/dataViews/TransactionInfo/TxMsgInstantiateContractDetails.tsx
+++ b/components/dataViews/TransactionInfo/TxMsgInstantiateContractDetails.tsx
@@ -1,6 +1,8 @@
import { fromUtf8 } from "@cosmjs/encoding";
import { MsgInstantiateContract } from "cosmjs-types/cosmwasm/wasm/v1/tx";
import dynamic from "next/dynamic";
+import { useState } from "react";
+import { JSONValue } from "vanilla-jsoneditor";
import { useChains } from "../../../context/ChainsContext";
import { printableCoins } from "../../../lib/displayHelpers";
import HashView from "../HashView";
@@ -13,6 +15,20 @@ interface TxMsgInstantiateContractDetailsProps {
const TxMsgInstantiateContractDetails = ({ msgValue }: TxMsgInstantiateContractDetailsProps) => {
const { chain } = useChains();
+ const [parseError, setParseError] = useState("");
+
+ const json: JSONValue = (() => {
+ if (parseError) {
+ return {};
+ }
+
+ try {
+ return JSON.parse(fromUtf8(msgValue.msg));
+ } catch (e) {
+ setParseError(e instanceof Error ? e.message : "Failed to decode UTF-8 msg");
+ return {};
+ }
+ })();
return (
<>
@@ -41,9 +57,15 @@ const TxMsgInstantiateContractDetails = ({ msgValue }: TxMsgInstantiateContractD
{printableCoins(msgValue.funds, chain)}
-
-
-
+ {parseError ? (
+
+ {parseError}
+
+ ) : (
+
+
+
+ )}
>
);
diff --git a/components/dataViews/TransactionInfo/TxMsgMigrateContractDetails.tsx b/components/dataViews/TransactionInfo/TxMsgMigrateContractDetails.tsx
index 09be796..086222e 100644
--- a/components/dataViews/TransactionInfo/TxMsgMigrateContractDetails.tsx
+++ b/components/dataViews/TransactionInfo/TxMsgMigrateContractDetails.tsx
@@ -1,6 +1,8 @@
import { fromUtf8 } from "@cosmjs/encoding";
import { MsgMigrateContract } from "cosmjs-types/cosmwasm/wasm/v1/tx";
import dynamic from "next/dynamic";
+import { useState } from "react";
+import { JSONValue } from "vanilla-jsoneditor";
import HashView from "../HashView";
const JsonEditor = dynamic(() => import("../../inputs/JsonEditor"), { ssr: false });
@@ -9,50 +11,79 @@ interface TxMsgMigrateContractDetailsProps {
readonly msgValue: MsgMigrateContract;
}
-const TxMsgMigrateContractDetails = ({ msgValue }: TxMsgMigrateContractDetailsProps) => (
- <>
-
- MsgMigrateContract
-
-
-
-
-
-
-
-
-
- {msgValue.codeId.toString()}
-
-
-
-
-
- >
-);
+const TxMsgMigrateContractDetails = ({ msgValue }: TxMsgMigrateContractDetailsProps) => {
+ const [parseError, setParseError] = useState("");
+
+ const json: JSONValue = (() => {
+ if (parseError) {
+ return {};
+ }
+
+ try {
+ return JSON.parse(fromUtf8(msgValue.msg));
+ } catch (e) {
+ setParseError(e instanceof Error ? e.message : "Failed to decode UTF-8 msg");
+ return {};
+ }
+ })();
+
+ return (
+ <>
+
+ MsgMigrateContract
+
+
+
+
+
+
+
+
+
+ {msgValue.codeId.toString()}
+
+ {parseError ? (
+
+ {parseError}
+
+ ) : (
+
+
+
+ )}
+
+ >
+ );
+};
export default TxMsgMigrateContractDetails;