Live video on the AT Protocol
1import { ProfileViewDetailed } from "@atproto/api/dist/client/types/app/bsky/actor/defs";
2import { useEffect, useMemo } from "react";
3import { useStore } from "store";
4import { useCachedProfiles } from "store/hooks";
5
6// Hack: Easy way to cache and get avatars
7export default function useAvatars(dids: string[]) {
8 const getProfiles = useStore((state) => state.getProfiles);
9 const profiles: Record<string, ProfileViewDetailed> = useCachedProfiles();
10
11 const missingDids = useMemo(
12 () => dids.filter((did) => !(did in profiles)),
13 [dids, profiles],
14 );
15
16 useEffect(() => {
17 if (missingDids.length > 0) {
18 console.log("Fetching profiles for DIDs:", missingDids);
19 getProfiles(missingDids).then((e) => console.log("ok", e));
20 }
21 }, [missingDids]);
22
23 return profiles;
24}