@@ -43,6 +46,25 @@ export const CreateOrImportWallet = ({
label={t("import_wallet")}
onPress={() => onNext({ action: "import" })}
/>
+
+ {/* Advanced section */}
+
+ setShowAdvanced(!showAdvanced)}
+ hoverStyle={{ opacity: 0.8 }}
+ >
+ {showAdvanced ? "▲" : "▼"} {t("advanced")}
+
+ {showAdvanced ?
+ onNext({ action: "import", keyringType: "mnemonic" })
+ }
+ /> : null}
+
);
diff --git a/packages/app-extension/src/components/Onboarding/pages/OnboardAccount.tsx b/packages/app-extension/src/components/Onboarding/pages/OnboardAccount.tsx
index 99e9e04..ce835fb 100644
--- a/packages/app-extension/src/components/Onboarding/pages/OnboardAccount.tsx
+++ b/packages/app-extension/src/components/Onboarding/pages/OnboardAccount.tsx
@@ -139,9 +139,7 @@ export const OnboardAccount = ({
...(keyringType === "mnemonic" || keyringType === "ledger"
? // X1 blockchain is auto-selected, skip blockchain selector
[
- ...(keyringType === "ledger" ||
- action === "import" ||
- action === "create"
+ ...(keyringType === "ledger" || action === "import"
? [
{
};
async function fetchAndUpdateFeatureGates(background: ChannelAppUiClient) {
+ // X1 Wallet: Disable Backpack API feature gates to avoid 404 errors and improve load times
+ // All features are enabled by default via buildFullFeatureGatesMap with empty gates
try {
- const res = await fetch(`${FEATURE_GATE_URL}/gates`);
- const json = await res.json();
- if (!json.gates) throw new Error(json.message);
- const gates = buildFullFeatureGatesMap(json.gates);
+ const gates = buildFullFeatureGatesMap({});
// Cache the gates for future use
cacheFeatureGates(gates);
@@ -85,8 +84,6 @@ async function fetchAndUpdateFeatureGates(background: ChannelAppUiClient) {
params: [gates],
});
} catch (e) {
- console.warn(
- `Error while refreshing feature gates, falling back to defaults`
- );
+ console.warn(`Error while setting feature gates, falling back to defaults`);
}
}
diff --git a/packages/app-extension/src/index.tsx b/packages/app-extension/src/index.tsx
index 67eb6f0..eaa2b45 100644
--- a/packages/app-extension/src/index.tsx
+++ b/packages/app-extension/src/index.tsx
@@ -1,5 +1,17 @@
const startTime = Date.now();
+// Suppress React Native BackHandler warning in web environment
+const originalConsoleWarn = console.warn;
+console.warn = (...args) => {
+ if (
+ typeof args[0] === "string" &&
+ args[0].includes("BackHandler is not supported on web")
+ ) {
+ return; // Suppress this specific warning
+ }
+ originalConsoleWarn.apply(console, args);
+};
+
import { lazy, Suspense } from "react";
import { createRoot } from "react-dom/client";
import { BACKPACK_FEATURE_POP_MODE, openPopupWindow } from "@coral-xyz/common";
diff --git a/packages/app-extension/src/refactor/screens/Unlocked/Settings/WalletAddBackpackRecoveryPhraseScreen.tsx b/packages/app-extension/src/refactor/screens/Unlocked/Settings/WalletAddBackpackRecoveryPhraseScreen.tsx
index 5e36769..68cba06 100644
--- a/packages/app-extension/src/refactor/screens/Unlocked/Settings/WalletAddBackpackRecoveryPhraseScreen.tsx
+++ b/packages/app-extension/src/refactor/screens/Unlocked/Settings/WalletAddBackpackRecoveryPhraseScreen.tsx
@@ -29,7 +29,7 @@ function Container({
);
}
diff --git a/packages/recoil/src/atoms/secure-client/userClientAtoms.ts b/packages/recoil/src/atoms/secure-client/userClientAtoms.ts
index c3f5f61..f9488a7 100644
--- a/packages/recoil/src/atoms/secure-client/userClientAtoms.ts
+++ b/packages/recoil/src/atoms/secure-client/userClientAtoms.ts
@@ -120,12 +120,17 @@ export const rawSecureUserAtom = atom<
if (!isMobile) {
const localCopyJSON = window.localStorage.getItem("secureUser");
if (localCopyJSON) {
- const localCopy = JSON.parse(localCopyJSON);
- // remove local copy after reading so we wont get stuck in stale data.
- window.localStorage.removeItem("secureUser");
-
- setSelf(localCopy);
- updateUser().catch((e) => {});
+ try {
+ const localCopy = JSON.parse(localCopyJSON);
+ // Don't remove local copy immediately - keep it for fast subsequent loads
+ // It will be overwritten with fresh data when updateUser() completes
+ setSelf(localCopy);
+ updateUser().catch((e) => {});
+ } catch (e) {
+ // If cached data is corrupted, remove it and fetch fresh
+ window.localStorage.removeItem("secureUser");
+ fetchInitialValue();
+ }
} else {
fetchInitialValue();
}