Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
26ea5a1
chore: 🤖 update icon
kled-bridge Sep 4, 2025
c59a2a9
feat: 🎸 add fairy vault
kled-bridge Sep 8, 2025
5841017
feat: 🎸 add postinstall sh
kled-bridge Sep 11, 2025
cc7f30c
Merge pull request #246 from eBridgeCrosschain/feature/add-fairy-vault
kled-bridge Sep 11, 2025
7764096
feat: 🎸 update config
kled-bridge Sep 11, 2025
3568915
feat: 🎸 fix connect modal
kled-bridge Sep 11, 2025
accde2e
Merge pull request #247 from eBridgeCrosschain/feature/add-fairy-vault
kled-bridge Sep 11, 2025
d2b568b
fix: 🐛 select ELF wallet
kled-bridge Sep 11, 2025
2e88428
Merge pull request #248 from eBridgeCrosschain/feature/add-fairy-vault
kled-bridge Sep 11, 2025
db53323
chore: 🤖 WalletTypeEnum
kled-bridge Sep 11, 2025
f9147f8
chore: 🤖 wallet type
kled-bridge Sep 11, 2025
b2705f3
Merge pull request #249 from eBridgeCrosschain/feature/add-fairy-vault
kled-bridge Sep 11, 2025
94fb180
chore: 🤖 web-login config
kled-bridge Sep 11, 2025
19db2a6
Merge pull request #250 from eBridgeCrosschain/feature/add-fairy-vault
kled-bridge Sep 11, 2025
5b64073
feat: 🎸 add detect
kled-bridge Sep 11, 2025
4111a39
chore: 🤖 check isELFAddress
kled-bridge Sep 11, 2025
a78d083
feat: 🎸 add FairyVaultDiscoverWallet
kled-bridge Sep 11, 2025
bb615f9
feat: 🎸 timeout detect
kled-bridge Sep 11, 2025
f512988
chore: 🤖 update web-login version
kled-bridge Sep 29, 2025
d0a2773
feat: 🎸 update web login
kled-bridge Oct 15, 2025
02caa5e
fix: 🐛 diconnect wallet
kled-bridge Oct 15, 2025
d179691
chore: 🤖 update web-login version
kled-bridge Oct 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,5 @@ yarn-error.log*

