import { graphql } from '../api';
import { releasesFragment } from '../fragments';
import { curateSite } from '../curate';

function initSitesActions(store, _router) {
    async function fetchSiteBySlug(siteSlug, limit = 100) {
        const { site } = await graphql(`
            query Site(
                $siteSlug: String!,
                $limit:Int = 100,
                $after:Date = "1900-01-01",
                $before:Date = "2100-01-01",
            ) {
                site: siteBySlug(slug: $siteSlug) {
                    name
                    slug
                    url
                    network {
                        id
                        name
                        slug
                        url
                    }
                    ${releasesFragment}
                }
            }
        `, {
            siteSlug,
            limit,
            after: store.getters.after,
            before: store.getters.before,
        });

        console.log(site);

        return curateSite(site);
    }

    async function fetchSites({ _commit }, { siteSlug, limit = 100 }) {
        if (siteSlug) {
            return fetchSiteBySlug(siteSlug, limit);
        }

        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 fetchSiteReleases({ _commit }, siteId) {
        const releases = await get(`/sites/${siteId}/releases`, {
            filter: store.state.ui.filter,
            after: store.getters.after,
            before: store.getters.before,
        });

        return releases;
    }
    */

    return {
        fetchSites,
        // fetchSiteReleases,
    };
}

export default initSitesActions;