Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into feat/ictt
Browse files Browse the repository at this point in the history
  • Loading branch information
meeh0w committed Oct 24, 2024
2 parents e1871fe + 437a56f commit ca2b271
Show file tree
Hide file tree
Showing 15 changed files with 223 additions and 181 deletions.
32 changes: 16 additions & 16 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,25 +23,25 @@
"sentry": "node sentryscript.js"
},
"dependencies": {
"@avalabs/avalanche-module": "0.10.1",
"@avalabs/avalanchejs": "4.0.5",
"@avalabs/bitcoin-module": "0.10.1",
"@avalabs/avalanche-module": "^0.11.2",
"@avalabs/avalanchejs": "4.1.0-alpha.7",
"@avalabs/bitcoin-module": "^0.11.2",
"@avalabs/bridge-unified": "0.0.0-feat-ictt-configs-20241009072139",
"@avalabs/core-bridge-sdk": "3.1.0-alpha.8",
"@avalabs/core-chains-sdk": "3.1.0-alpha.8",
"@avalabs/core-coingecko-sdk": "3.1.0-alpha.8",
"@avalabs/core-covalent-sdk": "3.1.0-alpha.8",
"@avalabs/core-etherscan-sdk": "3.1.0-alpha.8",
"@avalabs/core-bridge-sdk": "3.1.0-alpha.10",
"@avalabs/core-chains-sdk": "3.1.0-alpha.10",
"@avalabs/core-coingecko-sdk": "3.1.0-alpha.10",
"@avalabs/core-covalent-sdk": "3.1.0-alpha.10",
"@avalabs/core-etherscan-sdk": "3.1.0-alpha.10",
"@avalabs/core-k2-components": "4.18.0-alpha.47",
"@avalabs/core-snowtrace-sdk": "3.1.0-alpha.8",
"@avalabs/core-token-prices-sdk": "3.1.0-alpha.8",
"@avalabs/core-utils-sdk": "3.1.0-alpha.8",
"@avalabs/core-wallets-sdk": "3.1.0-alpha.8",
"@avalabs/evm-module": "0.10.1",
"@avalabs/glacier-sdk": "3.1.0-alpha.8",
"@avalabs/core-snowtrace-sdk": "3.1.0-alpha.10",
"@avalabs/core-token-prices-sdk": "3.1.0-alpha.10",
"@avalabs/core-utils-sdk": "3.1.0-alpha.10",
"@avalabs/core-wallets-sdk": "3.1.0-alpha.10",
"@avalabs/evm-module": "^0.11.2",
"@avalabs/glacier-sdk": "3.1.0-alpha.10",
"@avalabs/hw-app-avalanche": "0.14.1",
"@avalabs/types": "3.1.0-alpha.3",
"@avalabs/vm-module-types": "0.10.1",
"@avalabs/types": "3.1.0-alpha.10",
"@avalabs/vm-module-types": "^0.11.2",
"@blockaid/client": "0.10.0",
"@coinbase/cbpay-js": "1.6.0",
"@cubist-labs/cubesigner-sdk": "0.3.28",
Expand Down
4 changes: 2 additions & 2 deletions src/background/services/glacier/GlacierService.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {
Glacier,
PrimaryNetwork,
Network as GlacierNetwork,
PrimaryNetworkChainName,
} from '@avalabs/glacier-sdk';
import { GlacierService } from './GlacierService';
Expand Down Expand Up @@ -32,7 +32,7 @@ const pchainBalance = {
},
chainInfo: {
chainName: PrimaryNetworkChainName.P_CHAIN,
network: PrimaryNetwork.FUJI,
network: GlacierNetwork.FUJI,
},
};

Expand Down
9 changes: 5 additions & 4 deletions src/background/services/history/utils/isTxHistoryItem.test.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { TxHistoryItem } from '../models';
import { NetworkVMType, TokenType } from '@avalabs/vm-module-types';
import { isPchainTxHistoryItem, isNonXPHistoryItem } from './isTxHistoryItem';
import {
NetworkVMType,
TransactionType,
PChainTransactionType,
TokenType,
XChainTransactionType,
} from '@avalabs/glacier-sdk';
import { TransactionType } from '@avalabs/vm-module-types';
} from '@avalabs/vm-module-types';
import { isPchainTxHistoryItem, isNonXPHistoryItem } from './isTxHistoryItem';