# shell
*.sh
!postinstall.sh
.eslintcache
25 changes: 14 additions & 11 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"start:mainnet": "ENV_NAME=mainnet next start",
"lint": "next lint",
"dev:analyze": "PORT=4000 ANALYZE=true next dev",
"postinstall": "husky install",
"postinstall": "bash scripts/postinstall.sh",
"test": "vitest",
"test:not-watch": "vitest run",
"test:update": "vitest -u",
Expand All @@ -22,18 +22,21 @@
"dependencies": {
"@aelf-react/core": "^0.1.19",
"@aelf-react/types": "^0.1.10",
"@aelf-web-login/utils": "^0.2.2-alpha.4",
"@aelf-web-login/wallet-adapter-base": "^0.2.2-alpha.4",
"@aelf-web-login/wallet-adapter-bridge": "^0.2.2-alpha.4",
"@aelf-web-login/wallet-adapter-night-elf": "^0.2.2-alpha.4",
"@aelf-web-login/wallet-adapter-portkey-aa": "^0.2.2-alpha.4",
"@aelf-web-login/wallet-adapter-portkey-discover": "^0.2.2-alpha.4",
"@aelf-web-login/wallet-adapter-react": "^0.2.2-alpha.4",
"@aelf-web-login/utils": "^0.4.0-alpha.10",
"@aelf-web-login/wallet-adapter-base": "^0.4.0-alpha.10",
"@aelf-web-login/wallet-adapter-bridge": "^0.4.0-alpha.10",
"@aelf-web-login/wallet-adapter-fairy-vault-discover": "^0.4.0-alpha.10",
"@aelf-web-login/wallet-adapter-night-elf": "^0.4.0-alpha.10",
"@aelf-web-login/wallet-adapter-portkey-discover": "^0.4.0-alpha.10",
"@aelf-web-login/wallet-adapter-portkey-web": "^0.4.0-alpha.10",
"@aelf-web-login/wallet-adapter-react": "^0.4.0-alpha.10",
"@ant-design/icons": "^5.3.0",
"@apollo/client": "^3.7.3",
"@portkey/contracts": "^2.15.10",
"@portkey/did-ui-react": "^2.15.10",
"@portkey/types": "^2.15.10",
"@portkey/contracts": "^2.19.0-alpha.10",
"@portkey/did": "^2.19.0-alpha.24",
"@portkey/did-ui-react": "^2.19.0-alpha.10",
"@portkey/types": "^2.19.0-alpha.10",
"@portkey/utils": "^2.19.0-alpha.10",
"@sentry/nextjs": "^7.48.0",
"@tanstack/query-core": "^5.62.7",
"@tanstack/react-query": "^5.62.7",
Expand Down
16 changes: 16 additions & 0 deletions scripts/fix-web-login.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/* eslint-disable @typescript-eslint/no-var-requires */
const fs = require('fs');
const path = require('path');
const filePath = path.resolve(
__dirname,
`../node_modules/@aelf-web-login/wallet-adapter-portkey-web/dist/esm/index.js`,
);

fs.readFile(filePath, 'utf-8', (err, data) => {
if (err) throw err;
let newData = data.replace(`import '@portkey/connect-web-wallet/dist/assets/index.css';`, '');
fs.writeFile(filePath, newData, (err) => {
if (err) throw err;
console.log('The file has been updated');
});
});
10 changes: 10 additions & 0 deletions scripts/postinstall.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash

set -e

husky install
echo "husky install success"

node scripts/fix-web-login.js
echo "fix fix-web-login success"

3 changes: 2 additions & 1 deletion src/components/IconFont/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import createFromIconfontCN from '@ant-design/icons/lib/components/IconFont';
const iconPark = 'https://lf1-cdn-tos.bytegoofy.com/obj/iconpark/';

const IconFont = createFromIconfontCN({
scriptUrl: `${iconPark}svg_16148_37.78e9e2831a1e2d06e13c8263d57bd02e.js`,
scriptUrl: `${iconPark}svg_16148_40.3be9d9afb9a72f0dbe477fdee5e5843e.js`,
});
export default IconFont;
123 changes: 69 additions & 54 deletions src/components/Web3Provider/webLoginV2Config.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import { PortkeyDiscoverWallet } from '@aelf-web-login/wallet-adapter-portkey-discover';
import { PortkeyAAWallet } from '@aelf-web-login/wallet-adapter-portkey-aa';
import { PortkeyInnerWallet } from '@aelf-web-login/wallet-adapter-portkey-web';
import { NightElfWallet } from '@aelf-web-login/wallet-adapter-night-elf';
import { IConfigProps } from '@aelf-web-login/wallet-adapter-bridge';
import { SignInDesignEnum, TChainId } from '@aelf-web-login/wallet-adapter-base';
import { APP_NAME, EBRIDGE_PORTKEY_PROJECT_CODE } from 'constants/misc';
import { AELF_NODES, SHOW_V_CONSOLE, SupportedELFChain, TELEGRAM_BOT_ID, WEB_LOGIN_CONFIG } from 'constants/index';
import { devices } from '@portkey/utils';
import { TelegramPlatform } from 'utils/telegram/telegram';
import { FairyVaultDiscoverWallet } from '@aelf-web-login/wallet-adapter-fairy-vault-discover';

const defaultChainId = WEB_LOGIN_CONFIG.chainId as TChainId;

const didConfig = {
export const didConfig = {
graphQLUrl: WEB_LOGIN_CONFIG.portkeyV2.graphQLUrl,
connectUrl: WEB_LOGIN_CONFIG.portkeyV2.connectServer,
serviceUrl: WEB_LOGIN_CONFIG.portkeyV2.apiServer,
Expand All @@ -35,59 +36,73 @@ const baseConfig: IConfigProps['baseConfig'] = {
networkType: WEB_LOGIN_CONFIG.portkeyV2.networkType,
chainId: defaultChainId,
sideChainId: defaultChainId,
keyboard: true,
noCommonBaseModal: false,
design: SignInDesignEnum.CryptoDesign,
enableAcceleration: true,
};

const isTelegramPlatform = TelegramPlatform.isTelegramPlatform();
const portkeyAAWallet = new PortkeyAAWallet({
appName: APP_NAME,
chainId: defaultChainId,
autoShowUnlock: true,
enableAcceleration: true,
});
const isMobileDevices = devices.isMobileDevices();

export const config: IConfigProps = {
didConfig,
baseConfig,
wallets: isTelegramPlatform
? [portkeyAAWallet]
: isMobileDevices
? [
portkeyAAWallet,
new PortkeyDiscoverWallet({
networkType: WEB_LOGIN_CONFIG.portkeyV2.networkType,
chainId: defaultChainId,
autoRequestAccount: true,
autoLogoutOnDisconnected: true,
autoLogoutOnNetworkMismatch: true,
autoLogoutOnAccountMismatch: true,
autoLogoutOnChainMismatch: true,
onPluginNotFound: (openStore) => {
openStore();
},
}),
]
: [
portkeyAAWallet,
new PortkeyDiscoverWallet({
networkType: WEB_LOGIN_CONFIG.portkeyV2.networkType,
chainId: defaultChainId,
autoRequestAccount: true,
autoLogoutOnDisconnected: true,
autoLogoutOnNetworkMismatch: true,
autoLogoutOnAccountMismatch: true,
autoLogoutOnChainMismatch: true,
}),
new NightElfWallet({
chainId: defaultChainId,
appName: APP_NAME,
connectEagerly: true,
defaultRpcUrl: SupportedELFChain[defaultChainId].CHAIN_INFO.rpcUrl,
nodes: AELF_NODES,
}),
],
theme: 'light',
};

export function getConfig() {
const isTelegramPlatform = TelegramPlatform.isTelegramPlatform();
const portkeyInnerWallet = new PortkeyInnerWallet({
networkType: WEB_LOGIN_CONFIG.portkeyV2.networkType,
chainId: defaultChainId,
disconnectConfirm: true,
});
const fairyVaultDiscoverWallet = new FairyVaultDiscoverWallet({
networkType: WEB_LOGIN_CONFIG.portkeyV2.networkType,
chainId: defaultChainId,
autoRequestAccount: true, // If set to true, please contact Portkey to add whitelist
autoLogoutOnDisconnected: true,
autoLogoutOnNetworkMismatch: true,
autoLogoutOnAccountMismatch: true,
autoLogoutOnChainMismatch: true,
});
setTimeout(() => {
(fairyVaultDiscoverWallet as any).detect();
}, 100);
const isMobileDevices = devices.isMobileDevices();
const config: IConfigProps = {
baseConfig,
wallets: isTelegramPlatform
? [portkeyInnerWallet]
: isMobileDevices
? [
portkeyInnerWallet,
fairyVaultDiscoverWallet,
new PortkeyDiscoverWallet({
networkType: WEB_LOGIN_CONFIG.portkeyV2.networkType,
chainId: defaultChainId,
autoRequestAccount: true,
autoLogoutOnDisconnected: true,
autoLogoutOnNetworkMismatch: true,
autoLogoutOnAccountMismatch: true,
autoLogoutOnChainMismatch: true,
onPluginNotFound: (openStore) => {
openStore();
},
}),
]
: [
portkeyInnerWallet,
fairyVaultDiscoverWallet,
new PortkeyDiscoverWallet({
networkType: WEB_LOGIN_CONFIG.portkeyV2.networkType,
chainId: defaultChainId,
autoRequestAccount: true,
autoLogoutOnDisconnected: true,
autoLogoutOnNetworkMismatch: true,
autoLogoutOnAccountMismatch: true,
autoLogoutOnChainMismatch: true,
}),
new NightElfWallet({
chainId: defaultChainId,
appName: APP_NAME,
connectEagerly: true,
defaultRpcUrl: SupportedELFChain[defaultChainId].CHAIN_INFO.rpcUrl,
nodes: AELF_NODES,
}),
],
};
return config;
}
17 changes: 12 additions & 5 deletions src/components/Web3Provider/webLoginV2Provider.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
'use client';

// import '../../utils/telegram/telegram-web-app';
import { WebLoginProvider, init } from '@aelf-web-login/wallet-adapter-react';
import { config } from './webLoginV2Config';
import { useMemo } from 'react';
import { WebLoginProvider } from '@aelf-web-login/wallet-adapter-react';
import { getConfig, didConfig } from './webLoginV2Config';
import { useEffect, useState } from 'react';
import { did } from '@portkey/did';
import { checkConnectedWallet } from 'utils/portkey';

export default function WebLoginV2Providers({ children }: { children: React.ReactNode }) {
const bridgeAPI = init(config); // upper config
useMemo(() => {
did.setConfig(didConfig);
checkConnectedWallet();
}, []);

const [isLoaded, setIsLoaded] = useState(false);
useEffect(() => {
Expand All @@ -27,5 +32,7 @@ export default function WebLoginV2Providers({ children }: { children: React.Reac
});
}, []);

return isLoaded ? <WebLoginProvider bridgeAPI={bridgeAPI}>{children}</WebLoginProvider> : null;
const config = useMemo(() => getConfig(), []);

return isLoaded ? <WebLoginProvider config={config}>{children}</WebLoginProvider> : null;
}
2 changes: 2 additions & 0 deletions src/constants/misc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,5 @@ export const BUTTON_TEXT_SUBMIT = 'Submit';
export const BUTTON_TEXT_BACK = 'Back';

export const SELECT_CHAIN = 'Select Chain';

export const PORTKEY_WEB_WALLET_INFO_KEY = 'PortkeyWebWalletWalletInfo';
8 changes: 8 additions & 0 deletions src/constants/wallets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,14 @@ export const SUPPORTED_WALLETS: Record<TWalletConnectorId, WalletInfo> = {
description: 'Portkey Wallet',
href: null,
},
[AElfConnectorId.FAIRY_VAULT]: {
connectorId: AElfConnectorId.FAIRY_VAULT,
chainType: 'ELF',
name: 'FairyVault Wallet',
iconType: 'fairyVault',
description: 'FairyVault Wallet',
href: null,
},
[TONConnectorId.TON]: {
connectorId: TONConnectorId.TON,
chainType: 'TON',
Expand Down
2 changes: 2 additions & 0 deletions src/contexts/useModal/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ export default function Provider({ children }: { children: React.ReactNode }) {
accountWallet = formatPortkeyWallet(portkeyWallet, accountChainId as any);
break;
case 'NIGHTELF':
case 'FAIRY_VAULT':
accountWallet = aelfWallet;
break;
case 'TON':
Expand All @@ -63,6 +64,7 @@ export default function Provider({ children }: { children: React.ReactNode }) {
walletWallet = formatPortkeyWallet(portkeyWallet, walletChainId as any);
break;
case 'NIGHTELF':
case 'FAIRY_VAULT':
walletWallet = aelfWallet;
break;
case 'TON':
Expand Down
Loading
Loading