Skip to content

Commit

Permalink
Merge remote-tracking branch 'ot porigin/main' into feat/chore-swap-s…
Browse files Browse the repository at this point in the history
…entry-logging
  • Loading branch information
meeh0w committed Feb 19, 2025
2 parents 39dd80e + 76a75c5 commit 77a2e80
Show file tree
Hide file tree
Showing 26 changed files with 566 additions and 453 deletions.
3 changes: 2 additions & 1 deletion manifest/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
"notifications",
"tabs",
"scripting",
"identity"
"identity",
"alarms"
],
"host_permissions": ["file://*/*", "http://*/*", "https://*/*"],
"oauth2": {
Expand Down
35 changes: 18 additions & 17 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,26 +23,26 @@
"sentry": "node sentryscript.js"
},
"dependencies": {
"@avalabs/avalanche-module": "1.4.0",
"@avalabs/avalanche-module": "1.4.2",
"@avalabs/avalanchejs": "4.2.0-alpha.1",
"@avalabs/bitcoin-module": "1.4.0",
"@avalabs/bitcoin-module": "1.4.2",
"@avalabs/bridge-unified": "4.0.1",
"@avalabs/core-bridge-sdk": "3.1.0-alpha.34",
"@avalabs/core-chains-sdk": "3.1.0-alpha.34",
"@avalabs/core-coingecko-sdk": "3.1.0-alpha.34",
"@avalabs/core-covalent-sdk": "3.1.0-alpha.34",
"@avalabs/core-etherscan-sdk": "3.1.0-alpha.34",
"@avalabs/core-bridge-sdk": "3.1.0-alpha.37",
"@avalabs/core-chains-sdk": "3.1.0-alpha.37",
"@avalabs/core-coingecko-sdk": "3.1.0-alpha.37",
"@avalabs/core-covalent-sdk": "3.1.0-alpha.37",
"@avalabs/core-etherscan-sdk": "3.1.0-alpha.37",
"@avalabs/core-k2-components": "4.18.0-alpha.53",
"@avalabs/core-snowtrace-sdk": "3.1.0-alpha.34",
"@avalabs/core-token-prices-sdk": "3.1.0-alpha.34",
"@avalabs/core-utils-sdk": "3.1.0-alpha.34",
"@avalabs/core-wallets-sdk": "3.1.0-alpha.34",
"@avalabs/evm-module": "1.4.0",
"@avalabs/glacier-sdk": "3.1.0-alpha.34",
"@avalabs/core-snowtrace-sdk": "3.1.0-alpha.37",
"@avalabs/core-token-prices-sdk": "3.1.0-alpha.37",
"@avalabs/core-utils-sdk": "3.1.0-alpha.37",
"@avalabs/core-wallets-sdk": "3.1.0-alpha.37",
"@avalabs/evm-module": "1.4.2",
"@avalabs/glacier-sdk": "3.1.0-alpha.37",
"@avalabs/hw-app-avalanche": "0.14.1",
"@avalabs/hvm-module": "1.4.0",
"@avalabs/types": "3.1.0-alpha.34",
"@avalabs/vm-module-types": "1.4.0",
"@avalabs/hvm-module": "1.4.2",
"@avalabs/types": "3.1.0-alpha.37",
"@avalabs/vm-module-types": "1.4.2",
"@blockaid/client": "0.10.0",
"@coinbase/cbpay-js": "1.6.0",
"@cubist-labs/cubesigner-sdk": "0.3.28",
Expand Down Expand Up @@ -274,5 +274,6 @@
"@avalabs/avalanche-module>@avalabs/vm-module-types>hypersdk-client>@metamask/sdk>@metamask/sdk-communication-layer>utf-8-validate": false,
"@avalabs/avalanche-module>@avalabs/vm-module-types>hypersdk-client>@metamask/sdk>eciesjs>secp256k1": false
}
}
},
"packageManager": "[email protected]+sha1.4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447"
}
10 changes: 1 addition & 9 deletions src/background/connections/ConnectionService.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
import browser, { Runtime } from 'webextension-polyfill';
import {
CONTENT_SCRIPT,
EXTENSION_SCRIPT,
KEEPALIVE_SCRIPT,
} from '@src/common';
import { CONTENT_SCRIPT, EXTENSION_SCRIPT } from '@src/common';
import { container, singleton } from 'tsyringe';
import { DAppConnectionController } from './dAppConnection/DAppConnectionController';
import { ConnectionController } from './models';
import { KeepaliveConnectionController } from './keepaliveConnection/KeepaliveConnectionController';
import { ExtensionConnectionController } from './extensionConnection/ExtensionConnectionController';
import { CallbackManager } from '../runtime/CallbackManager';

