Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
meeh0w committed Oct 22, 2024
1 parent 9a9546d commit 01916e3
Show file tree
Hide file tree
Showing 6 changed files with 112 additions and 106 deletions.
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
"sentry": "node sentryscript.js"
},
"dependencies": {
"@avalabs/avalanche-module": "0.8.0",
"@avalabs/avalanche-module": "0.11.1",
"@avalabs/avalanchejs": "4.1.0-alpha.7",
"@avalabs/bitcoin-module": "0.8.0",
"@avalabs/bitcoin-module": "0.11.1",
"@avalabs/bridge-unified": "2.1.0",
"@avalabs/core-bridge-sdk": "3.1.0-canary.7e3473a.0+7e3473a",
"@avalabs/core-chains-sdk": "3.1.0-canary.7e3473a.0+7e3473a",
Expand All @@ -37,11 +37,11 @@
"@avalabs/core-token-prices-sdk": "3.1.0-canary.7e3473a.0+7e3473a",
"@avalabs/core-utils-sdk": "3.1.0-canary.7e3473a.0+7e3473a",
"@avalabs/core-wallets-sdk": "3.1.0-canary.7e3473a.0+7e3473a",
"@avalabs/evm-module": "0.8.0",
"@avalabs/evm-module": "0.11.1",
"@avalabs/glacier-sdk": "3.1.0-canary.7e3473a.0+7e3473a",
"@avalabs/hw-app-avalanche": "0.14.1",
"@avalabs/types": "3.1.0-alpha.3",
"@avalabs/vm-module-types": "0.8.0",
"@avalabs/vm-module-types": "0.11.1",
"@blockaid/client": "0.10.0",
"@coinbase/cbpay-js": "1.6.0",
"@cubist-labs/cubesigner-sdk": "0.3.28",
Expand Down
6 changes: 4 additions & 2 deletions src/background/services/accounts/AccountsService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,10 @@ export class AccountsService implements OnLock, OnUnlock {

async getAddressesForAccount(account: Account): Promise<DerivedAddresses> {
if (account.type !== AccountType.PRIMARY) {
const isMainnet = this.networkService.isMainnet();
return this.secretsService.getImportedAddresses(account.id, isMainnet);
return this.secretsService.getImportedAddresses(
account.id,
this.networkService
);
}

const addresses = await this.secretsService.getAddresses(
Expand Down
28 changes: 19 additions & 9 deletions src/background/services/secrets/SecretsService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,10 @@ export class SecretsService {
return walletSecrets?.secretType;
}

async addImportedWallet(importData: ImportData, isMainnet: boolean) {
async addImportedWallet(
importData: ImportData,
networkService: NetworkService
) {
const id = crypto.randomUUID();

// let the AccountService validate the account's uniqueness and save the secret using this callback
Expand Down Expand Up @@ -573,7 +576,10 @@ export class SecretsService {
return {
account: {
id,
...this.#calculateAddressesForPrivateKey(importData.data, isMainnet),
...this.#calculateAddressesForPrivateKey(
importData.data,
networkService
),
},
commit,
};
Expand All @@ -582,7 +588,10 @@ export class SecretsService {
throw new Error('Unknown import type');
}

#calculateAddressesForPrivateKey(privateKey: string, isMainnet: boolean) {
async #calculateAddressesForPrivateKey(
privateKey: string,
networkService: NetworkService
) {
const addresses = {
addressBTC: '',
addressC: '',
Expand All @@ -591,16 +600,14 @@ export class SecretsService {
addressCoreEth: '',
};

const provXP = isMainnet
? Avalanche.JsonRpcProvider.getDefaultMainnetProvider()
: Avalanche.JsonRpcProvider.getDefaultFujiProvider();
const provXP = await networkService.getAvalanceProviderXP();

try {
const publicKey = getPublicKeyFromPrivateKey(privateKey);
addresses.addressC = getEvmAddressFromPubKey(publicKey);
addresses.addressBTC = getBtcAddressFromPubKey(
publicKey,
isMainnet ? networks.bitcoin : networks.testnet
networkService.isMainnet() ? networks.bitcoin : networks.testnet
);
addresses.addressAVM = provXP.getAddress(publicKey, 'X');
addresses.addressPVM = provXP.getAddress(publicKey, 'P');
Expand Down Expand Up @@ -793,7 +800,7 @@ export class SecretsService {
throw new Error('No public key available');
}

async getImportedAddresses(id: string, isMainnet: boolean) {
async getImportedAddresses(id: string, networkService: NetworkService) {
const secrets = await this.getImportedAccountSecrets(id);

if (
Expand All @@ -804,7 +811,10 @@ export class SecretsService {
}

if (secrets.secretType === SecretType.PrivateKey) {
return this.#calculateAddressesForPrivateKey(secrets.secret, isMainnet);
return this.#calculateAddressesForPrivateKey(
secrets.secret,
networkService
);
}

throw new Error('Unsupported import type');
Expand Down
9 changes: 5 additions & 4 deletions src/pages/ApproveAction/components/ApproveBaseTx.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@ import {
Typography,
} from '@avalabs/core-k2-components';
import { useTranslation } from 'react-i18next';
import { bigIntToString, bigToLocaleString } from '@avalabs/core-utils-sdk';
import { TokenUnit, bigIntToString } from '@avalabs/core-utils-sdk';
import { useSettingsContext } from '@src/contexts/SettingsProvider';
import { Avalanche } from '@avalabs/core-wallets-sdk';
import { AvalancheChainStrings } from '@src/background/services/wallet/handlers/eth_sendTransaction/models';
import { bigintToBig } from '@src/utils/bigintToBig';
import { PVM } from '@avalabs/avalanchejs';

export function BaseTxView({
Expand Down Expand Up @@ -41,6 +40,8 @@ export function BaseTxView({
);
};

const fee = new TokenUnit(txFee, 9, 'AVAX');

return (
<Stack>
{/* source chain */}
Expand Down Expand Up @@ -270,7 +271,7 @@ export function BaseTxView({
fontWeight: 'fontWeightSemibold',
}}
>
{bigToLocaleString(bigintToBig(txFee, 9), 6)} AVAX
{fee.toDisplay()} AVAX
</Typography>
<Typography
variant="caption"
Expand All @@ -280,7 +281,7 @@ export function BaseTxView({
}}
>
{currencyFormatter(
bigintToBig(txFee, 9).times(avaxPrice).toNumber()
fee.toDisplay({ asNumber: true }) * avaxPrice
)}
</Typography>
</Stack>
Expand Down
6 changes: 5 additions & 1 deletion src/utils/network/getProviderForNetwork.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { Network } from '@src/background/services/network/models';

import { addGlacierAPIKeyIfNeeded } from './addGlacierAPIKeyIfNeeded';
import { Info } from '@avalabs/avalanchejs';
import { GetUpgradesInfoResponse } from '@avalabs/avalanchejs/dist/info/model';

export type SupportedProvider =
| BitcoinProvider
Expand Down Expand Up @@ -63,7 +64,10 @@ export const getProviderForNetwork = async (
network.vmName === NetworkVMType.AVM ||
network.vmName === NetworkVMType.PVM
) {
const upgradesInfo = await new Info(network.rpcUrl).getUpgradesInfo();
const upgradesInfo = await new Info(network.rpcUrl)
.getUpgradesInfo()
.catch(() => ({} as GetUpgradesInfoResponse)); // If we can't get the upgrades info, return an empty object. This will result in pre-Etna behavior

return network.isTestnet
? Avalanche.JsonRpcProvider.getDefaultDevnetProvider(upgradesInfo)
: Avalanche.JsonRpcProvider.getDefaultMainnetProvider(upgradesInfo);
Expand Down
Loading

0 comments on commit 01916e3

Please sign in to comment.