Skip to content

Commit

Permalink
Merge pull request #713 from secretkeylabs/vic/api-core
Browse files Browse the repository at this point in the history
Update core for API updates for native segwit
  • Loading branch information
victorkirov authored Oct 24, 2024
2 parents 8e55f9c + 752d6f8 commit 2132234
Show file tree
Hide file tree
Showing 19 changed files with 110 additions and 60 deletions.
96 changes: 67 additions & 29 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
"@sats-connect/core": "0.3.0",
"@scure/base": "^1.1.9",
"@scure/btc-signer": "1.2.1",
"@secretkeylabs/xverse-core": "26.0.0",
"@secretkeylabs/xverse-core": "27.0.0",
"@stacks/connect": "7.4.1",
"@stacks/stacks-blockchain-api-types": "6.1.1",
"@stacks/transactions": "6.16.1",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import ledgerConnectDefaultIcon from '@assets/img/ledger/ledger_connect_default.svg';
import ledgerConnectStxIcon from '@assets/img/ledger/ledger_import_connect_stx.svg';
import { delay } from '@common/utils/ledger';
import { delay } from '@common/utils/promises';
import BottomModal from '@components/bottomModal';
import ActionButton from '@components/button';
import LedgerConnectionView from '@components/ledger/connectLedgerView';
Expand Down
2 changes: 1 addition & 1 deletion src/app/components/ledgerSteps/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { delay } from '@common/utils/ledger';
import { delay } from '@common/utils/promises';
import TransportFactory from '@ledgerhq/hw-transport-webusb';
import { type Transport } from '@secretkeylabs/xverse-core';
import Button from '@ui-library/button';
Expand Down
2 changes: 1 addition & 1 deletion src/app/components/messageSigning/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import ledgerConnectDefaultIcon from '@assets/img/ledger/ledger_connect_default.svg';
import ledgerConnectBtcIcon from '@assets/img/ledger/ledger_import_connect_btc.svg';
import { delay } from '@common/utils/ledger';
import { delay } from '@common/utils/promises';
import ConfirmScreen from '@components/confirmScreen';
import InfoContainer from '@components/infoContainer';
import LedgerConnectionView from '@components/ledger/connectLedgerView';
Expand Down
27 changes: 17 additions & 10 deletions src/app/hooks/queries/useSelectedAccountBtcBalance.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,24 @@ import BigNumber from 'bignumber.js';

