···1212} from 'lucide-solid';
1313import { A } from '@solidjs/router';
1414import { Match, Show, Switch, createEffect, createMemo, createSignal, type Component } from 'solid-js';
1515-import { createQuery, useQueryClient } from '@tanstack/solid-query';
1515+import { createQuery, useQueryClient } from '../lib/atproto-query';
1616export { useQueryClient };
1717import { resolveAvatarUrl } from '../lib/api/identity';
1818
+1-1
src/components/repo.tsx
···2727import { For, Show, createMemo, createSignal, createEffect, onCleanup, onMount, type Component, type JSX } from 'solid-js';
2828import type { RepoContext, TreeEntry } from '../lib/api/repos';
2929import type { Did } from '@atcute/lexicons/syntax';
3030-import { createQuery } from '@tanstack/solid-query';
3030+import { createQuery } from '../lib/atproto-query';
3131import { getRepo, getRepoLanguages, getRepoForkCount, getRepoByDid } from '../lib/api/repos';
3232import { getRepoStarCount } from '../lib/api/stars';
3333import { getRepoIssueCount } from '../lib/api/issues';
+1-1
src/layout.tsx
···11import clsx from 'clsx';
22import { Bell, BookMarked, LogOut, Search, Settings, UserRound, Plus, LineSquiggle, BookPlus } from 'lucide-solid';
33import { A, useLocation, useNavigate } from '@solidjs/router';
44-import { createQuery } from '@tanstack/solid-query';
44+import { createQuery } from './lib/atproto-query';
55import { For, Show, createEffect, createSignal, onCleanup, onMount, type Component, type JSX } from 'solid-js';
6677import { Avatar, buttonStyles, inputStyles } from './components/common';
···11-import { useQueryClient } from '@tanstack/solid-query';
11+import { useQueryClient } from '../lib/atproto-query';
22import { useAuth } from './auth';
33import {
44 getRepo,
+1-1
src/pages/home.tsx
···1414} from 'lucide-solid';
1515import clsx from 'clsx';
1616import { A } from '@solidjs/router';
1717-import { createQuery } from '@tanstack/solid-query';
1717+import { createQuery } from '../lib/atproto-query';
1818import { For, Show, createEffect, createMemo, createSignal, onCleanup, type Component, type JSX } from 'solid-js';
19192020import { Avatar, ErrorState, LoadingState, StateBadge } from '../components/common';
+15-12
src/pages/profile.tsx
···2020 LineSquiggle,
2121} from 'lucide-solid';
2222import { A, useParams, useSearchParams, useNavigate } from '@solidjs/router';
2323-import { createQuery, useQueryClient } from '@tanstack/solid-query';
2323+import { createQuery, useQueryClient } from '../lib/atproto-query';
2424import { For, Show, Switch, Match, createMemo, createSignal, createEffect, type Component } from 'solid-js';
2525-import type { Did } from '@atcute/lexicons/syntax';
2525+import type { Did, ResourceUri } from '@atcute/lexicons/syntax';
2626import { ErrorState, LoadingState, PlaceholderAvatar, SkeletonBlock, textareaStyles, inputStyles } from '../components/common';
2727import { RepoCard, RepoCardSkeleton, StringCardSkeleton } from '../components/repo';
2828import { useStringPreloader } from '../lib/preloading';
···4040 type VouchRecord,
4141} from '../lib/api/graph';
4242import { resolveActor, getActorProfile, resolveAvatarUrl, putActorProfile } from '../lib/api/identity';
4343-import { listRepoRecords, getRepoByDid, type RepoContext } from '../lib/api/repos';
4343+import { listRepoRecords, getRepoByDid, getRepoByUri, type RepoContext } from '../lib/api/repos';
4444import { listStringRecords } from '../lib/api/strings';
4545+import { listStarRecordsByActor } from '../lib/api/stars';
4646+import { listAllAppviewRecords } from '../lib/api/appview';
4547import { useAuth } from '../lib/auth';
4646-import { listAllAppviewRecords } from '../lib/api/appview';
4748import { formatRelativeTime, getErrorMessage } from '../lib/repo-utils';
4848-import { ShTangledFeedStar, ShTangledActorProfile } from '@atcute/tangled';
4949+import { ShTangledActorProfile } from '@atcute/tangled';
49505051const ProfileTabs: Component<{
5152 activeTab: string;
···10591060 queryKey: ['profile-stars', actorQuery.data?.did],
10601061 enabled: !!actorQuery.data,
10611062 queryFn: async () => {
10621062- const did = actorQuery.data!.did;
10631063- const starRecords = await listAllAppviewRecords<ShTangledFeedStar.Main>('sh.tangled.feed.listStarsBy', did);
10631063+ const actor = actorQuery.data!;
10641064+ const starRecords = await listStarRecordsByActor(actor);
10641065 const repos = await Promise.all(
10651066 starRecords.map(async (star) => {
10661066- const subject = star.value.subject as { did?: string; subjectDid?: string };
10671067- const repoDid = (subject.did ?? subject.subjectDid) as Did;
10671067+ const subject = star.value.subject as string | { did?: string; subjectDid?: string };
10681068+ const subjectUri = typeof subject === 'string' && subject.startsWith('at://') ? subject as ResourceUri : undefined;
10691069+ const repoDid = typeof subject === 'object' ? (subject.did ?? subject.subjectDid) as Did | undefined : undefined;
10681070 try {
10691069- return await getRepoByDid(repoDid);
10711071+ if (repoDid) return await getRepoByDid(repoDid);
10721072+ if (subjectUri) return await getRepoByUri(subjectUri);
10701073 } catch (e) {
10711071- console.error('failed to resolve starred repo', repoDid, e);
10721072- return null;
10741074+ console.error('failed to resolve starred repo', repoDid ?? subjectUri, e);
10731075 }
10761076+ return null;
10741077 })
10751078 );
10761079 return repos.filter(Boolean) as RepoContext[];
+1-1
src/pages/repo/code.tsx
···11import clsx from 'clsx';
22import { File, Folder, GitBranch, GitCommitHorizontal, List } from 'lucide-solid';
33import { A, useNavigate, useParams } from '@solidjs/router';
44-import { createQuery, keepPreviousData, useQueryClient } from '@tanstack/solid-query';
44+import { createQuery, keepPreviousData, useQueryClient } from '../../lib/atproto-query';
55import { For, Match, Show, Switch, createEffect, createMemo, createSignal, onCleanup, type Accessor, type Component } from 'solid-js';
66import { buildBlobDataUrl, decodeBlobBytes, decodeBlobText, getRepoBlob, getRepoBranches, getRepoDefaultBranch, getRepoLanguages, getRepoLog, getRepoTags, getRepoTree, type CommitHeadline, type RepoContext, type BranchEntry } from '../../lib/api/repos';
77import { Avatar, ErrorState, PlaceholderAvatar, buttonStyles, cardStyles } from '../../components/common';
+1-1
src/pages/repo/commits.tsx
···77 FolderCode,
88} from 'lucide-solid';
99import { A, useNavigate, useParams, useSearchParams } from '@solidjs/router';
1010-import { createQuery } from '@tanstack/solid-query';
1010+import { createQuery } from '../../lib/atproto-query';
1111import { For, Match, Show, Switch, createEffect, createMemo, createSignal, type Component } from 'solid-js';
1212import {
1313 getRepoBranches,
+1-1
src/pages/repo/fork.tsx
···11import { A, useNavigate } from '@solidjs/router';
22-import { createQuery, useQueryClient } from '@tanstack/solid-query';
22+import { createQuery, useQueryClient } from '../../lib/atproto-query';
33import { GitFork, Info, LoaderCircle } from 'lucide-solid';
44import { For, Match, Show, Switch, createEffect, createMemo, createSignal, type Component } from 'solid-js';
55
+1-1
src/pages/repo/issues.tsx
···11import clsx from 'clsx';
22import { Ban, CirclePlus, LoaderCircle, MessageSquarePlus, Pencil, RefreshCcwDot, Reply, Search, Smile, X } from 'lucide-solid';
33import { A, useNavigate, useParams, useSearchParams, useLocation } from '@solidjs/router';
44-import { createQuery, useQueryClient } from '@tanstack/solid-query';
44+import { createQuery, useQueryClient } from '../../lib/atproto-query';
55import type { ResourceUri } from '@atcute/lexicons/syntax';
66import { For, Match, Show, Switch, createEffect, createMemo, createSignal, type Component } from 'solid-js';
77import { createIssue, createIssueComment, getIssue, listIssuesPage, setIssueState, type IssueComment } from '../../lib/api/issues';
+1-1
src/pages/repo/new.tsx
···11import { A, useNavigate } from '@solidjs/router';
22-import { createQuery, useQueryClient } from '@tanstack/solid-query';
22+import { createQuery, useQueryClient } from '../../lib/atproto-query';
33import { BookPlus, LoaderCircle } from 'lucide-solid';
44import { For, Show, createEffect, createSignal, type Component } from 'solid-js';
55
+1-1
src/pages/repo/pulls.tsx
···2222} from 'lucide-solid';
2323import type { Did } from '@atcute/lexicons/syntax';
2424import { A, useNavigate, useParams, useSearchParams, useLocation } from '@solidjs/router';
2525-import { createQuery, useQueryClient } from '@tanstack/solid-query';
2525+import { createQuery, useQueryClient } from '../../lib/atproto-query';
2626import { For, Match, Show, Switch, createEffect, createMemo, createSignal, type Component, type JSX } from 'solid-js';
2727import { resolveActor } from '../../lib/api/identity';
2828import { createPull, createPullComment, fetchPullRoundPatch, getPull, listPullsPage, mergePull, setPullStatus } from '../../lib/api/pulls';
+1-1
src/pages/repo/shared.tsx
···11import { CircleDot, GitFork, GitPullRequest, Globe, LoaderCircle, Rss, SquareChartGantt, Star } from 'lucide-solid';
22import type { Did } from '@atcute/lexicons/syntax';
33import { A, type RouteSectionProps, useParams } from '@solidjs/router';
44-import { createQuery } from '@tanstack/solid-query';
44+import { createQuery } from '../../lib/atproto-query';
55import { For, Match, Show, Switch, createContext, createEffect, createMemo, createSignal, onCleanup, useContext, type Component, type JSX } from 'solid-js';
66import { getRepoIssueCount } from '../../lib/api/issues';
77import { getRepoPullCount } from '../../lib/api/pulls';
+1-1
src/pages/search.tsx
···1313 LineSquiggle,
1414} from 'lucide-solid';
1515import { A, useNavigate, useSearchParams } from '@solidjs/router';
1616-import { createQuery } from '@tanstack/solid-query';
1616+import { createQuery } from '../lib/atproto-query';
1717import type { Did, ResourceUri } from '@atcute/lexicons/syntax';
1818import { For, Match, Show, Switch, createEffect, createMemo, createSignal, type Component, type JSX } from 'solid-js';
1919
+1-1
src/pages/settings.tsx
···1010} from 'solid-js';
1111import { Portal } from 'solid-js/web';
1212import { A, useNavigate, useParams, useLocation, type RouteSectionProps } from '@solidjs/router';
1313-import { createQuery, useQueryClient } from '@tanstack/solid-query';
1313+import { createQuery, useQueryClient } from '../lib/atproto-query';
1414import {
1515 Settings,
1616 User,
+1-1
src/pages/string.tsx
···11import { A, useParams, useNavigate } from '@solidjs/router';
22-import { createQuery, useQueryClient } from '@tanstack/solid-query';
22+import { createQuery, useQueryClient } from '../lib/atproto-query';
33import { Show, Switch, Match, type Component, createSignal, createMemo, createEffect, onCleanup } from 'solid-js';
44import type { ResourceUri } from '@atcute/lexicons/syntax';
55import { Avatar, ErrorState, inputStyles, textareaStyles } from '../components/common';