diff --git a/src/Address.svelte b/src/Address.svelte index ef1f624bc..c3437cb89 100644 --- a/src/Address.svelte +++ b/src/Address.svelte @@ -2,12 +2,11 @@ import { onMount } from 'svelte'; import { link } from 'svelte-routing'; import { ethers } from 'ethers'; - import { safeLink, explorerLink, identifyAddress, formatAddress, AddressType } from '@app/utils'; + import { safeLink, explorerLink, identifyAddress, formatAddress, AddressType, parseEnsLabel } from '@app/utils'; + import { Profile } from '@app/profile'; import Loading from '@app/Loading.svelte'; import Avatar from "@app/Avatar.svelte"; import type { Config } from '@app/config'; - import type { Registration } from '@app/base/registrations/registrar'; - import { getRegistration } from '@app/base/registrations/registrar'; export let address: string; export let config: Config; @@ -15,24 +14,21 @@ export let noBadge = false; export let noAvatar = false; export let compact = false; + // This property allows components eg. Header.svelte to pass a resolved profile object. + export let profile: Profile | null = null; let checksumAddress = compact ? formatAddress(address) : ethers.utils.getAddress(address); let addressType: AddressType | null = null; - let addressName: string | null = null; - let info: Registration | null; onMount(async () => { identifyAddress(address, config).then((t: AddressType) => addressType = t); - if (resolve) { - addressName = await config.provider.lookupAddress(address); - if (addressName) { - info = await getRegistration(addressName, config); - } + if (resolve && !profile) { + Profile.get(address, config).then(p => profile = p); } }); - $: addressLabel = addressName ?? checksumAddress; + $: addressLabel = profile?.name ? compact ? parseEnsLabel(profile.name, config) : profile.name : checksumAddress; -{#if isAddress(source)} +{#if isAddress(source) || isRadicleId(source)}
{:else} avatar diff --git a/src/Form.svelte b/src/Form.svelte index d444c8d8f..5c1220bde 100644 --- a/src/Form.svelte +++ b/src/Form.svelte @@ -4,6 +4,7 @@ value: string | null; label?: string; placeholder?: string; + resolve: boolean; editable: boolean; } @@ -105,7 +106,7 @@ {field.value} {:else if isAddress(field.value)} -
+
{:else} {field.value} {/if} diff --git a/src/Header.svelte b/src/Header.svelte index 2a7a5758c..deb867a41 100644 --- a/src/Header.svelte +++ b/src/Header.svelte @@ -1,17 +1,18 @@ -{#each orgs as org} -
- - - +{#await Profile.getMulti(orgsAddresses, config)} +
+
-{:else} - -{/each} +{:then profiles} +
+ {#each profiles as profile} +
+ + + +
+ {:else} + + {/each} +
+{/await} diff --git a/src/base/orgs/Org.ts b/src/base/orgs/Org.ts index c9fa40600..0233df8c9 100644 --- a/src/base/orgs/Org.ts +++ b/src/base/orgs/Org.ts @@ -60,10 +60,6 @@ export class Org { this.owner = owner; } - async lookupAddress(config: Config): Promise { - return await config.provider.lookupAddress(this.address); - } - async setName(name: string, config: Config): Promise { assert(config.signer); diff --git a/src/base/orgs/TransferOwnership.svelte b/src/base/orgs/TransferOwnership.svelte index 89059a796..875bf5714 100644 --- a/src/base/orgs/TransferOwnership.svelte +++ b/src/base/orgs/TransferOwnership.svelte @@ -2,10 +2,9 @@ import { onMount, createEventDispatcher } from 'svelte'; import Modal from '@app/Modal.svelte'; import type { Config } from '@app/config'; - import { formatAddress } from '@app/utils'; + import { formatAddress, isAddress } from "@app/utils"; import Loading from '@app/Loading.svelte'; import { assert } from '@app/error'; - import * as utils from '@app/utils'; import type { Org } from './Org'; @@ -38,7 +37,7 @@ const onSubmit = async () => { assert(newOwner); - if (! utils.isAddress(newOwner)) { + if (! isAddress(newOwner)) { state = State.Failed; error = `"${newOwner}" is not a valid Ethereum address.`; return; @@ -58,7 +57,7 @@ }; -{#if state === State.Success} +{#if state === State.Success && newOwner}
✅ diff --git a/src/base/orgs/View.svelte b/src/base/orgs/View.svelte index cc8d0c4ee..3fe7cc30f 100644 --- a/src/base/orgs/View.svelte +++ b/src/base/orgs/View.svelte @@ -1,40 +1,29 @@ -
-
-
- -
-
-
+{#await Profile.get(address, config)} + +{:then profile} +
+
+
+ +
+
+
+{/await} diff --git a/src/base/vesting/Index.svelte b/src/base/vesting/Index.svelte index 9baafe2e2..d785d30f7 100644 --- a/src/base/vesting/Index.svelte +++ b/src/base/vesting/Index.svelte @@ -1,12 +1,13 @@