Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/ens name #422

Open
wants to merge 45 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
406f34b
feat: add h-full into swap-section
heronlancellot Sep 19, 2024
ebc5733
fix: remove ens searched address
heronlancellot Sep 19, 2024
73162ca
fix: commented sections and add documentation about ens-name-address
heronlancellot Sep 19, 2024
7ba9d5a
Update components/01-atoms/ENSAvatar.tsx
heronlancellot Sep 20, 2024
280c696
Update components/01-atoms/ENSAvatar.tsx
heronlancellot Sep 20, 2024
f64f7c3
Update components/02-molecules/UserOfferInfo.tsx
heronlancellot Sep 20, 2024
8e8bdbe
Update components/01-atoms/ENSAvatar.tsx
heronlancellot Sep 20, 2024
a70daeb
Update components/01-atoms/SearchBar.tsx
heronlancellot Sep 20, 2024
be10d92
Update components/02-molecules/UserOfferInfo.tsx
heronlancellot Sep 20, 2024
ff85adc
fix: comment text
heronlancellot Sep 20, 2024
88078a7
fix: comment text
heronlancellot Sep 20, 2024
995f856
Update components/01-atoms/ENSAvatar.tsx
heronlancellot Sep 20, 2024
8805899
Update components/01-atoms/SearchBar.tsx
heronlancellot Sep 20, 2024
c3a6bc1
Update components/01-atoms/SearchBar.tsx
heronlancellot Sep 20, 2024
dc4300f
Update components/01-atoms/index.ts
heronlancellot Sep 20, 2024
a4d04b2
Update components/01-atoms/SearchBar.tsx
heronlancellot Sep 20, 2024
5410490
Update components/01-atoms/SearchBar.tsx
heronlancellot Sep 20, 2024
1c87f74
Update components/01-atoms/SearchBar.tsx
heronlancellot Sep 20, 2024
0f9b7ea
Update components/01-atoms/ENSAvatar.tsx
heronlancellot Sep 24, 2024
ef4854e
Update components/01-atoms/ENSAvatar.tsx
heronlancellot Sep 24, 2024
d0b9d78
Update components/01-atoms/ENSAvatar.tsx
heronlancellot Sep 24, 2024
12716a1
Update components/01-atoms/ENSAvatar.tsx
heronlancellot Sep 24, 2024
5623181
Update components/01-atoms/SearchBar.tsx
heronlancellot Sep 24, 2024
469c6eb
Update components/01-atoms/SearchBar.tsx
heronlancellot Sep 24, 2024
021a569
Update components/01-atoms/SearchBar.tsx
heronlancellot Sep 24, 2024
2441ff8
Update components/01-atoms/SearchBar.tsx
heronlancellot Sep 24, 2024
c169cb1
Update components/01-atoms/SearchBar.tsx
heronlancellot Sep 24, 2024
09d5093
Update components/02-molecules/EnsNameAndAddressWallet.tsx
heronlancellot Sep 24, 2024
4599dc6
Update components/02-molecules/OfferSummary.tsx
heronlancellot Sep 24, 2024
3ee2958
Update components/02-molecules/TheHeader.tsx
heronlancellot Sep 24, 2024
d478d30
Update components/02-molecules/UserOfferInfo.tsx
heronlancellot Sep 24, 2024
8cde85a
Update components/02-molecules/UserOfferInfo.tsx
heronlancellot Sep 24, 2024
dd9fb72
Update components/02-molecules/UserOfferInfo.tsx
heronlancellot Sep 24, 2024
a2993c0
Update components/02-molecules/UserOfferInfo.tsx
heronlancellot Sep 24, 2024
16e14cc
Update components/02-molecules/UserOfferInfo.tsx
heronlancellot Sep 24, 2024
6ab76c3
Update components/02-molecules/UserOfferInfo.tsx
heronlancellot Sep 24, 2024
36de969
update: SearchBar comments
heronlancellot Sep 24, 2024
356585c
update: comments
heronlancellot Sep 24, 2024
bec62ed
update: comments
heronlancellot Sep 24, 2024
8b510c4
update: comments
heronlancellot Sep 24, 2024
8da92a0
update: comments
heronlancellot Sep 24, 2024
d79539d
update: comments
heronlancellot Sep 24, 2024
f659bcd
update: comments
heronlancellot Sep 24, 2024
c6edfd2
Update components/01-atoms/SearchBar.tsx
heronlancellot Sep 24, 2024
38666df
Update components/02-molecules/EnsNameAndAddressWallet.tsx
heronlancellot Sep 24, 2024
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
22 changes: 22 additions & 0 deletions components/01-atoms/ENSAvatar.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,24 @@
/**
* @deprecated This component is deprecated because the searched Ethereum addresses
* are not always returning the relative ENS primary names, which negatively impacts the user experience
* in the application.
*
* The `ENSAvatar` component is responsible for displaying an Ethereum Name Service (ENS)
* avatar based on the provided Ethereum address. It supports two sizes: small and medium.
*
* The component uses the `useEnsData` hook to fetch the avatar data. Depending on the
* status of the query, it either shows a loading indicator, an error icon, or the
* fetched avatar image.
*
* @component
* @param {EthereumAddress} avatarETHAddress - The Ethereum address to fetch the avatar for.
* @param {ENSAvatarSize} ENSAvatarSize - The size of the avatar to display. Defaults to ENSAvatarSize.MEDIUM
*
* @returns {JSX.Element} The rendered ENS avatar component.
*/
/* eslint-disable react-hooks/exhaustive-deps */

