tangled
alpha
login
or
join now
djara.dev
/
watproto
2
fork
atom
Testing implementation for private data in ATProto with ATPKeyserver and ATCute tools
2
fork
atom
overview
issues
pulls
pipelines
basic feed integration
Juan D. Jara
1 month ago
7453d667
a23fe03b
+26
-22
2 changed files
expand all
collapse all
unified
split
packages
client
app
lib
post.server.ts
routes
_index.tsx
+12
packages/client/app/lib/post.server.ts
···
243
243
return mappedPosts
244
244
}
245
245
246
246
+
export async function getFollowingFeed(session: OAuthSession) {
247
247
+
const serviceDid =
248
248
+
`did:web:${encodeURIComponent(new URL(env.API_URL).host)}` as const
249
249
+
const client = getServiceAgent(session, serviceDid)
250
250
+
const { feed } = await ok(
251
251
+
client.get('app.wafrn.actor.getFeed', {
252
252
+
params: { did: session.did }
253
253
+
})
254
254
+
)
255
255
+
return processPrivateFeed(session, feed)
256
256
+
}
257
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
2
-
import { Link } from 'react-router'
2
2
+
import { Link, useLoaderData } from 'react-router'
3
3
import { Edit2 } from 'lucide-react'
4
4
+
import type { Route } from './+types/_index'
5
5
+
import { getOAuthSession } from '@www/lib/oauth.server'
6
6
+
import asyncWrap from '@www/lib/asyncWrap'
7
7
+
import { getFollowingFeed } from '@www/lib/post.server'
8
8
+
import PostFeed from '@www/components/PostFeed'
4
9
5
10
export function meta() {
6
11
return [
···
13
18
]
14
19
}
15
20
21
21
+
export async function loader({ request }: Route.LoaderArgs) {
22
22
+
const [session] = await asyncWrap(() => getOAuthSession(request))
23
23
+
const feed = session ? await getFollowingFeed(session) : []
24
24
+
return { feed }
25
25
+
}
26
26
+
16
27
export default function Home() {
17
28
const { user } = useRootData()
29
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
29
-
{/* <p className="text-center">
30
30
-
{user ? (
31
31
-
<Link className="btn btn-link" to="/editor">
32
32
-
Create new post
33
33
-
</Link>
34
34
-
) : (
35
35
-
<Link className="btn btn-link" to="/login">
36
36
-
Login before you post
37
37
-
</Link>
38
38
-
)}
39
39
-
</p>
40
40
-
<p>
41
41
-
<Link className="btn btn-link" to="/profile/blt.pds.djara.dev">
42
42
-
See posts from @blt.pds.djara.dev
43
43
-
</Link>
44
44
-
</p>
45
45
-
<p>
46
46
-
<Link className="btn btn-link" to="/profile/user2.pds.djara.dev">
47
47
-
See posts from @user2.pds.djara.dev
48
48
-
</Link>
49
49
-
</p> */}
41
41
+
<PostFeed feed={feed} />
50
42
</div>
51
43
)
52
44
}