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}

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 @@
-
-