Testing implementation for private data in ATProto with ATPKeyserver and ATCute tools

basic feed integration

+26 -22
+12
packages/client/app/lib/post.server.ts
··· 243 243 return mappedPosts 244 244 } 245 245 246 + export async function getFollowingFeed(session: OAuthSession) { 247 + const serviceDid = 248 + `did:web:${encodeURIComponent(new URL(env.API_URL).host)}` as const 249 + const client = getServiceAgent(session, serviceDid) 250 + const { feed } = await ok( 251 + client.get('app.wafrn.actor.getFeed', { 252 + params: { did: session.did } 253 + }) 254 + ) 255 + return processPrivateFeed(session, feed) 256 + } 257 + 246 258 export async function getActorFeed( 247 259 session: OAuthSession | null, 248 260 handle?: Handle
+14 -22
packages/client/app/routes/_index.tsx
··· 1 1 import { useRootData } from '@www/lib/useRootData' 2 - import { Link } from 'react-router' 2 + import { Link, useLoaderData } from 'react-router' 3 3 import { Edit2 } from 'lucide-react' 4 + import type { Route } from './+types/_index' 5 + import { getOAuthSession } from '@www/lib/oauth.server' 6 + import asyncWrap from '@www/lib/asyncWrap' 7 + import { getFollowingFeed } from '@www/lib/post.server' 8 + import PostFeed from '@www/components/PostFeed' 4 9 5 10 export function meta() { 6 11 return [ ··· 13 18 ] 14 19 } 15 20 21 + export async function loader({ request }: Route.LoaderArgs) { 22 + const [session] = await asyncWrap(() => getOAuthSession(request)) 23 + const feed = session ? await getFollowingFeed(session) : [] 24 + return { feed } 25 + } 26 + 16 27 export default function Home() { 17 28 const { user } = useRootData() 29 + const { feed } = useLoaderData<typeof loader>() 18 30 19 31 return ( 20 32 <div className="h-full w-full p-4 max-w-3xl mx-auto"> ··· 26 38 </Link> 27 39 ) : null} 28 40 </div> 29 - {/* <p className="text-center"> 30 - {user ? ( 31 - <Link className="btn btn-link" to="/editor"> 32 - Create new post 33 - </Link> 34 - ) : ( 35 - <Link className="btn btn-link" to="/login"> 36 - Login before you post 37 - </Link> 38 - )} 39 - </p> 40 - <p> 41 - <Link className="btn btn-link" to="/profile/blt.pds.djara.dev"> 42 - See posts from @blt.pds.djara.dev 43 - </Link> 44 - </p> 45 - <p> 46 - <Link className="btn btn-link" to="/profile/user2.pds.djara.dev"> 47 - See posts from @user2.pds.djara.dev 48 - </Link> 49 - </p> */} 41 + <PostFeed feed={feed} /> 50 42 </div> 51 43 ) 52 44 }