From ea90d2894d7ef86c88190d8df38f37251c67761f Mon Sep 17 00:00:00 2001 From: jinoosss Date: Fri, 26 Jan 2024 16:46:24 +0900 Subject: [PATCH] fix: [ADN-314] Fix GNOT sending error --- .../adena-extension/src/common/utils/client-utils.ts | 9 +++++---- .../src/common/validation/validation-address-book.ts | 3 ++- .../approve-transaction/approve-transaction.styles.ts | 1 + .../pages/wallet/approve-transaction-main/index.tsx | 4 ++-- packages/adena-module/src/utils/address.ts | 10 ++++++++++ packages/adena-module/src/utils/index.ts | 1 + packages/adena-module/src/utils/messages.ts | 4 +++- 7 files changed, 24 insertions(+), 8 deletions(-) diff --git a/packages/adena-extension/src/common/utils/client-utils.ts b/packages/adena-extension/src/common/utils/client-utils.ts index bb9c62d0..07b92f1a 100644 --- a/packages/adena-extension/src/common/utils/client-utils.ts +++ b/packages/adena-extension/src/common/utils/client-utils.ts @@ -1,3 +1,4 @@ +import { validateAddress } from 'adena-module'; import gnotLogo from '@assets/gnot-logo.svg'; import contractLogo from '@assets/contract.svg'; import addPkgLogo from '@assets/addpkg.svg'; @@ -33,7 +34,9 @@ export function getDateDiff(d: Date | string): number { return new Date().getDate() - new Date(d).getDate(); } -export function dateTimeFormatEn(d: Date | string): { +export function dateTimeFormatEn( + d: Date | string, +): { year: string; month: string; day: string; @@ -168,9 +171,7 @@ export function numberWithCommas(value: number, fixed?: number): string { } export function addressValidationCheck(v: string): boolean { - const startStringCheck = /^g1/; - const atozAndNumberCheck = /^[a-z0-9]{40}$/; - return startStringCheck.test(v) && atozAndNumberCheck.test(v) ? true : false; + return validateAddress(v); } export function removeUgly(target: any): any { diff --git a/packages/adena-extension/src/common/validation/validation-address-book.ts b/packages/adena-extension/src/common/validation/validation-address-book.ts index 7584a24d..57bf64d5 100644 --- a/packages/adena-extension/src/common/validation/validation-address-book.ts +++ b/packages/adena-extension/src/common/validation/validation-address-book.ts @@ -1,7 +1,8 @@ +import { Account } from 'adena-module'; + import { AddressBookValidationError } from '@common/errors/validation/address-book-validation-error'; import { addressValidationCheck } from '@common/utils/client-utils'; import { AddressBookItem } from '@repositories/wallet'; -import { Account } from 'adena-module'; export const validateInvalidAddress = (address: string): boolean => { const invalidCheck = addressValidationCheck(address); diff --git a/packages/adena-extension/src/components/molecules/approve-transaction/approve-transaction.styles.ts b/packages/adena-extension/src/components/molecules/approve-transaction/approve-transaction.styles.ts index b755eca8..aca9ba8d 100644 --- a/packages/adena-extension/src/components/molecules/approve-transaction/approve-transaction.styles.ts +++ b/packages/adena-extension/src/components/molecules/approve-transaction/approve-transaction.styles.ts @@ -5,6 +5,7 @@ import { fonts, getTheme } from '@styles/theme'; export const ApproveTransactionWrapper = styled.div<{ isErrorNetworkFee: boolean }>` ${mixins.flex({ justify: 'flex-start' })}; + width: 100%; padding: 0 20px; margin-bottom: 96px; align-self: center; diff --git a/packages/adena-extension/src/pages/wallet/approve-transaction-main/index.tsx b/packages/adena-extension/src/pages/wallet/approve-transaction-main/index.tsx index 9e861b29..9e593cdc 100644 --- a/packages/adena-extension/src/pages/wallet/approve-transaction-main/index.tsx +++ b/packages/adena-extension/src/pages/wallet/approve-transaction-main/index.tsx @@ -184,7 +184,7 @@ const ApproveTransactionContainer: React.FC = () => { const hash = transactionService.createHash(signed); const response = await new Promise((resolve) => { transactionService - .sendTransaction(wallet, currentAccount, signed) + .sendTransaction(wallet, currentAccount, signed, true) .then(resolve) .catch((error: TM2Error | Error) => { resolve(error); @@ -285,7 +285,7 @@ const ApproveTransactionContainer: React.FC = () => { const onResponseSendTransaction = useCallback(() => { if (response) { - chrome.runtime.sendMessage(response); + // chrome.runtime.sendMessage(response); } }, [response]); diff --git a/packages/adena-module/src/utils/address.ts b/packages/adena-module/src/utils/address.ts index 2d6778ca..38a8883b 100644 --- a/packages/adena-module/src/utils/address.ts +++ b/packages/adena-module/src/utils/address.ts @@ -1,4 +1,5 @@ import { KeySigner } from '@gnolang/tm2-js-client'; +import { fromBech32 } from '../encoding'; export async function publicKeyToAddress( publicKey: Uint8Array, @@ -6,3 +7,12 @@ export async function publicKeyToAddress( ): Promise { return new KeySigner(new Uint8Array(), publicKey, addressPrefix).getAddress(); } + +export function validateAddress(address: string): boolean { + try { + const publicKey = fromBech32(address); + return Boolean(publicKey?.prefix); + } catch { + return false; + } +} diff --git a/packages/adena-module/src/utils/index.ts b/packages/adena-module/src/utils/index.ts index 9969798f..f4265401 100644 --- a/packages/adena-module/src/utils/index.ts +++ b/packages/adena-module/src/utils/index.ts @@ -3,3 +3,4 @@ export { assert, assertDefined, assertDefinedAndNotNull } from './assert'; export { sleep } from './sleep'; export { isDefined, isNonNullObject, isUint8Array } from './typechecks'; export * from './messages'; +export * from './address'; diff --git a/packages/adena-module/src/utils/messages.ts b/packages/adena-module/src/utils/messages.ts index 65d639ba..72417d4f 100644 --- a/packages/adena-module/src/utils/messages.ts +++ b/packages/adena-module/src/utils/messages.ts @@ -24,9 +24,11 @@ export interface Document { function encodeMessageValue(message: { type: string; value: any }) { switch (message.type) { case MsgEndpoint.MSG_ADD_PKG: + const value = message.value; + const msgAddPkg = MsgAddPackage.create(value); return { typeUrl: MsgEndpoint.MSG_ADD_PKG, - value: MsgAddPackage.encode(message.value).finish(), + value: MsgAddPackage.encode(msgAddPkg).finish(), }; case MsgEndpoint.MSG_CALL: return {