From f4a1398c3cba355fc479d4accea680c385a4e770 Mon Sep 17 00:00:00 2001 From: Nikita Yutanov Date: Tue, 12 Dec 2023 01:03:11 +0300 Subject: [PATCH 1/3] Add address arg to voucher hooks --- .../src/hooks/api/voucher/use-is-voucher-exists.ts | 7 ++----- .../src/hooks/api/voucher/use-voucher-balance.ts | 8 ++------ utils/gear-hooks/src/hooks/api/voucher/use-voucher.ts | 6 +++--- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/utils/gear-hooks/src/hooks/api/voucher/use-is-voucher-exists.ts b/utils/gear-hooks/src/hooks/api/voucher/use-is-voucher-exists.ts index b09252705b..e6cb2e290d 100644 --- a/utils/gear-hooks/src/hooks/api/voucher/use-is-voucher-exists.ts +++ b/utils/gear-hooks/src/hooks/api/voucher/use-is-voucher-exists.ts @@ -1,14 +1,11 @@ import { HexString } from '@gear-js/api'; -import { AccountContext, AlertContext, ApiContext } from 'context'; +import { AlertContext, ApiContext } from 'context'; import { useState, useEffect, useContext } from 'react'; -function useIsVoucherExists(programId: HexString | undefined) { +function useIsVoucherExists(programId: HexString | undefined, accountAddress: HexString | undefined) { const { api, isApiReady } = useContext(ApiContext); // сircular dependency fix const alert = useContext(AlertContext); - const { account } = useContext(AccountContext); - const accountAddress = account?.decodedAddress; - const [isVoucherExists, setIsVoucherExists] = useState(); const isVoucherExistsReady = isVoucherExists !== undefined; diff --git a/utils/gear-hooks/src/hooks/api/voucher/use-voucher-balance.ts b/utils/gear-hooks/src/hooks/api/voucher/use-voucher-balance.ts index 5f10ffaae2..598c9b536e 100644 --- a/utils/gear-hooks/src/hooks/api/voucher/use-voucher-balance.ts +++ b/utils/gear-hooks/src/hooks/api/voucher/use-voucher-balance.ts @@ -1,12 +1,8 @@ import { HexString, generateVoucherId } from '@gear-js/api'; -import { AccountContext } from 'context'; -import { useContext } from 'react'; -import { useBalance } from '../balance/use-balance'; -function useVoucherBalance(programId: HexString | undefined) { - const { account } = useContext(AccountContext); - const accountAddress = account?.decodedAddress; +import { useBalance } from '../balance/use-balance'; +function useVoucherBalance(programId: HexString | undefined, accountAddress: HexString | undefined) { const { balance, isBalanceReady } = useBalance( programId && accountAddress ? generateVoucherId(accountAddress, programId) : undefined, ); diff --git a/utils/gear-hooks/src/hooks/api/voucher/use-voucher.ts b/utils/gear-hooks/src/hooks/api/voucher/use-voucher.ts index b2d3ca31be..b5af30f55d 100644 --- a/utils/gear-hooks/src/hooks/api/voucher/use-voucher.ts +++ b/utils/gear-hooks/src/hooks/api/voucher/use-voucher.ts @@ -3,9 +3,9 @@ import { HexString } from '@polkadot/util/types'; import { useIsVoucherExists } from './use-is-voucher-exists'; import { useVoucherBalance } from './use-voucher-balance'; -function useVoucher(programId: HexString | undefined) { - const { isVoucherExists, isVoucherExistsReady } = useIsVoucherExists(programId); - const { voucherBalance, isVoucherBalanceReady } = useVoucherBalance(programId); +function useVoucher(programId: HexString | undefined, accountAddress: HexString | undefined) { + const { isVoucherExists, isVoucherExistsReady } = useIsVoucherExists(programId, accountAddress); + const { voucherBalance, isVoucherBalanceReady } = useVoucherBalance(programId, accountAddress); const isVoucherReady = isVoucherExistsReady && isVoucherBalanceReady; From 7f1cfb1138d469910ae7cb8c5783c501ebe9f770 Mon Sep 17 00:00:00 2001 From: Nikita Yutanov Date: Tue, 12 Dec 2023 01:08:26 +0300 Subject: [PATCH 2/3] Add account voucher hooks --- utils/gear-hooks/package.json | 2 +- utils/gear-hooks/src/hooks/api/index.ts | 13 ++++++++++++- utils/gear-hooks/src/hooks/api/voucher/index.ts | 13 ++++++++++++- .../api/voucher/use-account-voucher-balance.ts | 12 ++++++++++++ .../src/hooks/api/voucher/use-account-voucher.ts | 12 ++++++++++++ .../api/voucher/use-is-account-voucher-exists.ts | 12 ++++++++++++ utils/gear-hooks/src/hooks/index.ts | 6 ++++++ utils/gear-hooks/src/index.ts | 6 ++++++ 8 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 utils/gear-hooks/src/hooks/api/voucher/use-account-voucher-balance.ts create mode 100644 utils/gear-hooks/src/hooks/api/voucher/use-account-voucher.ts create mode 100644 utils/gear-hooks/src/hooks/api/voucher/use-is-account-voucher-exists.ts diff --git a/utils/gear-hooks/package.json b/utils/gear-hooks/package.json index f33ab472f7..906c76f7d8 100644 --- a/utils/gear-hooks/package.json +++ b/utils/gear-hooks/package.json @@ -1,6 +1,6 @@ { "name": "@gear-js/react-hooks", - "version": "0.9.3", + "version": "0.9.4", "description": "React hooks used across Gear applications", "author": "Gear Technologies", "license": "GPL-3.0", diff --git a/utils/gear-hooks/src/hooks/api/index.ts b/utils/gear-hooks/src/hooks/api/index.ts index 3841568527..f63bb5ba3c 100644 --- a/utils/gear-hooks/src/hooks/api/index.ts +++ b/utils/gear-hooks/src/hooks/api/index.ts @@ -10,7 +10,15 @@ import { useReplyCalculateGas, } from './useCalculateGas'; -import { useIsVoucherExists, useVoucherBalance, useVoucher } from './voucher'; +import { + useIsVoucherExists, + useVoucherBalance, + useVoucher, + useIsAccountVoucherExists, + useAccountVoucherBalance, + useAccountVoucher, +} from './voucher'; + import { useBalance, useBalanceFormat } from './balance'; export { @@ -26,6 +34,9 @@ export { useIsVoucherExists, useVoucherBalance, useVoucher, + useIsAccountVoucherExists, + useAccountVoucherBalance, + useAccountVoucher, useBalance, useBalanceFormat, SendMessageOptions, diff --git a/utils/gear-hooks/src/hooks/api/voucher/index.ts b/utils/gear-hooks/src/hooks/api/voucher/index.ts index 8cfca64627..219412fd49 100644 --- a/utils/gear-hooks/src/hooks/api/voucher/index.ts +++ b/utils/gear-hooks/src/hooks/api/voucher/index.ts @@ -2,4 +2,15 @@ import { useIsVoucherExists } from './use-is-voucher-exists'; import { useVoucherBalance } from './use-voucher-balance'; import { useVoucher } from './use-voucher'; -export { useIsVoucherExists, useVoucherBalance, useVoucher }; +import { useIsAccountVoucherExists } from './use-is-account-voucher-exists'; +import { useAccountVoucherBalance } from './use-account-voucher-balance'; +import { useAccountVoucher } from './use-account-voucher'; + +export { + useIsVoucherExists, + useVoucherBalance, + useVoucher, + useIsAccountVoucherExists, + useAccountVoucherBalance, + useAccountVoucher, +}; diff --git a/utils/gear-hooks/src/hooks/api/voucher/use-account-voucher-balance.ts b/utils/gear-hooks/src/hooks/api/voucher/use-account-voucher-balance.ts new file mode 100644 index 0000000000..ebf19e7376 --- /dev/null +++ b/utils/gear-hooks/src/hooks/api/voucher/use-account-voucher-balance.ts @@ -0,0 +1,12 @@ +import { AccountContext } from 'context'; +import { useContext } from 'react'; +import { useVoucherBalance } from './use-voucher-balance'; +import { HexString } from '@gear-js/api'; + +function useAccountVoucherBalance(programId: HexString | undefined) { + const { account } = useContext(AccountContext); + + return useVoucherBalance(programId, account?.decodedAddress); +} + +export { useAccountVoucherBalance }; diff --git a/utils/gear-hooks/src/hooks/api/voucher/use-account-voucher.ts b/utils/gear-hooks/src/hooks/api/voucher/use-account-voucher.ts new file mode 100644 index 0000000000..1ae7172d4b --- /dev/null +++ b/utils/gear-hooks/src/hooks/api/voucher/use-account-voucher.ts @@ -0,0 +1,12 @@ +import { useContext } from 'react'; +import { useVoucher } from './use-voucher'; +import { AccountContext } from 'context'; +import { HexString } from '@gear-js/api'; + +function useAccountVoucher(programId: HexString | undefined) { + const { account } = useContext(AccountContext); + + return useVoucher(programId, account?.decodedAddress); +} + +export { useAccountVoucher }; diff --git a/utils/gear-hooks/src/hooks/api/voucher/use-is-account-voucher-exists.ts b/utils/gear-hooks/src/hooks/api/voucher/use-is-account-voucher-exists.ts new file mode 100644 index 0000000000..eed5c3ab91 --- /dev/null +++ b/utils/gear-hooks/src/hooks/api/voucher/use-is-account-voucher-exists.ts @@ -0,0 +1,12 @@ +import { HexString } from '@gear-js/api'; +import { useIsVoucherExists } from './use-is-voucher-exists'; +import { useContext } from 'react'; +import { AccountContext } from 'context'; + +function useIsAccountVoucherExists(programId: HexString | undefined) { + const { account } = useContext(AccountContext); + + return useIsVoucherExists(programId, account?.decodedAddress); +} + +export { useIsAccountVoucherExists }; diff --git a/utils/gear-hooks/src/hooks/index.ts b/utils/gear-hooks/src/hooks/index.ts index 85c68ce350..ce487d12b6 100644 --- a/utils/gear-hooks/src/hooks/index.ts +++ b/utils/gear-hooks/src/hooks/index.ts @@ -11,6 +11,9 @@ import { useIsVoucherExists, useVoucherBalance, useVoucher, + useIsAccountVoucherExists, + useAccountVoucherBalance, + useAccountVoucher, useBalance, useBalanceFormat, SendMessageOptions, @@ -32,6 +35,9 @@ export { useIsVoucherExists, useVoucherBalance, useVoucher, + useIsAccountVoucherExists, + useAccountVoucherBalance, + useAccountVoucher, useBalance, useBalanceFormat, useAccount, diff --git a/utils/gear-hooks/src/index.ts b/utils/gear-hooks/src/index.ts index ed0c2d144a..1897f49c56 100644 --- a/utils/gear-hooks/src/index.ts +++ b/utils/gear-hooks/src/index.ts @@ -11,6 +11,9 @@ import { useIsVoucherExists, useVoucherBalance, useVoucher, + useIsAccountVoucherExists, + useAccountVoucherBalance, + useAccountVoucher, useBalance, useBalanceFormat, useAccount, @@ -60,6 +63,9 @@ export { useIsVoucherExists, useVoucherBalance, useVoucher, + useIsAccountVoucherExists, + useAccountVoucherBalance, + useAccountVoucher, useBalance, useBalanceFormat, useAccount, From 8f40fc0b8a13ced922d2d632e6cef3647cb0bda9 Mon Sep 17 00:00:00 2001 From: Nikita Yutanov Date: Tue, 12 Dec 2023 01:16:14 +0300 Subject: [PATCH 3/3] Fix idea hooks --- .../voucher/ui/use-voucher-checkbox/use-voucher-checkbox.tsx | 4 ++-- .../src/features/voucher/ui/voucher-badge/voucher-badge.tsx | 4 ++-- .../src/features/voucher/ui/voucher-table/voucher-table.tsx | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/idea/frontend/src/features/voucher/ui/use-voucher-checkbox/use-voucher-checkbox.tsx b/idea/frontend/src/features/voucher/ui/use-voucher-checkbox/use-voucher-checkbox.tsx index db8af984a3..dfc29df792 100644 --- a/idea/frontend/src/features/voucher/ui/use-voucher-checkbox/use-voucher-checkbox.tsx +++ b/idea/frontend/src/features/voucher/ui/use-voucher-checkbox/use-voucher-checkbox.tsx @@ -1,5 +1,5 @@ import { HexString } from '@gear-js/api'; -import { useBalanceFormat, useVoucher } from '@gear-js/react-hooks'; +import { useAccountVoucher, useBalanceFormat } from '@gear-js/react-hooks'; import { LabeledCheckbox } from '@/shared/ui'; @@ -10,7 +10,7 @@ type Props = { }; const UseVoucherCheckbox = ({ programId }: Props) => { - const { isVoucherExists, voucherBalance } = useVoucher(programId); + const { isVoucherExists, voucherBalance } = useAccountVoucher(programId); const { getFormattedBalance } = useBalanceFormat(); const formattedBalance = voucherBalance ? getFormattedBalance(voucherBalance) : undefined; diff --git a/idea/frontend/src/features/voucher/ui/voucher-badge/voucher-badge.tsx b/idea/frontend/src/features/voucher/ui/voucher-badge/voucher-badge.tsx index e67a4e3e34..5b2139751a 100644 --- a/idea/frontend/src/features/voucher/ui/voucher-badge/voucher-badge.tsx +++ b/idea/frontend/src/features/voucher/ui/voucher-badge/voucher-badge.tsx @@ -1,5 +1,5 @@ import { HexString } from '@gear-js/api'; -import { useIsVoucherExists } from '@gear-js/react-hooks'; +import { useIsAccountVoucherExists } from '@gear-js/react-hooks'; import { withAccount } from '@/shared/ui'; @@ -11,7 +11,7 @@ type Props = { }; const VoucherBadge = withAccount(({ programId }: Props) => { - const { isVoucherExists } = useIsVoucherExists(programId); + const { isVoucherExists } = useIsAccountVoucherExists(programId); return isVoucherExists ? : null; }); diff --git a/idea/frontend/src/features/voucher/ui/voucher-table/voucher-table.tsx b/idea/frontend/src/features/voucher/ui/voucher-table/voucher-table.tsx index 2ea6956b42..9d54b7f802 100644 --- a/idea/frontend/src/features/voucher/ui/voucher-table/voucher-table.tsx +++ b/idea/frontend/src/features/voucher/ui/voucher-table/voucher-table.tsx @@ -1,5 +1,5 @@ import { HexString } from '@gear-js/api'; -import { useBalanceFormat, useVoucher } from '@gear-js/react-hooks'; +import { useAccountVoucher, useBalanceFormat } from '@gear-js/react-hooks'; import VoucherPlaceholderSVG from '@/features/voucher/assets/voucher-placeholder.svg?react'; import { ContentLoader } from '@/shared/ui/contentLoader'; @@ -14,7 +14,7 @@ type Props = { }; const VoucherTable = withAccount(({ programId }: Props) => { - const { isVoucherReady, isVoucherExists, voucherBalance } = useVoucher(programId); + const { isVoucherReady, isVoucherExists, voucherBalance } = useAccountVoucher(programId); const { getFormattedBalance } = useBalanceFormat(); const status = isVoucherExists ? BulbStatus.Success : BulbStatus.Error;