From e63b52033cc97855f7a13d4f80fafef55bffee31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viterbo=20Rodr=C3=ADguez?= Date: Wed, 15 May 2024 20:11:11 -0300 Subject: [PATCH 1/2] add network selector to home page --- src/antelope/chains/evm/telos-evm/index.ts | 2 +- .../chains/native/telos-testnet/index.ts | 7 +- src/antelope/chains/native/telos/index.ts | 7 +- src/antelope/stores/account.ts | 34 +- src/i18n/en-us/index.js | 1 + src/pages/home/HomePage.vue | 208 ++++--- src/pages/home/HomePageOld.vue | 251 +++++++++ src/pages/home/LoginButtons.vue | 508 ++++++++++++++++++ 8 files changed, 916 insertions(+), 102 deletions(-) create mode 100644 src/pages/home/HomePageOld.vue create mode 100644 src/pages/home/LoginButtons.vue diff --git a/src/antelope/chains/evm/telos-evm/index.ts b/src/antelope/chains/evm/telos-evm/index.ts index 9669b3403..3a4099350 100644 --- a/src/antelope/chains/evm/telos-evm/index.ts +++ b/src/antelope/chains/evm/telos-evm/index.ts @@ -9,7 +9,7 @@ import { getFiatPriceFromIndexer } from 'src/api/price'; const LOGO = 'https://raw.githubusercontent.com/telosnetwork/token-list/main/logos/telos.png'; const CHAIN_ID = '40'; export const NETWORK = 'telos-evm'; -const DISPLAY = 'Telos EVM Mainnet'; +const DISPLAY = 'Telos EVM'; const TOKEN = new TokenClass({ name: 'Telos', symbol: 'TLOS', diff --git a/src/antelope/chains/native/telos-testnet/index.ts b/src/antelope/chains/native/telos-testnet/index.ts index ae520eaa5..ac959a54a 100644 --- a/src/antelope/chains/native/telos-testnet/index.ts +++ b/src/antelope/chains/native/telos-testnet/index.ts @@ -3,10 +3,11 @@ import { RpcEndpoint } from 'universal-authenticator-library'; import { api } from 'src/api'; import { TokenClass, TokenSourceInfo, PriceChartData, Theme } from 'src/antelope/types'; +const LOGO = 'https://raw.githubusercontent.com/telosnetwork/token-list/main/logos/telos.png'; const CHAIN_ID = '1eaa0824707c8c16bd25145493bf062aecddfeb56c736f6ba6397f3195f33c9f'; const NETWORK = 'telos-testnet'; -const DISPLAY = 'Telos'; +const DISPLAY = 'Telos Zero Testnet'; const TOKEN = new TokenClass({ symbol: 'TLOS', precision: 4, @@ -95,11 +96,11 @@ export default class TelosTestnet extends NativeChainSettings { } getLargeLogoPath(): string { - return 'chains/telos/telos_logo.svg'; + return LOGO; } getSmallLogoPath(): string { - return 'chains/telos/tlos.png'; + return LOGO; } getMapDisplay(): boolean { diff --git a/src/antelope/chains/native/telos/index.ts b/src/antelope/chains/native/telos/index.ts index 20be122dd..7e08c15ab 100644 --- a/src/antelope/chains/native/telos/index.ts +++ b/src/antelope/chains/native/telos/index.ts @@ -3,10 +3,11 @@ import { RpcEndpoint } from 'universal-authenticator-library'; import { api } from 'src/api'; import { TokenClass, TokenSourceInfo, PriceChartData, Theme } from 'src/antelope/types'; +const LOGO = 'https://raw.githubusercontent.com/telosnetwork/token-list/main/logos/telos.png'; const CHAIN_ID = '4667b205c6838ef70ff7988f6e8257e8be0e1284a2f59699054a018f743b1d11'; const NETWORK = 'telos'; -const DISPLAY = 'Telos'; +const DISPLAY = 'Telos Zero'; const TOKEN = new TokenClass({ symbol: 'TLOS', precision: 4, @@ -98,11 +99,11 @@ export default class Telos extends NativeChainSettings { } getLargeLogoPath(): string { - return 'chains/telos/telos_logo.svg'; + return LOGO; } getSmallLogoPath(): string { - return 'chains/telos/tlos.png'; + return LOGO; } getMapDisplay(): boolean { diff --git a/src/antelope/stores/account.ts b/src/antelope/stores/account.ts index 5a52645fa..0218e1e05 100644 --- a/src/antelope/stores/account.ts +++ b/src/antelope/stores/account.ts @@ -20,7 +20,6 @@ import { initFuelUserWrapper } from 'src/api/fuel'; import { createTraceFunction, errorToString } from 'src/antelope/config'; import NativeChainSettings from 'src/antelope/chains/NativeChainSettings'; import { - Action, Label, NativeTransactionResponse, addressString, @@ -29,7 +28,6 @@ import { EVMAuthenticator } from 'src/antelope/wallets'; import { truncateAddress } from 'src/antelope/stores/utils/text-utils'; import { toRaw } from 'vue'; import { getAddress } from 'ethers/lib/utils'; -import { OreIdAuthenticator } from 'ual-oreid'; // dependencies -- import { @@ -40,7 +38,7 @@ import { } from 'src/antelope'; -export interface LoginNativeActionData { +export interface loginZeroActionData { authenticator: Authenticator, network: string, } @@ -113,15 +111,17 @@ export const useAccountStore = defineStore(store_name, { }, actions: { trace: createTraceFunction(store_name), - async loginNative({ authenticator, network }: LoginNativeActionData): Promise { - this.trace('loginNative', authenticator, network); + async loginZero({ authenticator, network }: loginZeroActionData): Promise { + this.trace('loginZero', authenticator, network); let success = false; try { + this.trace('loginZero', 'authenticator.init()...'); await authenticator.init(); + this.trace('loginZero', 'authenticator.login()...'); const ualUsers = await authenticator.login(); if (ualUsers?.length) { - // OreId has it's own authorization service, only init fuel service for other ual users - const ualUser = ualUsers[0] instanceof OreIdAuthenticator ? ualUsers[0] : await initFuelUserWrapper(ualUsers[0]); + this.trace('loginZero', 'authenticator.login() OK! ualUsers:', ualUsers); + const ualUser = await initFuelUserWrapper(ualUsers[0]); const permission = (ualUser as unknown as { requestPermission: string }) .requestPermission ?? 'active'; const account = await ualUser.getAccountName(); @@ -246,8 +246,10 @@ export const useAccountStore = defineStore(store_name, { const rawAddress = localStorage.getItem('rawAddress'); const isNative = localStorage.getItem('isNative') === 'true'; const autoLogin = localStorage.getItem('autoLogin'); - this.trace('autoLogin', account, isNative, autoLogin); + this.trace('autoLogin', account, network, autoLogin, isNative, this.__accounts[label]); if (account && network && autoLogin && !this.__accounts[label]) { + // Ensure we are working with the correct network + useChainStore().setChain(label, network); if (isNative) { const authenticators = getAntelope().config.authenticatorsGetter(); const authenticator = authenticators.find( @@ -257,7 +259,7 @@ export const useAccountStore = defineStore(store_name, { console.error(authenticators.map(a => a.getName()).join(', ')); throw new Error('antelope.account.error_auto_login'); } - this.loginNative({ + this.loginZero({ authenticator, network, }); @@ -274,6 +276,8 @@ export const useAccountStore = defineStore(store_name, { autoLogAccount, }); } + } else { + this.trace('autoLogin', 'canceled!', account, network, autoLogin, !this.__accounts[label]); } } catch (error) { console.error('Error: ', errorToString(error)); @@ -326,7 +330,6 @@ export const useAccountStore = defineStore(store_name, { this.trace('sendAction', account, data, name, actor, permission); try { useFeedbackStore().setLoading('account.sendAction'); - console.error('Account.sendAction() not implemented', account, data, name, actor, permission); return Promise.resolve({ hash: '0x0' } as NativeTransactionResponse); } catch (error) { console.error('Error: ', errorToString(error)); @@ -336,16 +339,6 @@ export const useAccountStore = defineStore(store_name, { } }, - async sendTransaction(actions: Action[]) { - this.trace('sendTransaction', actions); - try { - useFeedbackStore().setLoading('account.sendTransaction'); - console.error('Account.sendTransaction() not implemented', actions); - } catch (error) { - console.error('Error: ', errorToString(error)); - } - }, - async fetchAccountDataFor(label: string, account: AccountModel) { this.trace('fetchAccountDataFor', account); try { @@ -395,4 +388,3 @@ export const useAccountStore = defineStore(store_name, { const accountInitialState: AccountState = { __accounts: {}, }; - diff --git a/src/i18n/en-us/index.js b/src/i18n/en-us/index.js index bb090d901..ffdfcb2e6 100644 --- a/src/i18n/en-us/index.js +++ b/src/i18n/en-us/index.js @@ -128,6 +128,7 @@ export default { table_controls_change_rows_per_page_label: 'Change rows per page to {num}', }, global: { + network: 'Network', address: 'Address', allowance: 'Allowance', allowed: 'Allowed', diff --git a/src/pages/home/HomePage.vue b/src/pages/home/HomePage.vue index 74ae1528f..98b5b085f 100644 --- a/src/pages/home/HomePage.vue +++ b/src/pages/home/HomePage.vue @@ -1,24 +1,74 @@