traxxx-web/pages/users/@username/+onBeforeRender.js

72 lines
1.8 KiB
JavaScript

import { render } from 'vike/abort'; /* eslint-disable-line import/extensions */
import { fetchUser } from '#/src/users.js';
import { fetchUserStashes } from '#/src/stashes.js';
import { fetchAlerts } from '#/src/alerts.js';
import { fetchSceneRevisions } from '#/src/scenes.js';
import { fetchActorRevisions } from '#/src/actors.js';
async function fetchRevisions(pageContext) {
if (pageContext.routeParams.username !== pageContext.user?.username) {
return {};
}
if (pageContext.routeParams.section === 'revisions' && pageContext.routeParams.domain === 'scenes') {
return fetchSceneRevisions(null, {
userId: pageContext.user.id,
limit: 100,
}, pageContext.user);
}
if (pageContext.routeParams.section === 'revisions' && pageContext.routeParams.domain === 'actors') {
return fetchActorRevisions(null, {
userId: pageContext.user.id,
limit: 100,
}, pageContext.user);
}
return {};
}
export async function onBeforeRender(pageContext) {
const [profile, alerts, userRevisions] = await Promise.all([
fetchUser(pageContext.routeParams.username, {}, pageContext.user),
pageContext.routeParams.section === 'alerts' && pageContext.routeParams.username === pageContext.user?.username
? fetchAlerts(pageContext.user)
: [],
fetchRevisions(pageContext),
]);
if (!profile) {
throw render(404, `Cannot find user '${pageContext.routeParams.username}'.`);
}
const {
revisions,
actors,
tags,
movies,
avatars,
} = userRevisions;
console.log(userRevisions);
const stashes = await fetchUserStashes(profile.id, pageContext.user);
return {
pageContext: {
title: profile.username,
pageProps: {
profile, // differentiate from authed 'user'
stashes,
alerts,
revisions,
actors,
tags,
movies,
avatars,
},
},
};
}