Expand Down Expand Up @@ -46,10 +41,7 @@ export class ConnectionService {
connectionController = container.resolve(ExtensionConnectionController);
} else if (connection.name === CONTENT_SCRIPT) {
connectionController = container.resolve(DAppConnectionController);
} else if (connection.name === KEEPALIVE_SCRIPT) {
connectionController = container.resolve(KeepaliveConnectionController);
}

connectionController?.connect(connection);

return connectionController;
Expand Down

This file was deleted.

24 changes: 0 additions & 24 deletions src/background/services/accounts/AccountsService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ import getAllAddressesForAccount from '@src/utils/getAllAddressesForAccount';
import { SecretsService } from '../secrets/SecretsService';
import { LedgerService } from '../ledger/LedgerService';
import { WalletConnectService } from '../walletConnect/WalletConnectService';
import { Network } from '../network/models';
import { isDevnet } from '@src/utils/isDevnet';

type AddAccountParams = {
walletId: string;
Expand Down Expand Up @@ -100,27 +98,8 @@ export class AccountsService implements OnLock, OnUnlock {
// refresh addresses so in case the user switches to testnet mode,
// as the BTC address needs to be updated
this.networkService.developerModeChanged.add(this.onDeveloperModeChanged);

// TODO(@meeh0w):
// Remove this listener after E-upgrade activation on Fuji. It will be no longer needed.
this.networkService.uiActiveNetworkChanged.add(
this.#onActiveNetworkChanged,
);
}

#wasDevnet = false;

#onActiveNetworkChanged = async (network?: Network) => {
if (!network) {
return;
}

if (isDevnet(network) !== this.#wasDevnet) {
this.#wasDevnet = isDevnet(network);
await this.onDeveloperModeChanged(network?.isTestnet);
}
};

