Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Handle org not found
Alexis Sellier committed 5 years ago
commit df9d15dda54d8d874556a33af62d73be1c31e2e4
parent bd70b4148226f0e77cc928fab728ffd5ac96584e
4 files changed +46 -13
modified public/index.css
@@ -41,6 +41,7 @@
	--color-foreground-5: #8594a1;
	--color-foreground-6: #d3dee8;
	--color-background: #0b131a;
+
	--color-glow: #5555ff22;

	--font-family-sans-serif: Inter, sans-serif;
	--font-family-monospace: monospace;
@@ -175,7 +176,7 @@ input.wide {
}

.modal {
-
	padding: 2rem;
+
	padding: 2rem 3rem;
	border: 1px solid var(--color-secondary);
	background: var(--color-background);
	box-shadow: 8px 8px 64px var(--box-shadow-color);
@@ -183,17 +184,26 @@ input.wide {
	max-width: 760px;
	text-align: center;
}
+
.modal.modal-subtle {
+
	border: none;
+
	box-shadow: none;
+
	background: radial-gradient(
+
		var(--color-glow) 0%,
+
		transparent 70%
+
	);
+
}
.modal-title {
	font-size: 1.75rem;
	margin-bottom: 2rem;
	color: var(--color-secondary);
	text-align: center;
+
	text-overflow: ellipsis;
+
	overflow-x: hidden;
}
.modal-body {
	overflow-x: hidden;
	text-overflow: ellipsis;
-
	margin-top: 2em;
-
	margin-bottom: 3em;
+
	margin: 3rem 0;
}
.modal-actions {
	margin-top: 2rem;
modified src/Modal.svelte
@@ -3,6 +3,7 @@

  export let floating = false;
  export let error: Error | null = null;
+
  export let subtle = false;

  let dispatch = createEventDispatcher();

@@ -37,7 +38,7 @@
{/if}

<div class:modal-floating={floating}>
-
  <div class="modal" class:error>
+
  <div class="modal" class:error class:modal-subtle={subtle}>
    <div class="modal-title">
      {#if error}
        Error
modified src/base/orgs/Org.ts
@@ -35,15 +35,19 @@ export class Org {
  static async get(
    address: string,
    config: Config,
-
  ): Promise<Org> {
+
  ): Promise<Org | null> {
    const org = new ethers.Contract(
      address,
      orgAbi,
      config.provider
    );
-
    let safe = await org.owner();

-
    return new Org(address, safe);
+
    try {
+
      let safe = await org.owner();
+
      return new Org(address, safe);
+
    } catch (_) {
+
      return null;
+
    }
  }

  static async create(
modified src/base/orgs/Profile.svelte
@@ -1,21 +1,39 @@
<script lang="typescript">
+
  import { navigate } from 'svelte-routing';
  import type { Config } from '@app/config';
  import { Org } from './Org';
  import Loading from '@app/Loading.svelte';
+
  import Modal from '@app/Modal.svelte';

  export let address: string;
  export let config: Config;
+

+
  const back = () => {
+
    navigate("/orgs");
+
  };
</script>

{#await Org.get(address, config)}
  <Loading/>
{:then org}
-
  <div>
-
    <table>
-
      <tr><td class="label">Address</td><td>{org.address}</td></tr>
-
      <tr><td class="label">Safe</td><td>{org.safe}</td></tr>
-
    </table>
-
  </div>
+
  {#if org}
+
    <div>
+
      <table>
+
        <tr><td class="label">Address</td><td>{org.address}</td></tr>
+
        <tr><td class="label">Safe</td><td>{org.safe}</td></tr>
+
      </table>
+
    </div>
+
  {:else}
+
    <Modal subtle>
+
      <span slot="title">🏜️</span>
+
      <span slot="body">Sorry, <span class="highlight">{address}</span> is not an Org address.</span>
+
      <span slot="actions">
+
        <button on:click={back}>
+
          Back
+
        </button>
+
      </span>
+
    </Modal>
+
  {/if}
{:catch err}
  {err}
{/await}