import { graphql } from '../api'; import { releasesFragment } from '../fragments'; import { curateSite } from '../curate'; import getDateRange from '../get-date-range'; function initSitesActions(store, _router) { async function fetchSiteBySlug({ _commit }, { siteSlug, limit = 100, range = 'latest' }) { const { before, after, orderBy } = getDateRange(range); const { site } = await graphql(` query Site( $siteSlug: String!, $limit:Int = 100, $after:Date = "1900-01-01", $before:Date = "2100-01-01", $orderBy:[ReleasesOrderBy!] $exclude: [String!] ) { site: siteBySlug(slug: $siteSlug) { name slug url tags: sitesTags { tag { id slug name } } network { id name slug url } ${releasesFragment} } } `, { siteSlug, limit, after, before, orderBy, isNew: store.getters.isNew, exclude: store.state.ui.filter, }); return curateSite(site); } async function fetchSites({ _commit }, { limit = 100 }) { const { sites } = await graphql(` query Sites( $actorSlug: String! $limit:Int = 100, $after:Date = "1900-01-01", $before:Date = "2100-01-01", ) { site { name slug url } } `, { limit, after: store.getters.after, before: store.getters.before, }); return sites; } async function searchSites({ _commit }, { query, limit = 20 }) { const { sites } = await graphql(` query SearchSites( $query: String! $limit:Int = 20, ) { sites: searchSites( search: $query, first: $limit ) { name slug url network { name slug url } } } `, { query, limit, }); return sites; } return { fetchSiteBySlug, fetchSites, searchSites, }; } export default initSitesActions;