onLock() {
this.accounts = {
active: undefined,
Expand All @@ -131,9 +110,6 @@ export class AccountsService implements OnLock, OnUnlock {
this.networkService.developerModeChanged.remove(
this.onDeveloperModeChanged,
);
this.networkService.uiActiveNetworkChanged.remove(
this.#onActiveNetworkChanged,
);
}

private onDeveloperModeChanged = async (isTestnet?: boolean) => {
Expand Down
35 changes: 22 additions & 13 deletions src/background/services/lock/LockService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,17 @@ import {
LOCK_TIMEOUT,
SessionAuthData,
SESSION_AUTH_DATA_KEY,
AlarmsEvents,
} from './models';
import { OnAllExtensionClosed } from '@src/background/runtime/lifecycleCallbacks';

@singleton()
export class LockService {
export class LockService implements OnAllExtensionClosed {
private eventEmitter = new EventEmitter();

private _locked = true;

private lockCheckInterval?: any;
#autoLockInMinutes = 30;

public get locked(): boolean {
return this._locked;
Expand All @@ -28,6 +30,15 @@ export class LockService {
) {}

async activate() {
chrome.runtime.onConnect.addListener(() => {
chrome.alarms.clear(AlarmsEvents.AUTO_LOCK);
});

chrome.alarms.onAlarm.addListener((alarm) => {
if (alarm.name === AlarmsEvents.AUTO_LOCK) {
this.lock();
}
});
const authData =
await this.storageService.loadFromSessionStorage<SessionAuthData>(
SESSION_AUTH_DATA_KEY,
Expand All @@ -43,7 +54,14 @@ export class LockService {
}

await this.unlock(authData.password);
this.startAutoLockInterval(authData?.loginTime);
}

onAllExtensionsClosed(): void | Promise<void> {
if (!this._locked) {
chrome.alarms.create(AlarmsEvents.AUTO_LOCK, {
periodInMinutes: this.#autoLockInMinutes,
});
}
}

async unlock(password: string) {
Expand Down Expand Up @@ -78,16 +96,6 @@ export class LockService {
await this.storageService.changePassword(oldPassword, newPassword);
}

private startAutoLockInterval(loginTime: number) {
const timeToLock = loginTime + LOCK_TIMEOUT;
this.lockCheckInterval = setInterval(() => {
if (Date.now() > timeToLock) {
clearInterval(this.lockCheckInterval);
this.lock();
}
}, 60000);
}

async verifyPassword(password: string): Promise<boolean> {
const authData =
await this.storageService.loadFromSessionStorage<SessionAuthData>(
Expand All @@ -104,6 +112,7 @@ export class LockService {
this.eventEmitter.emit(LockEvents.LOCK_STATE_CHANGED, {
isUnlocked: false,
});
chrome.alarms.clear(AlarmsEvents.AUTO_LOCK);
}

addListener(
Expand Down
4 changes: 4 additions & 0 deletions src/background/services/lock/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ export enum LockEvents {
LOCK_STATE_CHANGED = 'LockServiceEvents:Lock',
}

export enum AlarmsEvents {
AUTO_LOCK = 'auto-lock',
}

export interface LockStateChangedEventPayload {
isUnlocked: boolean;
}
14 changes: 1 addition & 13 deletions src/background/services/network/NetworkService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import {
NetworkWithCaipId,
} from './models';
import {
AVALANCHE_P_DEV_NETWORK,
AVALANCHE_XP_NETWORK,
AVALANCHE_XP_TEST_NETWORK,
BITCOIN_NETWORK,
Expand Down Expand Up @@ -53,7 +52,6 @@ import {
decorateWithCaipId,
} from '@src/utils/caipConversion';
import { getSyncDomain, isSyncDomain } from './utils/getSyncDomain';
import { isDevnet } from '@src/utils/isDevnet';

@singleton()
export class NetworkService implements OnLock, OnStorageReady {
Expand Down Expand Up @@ -377,9 +375,6 @@ export class NetworkService implements OnLock, OnStorageReady {

return networkList;
}
private _getPchainDevnet(): Network {
return decorateWithCaipId(AVALANCHE_P_DEV_NETWORK);
}

private _getPchainNetwork(isTestnet: boolean): Network {
const network = isTestnet
Expand Down Expand Up @@ -449,7 +444,6 @@ export class NetworkService implements OnLock, OnStorageReady {
[ChainId.AVALANCHE_P]: this._getPchainNetwork(false),
[ChainId.AVALANCHE_TEST_X]: this._getXchainNetwork(true),
[ChainId.AVALANCHE_X]: this._getXchainNetwork(false),
[ChainId.AVALANCHE_DEVNET_P]: this._getPchainDevnet(),
};
} else {
attempt += 1;
Expand Down Expand Up @@ -486,13 +480,7 @@ export class NetworkService implements OnLock, OnStorageReady {
* Returns the network object for Avalanche X/P Chains
*/
getAvalancheNetworkXP() {
// TODO(@meeh0w): clean up after E-upgrade activation on Fuji
const isDevnetActive =
this.uiActiveNetwork && isDevnet(this.uiActiveNetwork);

return isDevnetActive
? this._getPchainDevnet()
: this._getXchainNetwork(!this.isMainnet());
return this._getXchainNetwork(!this.isMainnet());
}

async getAvalancheNetwork() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ export function isPchainNetwork(network?: Network) {

export function isPchainNetworkId(chainId: number) {
return (
ChainId.AVALANCHE_P === chainId ||
ChainId.AVALANCHE_TEST_P === chainId ||
ChainId.AVALANCHE_DEVNET_P === chainId // TODO: to remove this.
ChainId.AVALANCHE_P === chainId || ChainId.AVALANCHE_TEST_P === chainId
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ export function isXchainNetwork(network?: Network) {
//TODO: Fix this once we figure out how to separate between x and p chain ID
export function isXchainNetworkId(chainId: number) {
return (
ChainId.AVALANCHE_X === chainId ||
ChainId.AVALANCHE_TEST_X === chainId ||
ChainId.AVALANCHE_DEVNET_X === chainId // TODO: to remove this.
ChainId.AVALANCHE_X === chainId || ChainId.AVALANCHE_TEST_X === chainId
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import { ChainId } from '@avalabs/core-chains-sdk';
import { openApprovalWindow } from '@src/background/runtime/openApprovalWindow';
import { measureDuration } from '@src/utils/measureDuration';
import { HEADERS } from '../../glacier/glacierConfig';
import { isDevnet } from '@src/utils/isDevnet';

type TxParams = {
transactionHex: string;
Expand Down Expand Up @@ -110,11 +109,7 @@ export class AvalancheSendTransactionHandler extends DAppRequestHandler<
: await Avalanche.getUtxosByTxFromGlacier({
transactionHex,
chainAlias,
network: isDevnet(network)
? Network.DEVNET
: network.isTestnet
? Network.FUJI
: Network.MAINNET,
network: network.isTestnet ? Network.FUJI : Network.MAINNET,
url: process.env.GLACIER_URL as string,
token: process.env.GLACIER_API_KEY,
headers: HEADERS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import { Network } from '@avalabs/glacier-sdk';
import getProvidedUtxos from '../utils/getProvidedUtxos';
import { openApprovalWindow } from '@src/background/runtime/openApprovalWindow';
import { HEADERS } from '../../glacier/glacierConfig';
import { isDevnet } from '@src/utils/isDevnet';

type TxParams = {
transactionHex: string;
Expand Down Expand Up @@ -92,11 +91,7 @@ export class AvalancheSignTransactionHandler extends DAppRequestHandler<TxParams
: await Avalanche.getUtxosByTxFromGlacier({
transactionHex,
chainAlias,
network: isDevnet(network)
? Network.DEVNET
: network.isTestnet
? Network.FUJI
: Network.MAINNET,
network: network.isTestnet ? Network.FUJI : Network.MAINNET,
url: process.env.GLACIER_URL as string,
token: process.env.GLACIER_API_KEY,
headers: HEADERS,
Expand Down
19 changes: 2 additions & 17 deletions src/contentscript.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CONTENT_SCRIPT, KEEPALIVE_SCRIPT } from './common';
import browser, { Runtime } from 'webextension-polyfill';
import { CONTENT_SCRIPT } from './common';
import browser from 'webextension-polyfill';
import PortConnection from './background/utils/messaging/PortConnection';
import onPageActivated from './background/providers/utils/onPageActivated';
import AutoPairingPostMessageConnection from './background/utils/messaging/AutoPairingPostMessageConnection';
Expand Down Expand Up @@ -30,21 +30,6 @@ function setupStream() {
backgroundConnection.dispose();
});

let backgroundKeepaliveConnection: Runtime.Port | null = null;

function keepAlive() {
if (backgroundKeepaliveConnection) return;
backgroundKeepaliveConnection = browser.runtime.connect({
name: KEEPALIVE_SCRIPT,
});
backgroundKeepaliveConnection?.onDisconnect.addListener(() => {
backgroundKeepaliveConnection = null;
keepAlive();
});
}

keepAlive();

backgroundConnection.on('disconnect', () => {
console.log('reconnecting...');
setupStream();
Expand Down
Loading

0 comments on commit 77a2e80

Please sign in to comment.