forked from DebaucheryLibrarian/traxxx
				
			
		
			
				
	
	
		
			144 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| import { graphql } from '../api';
 | |
| // import { sitesFragment, releaseFields } from '../fragments';
 | |
| import { releaseFields } from '../fragments';
 | |
| import { curateNetwork } from '../curate';
 | |
| import getDateRange from '../get-date-range';
 | |
| 
 | |
| function initNetworksActions(store, _router) {
 | |
| 	async function fetchNetworkBySlug({ _commit }, {
 | |
| 		networkSlug,
 | |
| 		limit = 10,
 | |
| 		pageNumber = 1,
 | |
| 		range = 'latest',
 | |
| 	}) {
 | |
| 		const { before, after, orderBy } = getDateRange(range);
 | |
| 
 | |
| 		const { network, connection: { releases, totalCount } } = await graphql(`
 | |
|             query Network(
 | |
|                 $networkSlug: String!
 | |
|                 $limit:Int = 10,
 | |
|                 $offset:Int = 0,
 | |
|                 $after:Date = "1900-01-01",
 | |
|                 $before:Date = "2100-01-01",
 | |
|                 $afterTime:Datetime = "1900-01-01",
 | |
|                 $beforeTime:Datetime = "2100-01-01",
 | |
|                 $orderBy: [ReleasesOrderBy!]
 | |
|                 $exclude: [String!]
 | |
|             ) {
 | |
| 				network: entityBySlugAndType(slug: $networkSlug, type: "network") {
 | |
|                     id
 | |
|                     name
 | |
|                     slug
 | |
|                     url
 | |
| 					sites: childEntities(
 | |
|                         orderBy: [PRIORITY_DESC, NAME_ASC],
 | |
|                     ) {
 | |
|                         id
 | |
|                         name
 | |
|                         slug
 | |
|                         url
 | |
| 						type
 | |
|                         priority
 | |
|                     }
 | |
|                     parent {
 | |
|                         id
 | |
|                         name
 | |
|                         slug
 | |
| 						type
 | |
|                         url
 | |
|                     }
 | |
|                 }
 | |
| 				connection: releasesConnection(
 | |
| 					first: $limit
 | |
| 					offset: $offset
 | |
| 					orderBy: $orderBy
 | |
| 					filter: {
 | |
| 						entity: {
 | |
| 							or: [
 | |
| 								{ parent: { slug: { equalTo: $networkSlug } } },
 | |
| 								{ parent: { parent: { slug: { equalTo: $networkSlug } } } }
 | |
| 							]
 | |
| 						}
 | |
| 						or: [
 | |
| 							{
 | |
| 								date: {
 | |
| 									lessThan: $before,
 | |
| 									greaterThan: $after
 | |
| 								}
 | |
| 							},
 | |
| 							{
 | |
| 								date: {
 | |
| 									isNull: true
 | |
| 								},
 | |
| 								createdAt: {
 | |
| 									lessThan: $beforeTime,
 | |
| 									greaterThan: $afterTime,
 | |
| 								}
 | |
| 							}
 | |
| 						]
 | |
| 						releasesTagsConnection: {
 | |
| 							none: {
 | |
| 								tag: {
 | |
| 									slug: {
 | |
| 										in: $exclude
 | |
| 									}
 | |
| 								}
 | |
| 							}
 | |
| 						}
 | |
| 					}
 | |
| 				) {
 | |
| 					releases: nodes {
 | |
| 						${releaseFields}
 | |
| 					}
 | |
| 					totalCount
 | |
| 				}
 | |
|             }
 | |
|         `, {
 | |
| 			networkSlug,
 | |
| 			limit,
 | |
| 			offset: Math.max(0, (pageNumber - 1)) * limit,
 | |
| 			after,
 | |
| 			before,
 | |
| 			orderBy,
 | |
| 			afterTime: store.getters.after,
 | |
| 			beforeTime: store.getters.before,
 | |
| 			exclude: store.state.ui.filter,
 | |
| 		});
 | |
| 
 | |
| 		return {
 | |
| 			network: curateNetwork(network, releases),
 | |
| 			totalCount,
 | |
| 		};
 | |
| 	}
 | |
| 
 | |
| 	async function fetchNetworks({ _commit }) {
 | |
| 		const { networks } = await graphql(`
 | |
|             query Networks {
 | |
| 				networks: entities(
 | |
| 					orderBy: NAME_ASC
 | |
| 					filter: {
 | |
| 						type: {
 | |
| 							equalTo: "network"
 | |
| 						}
 | |
| 					}
 | |
| 				) {
 | |
|                     id
 | |
|                     name
 | |
|                     slug
 | |
| 					type
 | |
|                     url
 | |
|                 }
 | |
|             }
 | |
|         `);
 | |
| 
 | |
| 		return networks.map(network => curateNetwork(network));
 | |
| 	}
 | |
| 
 | |
| 	return {
 | |
| 		fetchNetworkBySlug,
 | |
| 		fetchNetworks,
 | |
| 	};
 | |
| }
 | |
| 
 | |
| export default initNetworksActions;
 |