mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-03 18:50:30 +08:00
Refactor how we pass around DIDs
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<script lang="ts">
|
||||
import { createIcon } from "@app/lib/blockies";
|
||||
|
||||
export let nodeId: string;
|
||||
export let publicKey: string;
|
||||
|
||||
function createContainer(source: string) {
|
||||
const seed = source.toLowerCase();
|
||||
@@ -27,4 +27,8 @@
|
||||
}
|
||||
</style>
|
||||
|
||||
<img title={nodeId} src={createContainer(nodeId)} class="avatar" alt="avatar" />
|
||||
<img
|
||||
title={publicKey}
|
||||
src={createContainer(publicKey)}
|
||||
class="avatar"
|
||||
alt="avatar" />
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
import type { Issue } from "@bindings/Issue";
|
||||
|
||||
import {
|
||||
authorForNodeId,
|
||||
formatOid,
|
||||
formatTimestamp,
|
||||
issueStatusBackgroundColor,
|
||||
@@ -68,9 +69,7 @@
|
||||
style:align-items="flex-start">
|
||||
<InlineTitle content={issue.title} />
|
||||
<div class="global-flex txt-small">
|
||||
<NodeId
|
||||
nodeId={issue.author.did.replace("did:key:", "")}
|
||||
alias={issue.author.alias} />
|
||||
<NodeId {...authorForNodeId(issue.author)} />
|
||||
opened
|
||||
<div class="global-oid">{formatOid(issue.id)}</div>
|
||||
{formatTimestamp(issue.timestamp)}
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
|
||||
import Avatar from "./Avatar.svelte";
|
||||
|
||||
export let nodeId: string;
|
||||
export let publicKey: string;
|
||||
export let alias: string | undefined = undefined;
|
||||
|
||||
export let styleFontSize: string | undefined = "var(--font-size-small)";
|
||||
export let styleFontFamily: string | undefined =
|
||||
"var(--font-family-monospace)";
|
||||
@@ -26,14 +27,14 @@
|
||||
class="avatar-alias"
|
||||
style:font-size={styleFontSize}
|
||||
style:font-family={styleFontFamily}>
|
||||
<Avatar {nodeId} />
|
||||
<Avatar {publicKey} />
|
||||
{#if alias}
|
||||
<span class="txt-overflow">
|
||||
{alias}
|
||||
</span>
|
||||
{:else}
|
||||
<span class="no-alias">
|
||||
{truncateId(nodeId)}
|
||||
{truncateId(publicKey)}
|
||||
</span>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
import type { Stats } from "@bindings/Stats";
|
||||
|
||||
import {
|
||||
authorForNodeId,
|
||||
formatOid,
|
||||
formatTimestamp,
|
||||
patchStatusBackgroundColor,
|
||||
@@ -82,9 +83,7 @@
|
||||
style:align-items="flex-start">
|
||||
<InlineTitle content={patch.title} />
|
||||
<div class="global-flex txt-small">
|
||||
<NodeId
|
||||
nodeId={patch.author.did.replace("did:key:", "")}
|
||||
alias={patch.author.alias} />
|
||||
<NodeId {...authorForNodeId(patch.author)} />
|
||||
opened
|
||||
<div class="global-oid">{formatOid(patch.id)}</div>
|
||||
{formatTimestamp(patch.timestamp)}
|
||||
|
||||
+14
-1
@@ -1,9 +1,14 @@
|
||||
import type { ComponentProps } from "svelte";
|
||||
|
||||
import type { Author } from "@bindings/Author";
|
||||
import type { Issue } from "@bindings/Issue";
|
||||
import type { Patch } from "@bindings/Patch";
|
||||
|
||||
import bs58 from "bs58";
|
||||
import twemojiModule from "twemoji";
|
||||
|
||||
import NodeId from "@app/components/NodeId.svelte";
|
||||
|
||||
export const unreachable = (value: never): never => {
|
||||
throw new Error(`Unreachable code: ${value}`);
|
||||
};
|
||||
@@ -39,7 +44,11 @@ export function truncateId(pubkey: string): string {
|
||||
}
|
||||
|
||||
export function truncateDid(did: string): string {
|
||||
return `did:key:${truncateId(did.replace("did:key:", ""))}`;
|
||||
return `did:key:${truncateId(publicKeyFromDid(did))}`;
|
||||
}
|
||||
|
||||
export function publicKeyFromDid(did: string) {
|
||||
return did.replace("did:key:", "");
|
||||
}
|
||||
|
||||
export function isCommit(input: string): boolean {
|
||||
@@ -141,3 +150,7 @@ export const patchStatusBackgroundColor: Record<
|
||||
archived: "var(--color-fill-private)",
|
||||
merged: "var(--color-fill-delegate)",
|
||||
};
|
||||
|
||||
export function authorForNodeId(author: Author): ComponentProps<NodeId> {
|
||||
return { publicKey: publicKeyFromDid(author.did), alias: author.alias };
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
</svelte:fragment>
|
||||
<svelte:fragment slot="breadcrumbs">
|
||||
<NodeId
|
||||
nodeId={config.publicKey}
|
||||
publicKey={config.publicKey}
|
||||
alias={config.alias}
|
||||
styleFontFamily="var(--font-family-sans-serif)"
|
||||
styleFontSize="var(--font-size-tiny)" />
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
<svelte:fragment slot="breadcrumbs">
|
||||
<Link route={{ resource: "home" }}>
|
||||
<NodeId
|
||||
nodeId={config.publicKey}
|
||||
publicKey={config.publicKey}
|
||||
alias={config.alias}
|
||||
styleFontFamily="var(--font-family-sans-serif)"
|
||||
styleFontSize="var(--font-size-tiny)" />
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
import capitalize from "lodash/capitalize";
|
||||
|
||||
import {
|
||||
authorForNodeId,
|
||||
formatOid,
|
||||
formatTimestamp,
|
||||
issueStatusColor,
|
||||
@@ -83,7 +84,7 @@
|
||||
<svelte:fragment slot="breadcrumbs">
|
||||
<Link route={{ resource: "home" }}>
|
||||
<NodeId
|
||||
nodeId={config.publicKey}
|
||||
publicKey={config.publicKey}
|
||||
alias={config.alias}
|
||||
styleFontFamily="var(--font-family-sans-serif)"
|
||||
styleFontSize="var(--font-size-tiny)" />
|
||||
@@ -183,9 +184,7 @@
|
||||
<div class="section-title">Assignees</div>
|
||||
<div class="global-flex" style:flex-wrap="wrap">
|
||||
{#each issue.assignees as assignee}
|
||||
<NodeId
|
||||
nodeId={assignee.did.replace("did:key:", "")}
|
||||
alias={assignee.alias} />
|
||||
<NodeId {...authorForNodeId(assignee)} />
|
||||
{:else}
|
||||
<span class="txt-missing">Not assigned to anyone.</span>
|
||||
{/each}
|
||||
@@ -195,9 +194,7 @@
|
||||
|
||||
<div class="txt-small body">
|
||||
<div class="global-flex txt-small" style:margin-bottom="1rem">
|
||||
<NodeId
|
||||
nodeId={issue.author.did.replace("did:key:", "")}
|
||||
alias={issue.author.alias} />
|
||||
<NodeId {...authorForNodeId(issue.author)} />
|
||||
opened
|
||||
<div class="global-oid">{formatOid(issue.id)}</div>
|
||||
{formatTimestamp(issue.timestamp)}
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
<svelte:fragment slot="breadcrumbs">
|
||||
<Link route={{ resource: "home" }}>
|
||||
<NodeId
|
||||
nodeId={config.publicKey}
|
||||
publicKey={config.publicKey}
|
||||
alias={config.alias}
|
||||
styleFontFamily="var(--font-family-sans-serif)"
|
||||
styleFontSize="var(--font-size-tiny)" />
|
||||
|
||||
@@ -4,7 +4,12 @@
|
||||
import type { RepoInfo } from "@bindings/RepoInfo";
|
||||
import type { Revision } from "@bindings/Revision";
|
||||
|
||||
import { formatTimestamp, formatOid, patchStatusColor } from "@app/lib/utils";
|
||||
import {
|
||||
authorForNodeId,
|
||||
formatOid,
|
||||
formatTimestamp,
|
||||
patchStatusColor,
|
||||
} from "@app/lib/utils";
|
||||
|
||||
import Border from "@app/components/Border.svelte";
|
||||
import CopyableId from "@app/components/CopyableId.svelte";
|
||||
@@ -58,7 +63,7 @@
|
||||
<svelte:fragment slot="breadcrumbs">
|
||||
<Link route={{ resource: "home" }}>
|
||||
<NodeId
|
||||
nodeId={config.publicKey}
|
||||
publicKey={config.publicKey}
|
||||
alias={config.alias}
|
||||
styleFontFamily="var(--font-family-sans-serif)"
|
||||
styleFontSize="var(--font-size-tiny)" />
|
||||
@@ -141,9 +146,7 @@
|
||||
</span>
|
||||
{/if}
|
||||
<div class="global-flex txt-small" style:margin-top="1.5rem">
|
||||
<NodeId
|
||||
nodeId={patch.author.did.replace("did:key:", "")}
|
||||
alias={patch.author.alias} />
|
||||
<NodeId {...authorForNodeId(patch.author)} />
|
||||
opened
|
||||
<div class="global-oid">{formatOid(patch.id)}</div>
|
||||
{formatTimestamp(patch.timestamp)}
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
<svelte:fragment slot="breadcrumbs">
|
||||
<Link route={{ resource: "home" }}>
|
||||
<NodeId
|
||||
nodeId={config.publicKey}
|
||||
publicKey={config.publicKey}
|
||||
alias={config.alias}
|
||||
styleFontFamily="var(--font-family-sans-serif)"
|
||||
styleFontSize="var(--font-size-tiny)" />
|
||||
|
||||
Reference in New Issue
Block a user