/**
import { LoadingIndicator, PersonIcon } from "@/components/01-atoms";
import {
ENSAvatarQueryStatus,
Expand Down Expand Up @@ -101,3 +121,5 @@ export const ENSAvatar = ({
</div>
);
};

*/
60 changes: 43 additions & 17 deletions components/01-atoms/SearchBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,36 @@ import { ForWhom } from "../03-organisms";
import { MagnifyingGlassIcon } from "@/components/01-atoms";
import { EthereumAddress } from "@/lib/shared/types";
import { ADDRESS_ZERO } from "@/lib/client/constants";
import { normalizeENSName } from "@/lib/client/blockchain-utils";
import { SwapContext } from "@/lib/client/contexts";
import { useContext, useEffect } from "react";
import { ENS } from "web3-eth-ens";
import Web3 from "web3";
import toast from "react-hot-toast";

/**
* @deprecated
* The Ethereum address related ENS primary name getter function is
* under refactoring, thus, this feature is currently commented out.
*
heronlancellot marked this conversation as resolved.
Show resolved Hide resolved
* import { normalizeENSName } from "@/lib/client/blockchain-utils";
* import { ENS } from "web3-eth-ens";
* import Web3 from "web3";
*/

export const SearchBar = () => {
if (!process.env.NEXT_PUBLIC_ALCHEMY_ETHEREUM_HTTP) {
throw new Error(
"Cannot get the ENS primary name`s address without an Alchemy API Key",
);
}
const provider = new Web3.providers.HttpProvider(
process.env.NEXT_PUBLIC_ALCHEMY_ETHEREUM_HTTP,
);
const ens = new ENS(undefined, provider);
/**
* @deprecated
* The Ethereum address related ENS primary name getter function is
heronlancellot marked this conversation as resolved.
Show resolved Hide resolved
* under refactoring, thus, this feature is currently commented out.
*
* const provider = new Web3.providers.HttpProvider(
* process.env.NEXT_PUBLIC_ALCHEMY_ETHEREUM_HTTP,
* );
* const ens = new ENS(undefined, provider);
*/

const {
lastWalletConnected,
Expand Down Expand Up @@ -75,19 +88,32 @@ export const SearchBar = () => {

const getUserAddress = async () => {
if (lastWalletConnected && inputAddress.length > 2) {
const _inputAddress = inputAddress;
const formattedAddress = normalizeENSName(inputAddress);
/**
heronlancellot marked this conversation as resolved.
Show resolved Hide resolved
* @deprecated
* The Ethereum address related ENS primary name getter function is
* under refactoring, thus, this feature is currently commented out.
*
* const _inputAddress = inputAddress;
* const formattedAddress = normalizeENSName(inputAddress);
*/

try {
const address: unknown = await ens.getOwner(formattedAddress);
if (typeof address !== "string") {
toast.error(
"Wrong type of address returned by provider. Please contact the team",
);
return;
}
/**
* @deprecated
* The Ethereum address related ENS primary name getter function is
* under refactoring, thus, this feature is currently commented out.
*
* const address: unknown = await ens.getOwner(formattedAddress);
* if (typeof address !== "string") {
* toast.error(
* "Wrong type of address returned by provider. Please contact the team",
* );
* return;
* }
*/

validateAddressToSwap(
address === ADDRESS_ZERO ? _inputAddress : address,
inputAddress !== ADDRESS_ZERO ? inputAddress : ADDRESS_ZERO,
);
} catch (error) {
toast.error("Invalid Ethereum Address");
Expand Down
5 changes: 4 additions & 1 deletion components/01-atoms/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ export * from "./ApproveTokenCards";
export * from "./BlockExplorerExternalLinkButton";
export * from "./ConnectWallet";
export * from "./DisconnectWallet";
export * from "./ENSAvatar";
/**
* This export is commented out from dApp's features for now.
* export * from "./ENSAvatar";
*/
export * from "./LoadingIndicator";
export * from "./NetworkDropdown";
export * from "./MobileNotSupported";
Expand Down
39 changes: 31 additions & 8 deletions components/02-molecules/EnsNameAndAddressWallet.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,34 @@
/**
* Component that displays the authenticated user's ENS name and address wallet.
*
* This component utilizes the `useAuthenticatedUser` hook to retrieve the authenticated user's address.
* It also includes commented sections that are intended for future use with ENS (Ethereum Name Service) data.
*
* The commented sections include:
* - `useEnsData` hook: This hook is used to fetch ENS data, such as the primary name associated with an address.
* - `ENSAvatar` component: This component is used to display the ENS avatar for a given address.
*
* @deprecated
* These sections are currently commented out because the `ens-avatar-searched-address` has issues fetching the correct address.
*
* The component renders a copy address button and a block explorer external link button if the authenticated user's address is available.
*
* import { useEnsData } from "@/lib/client/hooks/useENSData";
* import { ENSAvatar } from "@/components/01-atoms";
*/

import { CopyAdressButton } from "@/components/02-molecules";
import {
BlockExplorerExternalLinkButton,
ENSAvatar,
} from "@/components/01-atoms";
import { BlockExplorerExternalLinkButton } from "@/components/01-atoms";
import { useAuthenticatedUser } from "@/lib/client/hooks/useAuthenticatedUser";
import { useEnsData } from "@/lib/client/hooks/useENSData";

export const EnsNameAndAddressWallet = () => {
const { authenticatedUserAddress } = useAuthenticatedUser();

/**
const { primaryName } = useEnsData({
ensAddress: authenticatedUserAddress,
});
Comment on lines 28 to 30
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment is missing documentation on why it is commented out

*/

if (!authenticatedUserAddress) return null;

Expand All @@ -21,17 +38,23 @@ export const EnsNameAndAddressWallet = () => {
<div className="flex gap-3 pb-5">
{authenticatedUserAddress && (
<>
<ENSAvatar avatarENSAddress={authenticatedUserAddress} />
{/**
* @deprecated
* The Ethereum address related ENS primary name getter function is
* under refactoring, thus, this feature is currently commented out.
*
* <ENSAvatar avatarENSAddress={authenticatedUserAddress} />
*/}
<div className="flex flex-col">
<div className="flex items-center justify-start gap-2">
{primaryName && (
{/* {primaryName && (
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment section can reproduce the method of commenting deprecated feature that the other sections received! Please go ahead and do so 🧑🏼‍💻👊🏼🧑🏼‍💻

<>
<h3 className="text-sm ">{`${primaryName}`}</h3>
<h3 className="text-sm text-softGray dark:text-mediumGray">
|
</h3>
</>
)}
)} */}
<CopyAdressButton
authenticatedUserAddress={authenticatedUserAddress.toString()}
displayAddress={displayAddress}
Expand Down
96 changes: 65 additions & 31 deletions components/02-molecules/OfferSummary.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ForWhom } from "../03-organisms";
import { ENSAvatar, ENSAvatarSize, PersonIcon } from "@/components/01-atoms";
import { PersonIcon } from "@/components/01-atoms";
import {
EtherFieldAddition,
TokenCardStyleType,
Expand All @@ -8,9 +8,35 @@ import {
import { ADDRESS_ZERO } from "@/lib/client/constants";
import { SwapContext } from "@/lib/client/contexts";
import { useAuthenticatedUser } from "@/lib/client/hooks/useAuthenticatedUser";
import { useEnsData } from "@/lib/client/hooks/useENSData";
/**
* @deprecated
*
* import { useEnsData } from "@/lib/client/hooks/useENSData";
*/
import { useContext } from "react";

/**
* OfferSummary component displays a summary of token offers for a given user.
*
* @param {ForWhom} variant - Specifies whether the summary is for the authenticated user or another user.
*
*
* @remarks
* This component uses the `SwapContext` to fetch the necessary data for rendering the token offers.
* It also utilizes the `useAuthenticatedUser` hook to get the authenticated user's address.
*
* The component conditionally renders different sections based on the `variant` prop:
* - If `variant` is `ForWhom.Yours`, it displays the authenticated user's token offers.
* - If `variant` is `ForWhom.Their`, it displays the searched user's token offers.
*
* The ENS-related sections are currently commented out due to issues with fetching the correct ENS address.
* These sections include:
* - Displaying the ENS avatar for the searched address.
* - Displaying the ENS name for the searched address.
*
* These sections are currently commented out because the `ens-avatar-searched-address` has issues fetching the correct address.
* Since the ENS are not working properly. We're commenting those sections.
*/
export const OfferSummary = ({ variant }: { variant: ForWhom }) => {
const {
validatedAddressToSwap,
Expand All @@ -24,45 +50,51 @@ export const OfferSummary = ({ variant }: { variant: ForWhom }) => {
? authenticatedUserTokensList
: searchedUserTokensList;

const { primaryName: searchedENSName } = useEnsData({
ensAddress: validatedAddressToSwap,
});
const { primaryName: authenticatedUserENSName } = useEnsData({
ensAddress: authenticatedUserAddress,
});
/**
* const { primaryName: searchedENSName } = useEnsData({
* ensAddress: validatedAddressToSwap,
* });
* const { primaryName: authenticatedUserENSName } = useEnsData({
* ensAddress: authenticatedUserAddress,
* });
*/

return (
<div className="w-full h-full dark:bg-darkGreen border dark:border-darkGray bg-[#F0EEEE] borderlightSilver rounded-lg ">
<div className="flex flex-col gap-4 px-4 pt-2 pb-4">
<div className="flex justify-between items-center h-9 gap-2">
<div className="flex space-x-2 items-center">
<div className="flex items-center">
{variant === ForWhom.Their && validatedAddressToSwap ? (
<ENSAvatar
avatarENSAddress={validatedAddressToSwap}
size={ENSAvatarSize.SMALL}
{/* {variant === ForWhom.Their && validatedAddressToSwap ? (
*<ENSAvatar
* avatarENSAddress={validatedAddressToSwap}
* size={ENSAvatarSize.SMALL}
* />
*) : variant === ForWhom.Yours && authenticatedUserAddress ? (
* <ENSAvatar
* avatarENSAddress={authenticatedUserAddress}
* size={ENSAvatarSize.SMALL}
* />
*) : ( */}
<div className="bg-lightSilver dark:bg-darkGray p-[5px] rounded-md">
<PersonIcon
size="14"
className="text-sageGray dark:text-mediumGray"
/>
) : variant === ForWhom.Yours && authenticatedUserAddress ? (
<ENSAvatar
avatarENSAddress={authenticatedUserAddress}
size={ENSAvatarSize.SMALL}
/>
) : (
<div className="bg-lightSilver dark:bg-darkGray p-[5px] rounded-md">
<PersonIcon
size="14"
className="text-sageGray dark:text-mediumGray"
/>
</div>
)}
</div>
{/* )} */}
</div>
<div className="items-center">
<p className="p-small-variant-black-3 dark:p-small-variant-light-2 contrast-50">
{variant === ForWhom.Their && validatedAddressToSwap
? `${
searchedENSName
? `${searchedENSName} offers`
: validatedAddressToSwap
/**
* searchedENSName
* ? `${searchedENSName} offers`
*
*
*/
validatedAddressToSwap
? `${
validatedAddressToSwap.address === ADDRESS_ZERO
? "Any user offers"
Expand All @@ -75,9 +107,11 @@ export const OfferSummary = ({ variant }: { variant: ForWhom }) => {
? "They offer"
: variant === ForWhom.Yours && authenticatedUserAddress
? `${
authenticatedUserENSName
? `${authenticatedUserENSName} offers`
: authenticatedUserAddress
/**
* authenticatedUserENSName
* ? `${authenticatedUserENSName} offers`
*/
authenticatedUserAddress
? `${authenticatedUserAddress.getEllipsedAddress()} offers`
: "Connect your wallet"
}`
Expand Down
11 changes: 8 additions & 3 deletions components/02-molecules/TheHeader.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
/* import { ENSAvatar } from "@/components/01-atoms"; */
import { useScreenSize } from "@/lib/client/hooks/useScreenSize";
import { useAuthenticatedUser } from "@/lib/client/hooks/useAuthenticatedUser";
import {
ConnectWallet,
ENSAvatar,
MoonIcon,
NetworkDropdown,
NetworkVariantPosition,
PersonIcon,
SunIcon,
SwaplaceIcon,
SwappingIcons,
Expand Down Expand Up @@ -93,9 +94,13 @@ export const TheHeader = () => {
<Tooltip position={"left"} content={"Your wallet"}>
<button
onClick={() => toggleSidebar()}
className="rounded-[10px] flex items-center justify-center"
className="rounded-[10px] flex items-center justify-center w-full h-full"
>
<ENSAvatar avatarENSAddress={authenticatedUserAddress} />
{/* <ENSAvatar avatarENSAddress={authenticatedUserAddress} /> */}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here as well, adding a comment on why this is out

<PersonIcon
size={"20"}
className="h-full items-center justify-center flex w-full p-2 text-sageGray dark:text-mediumGray"
/>
</button>
</Tooltip>
) : (
Expand Down
Loading