Skip to content

Commit affe0b8

Browse files
author
Vlad Lobachov
authored
ENS support for Faucet (#1667)
ENS support for Faucet (#1667)
1 parent 6be6c77 commit affe0b8

File tree

8 files changed

+157
-101
lines changed

8 files changed

+157
-101
lines changed

docusaurus.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ const config = {
3838
DASHBOARD_URL: process.env.DASHBOARD_URL || 'http://localhost:3000',
3939
SENTRY_KEY: process.env.SENTRY_KEY,
4040
GF_SURVEY_KEY: process.env.GF_SURVEY_KEY,
41+
LINEA_ENS_URL: process.env.LINEA_ENS_URL,
4142
},
4243

4344
trailingSlash: true,

src/components/AuthLogin/AuthModal.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ import {
1212
AUTH_WALLET_PROJECTS,
1313
saveTokenString,
1414
getUserIdFromJwtToken,
15-
AUTH_WALLET_USER_PLAN,
1615
} from "../../lib/siwsrp/auth";
17-
import { REQUEST_PARAMS } from "@site/src/lib/constants";
16+
import {
17+
REQUEST_PARAMS,
18+
AUTH_WALLET_USER_PLAN,
19+
} from "@site/src/lib/constants";
1820
import { MetamaskProviderContext } from "@site/src/theme/Root";
1921

2022
Modal.setAppElement("#__docusaurus");
@@ -154,6 +156,7 @@ const AuthModal = ({
154156
setProjects,
155157
setMetaMaskAccount,
156158
setMetaMaskProvider,
159+
fetchLineaEns,
157160
} = useContext(MetamaskProviderContext);
158161
const location = useLocation();
159162
const { pathname } = location;
@@ -167,9 +170,10 @@ const AuthModal = ({
167170

168171
// Try to connect wallet first
169172
const accounts = await sdk.connect();
170-
setMetaMaskAccount(accounts);
173+
171174
if (accounts && accounts.length > 0) {
172175
setMetaMaskAccount(accounts[0]);
176+
fetchLineaEns(accounts[0]);
173177
const provider = sdk.getProvider();
174178
setMetaMaskProvider(provider);
175179
}

src/components/Faucet/Hero.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ export default function Hero({
121121
label="Wallet address"
122122
disabled={isLoading}
123123
value={inputValue}
124-
placeholder="ex. 0x"
124+
placeholder="ex. 0x or ENS"
125125
onChange={handleOnInputChange}
126126
/>
127127
{isLimitedUserPlan && (

src/components/NavbarWallet/index.tsx

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ interface INavbarWalletComponent {
1616

1717
const LOGIN_FF = "mm-unified-login";
1818

19+
const reformatMetamaskAccount = (account) =>
20+
account ? `${account.slice(0, 7)}...${account.slice(-5)}` : null;
21+
1922
const NavbarWalletComponent: FC = ({
2023
includeUrl = [],
2124
}: INavbarWalletComponent) => {
@@ -27,6 +30,7 @@ const NavbarWalletComponent: FC = ({
2730
const COPIED_TEXT = "Copied!";
2831
const {
2932
metaMaskAccount,
33+
metaMaskAccountEns,
3034
sdk,
3135
metaMaskWalletIdConnectHandler,
3236
metaMaskDisconnect,
@@ -36,6 +40,9 @@ const NavbarWalletComponent: FC = ({
3640
const isExtensionActive = sdk.isExtensionActive();
3741
const dialogRef = useRef<HTMLUListElement>(null);
3842
const buttonRef = useRef<HTMLButtonElement>(null);
43+
const [userAccount, setUserAccount] = useState(
44+
metaMaskAccountEns || metaMaskAccount,
45+
);
3946

4047
const toggleDropdown = () => {
4148
setDropdownOpen((value) => !value);
@@ -50,7 +57,7 @@ const NavbarWalletComponent: FC = ({
5057
};
5158

5259
const handleCopy = () => {
53-
navigator.clipboard.writeText(metaMaskAccount);
60+
navigator.clipboard.writeText(userAccount);
5461
setCopyMessage(COPIED_TEXT);
5562
trackClickForSegment({
5663
eventName: "Copy wallet address",
@@ -110,7 +117,17 @@ const NavbarWalletComponent: FC = ({
110117
metaMaskWalletIdConnectHandler();
111118
};
112119

113-
return !metaMaskAccount ? (
120+
useEffect(() => {
121+
if (metaMaskAccountEns) {
122+
setUserAccount(metaMaskAccountEns);
123+
} else if (metaMaskAccount) {
124+
setUserAccount(metaMaskAccount);
125+
} else {
126+
setUserAccount(null);
127+
}
128+
}, [metaMaskAccount, metaMaskAccountEns]);
129+
130+
return !userAccount ? (
114131
<Button
115132
testId={
116133
!isExtensionActive
@@ -145,9 +162,9 @@ const NavbarWalletComponent: FC = ({
145162
className={styles.avatar}
146163
alt="avatar"
147164
/>{" "}
148-
<span
149-
className={styles.walletId}
150-
>{`${metaMaskAccount.slice(0, 7)}...${metaMaskAccount.slice(-5)}`}</span>
165+
<span className={styles.walletId}>
166+
{metaMaskAccountEns || reformatMetamaskAccount(userAccount)}
167+
</span>
151168
<button
152169
data-testid="navbar-account-copy"
153170
className={styles.copyButton}
Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -450,9 +450,9 @@ export const REF_WALLET_PATH = "/wallet/reference/";
450450
export const REF_FAUCET_PATH = "/developer-tools/faucet/";
451451

452452
export const REF_ALLOW_LOGIN_PATH = [
453-
REF_SERVICES_PATH,
454-
REF_WALLET_PATH,
455-
REF_FAUCET_PATH,
453+
REF_SERVICES_PATH,
454+
REF_WALLET_PATH,
455+
REF_FAUCET_PATH,
456456
];
457457

458458
export const REQUEST_PARAMS = (method = "POST", headers = {}) => ({
@@ -467,9 +467,17 @@ export const REQUEST_PARAMS = (method = "POST", headers = {}) => ({
467467
},
468468
});
469469

470-
export const AUTH_WALLET_SESSION_NAME = "auth.wallet.session";
471-
export const AUTH_WALLET_TOKEN = "auth.wallet.token";
472-
export const AUTH_WALLET_PROJECTS = "auth.wallet.projects";
473-
export const LINEA_DEV_URL = "https://linea-mainnet.dev.infura.org";
474470
export const LINEA_PROD_URL = "https://linea-mainnet.infura.io";
471+
export const LINEA_DEV_URL = "https://linea-mainnet.dev.infura.org";
475472
export const LINEA_REQUEST_URL = LINEA_PROD_URL;
473+
export const AUTH_WALLET_ENS = "auth.wallet.ens";
474+
export const AUTH_WALLET_PROJECTS = "auth.wallet.projects";
475+
export const AUTH_WALLET_USER_PLAN = "auth.wallet.uksTier";
476+
477+
export const getWalletEns = () => {
478+
return sessionStorage.getItem(AUTH_WALLET_ENS);
479+
};
480+
481+
export const getUksTier = (): string => {
482+
return sessionStorage.getItem(AUTH_WALLET_USER_PLAN);
483+
};

src/lib/siwsrp/auth.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ export const AUTH_WALLET_PAIRING = 'auth.wallet.pairing'
1414
export const AUTH_WALLET_SESSION_NAME = 'auth.wallet.session'
1515
export const AUTH_WALLET_TOKEN = 'auth.wallet.token'
1616
export const AUTH_WALLET_PROJECTS = 'auth.wallet.projects'
17-
export const AUTH_WALLET_USER_PLAN = 'auth.wallet.uksTier'
1817

1918
const getHydraEnv = (env: string): HydraEnv => {
2019
const platform = Platform.INFURA;
@@ -80,10 +79,6 @@ export const getTokenString = (): string => {
8079
return sessionStorage.getItem(AUTH_WALLET_TOKEN)
8180
}
8281

83-
export const getUksTier = (): string => {
84-
return sessionStorage.getItem(AUTH_WALLET_USER_PLAN)
85-
}
86-
8782
export const getUserIdFromJwtToken = () => {
8883
const token = sessionStorage.getItem(AUTH_WALLET_TOKEN);
8984
const decoded = jwt.decode(token as string, { complete: true }) as jwt.Jwt;
@@ -93,8 +88,6 @@ export const getUserIdFromJwtToken = () => {
9388

9489
export const clearStorage = () => {
9590
sessionStorage.clear();
96-
localStorage.removeItem(AUTH_WALLET_PAIRING);
9791
localStorage.removeItem(AUTH_WALLET_SESSION_NAME);
98-
localStorage.removeItem(AUTH_WALLET_TOKEN);
99-
localStorage.removeItem(AUTH_WALLET_PROJECTS);
92+
localStorage.removeItem(AUTH_WALLET_PAIRING);
10093
};

src/pages/developer-tools/faucet.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ import {
1515
AlertPastActivity,
1616
} from "@site/src/components/Faucet";
1717
import { useAlert } from "react-alert";
18-
import {MetamaskProviderContext} from "@site/src/theme/Root";
19-
18+
import { MetamaskProviderContext } from "@site/src/theme/Root";
2019
import styles from "./faucet.module.scss";
2120
import { REQUEST_PARAMS } from "@site/src/lib/constants";
2221
import { AlertBalanceTooLow } from "@site/src/components/Faucet/Alerts";
@@ -35,7 +34,8 @@ export const LINEA_URL = "https://sepolia.lineascan.build/tx/";
3534

3635
export default function Faucet() {
3736
const { siteConfig } = useDocusaurusContext();
38-
const { userId, token, uksTier, metaMaskAccount } = useContext(MetamaskProviderContext);
37+
const { userId, token, uksTier, metaMaskAccount, metaMaskAccountEns } =
38+
useContext(MetamaskProviderContext);
3939
const alert = useAlert();
4040
const [transactions, setTransactions] = useState(DEFAULT_TRANSACTIONS_LIST);
4141
const [isLoading, setIsLoading] = useState(false);
@@ -175,10 +175,12 @@ export default function Faucet() {
175175
}, [userId, token]);
176176

177177
useEffect(() => {
178-
if (metaMaskAccount && !walletAddress) {
178+
if (metaMaskAccountEns) {
179+
setWalletAddress(metaMaskAccountEns);
180+
} else if (metaMaskAccount) {
179181
setWalletAddress(metaMaskAccount);
180182
}
181-
}, [metaMaskAccount]);
183+
}, [metaMaskAccount, metaMaskAccountEns]);
182184

183185
const tabItemContent = (network: "linea" | "sepolia") => {
184186
return (

0 commit comments

Comments
 (0)