176 lines
3.6 KiB
JavaScript
Executable File
176 lines
3.6 KiB
JavaScript
Executable File
import {
|
|
graphql,
|
|
post,
|
|
del,
|
|
patch,
|
|
} from '../api';
|
|
|
|
import { releaseFields, actorStashesFields, movieFields } from '../fragments';
|
|
import { curateStash } from '../curate';
|
|
|
|
function initStashesActions(store, _router) {
|
|
async function fetchStash(context, {
|
|
stashSlug,
|
|
username,
|
|
section = 'scenes',
|
|
pageNumber = 1,
|
|
limit = 20,
|
|
}) {
|
|
const { stashes: [stash] } = await graphql(`
|
|
query Stash(
|
|
$stashSlug: String!
|
|
$username: String!
|
|
$includeScenes: Boolean!
|
|
$includeActors: Boolean!
|
|
$includeMovies: Boolean!
|
|
$limit:Int = 10,
|
|
$offset:Int = 0,
|
|
$hasAuth: Boolean!
|
|
$userId: Int
|
|
) {
|
|
stashes(
|
|
filter: {
|
|
user: { username: { equalTo: $username } }
|
|
slug: { equalTo: $stashSlug }
|
|
}
|
|
) {
|
|
id
|
|
name
|
|
slug
|
|
public
|
|
primary
|
|
user {
|
|
id
|
|
username
|
|
}
|
|
actorsConnection: stashesActorsConnection(
|
|
orderBy: CREATED_AT_DESC
|
|
first: $limit
|
|
offset: $offset
|
|
) @include(if: $includeActors) {
|
|
totalCount
|
|
actors: nodes {
|
|
comment
|
|
actor {
|
|
id
|
|
name
|
|
slug
|
|
gender
|
|
age
|
|
ageFromBirth
|
|
dateOfBirth
|
|
birthCity
|
|
birthState
|
|
birthCountry: countryByBirthCountryAlpha2 {
|
|
alpha2
|
|
name
|
|
alias
|
|
}
|
|
avatar: avatarMedia {
|
|
id
|
|
path
|
|
thumbnail
|
|
lazy
|
|
isS3
|
|
width
|
|
height
|
|
}
|
|
${actorStashesFields}
|
|
}
|
|
}
|
|
}
|
|
scenesConnection: stashesScenesConnection(
|
|
orderBy: [CREATED_AT_DESC, RELEASE_BY_SCENE_ID__DATE_DESC]
|
|
first: $limit
|
|
offset: $offset
|
|
) @include(if: $includeScenes) {
|
|
totalCount
|
|
scenes: nodes {
|
|
comment
|
|
scene {
|
|
${releaseFields}
|
|
}
|
|
}
|
|
}
|
|
moviesConnection: stashesMoviesConnection(
|
|
orderBy: [CREATED_AT_DESC, MOVIE_BY_MOVIE_ID__DATE_DESC]
|
|
first: $limit
|
|
offset: $offset
|
|
) @include(if: $includeMovies) {
|
|
totalCount
|
|
movies: nodes {
|
|
comment
|
|
movie {
|
|
${movieFields}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
`, {
|
|
stashSlug,
|
|
username,
|
|
includeScenes: section === 'scenes',
|
|
includeActors: section === 'actors',
|
|
includeMovies: section === 'movies',
|
|
offset: Math.max(0, (pageNumber - 1)) * limit,
|
|
limit: Number(limit),
|
|
hasAuth: !!store.state.auth.user,
|
|
userId: store.state.auth.user?.id,
|
|
});
|
|
|
|
return curateStash(stash);
|
|
}
|
|
|
|
async function createStash(context, stash) {
|
|
return post('/stashes', stash);
|
|
}
|
|
|
|
async function updateStash(context, { stashId, stash }) {
|
|
return patch(`/stashes/${stashId}`, stash);
|
|
}
|
|
|
|
async function removeStash(context, stashId) {
|
|
await del(`/stashes/${stashId}`);
|
|
}
|
|
|
|
async function stashActor(context, { actorId, stashId }) {
|
|
return post(`/stashes/${stashId}/actors`, { actorId });
|
|
}
|
|
|
|
async function unstashActor(context, { actorId, stashId }) {
|
|
return del(`/stashes/${stashId}/actors/${actorId}`);
|
|
}
|
|
|
|
async function stashScene(context, { sceneId, stashId }) {
|
|
return post(`/stashes/${stashId}/scenes`, { sceneId });
|
|
}
|
|
|
|
async function unstashScene(context, { sceneId, stashId }) {
|
|
return del(`/stashes/${stashId}/scenes/${sceneId}`);
|
|
}
|
|
|
|
async function stashMovie(context, { movieId, stashId }) {
|
|
return post(`/stashes/${stashId}/movies`, { movieId });
|
|
}
|
|
|
|
async function unstashMovie(context, { movieId, stashId }) {
|
|
return del(`/stashes/${stashId}/movies/${movieId}`);
|
|
}
|
|
|
|
return {
|
|
createStash,
|
|
fetchStash,
|
|
removeStash,
|
|
stashActor,
|
|
stashScene,
|
|
stashMovie,
|
|
unstashActor,
|
|
unstashScene,
|
|
unstashMovie,
|
|
updateStash,
|
|
};
|
|
}
|
|
|
|
export default initStashesActions;
|