Skip to content

Commit

Permalink
feat: watch networkUrl feature flag and add it to wallet (#1531)
Browse files Browse the repository at this point in the history
  • Loading branch information
LuizAsFight authored Oct 2, 2024
1 parent 7e20135 commit 048597a
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 2 deletions.
5 changes: 5 additions & 0 deletions .changeset/breezy-apples-think.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@fuels/playwright-utils": patch
---

pump version
5 changes: 5 additions & 0 deletions .changeset/smart-cars-accept.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"fuels-wallet": patch
---

feat: watch networkUrl feature flag and add it to wallet
61 changes: 59 additions & 2 deletions packages/app/src/systems/CRX/background/actions/autoUpdate.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import { compareVersions } from 'compare-versions';
import { CHAIN_IDS } from 'fuels';
import { APP_VERSION, VITE_CRX_VERSION_API, WALLET_NAME } from '~/config';
import { AccountService } from '~/systems/Account/services/account';
import { NetworkService } from '~/systems/Network/services/network';

// Check if user has any open tab if not return false
async function isOpen() {
Expand All @@ -11,11 +14,17 @@ async function isOpen() {
return isOpen;
}

async function getLatestVersion() {
const latestVersion = await fetch(VITE_CRX_VERSION_API)
async function fetchFeatureFlags() {
const featureFlags = await fetch(VITE_CRX_VERSION_API)
.then((res) => res.json())
// If fails to fetch the version return a empty object
.catch(() => ({}));

return featureFlags;
}

async function getLatestVersion() {
const latestVersion = await fetchFeatureFlags();
return latestVersion[WALLET_NAME] || APP_VERSION;
}

Expand Down Expand Up @@ -53,6 +62,50 @@ async function reloadWallet() {
chrome.runtime.reload();
}

async function createNetwork() {
console.log('[FUEL WALLET] Checking create network...');

const isOpened = await isOpen();
if (isOpened) return;

console.log('[FUEL WALLET] Checking current account');
const account = await AccountService.getCurrentAccount();
if (!account) return;

console.log('[FUEL WALLET] Checking feature flag');
const featureFlags = await fetchFeatureFlags();

if (!featureFlags.networkUrl) return;

console.log('[FUEL WALLET] Checking has network');
const existsNetwork = await NetworkService.getNetworkByChainId({
chainId: CHAIN_IDS.fuel.mainnet,
});
if (existsNetwork?.id) {
if (existsNetwork.url === featureFlags.networkUrl) {
console.log('[FUEL WALLET] Network url is the same, skipping');
chrome.alarms.clear('createNetwork');
return;
}

console.log('[FUEL WALLET] Network url is different, removing and adding');
await NetworkService.removeNetwork({ id: existsNetwork.id });
}

console.log('[FUEL WALLET] Adding network');
const newNetworkAdded = await NetworkService.addNetwork({
data: {
chainId: CHAIN_IDS.fuel.mainnet,
name: 'Ignition',
url: featureFlags.networkUrl,
},
});
if (!newNetworkAdded?.id) return;
console.log('[FUEL WALLET] Selecting network');
await NetworkService.selectNetwork({ id: newNetworkAdded.id });
chrome.alarms.clear('createNetwork');
}

// Once the app is updated reload the wallet
chrome.runtime.onUpdateAvailable.addListener(() => reloadWallet());
chrome.alarms.onAlarm.addListener(async (alarm) => {
Expand All @@ -63,10 +116,14 @@ chrome.alarms.onAlarm.addListener(async (alarm) => {
case 'reloadWallet':
reloadWallet();
break;
case 'createNetwork':
createNetwork();
break;
default:
break;
}
});

// Register alarms to check for updates and reload the wallet
chrome.alarms.create('autoUpdate', { periodInMinutes: 10 });
chrome.alarms.create('createNetwork', { periodInMinutes: 0.1 });

0 comments on commit 048597a

Please sign in to comment.