diff --git a/src/BlockTimer.svelte b/src/BlockTimer.svelte
new file mode 100644
index 000000000..ccf159519
--- /dev/null
+++ b/src/BlockTimer.svelte
@@ -0,0 +1,34 @@
+
+
+
+
+
diff --git a/src/base/registrations/Submit.svelte b/src/base/registrations/Submit.svelte
index 35b1889d8..09bceef41 100644
--- a/src/base/registrations/Submit.svelte
+++ b/src/base/registrations/Submit.svelte
@@ -8,6 +8,7 @@
import Loading from '@app/Loading.svelte';
import Modal from '@app/Modal.svelte';
import Err from '@app/Error.svelte';
+ import BlockTimer from "@app/BlockTimer.svelte";
import { registerName, State, state } from './registrar';
@@ -27,13 +28,19 @@
} catch (e) {
console.error("Error", e);
- state.set(State.Failed);
+ state.set({ connection: State.Failed });
error = e;
}
});
-
+
{#if error}
- {#if $state === State.Registered}
+ {#if $state.connection === State.Registered}
🎉
{/if}
{subdomain}.{config.registrar.domain}
- {#if $state === State.Connecting}
+ {#if $state.connection === State.Connecting}
Connecting...
- {:else if $state === State.Committing}
+ {:else if $state.connection === State.Committing}
Committing...
- {:else if $state === State.WaitingToRegister}
+ {:else if $state.connection === State.WaitingToRegister && $state.commitmentBlock}
Waiting for commitment time...
- {:else if $state === State.Registering}
+ {:else if $state.connection === State.Registering}
Registering name...
{/if}
-
- {#if $state === State.Registered}
+
+ {#if $state.connection === State.Registered}
The name has been successfully registered to
- {registrationOwner}.
+ {registrationOwner}
+ {:else if $state.connection === State.WaitingToRegister && $state.commitmentBlock}
+
{:else}
{/if}
- {#if $state === State.Registered}
+ {#if $state.connection === State.Registered}
diff --git a/src/base/registrations/registrar.ts b/src/base/registrations/registrar.ts
index 2678370d4..a42affb78 100644
--- a/src/base/registrations/registrar.ts
+++ b/src/base/registrations/registrar.ts
@@ -30,12 +30,21 @@ export enum State {
Registered,
}
-export const state = writable(State.Connecting);
+export type Connection =
+ { connection: State.Failed }
+ | { connection: State.Connecting }
+ | { connection: State.Committing }
+ | { connection: State.WaitingToRegister; commitmentBlock: number; minAge: number }
+ | { connection: State.Registering }
+ | { connection: State.Registered };
+
+
+export const state = writable({ connection: State.Connecting });
window.registrarState = state;
-state.subscribe((s: State) => {
- console.log("regiter.state", s);
+state.subscribe((s: Connection) => {
+ console.log("register.state", s);
});
export async function getRegistration(name: string, config: Config): Promise {
@@ -121,7 +130,7 @@ async function commitAndRegister(name: string, owner: string, config: Config): P
async function commit(commitment: string, fee: BigNumber, minAge: number, config: Config): Promise {
assert(config.signer);
- state.set(State.Committing);
+ state.set({ connection: State.Committing });
const owner = config.signer;
const ownerAddr = await owner.getAddress();
@@ -144,8 +153,12 @@ async function commit(commitment: string, fee: BigNumber, minAge: number, config
await tx.wait(1);
session.state.updateBalance(fee.mul(-1));
-
- state.set(State.WaitingToRegister);
+ const receipt = await config.provider.getTransactionReceipt(tx.hash);
+ state.set({
+ connection: State.WaitingToRegister,
+ commitmentBlock: receipt.blockNumber,
+ minAge
+ });
await tx.wait(minAge + 1);
}
@@ -190,7 +203,7 @@ async function permitSignature(
async function register(name: string, owner: string, salt: Uint8Array, config: Config) {
assert(config.signer);
- state.set(State.Registering);
+ state.set({ connection: State.Registering });
const tx = await registrar(config).connect(config.signer).register(
name, owner, ethers.BigNumber.from(salt), { gasLimit: 150000 }
@@ -199,7 +212,7 @@ async function register(name: string, owner: string, salt: Uint8Array, config: C
await tx.wait();
window.localStorage.clear();
- state.set(State.Registered);
+ state.set({ connection: State.Registered });
}
function makeCommitment(name: string, owner: string, salt: Uint8Array): string {