describe('src/background/services/history/utils/isTxHistoryItem.ts', () => {
const txHistoryItem: TxHistoryItem = {
Expand Down
17 changes: 10 additions & 7 deletions src/contexts/BalancesProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,10 @@ const BalancesContext = createContext<{
tokenId: string
): Promise<void>;
getTokenPrice(addressOrSymbol: string): number | undefined;
updateBalanceOnAllNetworks: (accounts: Account[]) => Promise<void>;
updateBalanceOnNetworks: (
accounts: Account[],
chainIds?: number[]
) => Promise<void>;
registerSubscriber: (tokenTypes: TokenType[]) => void;
unregisterSubscriber: (tokenTypes: TokenType[]) => void;
isTokensCached: boolean;
Expand All @@ -104,7 +107,7 @@ const BalancesContext = createContext<{
return undefined;
},
async refreshNftMetadata() {}, // eslint-disable-line @typescript-eslint/no-empty-function
async updateBalanceOnAllNetworks() {}, // eslint-disable-line @typescript-eslint/no-empty-function
async updateBalanceOnNetworks() {}, // eslint-disable-line @typescript-eslint/no-empty-function
registerSubscriber() {}, // eslint-disable-line @typescript-eslint/no-empty-function
unregisterSubscriber() {}, // eslint-disable-line @typescript-eslint/no-empty-function
isTokensCached: true,
Expand Down Expand Up @@ -268,15 +271,15 @@ export function BalancesProvider({ children }: { children: any }) {
setIsPolling(Object.values(subscribers).some((count) => count > 0));
}, [subscribers]);

const updateBalanceOnAllNetworks = useCallback(
async (accounts: Account[]) => {
if (!network) {
const updateBalanceOnNetworks = useCallback(
async (accounts: Account[], chainIds?: number[]) => {
if (!network && !chainIds?.length) {
return;
}

const updatedBalances = await request<UpdateBalancesForNetworkHandler>({
method: ExtensionRequest.NETWORK_BALANCES_UPDATE,
params: [accounts],
params: [accounts, chainIds],
});

dispatch({
Expand Down Expand Up @@ -352,7 +355,7 @@ export function BalancesProvider({ children }: { children: any }) {
balances,
getTokenPrice,
refreshNftMetadata,
updateBalanceOnAllNetworks,
updateBalanceOnNetworks,
registerSubscriber,
unregisterSubscriber,
isTokensCached: balances.cached ?? true,
Expand Down
6 changes: 3 additions & 3 deletions src/pages/Accounts/AddWalletWithSeedPhrase.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ export function AddWalletWithSeedPhrase() {
const { capture } = useAnalyticsContext();
const getErrorMessage = useErrorMessage();
const formatCurrency = useConvertedCurrencyFormatter();
const { updateBalanceOnAllNetworks, getTotalBalance } = useBalancesContext();
const { updateBalanceOnNetworks, getTotalBalance } = useBalancesContext();

const { isImporting, importSeedphrase } = useImportSeedphrase();

Expand Down Expand Up @@ -96,13 +96,13 @@ export function AddWalletWithSeedPhrase() {

setIsKnownPhrase(false);
setIsBalanceLoading(true);
await updateBalanceOnAllNetworks(
await updateBalanceOnNetworks(
addies.map((addressC) => ({ addressC })) as Account[]
);
setIsBalanceLoading(false);
setAddresses(addies);
},
[allAccounts, updateBalanceOnAllNetworks]
[allAccounts, updateBalanceOnNetworks]
);

const onContinue = useCallback(() => {
Expand Down
6 changes: 3 additions & 3 deletions src/pages/Accounts/components/AccountItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ export const AccountItem = forwardRef(
const history = useHistory();
const { capture } = useAnalyticsContext();
const { network } = useNetworkContext();
const { updateBalanceOnAllNetworks } = useBalancesContext();
const { updateBalanceOnNetworks } = useBalancesContext();
const [isBalanceLoading, setIsBalanceLoading] = useState(false);

const isActive = isActiveAccount(account.id);
Expand Down Expand Up @@ -141,9 +141,9 @@ export const AccountItem = forwardRef(

const getBalance = useCallback(async () => {
setIsBalanceLoading(true);
await updateBalanceOnAllNetworks([account]);
await updateBalanceOnNetworks([account]);
setIsBalanceLoading(false);
}, [account, updateBalanceOnAllNetworks]);
}, [account, updateBalanceOnNetworks]);

return (
<Stack
Expand Down
15 changes: 15 additions & 0 deletions src/pages/ApproveAction/hooks/useFeeCustomizer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ import { useConnectionContext } from '@src/contexts/ConnectionProvider';
import { UpdateActionTxDataHandler } from '@src/background/services/actions/handlers/updateTxData';
import { ExtensionRequest } from '@src/background/connections/extensionConnection/models';
import { useTokensWithBalances } from '@src/hooks/useTokensWithBalances';
import { useAccountsContext } from '@src/contexts/AccountsProvider';
import { useBalancesContext } from '@src/contexts/BalancesProvider';

const getInitialFeeRate = (data?: SigningData): bigint | undefined => {
if (data?.type === RpcMethod.BITCOIN_SEND_TRANSACTION) {
Expand All @@ -38,6 +40,10 @@ export const useFeeCustomizer = ({
network?: NetworkWithCaipId;
}) => {
const { action } = useApproveAction<DisplayData>(actionId);
const {
accounts: { active: activeAccount },
} = useAccountsContext();
const { updateBalanceOnNetworks } = useBalancesContext();
const { request } = useConnectionContext();
const [networkFee, setNetworkFee] = useState<NetworkFee | null>();

Expand Down Expand Up @@ -138,6 +144,15 @@ export const useFeeCustomizer = ({
return nativeToken.balance > need;
}, [getFeeInfo, nativeToken?.balance, signingData]);

// Make sure we have gas token balances for the transaction's chain
useEffect(() => {
if (!activeAccount || !network?.chainId) {
return;
}

updateBalanceOnNetworks([activeAccount], [network.chainId]);
}, [activeAccount, network?.chainId, updateBalanceOnNetworks]);

useEffect(() => {
const nativeBalance = nativeToken?.balance;

Expand Down
8 changes: 4 additions & 4 deletions src/pages/ImportPrivateKey/ImportPrivateKey.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ type DerivedAddresses = {

export function ImportPrivateKey() {
const { currency, currencyFormatter } = useSettingsContext();
const { updateBalanceOnAllNetworks } = useBalancesContext();
const { updateBalanceOnNetworks } = useBalancesContext();
const { network } = useNetworkContext();
const { capture } = useAnalyticsContext();
const theme = useTheme();
Expand Down Expand Up @@ -97,13 +97,13 @@ export function ImportPrivateKey() {
}, [network?.isTestnet, privateKey]);

useEffect(() => {
if (derivedAddresses && updateBalanceOnAllNetworks) {
if (derivedAddresses && updateBalanceOnNetworks) {
setIsBalanceLoading(true);
updateBalanceOnAllNetworks([derivedAddresses as Account]).finally(() =>
updateBalanceOnNetworks([derivedAddresses as Account]).finally(() =>
setIsBalanceLoading(false)
);
}
}, [derivedAddresses, updateBalanceOnAllNetworks]);
}, [derivedAddresses, updateBalanceOnNetworks]);

return (
<Stack
Expand Down
36 changes: 25 additions & 11 deletions src/pages/Ledger/hooks/useRegisterBtcWalletPolicy.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
import { DerivationPath } from '@avalabs/core-wallets-sdk';
import { ExtensionRequest } from '@src/background/connections/extensionConnection/models';
import { AccountType } from '@src/background/services/accounts/models';
import {
AccountType,
PrimaryAccount,
} from '@src/background/services/accounts/models';
import { GetBtcWalletPolicyDetails } from '@src/background/services/wallet/handlers/getBtcWalletPolicyDetails';
import { WalletDetails } from '@src/background/services/wallet/models';
import { useAccountsContext } from '@src/contexts/AccountsProvider';
import { useConnectionContext } from '@src/contexts/ConnectionProvider';
import { LedgerAppType, useLedgerContext } from '@src/contexts/LedgerProvider';
Expand All @@ -26,11 +30,10 @@ const useRegisterBtcWalletPolicy = () => {
const activeAccount = accounts.active;

useEffect(() => {
const fetchWalletPolicyDetails = async () => {
if (activeAccount?.type !== AccountType.PRIMARY) {
return;
}

const fetchWalletPolicyDetails = async (
account: PrimaryAccount,
details: WalletDetails
) => {
const { masterFingerprint } =
(await request<GetBtcWalletPolicyDetails>({
method: ExtensionRequest.WALLET_GET_BTC_WALLET_POLICY_DETAILS,
Expand All @@ -39,10 +42,10 @@ const useRegisterBtcWalletPolicy = () => {
setMasterFingerprint(masterFingerprint);

if (!masterFingerprint) {
if (walletDetails?.derivationPath === DerivationPath.LedgerLive) {
setWalletPolicyName(`Core - ${activeAccount.name}`);
setWalletPolicyDerivationpath(`44'/60'/${activeAccount.index}'`);
} else if (walletDetails?.derivationPath === DerivationPath.BIP44) {
if (details.derivationPath === DerivationPath.LedgerLive) {
setWalletPolicyName(`Core - ${account.name}`);
setWalletPolicyDerivationpath(`44'/60'/${account.index}'`);
} else if (details.derivationPath === DerivationPath.BIP44) {
setWalletPolicyName('Core');
setWalletPolicyDerivationpath(`44'/60'/0'`);
}
Expand All @@ -51,13 +54,24 @@ const useRegisterBtcWalletPolicy = () => {
}
};

if (activeAccount?.type !== AccountType.PRIMARY || !walletDetails) {
return;
}

// This effect may be called in-between updates coming from AccountsProvider and WalletProvider
// We need to wait for those to be in-sync, otherwise we may prompt for policy registration
// when user is switching from a Ledger wallet/account to a non-Ledger wallet/account.
if (activeAccount.walletId !== walletDetails.id) {
return;
}

setMasterFingerprint(undefined);
setWalletPolicyName(undefined);
setWalletPolicyDerivationpath(undefined);
setShouldRegisterBtcWalletPolicy(false);

if (isUsingLedgerWallet && appType === LedgerAppType.BITCOIN) {
fetchWalletPolicyDetails();
fetchWalletPolicyDetails(activeAccount, walletDetails);
}
}, [
activeAccount,
Expand Down
6 changes: 3 additions & 3 deletions src/pages/Permissions/components/AccountsDropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export const AccountsDropdown = ({
const { t } = useTranslation();
const [selectedAccount, setSelectedAccount] = useState(activeAccount);
const [isBalanceLoading, setIsBalanceLoading] = useState(false);
const { updateBalanceOnAllNetworks } = useBalancesContext();
const { updateBalanceOnNetworks } = useBalancesContext();
const { currency, currencyFormatter } = useSettingsContext();
const accountBalance = useBalanceTotalInCurrency(selectedAccount);

Expand All @@ -57,7 +57,7 @@ export const AccountsDropdown = ({
useEffect(() => {
const getBalance = async () => {
setIsBalanceLoading(true);
await updateBalanceOnAllNetworks?.(selectedAccount);
await updateBalanceOnNetworks?.(selectedAccount);
setIsBalanceLoading(false);
};

Expand All @@ -69,7 +69,7 @@ export const AccountsDropdown = ({
}

getBalance();
}, [activeAccount, selectedAccount, updateBalanceOnAllNetworks]);
}, [activeAccount, selectedAccount, updateBalanceOnNetworks]);

// Update balance & notify parent component about changes when account is selected
useEffect(() => {
Expand Down
16 changes: 8 additions & 8 deletions src/pages/Send/hooks/useSend/useAVMSend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,17 +132,17 @@ export const useAvmSend: SendAdapterAVM = ({
const amountBigInt = bigToBigInt(Big(amount), token.decimals);
const changeAddress = utils.parse(account.addressAVM)[2];

const unsignedTx = wallet.baseTX(
utxos.utxos,
XCHAIN_ALIAS,
address,
{
const unsignedTx = wallet.baseTX({
utxoSet: utxos.utxos,
chain: XCHAIN_ALIAS,
toAddress: address,
amountsPerAsset: {
[avax]: amountBigInt,
},
{
options: {
changeAddresses: [changeAddress],
}
);
},
});

const manager = utils.getManagerForVM(unsignedTx.getVM());
const [codec] = manager.getCodecFromBuffer(unsignedTx.toBytes());
Expand Down
19 changes: 11 additions & 8 deletions src/pages/Send/hooks/useSend/usePVMSend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,17 +131,17 @@ export const usePvmSend: SendAdapterPVM = ({
const amountBigInt = bigToBigInt(Big(amount), token.decimals);
const changeAddress = utils.parse(account.addressPVM)[2];

const unsignedTx = wallet.baseTX(
utxos,
PCHAIN_ALIAS,
address,
{
const unsignedTx = wallet.baseTX({
utxoSet: utxos,
chain: PCHAIN_ALIAS,
toAddress: address,
amountsPerAsset: {
[avax]: amountBigInt,
},
{
options: {
changeAddresses: [changeAddress],
}
);
},
});
const manager = utils.getManagerForVM(unsignedTx.getVM());
const [codec] = manager.getCodecFromBuffer(unsignedTx.toBytes());

Expand All @@ -156,6 +156,9 @@ export const usePvmSend: SendAdapterPVM = ({
method: DAppProviderRequest.AVALANCHE_SEND_TRANSACTION,
params,
});
} catch (err) {
console.error(err);
throw err;
} finally {
setIsSending(false);
}
Expand Down
Loading

0 comments on commit ca2b271

Please sign in to comment.