Skip to content

Commit 98b6f24

Browse files
authored
Try out whois for impersonation (#858)
1 parent 400b2c8 commit 98b6f24

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/features/impersonation/ImpersonationContext.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { getAddress, isAddress } from "../../utils/memoizedEthersUtils";
1515
import { useAccount } from "../../hooks/useAccount";
1616
import { useAppDispatch } from "../redux/store";
1717
import { impersonated } from "./impersonation.slice";
18+
import { useReverseResolveQuery } from "../whois/whoisApi.slice";
1819

1920
interface ImpersonationContextValue {
2021
isImpersonated: boolean;
@@ -34,6 +35,14 @@ export const ImpersonationProvider: FC<PropsWithChildren> = ({ children }) => {
3435
string | undefined
3536
>();
3637

38+
// Resolve ENS/handle names from view param via whois API
39+
const viewParam = isString(router.query.view) ? router.query.view : undefined;
40+
const isViewParamName = !!viewParam && !isAddress(viewParam);
41+
const { data: resolvedName } = useReverseResolveQuery(
42+
isViewParamName ? viewParam : "",
43+
{ skip: !isViewParamName || !router.isReady }
44+
);
45+
3746
const removeImpersonatedAddressQueryParam = useCallback(() => {
3847
const { view: viewAddressQueryParam, ...queryWithoutParam } = router.query;
3948

@@ -106,6 +115,13 @@ export const ImpersonationProvider: FC<PropsWithChildren> = ({ children }) => {
106115
}
107116
}, [router.isReady]);
108117

118+
// Resolve ENS/handle name from view param and impersonate
119+
useEffect(() => {
120+
if (!impersonatedAddress && resolvedName?.address) {
121+
impersonate(resolvedName.address);
122+
}
123+
}, [resolvedName, impersonatedAddress, impersonate]);
124+
109125
// Actively keep impersonated address in query string
110126
useEffect(() => {
111127
const { view: viewAddressQueryParam } = router.query;

0 commit comments

Comments
 (0)