export default function useSelectedAccountBtcBalance() {
const selectedAccount = useSelectedAccount();
const { data: nativeBalance, isLoading: nativeLoading } = useBtcAddressBalance(
selectedAccount.btcAddresses.native?.address ?? '',
);
const { data: nestedBalance, isLoading: nestedLoading } = useBtcAddressBalance(
selectedAccount.btcAddresses.nested?.address ?? '',
);
const { data: taprootBalance, isLoading: taprootLoading } = useBtcAddressBalance(
selectedAccount.btcAddresses.taproot.address ?? '',
);
const {
data: nativeBalance,
isLoading: nativeLoading,
isRefetching: nativeRefetching,
} = useBtcAddressBalance(selectedAccount.btcAddresses.native?.address ?? '');
const {
data: nestedBalance,
isLoading: nestedLoading,
isRefetching: nestedRefetching,
} = useBtcAddressBalance(selectedAccount.btcAddresses.nested?.address ?? '');
const {
data: taprootBalance,
isLoading: taprootLoading,
isRefetching: taprootRefetching,
} = useBtcAddressBalance(selectedAccount.btcAddresses.taproot.address ?? '');

if (nativeLoading || nestedLoading || taprootLoading) {
return { isLoading: true };
return { isLoading: true, isRefetching: false };
}

const confirmedBalance = BigNumber(nativeBalance?.confirmedBalance ?? 0)
Expand All @@ -35,5 +41,6 @@ export default function useSelectedAccountBtcBalance() {
nestedBalance,
taprootBalance,
isLoading: false,
isRefetching: nativeRefetching || nestedRefetching || taprootRefetching,
};
}
6 changes: 6 additions & 0 deletions src/app/hooks/useWalletReducer.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import getSelectedAccount from '@common/utils/getSelectedAccount';
import { getDeviceAccountIndex } from '@common/utils/ledger';
import { dispatchEventAuthorizedConnectedClients } from '@common/utils/messages/extensionToContentScript/dispatchEvent';
import { delay } from '@common/utils/promises';
import { makeAccountResourceId } from '@components/permissionsManager/resources';
import type { Permission } from '@components/permissionsManager/schemas';
import useNetworkSelector from '@hooks/useNetwork';
Expand Down Expand Up @@ -183,11 +184,16 @@ const useWalletReducer = () => {
newSoftwareAccountList.push(newAccount);

if (newSoftwareAccountList.length >= currentAccounts.length) {
// we've regenerated the existing accounts, so we can update the store before continuing
dispatch(updateSoftwareAccountsAction([...newSoftwareAccountList]));

if (options?.accountLoadCallback) {
await options.accountLoadCallback([...newSoftwareAccountList]);
}

// since we've already loaded the existing accounts, we can now check for new accounts, but with a small delay
// to not overload the backends
await delay(100);
}

newAccountResponse = await walletAccountsGenerator.next();
Expand Down
2 changes: 1 addition & 1 deletion src/app/screens/connect/authenticationRequest/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import stxIcon from '@assets/img/dashboard/stx_icon.svg';
import ledgerConnectDefaultIcon from '@assets/img/ledger/ledger_connect_default.svg';
import ledgerConnectStxIcon from '@assets/img/ledger/ledger_import_connect_stx.svg';
import { MESSAGE_SOURCE } from '@common/types/message-types';
import { delay } from '@common/utils/ledger';
import { delay } from '@common/utils/promises';
import BottomModal from '@components/bottomModal';
import ActionButton from '@components/button';
import LedgerConnectionView from '@components/ledger/connectLedgerView';
Expand Down
3 changes: 2 additions & 1 deletion src/app/screens/home/balanceCard/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ function BalanceCard(props: BalanceCardProps) {
const dispatch = useDispatch();
const { fiatCurrency, hideStx, accountBalances, balanceHidden } = useWalletSelector();
const { confirmedBalance: btcBalance, isLoading: btcBalanceLoading } =
useSelectedAccountBtcBalance(); const { data: stxData } = useStxWalletData();
useSelectedAccountBtcBalance();
const { data: stxData } = useStxWalletData();
const { btcFiatRate, stxBtcRate } = useSupportedCoinRates();
const { setAccountBalance } = useAccountBalance();
const { isLoading, isRefetching } = props;
Expand Down
6 changes: 3 additions & 3 deletions src/app/screens/home/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ import {
useVisibleSip10FungibleTokens,
} from '@hooks/queries/stx/useGetSip10FungibleTokens';
import useAppConfig from '@hooks/queries/useAppConfig';
import useBtcWalletData from '@hooks/queries/useBtcWalletData';
import useFeeMultipliers from '@hooks/queries/useFeeMultipliers';
import useSelectedAccountBtcBalance from '@hooks/queries/useSelectedAccountBtcBalance';
import useSpamTokens from '@hooks/queries/useSpamTokens';
import useStxWalletData from '@hooks/queries/useStxWalletData';
import useSupportedCoinRates from '@hooks/queries/useSupportedCoinRates';
Expand Down Expand Up @@ -93,8 +93,8 @@ function Home() {
const [openReceiveModal, setOpenReceiveModal] = useState(false);
const [openSendModal, setOpenSendModal] = useState(false);
const [openBuyModal, setOpenBuyModal] = useState(false);
const { isInitialLoading: loadingBtcWalletData, isRefetching: refetchingBtcWalletData } =
useBtcWalletData();
const { isLoading: loadingBtcWalletData, isRefetching: refetchingBtcWalletData } =
useSelectedAccountBtcBalance();
const { isInitialLoading: loadingStxWalletData, isRefetching: refetchingStxWalletData } =
useStxWalletData();
const { btcFiatRate, stxBtcRate } = useSupportedCoinRates();
Expand Down
2 changes: 1 addition & 1 deletion src/app/screens/ledger/addStxAddress/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import stxIcon from '@assets/img/dashboard/stx_icon.svg';
import checkCircleIcon from '@assets/img/ledger/check_circle.svg';
import ledgerConnectStxIcon from '@assets/img/ledger/ledger_import_connect_stx.svg';
import { delay } from '@common/utils/ledger';
import { delay } from '@common/utils/promises';
import ActionButton from '@components/button';
import LedgerConnectionView from '@components/ledger/connectLedgerView';
import LedgerFailView from '@components/ledger/failLedgerView';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import checkCircleIcon from '@assets/img/ledger/check_circle.svg';
import ledgerConnectDefaultIcon from '@assets/img/ledger/ledger_connect_default.svg';
import ledgerConnectStxIcon from '@assets/img/ledger/ledger_import_connect_stx.svg';
import { delay } from '@common/utils/ledger';
import { delay } from '@common/utils/promises';
import ActionButton from '@components/button';
import LedgerConnectionView from '@components/ledger/connectLedgerView';
import FullScreenHeader from '@components/ledger/fullScreenHeader';
Expand Down
3 changes: 2 additions & 1 deletion src/app/screens/ledger/importLedgerAccount/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { delay, getDeviceNewAccountIndex, getNewAccountId } from '@common/utils/ledger';
import { getDeviceNewAccountIndex, getNewAccountId } from '@common/utils/ledger';
import { delay } from '@common/utils/promises';
import FullScreenHeader from '@components/ledger/fullScreenHeader';
import useWalletReducer from '@hooks/useWalletReducer';
import useWalletSelector from '@hooks/useWalletSelector';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { delay } from '@common/utils/ledger';
import { delay } from '@common/utils/promises';
import ActionButton from '@components/button';
import InfoContainer from '@components/infoContainer';
import FullScreenHeader from '@components/ledger/fullScreenHeader';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ export default function PaymentAddressTypeSelector({
const { data, isLoading } = useQuery({
// eslint-disable-next-line @tanstack/query/exhaustive-deps
queryKey: ['onboardingBtcAddressBalance', sha256(seedPhrase.substring(0, 20)).toString()],
queryFn: () => getPaymentAccountSummaryForSeedPhrase(btcClient, seedPhrase, 'Mainnet', 20),
queryFn: () => getPaymentAccountSummaryForSeedPhrase(btcClient, seedPhrase, 'Mainnet', 10),
});

useEffect(() => {
Expand Down
2 changes: 1 addition & 1 deletion src/app/screens/signatureRequest/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import ledgerConnectDefaultIcon from '@assets/img/ledger/ledger_connect_default.svg';
import ledgerConnectStxIcon from '@assets/img/ledger/ledger_import_connect_stx.svg';
import { delay } from '@common/utils/ledger';
import { delay } from '@common/utils/promises';
import { makeRpcSuccessResponse, sendRpcResponse } from '@common/utils/rpc/helpers';
import AccountHeaderComponent from '@components/accountHeader';
import BottomModal from '@components/bottomModal';
Expand Down
2 changes: 1 addition & 1 deletion src/app/screens/speedUpTransaction/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import ledgerConnectDefaultIcon from '@assets/img/ledger/ledger_connect_default.svg';
import ledgerConnectBtcIcon from '@assets/img/ledger/ledger_import_connect_btc.svg';
import ledgerConnectStxIcon from '@assets/img/ledger/ledger_import_connect_stx.svg';
import { delay } from '@common/utils/ledger';
import { delay } from '@common/utils/promises';
import BottomModal from '@components/bottomModal';
import ActionButton from '@components/button';
import LedgerConnectionView from '@components/ledger/connectLedgerView';
Expand Down
5 changes: 0 additions & 5 deletions src/common/utils/ledger.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
import type { Account, NetworkType } from '@secretkeylabs/xverse-core';

export const delay = (ms: number) =>
new Promise((res) => {
setTimeout(res, ms);
});

export const filterLedgerAccountsByNetwork = (accounts: Account[], network: NetworkType) =>
accounts.filter((account) =>
account.btcAddresses.taproot.address.startsWith(network === 'Mainnet' ? 'bc1' : 'tb1'),
Expand Down
2 changes: 2 additions & 0 deletions src/common/utils/promises.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// a function that sleeps for a given amount of time (ms)
export const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));

0 comments on commit 2132234

Please sign in to comment.