diff --git a/src/lib/components/Repo.vectors.ts b/src/lib/components/Repo.vectors.ts index 970a68e..73654f9 100644 --- a/src/lib/components/Repo.vectors.ts +++ b/src/lib/components/Repo.vectors.ts @@ -1,6 +1,8 @@ import type { Args as SummaryCardArgs } from "./RepoSummaryCard.svelte"; import type { Args as DetailsArgs } from "./RepoDetails.svelte"; import type { NDKUserProfile } from "@nostr-dev-kit/ndk"; +import type { User } from "./users/type"; +import { UserVectors, withName } from "./users/vectors"; export let RepoSummaryCardArgsVectors = { Short: { @@ -30,9 +32,9 @@ let base: DetailsArgs = { "relayable.org", ], maintainers: [ - { name: "carole" } as NDKUserProfile, - { name: "bob" } as NDKUserProfile, - { name: "steve" } as NDKUserProfile, + withName(UserVectors.default, "carole"), + withName(UserVectors.default, "bob"), + withName(UserVectors.default, "steve"), ], }; @@ -55,35 +57,30 @@ export let RepoDetailsArgsVectors = { NoTags: { ...base, tags: [] } as DetailsArgs, MaintainersOneProfileNotLoaded: { ...base, maintainers: [ - { name: "carole" } as NDKUserProfile, - "pubkey", - { name: "steve" } as NDKUserProfile, - + { ...base.maintainers[0] }, + { ...UserVectors.loading }, + { ...base.maintainers[2] }, ] } as DetailsArgs, MaintainersOneProfileDisplayNameWithoutName: { ...base, maintainers: [ - { name: "carole" } as NDKUserProfile, - { displayName: "bob" } as NDKUserProfile, - { name: "steve" } as NDKUserProfile, - + { ...base.maintainers[0] }, + { ...UserVectors.display_name_only }, + { ...base.maintainers[2] }, ] } as DetailsArgs, MaintainersOneProfileNameAndDisplayNamePresent: { ...base, maintainers: [ - { name: "carole" } as NDKUserProfile, - { - name: "bob", displayName: "shouldnt display" - } as NDKUserProfile, - { name: "steve" } as NDKUserProfile, - + { ...base.maintainers[0] }, + { ...UserVectors.display_name_and_name }, + { ...base.maintainers[2] }, ] } as DetailsArgs, MaintainersOneProfileNoNameOrDisplayNameBeingPresent: { ...base, maintainers: [ - { name: "carole" } as NDKUserProfile, - {} as NDKUserProfile, - { name: "steve" } as NDKUserProfile, + { ...base.maintainers[0] }, + { ...UserVectors.no_profile }, + { ...base.maintainers[2] }, ] } as DetailsArgs, diff --git a/src/lib/components/RepoDetails.svelte b/src/lib/components/RepoDetails.svelte index 9fc9d2e..e4da77b 100644 --- a/src/lib/components/RepoDetails.svelte +++ b/src/lib/components/RepoDetails.svelte @@ -7,7 +7,7 @@ description: string; git_server: string; tags: string[]; - maintainers: (string | NDKUserProfile)[]; + maintainers: User[]; relays: string[]; loading?: boolean; } @@ -19,12 +19,13 @@ tags: [], maintainers: [], relays: [], - loading: false, + loading: true, }; + + + + + + + + + + + + + + diff --git a/src/lib/components/users/UserHeader.svelte b/src/lib/components/users/UserHeader.svelte new file mode 100644 index 0000000..ea40d22 --- /dev/null +++ b/src/lib/components/users/UserHeader.svelte @@ -0,0 +1,41 @@ + + + + +
+
+
+ {#if profile && profile.image} + {display_name} + {/if} +
+
+
+ {#if loading} +
+ {:else} + {display_name} + {/if} +
+
diff --git a/src/lib/components/users/type.ts b/src/lib/components/users/type.ts new file mode 100644 index 0000000..ec27087 --- /dev/null +++ b/src/lib/components/users/type.ts @@ -0,0 +1,23 @@ +import type { NDKUserProfile } from "@nostr-dev-kit/ndk"; + +export interface User { + loading: boolean; + hexpubkey: string; + npub: string; + profile?: NDKUserProfile; +} + +export function getName(user: User, fallback_to_pubkey: boolean = false): string { + return user.profile ? ( + user.profile.name + ? user.profile.name + : user.profile.displayName + ? user.profile.displayName + : truncateNpub(user.npub) + ) + : truncateNpub(user.npub); +} + +function truncateNpub(npub: string): string { + return `${npub.substring(0, 9)}...`; +} \ No newline at end of file diff --git a/src/lib/components/users/vectors.ts b/src/lib/components/users/vectors.ts new file mode 100644 index 0000000..0ab45be --- /dev/null +++ b/src/lib/components/users/vectors.ts @@ -0,0 +1,30 @@ +import type { User } from "./type"; + +// nsec1rg53qfv09az39dlw6j64ange3cx8sh5p8np29qcxtythplvplktsv93tnr +let base: User = { + hexpubkey: + "3eb45c6f15752d796fa5465d0530a5a5feb79fb6f08c0a4176be9d73cc28c40d", + npub: "npub18669cmc4w5khjma9gews2v995hlt08ak7zxq5stkh6wh8npgcsxslt2xjn", + loading: false, +}; + +let image = "https://daisyui.com/images/stock/photo-1534528741775-53994a69daeb.jpg"; + +export let UserVectors = { + loading: { ...base, loading: true } as User, + default: { ...base, profile: { name: "DanConwayDev", image } } as User, + display_name_only: { ...base, profile: { displayName: "DanConwayDev", image } } as User, + display_name_and_name: { ...base, profile: { name: "Dan", displayName: "DanConwayDev", image } } as User, + no_image: { ...base, profile: { name: "DanConwayDev" } } as User, + no_profile: { ...base } as User, +}; + +export function withName(base: User, name: string): User { + return { + ...base, + profile: { + ...base.profile, + name, + } + } as User +}