Improvements, GrapQL experiments. Fixed Babel dependencies.

This commit is contained in:
2019-12-15 22:16:55 +01:00
parent 7ba716cd6f
commit 07a6c77ce2
9 changed files with 183 additions and 1898 deletions

View File

@@ -39,7 +39,7 @@ async function post(endpoint, data) {
throw new Error(errorMsg);
}
async function graphql(operationName, query, variables = null) {
async function graphql(query, variables = null) {
const res = await fetch('/graphql', {
method: 'POST',
mode: 'cors',
@@ -48,7 +48,6 @@ async function graphql(operationName, query, variables = null) {
},
credentials: 'same-origin',
body: JSON.stringify({
operationName,
query,
variables,
}),

View File

@@ -1,4 +1,24 @@
import { get, graphql } from '../api';
import { graphql } from '../api';
function curateRelease(release) {
const curatedRelease = {
...release,
actors: release.actors.map(({ actor }) => ({
...actor,
avatar: actor.avatar[0],
origin: {
country: actor.originCountry,
},
})),
poster: release.poster[0],
network: release.site.network,
tags: release.tags.map(({ tag }) => tag),
};
if (release.trailer) [curatedRelease.trailer] = release.trailer;
return curatedRelease;
}
function initReleasesActions(_store, _router) {
async function fetchReleases({ _commit }) {
@@ -10,8 +30,8 @@ function initReleasesActions(_store, _router) {
});
*/
const { releases } = await graphql('MyQuery', `
query MyQuery {
const { releases } = await graphql(`
query Releases {
releases(orderBy: DATE_DESC) {
id
title
@@ -26,9 +46,11 @@ function initReleasesActions(_store, _router) {
id
name
slug
origin: countryByBirthCountryAlpha2 {
birthdate
originCountry: countryByBirthCountryAlpha2 {
alpha2
name
alias
}
avatar: actorsMediasByTargetId(condition: { role: "avatar" }) {
id
@@ -46,14 +68,6 @@ function initReleasesActions(_store, _router) {
thumbnail
role
}
photos: releasesMediasByTargetId(condition: { role: "photos" }) {
mime
id
index
path
thumbnail
role
}
tags: releasesTagsByTargetId {
tag {
name
@@ -78,26 +92,93 @@ function initReleasesActions(_store, _router) {
}
`);
const curatedReleases = releases.map(release => ({
...release,
actors: release.actors.map(({ actor }) => ({
...actor,
avatar: actor.avatar[0],
})),
poster: release.poster[0],
network: release.site.network,
tags: release.tags.map(({ tag }) => tag),
}));
console.log(curatedReleases);
return curatedReleases;
return releases.map(release => curateRelease(release));
}
async function fetchReleaseById({ _commit }, releaseId) {
const release = await get(`/releases/${releaseId}`);
// const release = await get(`/releases/${releaseId}`);
return release;
const { release } = await graphql(`
query Release($releaseId:Int!) {
release(id: $releaseId) {
id
title
description
date
duration
createdAt
shootId
url
actors: actorsAssociateds {
actor {
id
name
slug
birthdate
originCountry: countryByBirthCountryAlpha2 {
alpha2
name
alias
}
avatar: actorsMediasByTargetId(condition: { role: "avatar" }) {
id
thumbnail
path
mime
}
}
}
poster: releasesMediasByTargetId(condition: { role: "poster" }) {
mime
id
index
path
thumbnail
role
}
photos: releasesMediasByTargetId(condition: { role: "photo" }) {
mime
id
index
path
thumbnail
role
}
trailer: releasesMediasByTargetId(condition: { role: "trailer" }) {
mime
id
index
path
thumbnail
role
}
tags: releasesTagsByTargetId {
tag {
name
priority
slug
id
}
}
site {
id
name
slug
url
network {
id
name
slug
url
}
}
}
}
`, {
releaseId: Number(releaseId),
});
return curateRelease(release);
}
return {