add session and content resolution for activity
This commit is contained in:
parent
6600ba56bf
commit
e876d5846e
4 changed files with 83 additions and 15 deletions
|
|
@ -1,6 +1,14 @@
|
|||
<script lang="ts">
|
||||
import type { MeWoachFeedActivity } from '@atcute/client/lexicons';
|
||||
export let activity: MeWoachFeedActivity.Record[] = [];
|
||||
import type {
|
||||
MeWoachContentAnilist,
|
||||
MeWoachFeedActivity,
|
||||
MeWoachFeedSession
|
||||
} from '@atcute/client/lexicons';
|
||||
export let activity: {
|
||||
session: MeWoachFeedSession.Record;
|
||||
activity: MeWoachFeedActivity.Record;
|
||||
content: MeWoachContentAnilist.Main;
|
||||
}[];
|
||||
</script>
|
||||
|
||||
<div class="col-span-2 rounded-sm bg-gray-400 p-2">
|
||||
|
|
@ -9,9 +17,18 @@
|
|||
{#each activity as activityItem}
|
||||
<li class="mx-auto mb-2 rounded-sm bg-gray-500 p-4">
|
||||
<div>
|
||||
<p>{activityItem.performedAt}</p>
|
||||
<p>{activityItem.progress}</p>
|
||||
<p>{activityItem.session.uri}</p>
|
||||
<p>{activityItem.content.id}</p>
|
||||
<p>
|
||||
Watched episode {activityItem.activity.progress} at {activityItem.activity.performedAt}
|
||||
</p>
|
||||
{#if activityItem.session.participants?.length}
|
||||
<p>With:</p>
|
||||
{#each activityItem.session.participants ?? [] as participant}
|
||||
<a href={'/user/' + participant.uri.split('at://')[1]}
|
||||
>{participant.uri.split('at://')[1]}</a
|
||||
>
|
||||
{/each}
|
||||
{/if}
|
||||
</div>
|
||||
</li>
|
||||
{/each}
|
||||
|
|
|
|||
|
|
@ -11,13 +11,6 @@
|
|||
<div>
|
||||
<a href={'https://pdsls.dev/' + session.content.uri}>{session.label}</a>
|
||||
<p>{session.createdAt}</p>
|
||||
{#if session.participants?.length}
|
||||
{#each session.participants ?? [] as participant}
|
||||
<a href={'/user/' + participant.uri.split('at://')[1]}
|
||||
>{participant.uri.split('at://')[1]}</a
|
||||
>
|
||||
{/each}
|
||||
{/if}
|
||||
</div>
|
||||
</li>
|
||||
{/each}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ import {
|
|||
XrpcHandleResolver
|
||||
} from '@atcute/identity-resolver';
|
||||
|
||||
import type { At } from '@atcute/client/lexicons';
|
||||
|
||||
const didDocumentResolver = new CompositeDidDocumentResolver({
|
||||
methods: {
|
||||
plc: new PlcDidDocumentResolver(),
|
||||
|
|
@ -68,3 +70,33 @@ export async function getActivity(rpc: XRPC, did: string) {
|
|||
});
|
||||
return records;
|
||||
}
|
||||
|
||||
export async function resolveSession(rpc: XRPC, uri: At.Uri) {
|
||||
const repo = uri.split('at://')[1].split('/')[0];
|
||||
const rkey = uri.split('/')[4];
|
||||
const {
|
||||
data: { value }
|
||||
} = await rpc.get('com.atproto.repo.getRecord', {
|
||||
params: {
|
||||
repo,
|
||||
rkey,
|
||||
collection: 'me.woach.feed.session'
|
||||
}
|
||||
});
|
||||
return value;
|
||||
}
|
||||
|
||||
export async function resolveMedia(rpc: XRPC, uri: At.Uri) {
|
||||
const repo = uri.split('at://')[1].split('/')[0];
|
||||
const rkey = uri.split('/')[4];
|
||||
const {
|
||||
data: { value }
|
||||
} = await rpc.get('com.atproto.repo.getRecord', {
|
||||
params: {
|
||||
repo,
|
||||
rkey,
|
||||
collection: 'me.woach.content.anilist'
|
||||
}
|
||||
});
|
||||
return value;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,14 @@
|
|||
import { createRPC, getActivity, getSessions, resolveHandle } from '$lib/util';
|
||||
import {
|
||||
createRPC,
|
||||
getActivity,
|
||||
getSessions,
|
||||
resolveHandle,
|
||||
resolveMedia,
|
||||
resolveSession
|
||||
} from '$lib/util';
|
||||
import type {
|
||||
ComAtprotoRepoListRecords,
|
||||
MeWoachContentAnilist,
|
||||
MeWoachFeedActivity,
|
||||
MeWoachFeedSession
|
||||
} from '@atcute/client/lexicons';
|
||||
|
|
@ -14,10 +22,28 @@ export const load: PageLoad = async ({ params }) => {
|
|||
(record: ComAtprotoRepoListRecords.Record) => record.value as MeWoachFeedSession.Record
|
||||
);
|
||||
|
||||
const activity: MeWoachFeedActivity.Record[] = (await getActivity(rpc, did)).map(
|
||||
(record: ComAtprotoRepoListRecords.Record) => record.value as MeWoachFeedActivity.Record
|
||||
const activity: {
|
||||
session: MeWoachFeedSession.Record;
|
||||
activity: MeWoachFeedActivity.Record;
|
||||
}[] = await Promise.all(
|
||||
(await getActivity(rpc, did)).map(async (activityRecord: ComAtprotoRepoListRecords.Record) => {
|
||||
const session = (await resolveSession(
|
||||
rpc,
|
||||
(activityRecord.value as MeWoachFeedActivity.Record).session.uri
|
||||
)) as MeWoachFeedSession.Record;
|
||||
|
||||
const content = (await resolveMedia(rpc, session.content.uri)) as MeWoachContentAnilist.Main;
|
||||
|
||||
return {
|
||||
session,
|
||||
activity: activityRecord.value as MeWoachFeedActivity.Record,
|
||||
content
|
||||
};
|
||||
})
|
||||
);
|
||||
|
||||
console.log(activity);
|
||||
|
||||
return {
|
||||
handle: params.handle,
|
||||
sessions: sessions,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue