diff --git a/packages/utils/src/decode-message.ts b/packages/utils/src/decode-message.ts index 6ac00f8e1..bc273805b 100644 --- a/packages/utils/src/decode-message.ts +++ b/packages/utils/src/decode-message.ts @@ -12,6 +12,12 @@ import { toBeHex } from "ethers/utils" * @param message The Semaphore message as a bigint. * @returns The Semaphore message as a text. */ -export default function decodeMessage(message: BigNumberish) { - return decodeBytes32String(toBeHex(message, 32)) +export default function decodeMessage(message: BigNumberish): string { + const hex = toBeHex(message, 32) + + try { + return decodeBytes32String(hex) + } catch { + return hex + } } diff --git a/packages/utils/tests/index.test.ts b/packages/utils/tests/index.test.ts index 40029920e..0e15b64d6 100644 --- a/packages/utils/tests/index.test.ts +++ b/packages/utils/tests/index.test.ts @@ -56,5 +56,11 @@ describe("Utils", () => { expect(decodedMessage).toBe(message) }) + + it("Should return hex if message is not a valid bytes32 string", () => { + const hex = "0x66fdd5e25ef9ddb305ba3c2aae1856ab9c6f2979000000000000000000000000" + const result = decodeMessage(hex) + expect(result).toBe(hex) + }) }) })