diff --git a/src/constants/rainbow.ts b/src/constants/rainbow.ts index e3f7440c..ec82e0d0 100644 --- a/src/constants/rainbow.ts +++ b/src/constants/rainbow.ts @@ -23,6 +23,7 @@ import { zora, } from 'wagmi/chains' import { publicProvider } from 'wagmi/providers/public' +import i18n from '~i18n' export const { chains, publicClient } = configureChains( [ @@ -63,7 +64,6 @@ const featuredConnectors = () => { rainbowWallet({ projectId, chains }), coinbaseWallet({ chains, appName }), walletConnectWallet({ chains, projectId }), - privateKeyWallet({ chains }), ], } @@ -100,11 +100,21 @@ const featuredConnectors = () => { oAuthServiceProvider: 'facebook', }, }), - privateKeyWallet({ chains }), ], } - const connectors: { [key: string]: WalletGroup } = { web2, web3 } + const recovery: WalletGroup = { + groupName: i18n.t('rainbow.group.recovery'), + wallets: [ + privateKeyWallet({ + name: i18n.t('rainbow.recovery'), + iconUrl: 'https://www.svgrepo.com/show/525392/key-minimalistic-square-3.svg', + chains, + }), + ], + } + + const connectors: { [key: string]: WalletGroup } = { web2, web3, recovery } const wallets: WalletList = [] for (const connector of import.meta.env.features.login) { wallets.push(connectors[connector]) diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index 449b8018..e9adb0fa 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json @@ -520,6 +520,12 @@ "accuracy": "Precisió dels Saldos de Cens Anònims: " } }, + "rainbow": { + "group": { + "recovery": "Recuperació" + }, + "recovery": "Recuperar compte" + }, "retry": "Reintenta", "roadmap": { "census_description": "Crear un cens descentralitzat fora de la cadena i compatible amb zk a partir d'una instantània de blocs d'Ethereum, amb verificació a la cadena.", diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index efc604d9..f3e925f7 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -511,6 +511,12 @@ "accuracy": "Anonymous Census Balance Accuracy: " } }, + "rainbow": { + "group": { + "recovery": "Recovery" + }, + "recovery": "Account recovery" + }, "retry": "Retry", "roadmap": { "census_description": "Create a trust-less off-chain zk-friendly census from an Ethereum block snapshot, with on-chain verification.", diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index 835b0271..d0245d7d 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -520,6 +520,12 @@ "accuracy": "Precisión de los Saldos de Censo Anónimo: " } }, + "rainbow": { + "group": { + "recovery": "Recuperación" + }, + "recovery": "Recuperar cuenta" + }, "retry": "Reintentar", "roadmap": { "census_description": "Crear un censo descentralizado fuera de la cadena y compatible con zk a partir de una instantánea de bloques de Ethereum, con verificación en cadena.", diff --git a/vite/features.ts b/vite/features.ts index b323784b..733757ae 100644 --- a/vite/features.ts +++ b/vite/features.ts @@ -23,6 +23,13 @@ const features = () => { if (!features.languages.length) { features.languages = ['en'] } + // verify login options are valid + const validLogins = ['web2', 'web3', 'recovery'] + features.login.forEach((login) => { + if (!validLogins.includes(login)) { + throw new Error(`Invalid login option: ${login}`) + } + }) // We need pure booleans in order to ensure rollup tree-shakes non enabled features. // Using functions like `.includes()` would prevent such tree-shaking, resulting in a bigger bundle. features._census = {