import { graphql, post, del, patch, } from '../api'; import { releaseFields } from '../fragments'; import { curateStash } from '../curate'; function initStashesActions(store, _router) { async function fetchStash(context, stashId) { const { stash } = await graphql(` query Stash( $stashId: Int! $hasAuth: Boolean! $userId: Int ) { stash(id: $stashId) { id name slug public deletable user { id username } actors: stashesActors { comment actor { id name slug gender age ageFromBirth dateOfBirth birthCity birthState birthCountry: countryByBirthCountryAlpha2 { alpha2 name alias } avatar: avatarMedia { id path thumbnail lazy } } } scenes: stashesScenes { comment scene { ${releaseFields} } } } } `, { stashId: Number(stashId), hasAuth: !!store.state.auth.user, userId: store.state.auth.user?.id, }); return curateStash(stash); } async function createStash(context, stash) { const newStash = await post('/stashes', stash); return newStash; } async function updateStash(context, { stashId, stash }) { const newStash = await patch(`/stashes/${stashId}`, stash); return newStash; } async function removeStash(context, stashId) { await del(`/stashes/${stashId}`); } async function stashActor(context, { actorId, stashId }) { await post(`/stashes/${stashId}/actors`, { actorId }); } async function unstashActor(context, { actorId, stashId }) { await del(`/stashes/${stashId}/actors/${actorId}`); } async function stashScene(context, { sceneId, stashId }) { await post(`/stashes/${stashId}/scenes`, { sceneId }); } async function unstashScene(context, { sceneId, stashId }) { await del(`/stashes/${stashId}/scenes/${sceneId}`); } async function stashMovie(context, { movieId, stashId }) { await post(`/stashes/${stashId}/movies`, { movieId }); } async function unstashMovie(context, { movieId, stashId }) { await del(`/stashes/${stashId}/movies/${movieId}`); } return { createStash, fetchStash, removeStash, stashActor, stashScene, stashMovie, unstashActor, unstashScene, unstashMovie, updateStash, }; } export default initStashesActions;