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 "/");