Register
Vesting
diff --git a/src/base/home/Home.svelte b/src/base/home/Home.svelte
new file mode 100644
index 000000000..4000fedcb
--- /dev/null
+++ b/src/base/home/Home.svelte
@@ -0,0 +1,17 @@
+
+
+
+
+
+
diff --git a/src/base/register/Routes.svelte b/src/base/register/Routes.svelte
index 4673d22d2..c501a6fae 100644
--- a/src/base/register/Routes.svelte
+++ b/src/base/register/Routes.svelte
@@ -7,23 +7,23 @@
import Error from '@app/Error.svelte';
import type { Config } from '@app/config';
import type { Session } from '@app/session';
+ import { getSearchParam } from '@app/utils';
export let session: Session | null;
export let config: Config;
- export let query: Record
;
-
-
+
+
-
+
{#if session}
-
+
{:else}
;
+ export let owner: string | null;
let state = State.Initial;
- $: registrationOwner = query.get("owner") || ($session && $session.address);
+ $: registrationOwner = owner || ($session && $session.address);
async function begin() {
state = State.CheckingAvailability;
diff --git a/src/base/register/steps/Submit.svelte b/src/base/register/steps/Submit.svelte
index 59dab3593..91c752dc3 100644
--- a/src/base/register/steps/Submit.svelte
+++ b/src/base/register/steps/Submit.svelte
@@ -3,8 +3,7 @@
// TODO: When transfering name, warn about transfering to org.
import { onMount } from 'svelte';
import { navigate } from 'svelte-routing';
- import { ethers } from 'ethers';
- import { registerName, registrationFee } from '../registrar';
+ import { registerName } from '../registrar';
import { State, state } from '../state';
import type { Session } from '@app/session';
import type { Config } from '@app/config';
@@ -14,16 +13,11 @@
export let config: Config;
export let subdomain: string;
- export let query: Record;
+ export let owner: string | null;
export let session: Session;
let error: Error | null = null;
- let registrationOwner = query.get("owner") || session.address;
-
- async function getFee(cfg: Config) {
- let fee = await registrationFee(cfg);
- return ethers.utils.formatUnits(fee);
- }
+ let registrationOwner = owner || session.address;
const done = () => navigate(`/registrations/${subdomain}`)
diff --git a/src/base/resolve/Resolve.svelte b/src/base/resolve/Resolve.svelte
new file mode 100644
index 000000000..3da4790e9
--- /dev/null
+++ b/src/base/resolve/Resolve.svelte
@@ -0,0 +1,27 @@
+
diff --git a/src/base/resolve/Routes.svelte b/src/base/resolve/Routes.svelte
new file mode 100644
index 000000000..3885a489f
--- /dev/null
+++ b/src/base/resolve/Routes.svelte
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/src/index.ts b/src/index.ts
index ae8a931f5..fcba47297 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,5 +1,17 @@
import App from "./App.svelte";
+declare global {
+ // Taken from svelte-routing, since it's not exported.
+ interface RouteLocation {
+ pathname: string;
+ search: string;
+ hash?: string;
+ state: {
+ [k in string | number]: unknown;
+ };
+ }
+}
+
let app = new App({
target: document.body,
});
diff --git a/src/utils.ts b/src/utils.ts
index 68d368c62..4d332f302 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -18,13 +18,25 @@ export function capitalize(s: string) {
}
// Takes a domain name, eg. 'cloudhead.radicle.eth' and
-// returns the label, eg. 'cloudhead'.
-export function parseEnsLabel(name: string, config: Config) {
+// returns the label, eg. 'cloudhead', otherwise `null`.
+export function parseEnsLabel(name: string, config: Config): string | null {
let domain = config.registrar.domain.replace(".", "\\.");
- return name.replace(new RegExp(`\\.${domain}$`), "");
+ let label = name.replace(new RegExp(`\\.${domain}$`), "");
+
+ return label;
}
// Return the current unix time.
export function unixTime(): number {
return Math.floor(Date.now() / 1000);
}
+
+// Check whether the input is a Radicle ID.
+export function isRadicleId(input: string): boolean {
+ return /^rad:[a-z]+:[a-zA-Z0-9]+$/.test(input);
+}
+
+export function getSearchParam(key: string, location: RouteLocation): string | null {
+ let params = new URLSearchParams(location.search);
+ return params.get(key);
+};