Skip to content

Commit

Permalink
list alternatived idriss addresses
Browse files Browse the repository at this point in the history
  • Loading branch information
matrix0123456789 committed Jul 4, 2022
1 parent 40a99e8 commit de4187c
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 6 deletions.
1 change: 1 addition & 0 deletions background/accounts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ export type AccountBalance = {
export type AddressOnNetwork = {
address: HexString
network: EVMNetwork
alternative?: { name: string; address: string }[]
}

/**
Expand Down
2 changes: 2 additions & 0 deletions background/lib/utils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@ export function normalizeEVMAddress(address: string | Buffer): HexString {
export function normalizeAddressOnNetwork({
address,
network,
alternative,
}: AddressOnNetwork): AddressOnNetwork {
return {
address: normalizeEVMAddress(address),
network,
alternative,
}
}

Expand Down
3 changes: 2 additions & 1 deletion background/services/name/resolvers/idriss.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ export default function idrissResolver(): NameResolver<"idriss"> {
const address = result["Public ETH"] ?? Object.values(result)[0]
if (address) {
const normalizedAddress = normalizeEVMAddress(address)
return { address: normalizedAddress, network }
const alternative = Object.entries(result).map(x=>({name:x[0], address:normalizeEVMAddress(x[1])}));
return { address: normalizedAddress, network, alternative }
}
return undefined
},
Expand Down
5 changes: 3 additions & 2 deletions ui/hooks/validation-hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ export const useParsedValidation = <T>(
* strings are resolved asynchronously.
*/
export const useAddressOrNameValidation: AsyncValidationHook<
{ address: HexString; name?: string } | undefined
{ address: HexString; name?: string, alternative?: { name: string; address: string }[] } | undefined
> = (onValidChange) => {
const [errorMessage, setErrorMessage] = useState<string | undefined>()
const [rawValue, setRawValue] = useState<string>("")
Expand Down Expand Up @@ -173,7 +173,8 @@ export const useAddressOrNameValidation: AsyncValidationHook<
onValidChange(undefined)
setErrorMessage("Address could not be found")
} else {
onValidChange({ name: trimmed, address: resolved.address })
console.log('resolved',resolved)
onValidChange({ name: trimmed, address: resolved.address, alternative: resolved.alternative })
}

setIsValidating(false)
Expand Down
52 changes: 49 additions & 3 deletions ui/pages/Send.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ export default function Send(): ReactElement {
)
const [destinationAddress, setDestinationAddress] = useState<
string | undefined
>(undefined)
>(undefined)
const [alternativeAddresses, setAlternativeAddresses] = useState<
{ name: string; address: string }[]
>([])
const [amount, setAmount] = useState("")
const [gasLimit, setGasLimit] = useState<bigint | undefined>(undefined)
const [isSendingTransactionRequest, setIsSendingTransactionRequest] =
Expand Down Expand Up @@ -145,8 +148,10 @@ export default function Send(): ReactElement {
errorMessage: addressErrorMessage,
isValidating: addressIsValidating,
handleInputChange: handleAddressChange,
} = useAddressOrNameValidation((value) =>
setDestinationAddress(value?.address)
} = useAddressOrNameValidation((value) => {
setDestinationAddress(value?.address)
setAlternativeAddresses(value?.alternative || [])
}
)

return (
Expand Down Expand Up @@ -205,6 +210,22 @@ export default function Send(): ReactElement {
<></>
)}
</div>
{alternativeAddresses.length>=2 ?alternativeAddresses.map(x => {
let className = `addressSelection ${
x.address == destinationAddress ? "isActive" : ""
}`
return (
<button
className={className}
onClick={(event) => setDestinationAddress(x.address)}
>
<strong>IDriss: {x.name}</strong>{" "}
<span>
{x.address.substr(0, 6)}...{x.address.substr(-4)}
</span>
</button>
)
}):''}
<SharedSlideUpMenu
size="custom"
isOpen={networkSettingsModalOpen}
Expand Down Expand Up @@ -347,6 +368,31 @@ export default function Send(): ReactElement {
justify-content: space-between;
align-items: center;
}
.addressSelection {
height: 72px;
width: 100%;
border-radius: 16px;
background-color: var(--green-95);
display: flex;
flex-direction: column;
padding: 11px 19px 8px 8px;
box-sizing: border-box;
margin-bottom: 16px;
justify-content: space-between;
align-items: center;
}
.addressSelection:hover,
.addressSelection.isActive {
background-color: var(--green-80);
}
.addressSelection span {
line-height: 27px;
margin: -27px 4px 0 0;
color: var(--green-40);
text-align: right;
position: relative;
font-size: 14px;
}
`}
</style>
</>
Expand Down

0 comments on commit de4187c

Please sign in to comment.