Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Show seed address in org view
Alexis Sellier committed 4 years ago
commit 6d447622a2b496dba629984f604eb8cb0b872b12
parent c78cc7fff8f70642696972547321f76a2f71f9e0
4 files changed +54 -1
modified public/index.css
@@ -186,6 +186,10 @@ button.primary[disabled] {
	border-color: var(--color-primary-faded) !important;
	background-color: transparent;
}
+
button.faded {
+
	color: var(--color-foreground-90);
+
	border-color: var(--color-foreground-90);
+
}
button[disabled] {
	cursor: not-allowed !important;
	color: var(--color-foreground-faded);
modified src/base/orgs/View.svelte
@@ -30,6 +30,16 @@
    setNameForm = SetName;
  };

+
  let seedCopied = false;
+
  const copySeed = (seedId: string, seedHost: string) => {
+
    return () => utils.toClipboard(utils.formatSeedAddress(seedId, seedHost, config)).then(() => {
+
      seedCopied = true;
+
      setTimeout(() => {
+
        seedCopied = false;
+
      }, 3000);
+
    });
+
  };
+

  let transferOwnerForm: typeof SvelteComponent | null = null;
  const transferOwnership = () => {
    transferOwnerForm = TransferOwnership;
@@ -99,6 +109,14 @@
    display: flex; /* Ensures correct vertical positioning of icons */
    margin-right: 1rem;
  }
+
  .seed-address {
+
    font-size: 1rem;
+
    color: var(--color-foreground-90);
+
  }
+
  .seed-icon {
+
    width: 1rem;
+
    margin-right: 0.5rem;
+
  }
  .projects {
    margin-top: 2rem;
  }
@@ -189,6 +207,23 @@
              </button>
            {/if}
          </div>
+
          <!-- Seed Address -->
+
          {#if profile.seedId && profile.seedHost}
+
            <div class="label">Seed</div>
+
            <div class="seed-address">
+
              <span class="seed-icon">🌱</span>
+
              {utils.formatSeedId(profile.seedId)}@{profile.seedHost}<span class="faded">:{config.seed.link.port}</span>
+
            </div>
+
            <div>
+
              <button class="tiny faded" disabled={seedCopied} on:click={copySeed(profile.seedId, profile.seedHost)}>
+
                {#if seedCopied}
+
                  Copy ✓
+
                {:else}
+
                  Copy
+
                {/if}
+
              </button>
+
            </div>
+
          {/if}
          <!-- Name/Profile -->
          <div class="label">Profile</div>
          <!-- Only show the name if we aren't already using the name of the owner -->
modified src/base/projects/Browser.svelte
@@ -277,7 +277,7 @@
          </div>
          <div class="dropdown seed-dropdown" class:seed-dropdown-visible={seedDropdown}>
            {#if config.seed.id}
-
              <input readonly name="clone-url" value={`${config.seed.id}@${config.seed.host}:${config.seed.link.port}`}/>
+
              <input readonly name="clone-url" value={utils.formatSeedAddress(config.seed.id, config.seed.host, config)}/>
              <label for="seed-url">Bootstrap your Radicle node with this seed.</label>
            {:else if org}
              <label for="#">Seed ID is not set for {org.name}.</label>
modified src/utils.ts
@@ -36,10 +36,24 @@ export async function isReverseRecordSet(address: string, domain: string, config
  return name === domain;
}

+
export async function toClipboard(text: string): Promise<void> {
+
  return navigator.clipboard.writeText(text);
+
}
+

export function isAddressEqual(left: string, right: string): boolean {
  return left.toLowerCase() === right.toLowerCase();
}

+
export function formatSeedAddress(id: string, host: string, config: Config): string {
+
  return `${id}@${host}:${config.seed.link.port}`;
+
}
+

+
export function formatSeedId(id: string): string {
+
  return id.substring(0, 6)
+
    + '…'
+
    + id.substring(id.length - 6, id.length);
+
}
+

export function formatBalance(n: BigNumber): string {
  return ethers.utils.commify(parseFloat(ethers.utils.formatUnits(n)).toFixed(2));
}