Added experimental edit page and revision history.

This commit is contained in:
2024-09-10 02:47:03 +02:00
parent 4b8dfba289
commit 8bf9e22b39
20 changed files with 1177 additions and 14 deletions

View File

@@ -1,6 +1,7 @@
import { render } from 'vike/abort'; /* eslint-disable-line import/extensions */
import { render, redirect } from 'vike/abort'; /* eslint-disable-line import/extensions */
import { fetchScenesById } from '#/src/scenes.js';
import { getRandomCampaigns } from '#/src/campaigns.js';
import { getIdsBySlug } from '#/src/cache.js';
function getTitle(scene) {
if (scene.title) {
@@ -15,6 +16,10 @@ function getTitle(scene) {
}
export async function onBeforeRender(pageContext) {
if (pageContext._pageId === '/pages/scene/edit' && !pageContext.user) {
throw redirect(`/login?r=${encodeURIComponent(pageContext.urlOriginal)}`);
}
const [scene] = await fetchScenesById([Number(pageContext.routeParams.sceneId)], {
reqUser: pageContext.user,
includeAssets: true,
@@ -22,13 +27,21 @@ export async function onBeforeRender(pageContext) {
actorStashes: true,
});
const campaigns = await getRandomCampaigns([
{
minRatio: 1.5,
entityIds: [scene.channel.id, scene.network?.id].filter(Boolean),
allowRandomFallback: false,
},
], { tagFilter: pageContext.tagFilter });
const [campaigns, tagIds] = await Promise.all([
getRandomCampaigns([
{
minRatio: 1.5,
entityIds: [scene.channel.id, scene.network?.id].filter(Boolean),
allowRandomFallback: false,
},
], { tagFilter: pageContext.tagFilter }),
getIdsBySlug([
'anal',
'creampie',
'dp',
'facial',
], 'tags', true),
]);
if (!scene) {
throw render(404, `Cannot find scene '${pageContext.routeParams.sceneId}'.`);
@@ -39,6 +52,7 @@ export async function onBeforeRender(pageContext) {
title: getTitle(scene),
pageProps: {
scene,
tagIds,
},
campaigns: {
scene: campaigns[0],