From fee64e0ec67052d9117bf52ba5b1a680a1b1cdae Mon Sep 17 00:00:00 2001 From: teodorus-nathaniel Date: Thu, 7 Mar 2024 12:27:52 +0700 Subject: [PATCH] Fix donate --- src/components/auth/MyAccountsContext.tsx | 13 ++++- src/components/auth/utils.tsx | 2 +- src/components/donate/DonateModal.tsx | 21 +++++--- src/components/donate/index.tsx | 48 ++++++++++++------- .../wallets/supportedWallets/index.ts | 3 +- 5 files changed, 60 insertions(+), 27 deletions(-) diff --git a/src/components/auth/MyAccountsContext.tsx b/src/components/auth/MyAccountsContext.tsx index 7de5ffca7..e41e01622 100644 --- a/src/components/auth/MyAccountsContext.tsx +++ b/src/components/auth/MyAccountsContext.tsx @@ -32,9 +32,11 @@ import { useMyAccount } from 'src/stores/my-account' import { AnyAccountId, EmailAccount } from 'src/types' import useSubsocialEffect from '../api/useSubsocialEffect' import { useAccountSelector } from '../profile-selector/AccountSelector' +import { useIsMobileWidthOrDevice } from '../responsive' import { reloadSpaceIdsFollowedByAccount } from '../spaces/helpers/reloadSpaceIdsFollowedByAccount' import { equalAddresses } from '../substrate' import { getSignerToken, isProxyAdded } from '../utils/OffchainSigner/ExternalStorage' +import { desktopWalletConnect, mobileWalletConection } from './utils' // // Types // @@ -68,6 +70,7 @@ export type MyAccountsContextProps = { setAccounts: (account: InjectedAccountWithMeta[]) => void setEmailAccounts: (emailAccounts: EmailAccount[]) => void resetEmailAccounts: () => void + connectWallet: () => void } const contextStub: MyAccountsContextProps = { @@ -83,6 +86,7 @@ const contextStub: MyAccountsContextProps = { emailAccounts: [], status: 'LOADING', }, + connectWallet: functionStub, } type UnsubscribeFn = { @@ -99,8 +103,9 @@ export function MyAccountsProvider(props: React.PropsWithChildren<{}>) { const address = useMyAddress() const { getAllEmailAccounts } = useEmailAccount() const [, recheck] = useReducer(x => (x + 1) % 16384, 0) + const isMobile = useIsMobileWidthOrDevice() - const [status] = useState('LOADING') + const [status, setStatus] = useState('LOADING') const [accounts, setAccounts] = useState([]) const [emailAccounts, setEmailAccounts] = useState([]) @@ -114,6 +119,11 @@ export function MyAccountsProvider(props: React.PropsWithChildren<{}>) { resetEmailAccounts() }, []) + const params = { setAccounts, setStatus } + const connectWallet = useCallback(() => { + isMobile ? mobileWalletConection(params) : desktopWalletConnect(params) + }, []) + useEffect(() => { if (!recheckStatuses.includes(status)) return @@ -172,6 +182,7 @@ export function MyAccountsProvider(props: React.PropsWithChildren<{}>) { setEmailAccounts, resetEmailAccounts, state, + connectWallet, } }, [state]) diff --git a/src/components/auth/utils.tsx b/src/components/auth/utils.tsx index 20dede8b9..3ccee0949 100644 --- a/src/components/auth/utils.tsx +++ b/src/components/auth/utils.tsx @@ -72,7 +72,7 @@ export const desktopWalletConnect = ({ setAccounts, setStatus }: ConnectWalletPr let cancelled = false ;(async () => { - const currentWallet = getCurrentWallet() || 'polkadot-js' + const currentWallet = getCurrentWallet() || 'Polkadot.js' const wallet = getWalletBySource(currentWallet as string) if ((window as Window & InjectedWindow)?.injectedWeb3) { diff --git a/src/components/donate/DonateModal.tsx b/src/components/donate/DonateModal.tsx index b4f435d3e..ae983d35a 100644 --- a/src/components/donate/DonateModal.tsx +++ b/src/components/donate/DonateModal.tsx @@ -5,7 +5,7 @@ import clsx from 'clsx' import { capitalize } from 'lodash' import { useRouter } from 'next/router' import { useEffect } from 'react' -import { useMyAccountsContext } from 'src/components/auth/MyAccountsContext' +import { useMyAccountsContext, useMyAddress } from 'src/components/auth/MyAccountsContext' import Name from 'src/components/profiles/address-views/Name' import { useResponsiveSize } from 'src/components/responsive' import { toShortAddress } from 'src/components/utils' @@ -71,10 +71,15 @@ const TransferButton = ({ form, recipient }: TransferButtonProps) => { return [recipient, balanceWithDecimal(amount.toString(), decimals).toString()] } + let extrinsic = 'balances.transfer' + if (network === 'kusama' || network === 'polkadot') { + extrinsic = 'balances.transferAllowDeath' + } + return ( { const { isMobile } = useResponsiveSize() const chainInfo = useChainInfo() + const myAddress = useMyAddress() const { setCurrency, setSender, currency, infoByNetwork } = useTipContext() @@ -109,17 +115,19 @@ export const DonateCard = ({ recipientAddress }: DonateProps) => { const mySubsocialAddress = convertToSubsocialAddress(addressFromUrl) - const accountsForChoosing = accounts + const ss58Format = infoByNetwork?.ss58Format + + const accountsForChoosing = Array.from( + new Set([{ address: convertAddressToChainFormat(myAddress, ss58Format)! }, ...accounts]), + ) .filter(x => convertToSubsocialAddress(x.address) !== mySubsocialAddress) .map(x => x.address) - - const ss58Format = infoByNetwork?.ss58Format + .filter(Boolean) const defaultSender = accountsForChoosing[0] useEffect(() => { if (!defaultSender) return - setSender(defaultSender) }, [defaultSender]) @@ -144,6 +152,7 @@ export const DonateCard = ({ recipientAddress }: DonateProps) => {