Skip to content

Commit 6dd2987

Browse files
committed
Wrap JSONified data in useMemo
1 parent 169c0e8 commit 6dd2987

File tree

1 file changed

+29
-15
lines changed

1 file changed

+29
-15
lines changed

jumble/src/views/CharmDetailView.tsx

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -893,6 +893,34 @@ const DataTab = () => {
893893
const [isLineageExpanded, setIsLineageExpanded] = useState(false);
894894
const [isReferencesExpanded, setIsReferencesExpanded] = useState(false);
895895

896+
const argumentJson = React.useMemo<Record<string, any>>(() => {
897+
if (!isArgumentExpanded) {
898+
return {};
899+
}
900+
901+
try {
902+
return translateCellsAndStreamsToPlainJSON(
903+
charmManager.getArgument(charm)?.get(),
904+
) as Record<string, any>;
905+
} catch (error) {
906+
console.warn("Error translating argument to JSON:", error);
907+
return {};
908+
}
909+
}, [isArgumentExpanded, charmManager, charm]);
910+
911+
const resultJson = React.useMemo<Record<string, any>>(() => {
912+
if (!isResultExpanded) {
913+
return {};
914+
}
915+
916+
try {
917+
return translateCellsAndStreamsToPlainJSON(charm.get()) ?? {};
918+
} catch (error) {
919+
console.warn("Error translating result to JSON:", error);
920+
return {};
921+
}
922+
}, [isResultExpanded, charm]);
923+
896924
if (!charm) return null;
897925

898926
const lineage = charmManager.getLineage(charm);
@@ -914,20 +942,6 @@ const DataTab = () => {
914942
</div>
915943
);
916944

917-
let argumentJson: Record<string, any>;
918-
try {
919-
if (isArgumentExpanded) {
920-
argumentJson = translateCellsAndStreamsToPlainJSON(
921-
charmManager.getArgument(charm).get(),
922-
) as Record<string, any>;
923-
} else {
924-
argumentJson = {};
925-
}
926-
} catch (error) {
927-
console.warn("Error translating argument to JSON:", error);
928-
argumentJson = {};
929-
}
930-
931945
return (
932946
<div className="h-full overflow-auto p-4">
933947
{charm.getSourceCell() && (
@@ -970,7 +984,7 @@ const DataTab = () => {
970984
<div className="border border-gray-300 rounded bg-gray-50 p-2">
971985
{/* @ts-expect-error JsonView is imported as any */}
972986
<JsonView
973-
value={translateCellsAndStreamsToPlainJSON(charm.get()) ?? {}}
987+
value={resultJson}
974988
style={{
975989
background: "transparent",
976990
fontSize: "0.875rem",

0 commit comments

Comments
 (0)