Added movies page to actors, entities and tags.
This commit is contained in:
@@ -53,7 +53,15 @@
|
||||
>
|
||||
</div>
|
||||
|
||||
<Scenes />
|
||||
<Domains
|
||||
:domain="domain"
|
||||
:path="`/actor/${actor.id}/${actor.slug}`"
|
||||
:domains="['scenes', 'movies']"
|
||||
class="domains-bar light"
|
||||
/>
|
||||
|
||||
<Scenes v-if="domain === 'scenes'" />
|
||||
<Movies v-if="domain === 'movies'" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -66,12 +74,16 @@ import getPath from '#/src/get-path.js';
|
||||
import Bio from '#/components/actors/bio.vue';
|
||||
import Gender from '#/components/actors/gender.vue';
|
||||
import Scenes from '#/components/scenes/scenes.vue';
|
||||
import Movies from '#/components/movies/movies.vue';
|
||||
import Heart from '#/components/stashes/heart.vue';
|
||||
import Domains from '#/components/domains/domains.vue';
|
||||
|
||||
const pageContext = inject('pageContext');
|
||||
const { pageProps } = pageContext;
|
||||
const { pageProps, routeParams } = pageContext;
|
||||
const { actor } = pageProps;
|
||||
|
||||
const domain = routeParams.domain;
|
||||
|
||||
const photos = Object.values(Object.fromEntries(actor.profiles
|
||||
.filter((profile) => !!profile.avatar)
|
||||
.map((profile) => [profile.avatar.id, {
|
||||
@@ -152,6 +164,11 @@ const photos = Object.values(Object.fromEntries(actor.profiles
|
||||
}
|
||||
}
|
||||
|
||||
.domains-bar {
|
||||
background: var(--background-base-10);
|
||||
border-bottom: solid 1px var(--shadow-weak-40);
|
||||
}
|
||||
|
||||
@media(--compact) {
|
||||
.photos.has-avatar {
|
||||
display: flex;
|
||||
|
||||
@@ -2,12 +2,13 @@ import { render } from 'vike/abort'; /* eslint-disable-line import/extensions */
|
||||
|
||||
import { fetchActorsById } from '#/src/actors.js';
|
||||
import { fetchScenes } from '#/src/scenes.js';
|
||||
import { fetchMovies } from '#/src/movies.js';
|
||||
import { curateScenesQuery } from '#/src/web/scenes.js';
|
||||
import { curateMoviesQuery } from '#/src/web/movies.js';
|
||||
|
||||
export async function onBeforeRender(pageContext) {
|
||||
const [[actor], actorScenes] = await Promise.all([
|
||||
fetchActorsById([Number(pageContext.routeParams.actorId)], {}, pageContext.user),
|
||||
fetchScenes(await curateScenesQuery({
|
||||
async function fetchReleases(pageContext) {
|
||||
if (pageContext.routeParams.domain === 'movies') {
|
||||
return fetchMovies(await curateMoviesQuery({
|
||||
...pageContext.urlQuery,
|
||||
scope: pageContext.routeParams.scope || 'latest',
|
||||
actorId: Number(pageContext.routeParams.actorId),
|
||||
@@ -16,7 +17,25 @@ export async function onBeforeRender(pageContext) {
|
||||
page: Number(pageContext.routeParams.page) || 1,
|
||||
limit: Number(pageContext.urlParsed.search.limit) || 30,
|
||||
aggregate: true,
|
||||
}, pageContext.user),
|
||||
}, pageContext.user);
|
||||
}
|
||||
|
||||
return fetchScenes(await curateScenesQuery({
|
||||
...pageContext.urlQuery,
|
||||
scope: pageContext.routeParams.scope || 'latest',
|
||||
actorId: Number(pageContext.routeParams.actorId),
|
||||
tagFilter: pageContext.tagFilter,
|
||||
}), {
|
||||
page: Number(pageContext.routeParams.page) || 1,
|
||||
limit: Number(pageContext.urlParsed.search.limit) || 30,
|
||||
aggregate: true,
|
||||
}, pageContext.user);
|
||||
}
|
||||
|
||||
export async function onBeforeRender(pageContext) {
|
||||
const [[actor], actorReleases] = await Promise.all([
|
||||
fetchActorsById([Number(pageContext.routeParams.actorId)], {}, pageContext.user),
|
||||
fetchReleases(pageContext),
|
||||
]);
|
||||
|
||||
if (!actor) {
|
||||
@@ -28,7 +47,7 @@ export async function onBeforeRender(pageContext) {
|
||||
title: actor.name,
|
||||
pageProps: {
|
||||
actor,
|
||||
...actorScenes,
|
||||
...actorReleases,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { match } from 'path-to-regexp';
|
||||
// import { resolveRoute } from 'vike/routing'; // eslint-disable-line import/extensions
|
||||
|
||||
const path = '/actor/:actorId/:actorSlug?/:scope?/:page?';
|
||||
const path = '/actor/:actorId/:actorSlug?/:domain(scenes|movies)?/:scope?/:page?';
|
||||
const urlMatch = match(path, { decode: decodeURIComponent });
|
||||
|
||||
export default (pageContext) => {
|
||||
@@ -12,6 +12,7 @@ export default (pageContext) => {
|
||||
routeParams: {
|
||||
actorId: matched.params.actorId,
|
||||
actorSlug: matched.params.actorSlug,
|
||||
domain: matched.params.domain || 'scenes',
|
||||
scope: matched.params.scope || 'latest',
|
||||
page: matched.params.page || '1',
|
||||
path,
|
||||
|
||||
Reference in New Issue
Block a user