From e754fad581f1d8948ed9ce9b4a4f6a25252b1d53 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Thu, 28 Oct 2021 16:29:41 +0200 Subject: [PATCH] Fix response error handling for smart queries --- CHANGELOG.md | 4 ++++ packages/cosmwasm-stargate/src/queries/wasm.ts | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72d7a936..f9f4891b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ and this project adheres to ## [Unreleased] +### Fixed + +- @cosmjs/cosmwasm-stargate: Fix response error handling for smart queries. + ## [0.26.3] - 2021-10-25 ### Added diff --git a/packages/cosmwasm-stargate/src/queries/wasm.ts b/packages/cosmwasm-stargate/src/queries/wasm.ts index 8cd7c521..1f851f70 100644 --- a/packages/cosmwasm-stargate/src/queries/wasm.ts +++ b/packages/cosmwasm-stargate/src/queries/wasm.ts @@ -120,10 +120,16 @@ export function setupWasmExtension(base: QueryClient): WasmExtension { const request = { address: address, queryData: toAscii(JSON.stringify(query)) }; const { data } = await queryService.SmartContractState(request); // By convention, smart queries must return a valid JSON document (see https://github.com/CosmWasm/cosmwasm/issues/144) + let responseText: string; try { - return JSON.parse(fromUtf8(data)); + responseText = fromUtf8(data); } catch (error) { - throw new Error("Contract did not return valid JSON data"); + throw new Error(`Could not UTF-8 decode smart query response from contract: ${error}`); + } + try { + return JSON.parse(responseText); + } catch (error) { + throw new Error(`Could not JSON parse smart query response from contract: ${error}`); } }, },