~james/core

core/web/src/lib/components/timeline/mappers.ts -rw-r--r-- 1.4 KiB
452f17b7 — james chore(import): snapshot james.dad.town/core at f70c71c7696a 16 hours ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { resolve } from "$app/paths";
import { profileIdentifier } from "#lib/api/identity.ts";
import { rkeyFromUri } from "#lib/api/uri.ts";
import type { RepoCardData, PersonData } from "#lib/components/profile/types.ts";
import type * as OrgTangledRepoDefs from "#lib/api/lexicons/types/org/tangled/repo/defs.ts";
import type * as OrgTangledActorDefs from "#lib/api/lexicons/types/org/tangled/actor/defs.ts";

export const repoOwner = (repo: OrgTangledRepoDefs.RepoViewBasic) =>
	profileIdentifier(repo.owner.handle, repo.owner.did);

export const toRepoCard = (repo: OrgTangledRepoDefs.RepoViewBasic): RepoCardData => ({
	name: repo.slug,
	repoDid: repo.did,
	ownerHandle: repoOwner(repo),
	description: repo.description,
	createdAt: repo.createdAt,
	stars: repo.starCount,
	forks: repo.forkCount,
	issues: repo.openIssueCount,
	pulls: repo.openPullCount,
	language: repo.primaryLanguage,
	viewerStarRkey: repo.viewer?.star ? rkeyFromUri(repo.viewer.star) : null
});

export const toPerson = (profile: OrgTangledActorDefs.ProfileViewDetailed): PersonData => ({
	did: profile.did,
	handle: profile.handle,
	avatarCid: profile.avatarCid ?? null,
	followers: profile.followersCount,
	following: profile.followsCount,
	viewerFollowRkey: profile.viewer?.following ? rkeyFromUri(profile.viewer.following) : null
});

export const repoHref = (repo: OrgTangledRepoDefs.RepoViewBasic) =>
	resolve(`/${repoOwner(repo)}/${repo.slug}` as "/");