forked from DebaucheryLibrarian/traxxx
				
			
		
			
				
	
	
		
			197 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| import { graphql } from '../api';
 | |
| import { curateRelease, curateActor } from '../curate';
 | |
| 
 | |
| function initUiActions(_store, _router) {
 | |
| 	function setFilter({ commit }, filter) {
 | |
| 		commit('setFilter', filter);
 | |
| 		localStorage.setItem('filter', filter);
 | |
| 	}
 | |
| 
 | |
| 	function setRange({ commit }, range) {
 | |
| 		commit('setRange', range);
 | |
| 	}
 | |
| 
 | |
| 	function setBatch({ commit }, batch) {
 | |
| 		commit('setBatch', batch);
 | |
| 		localStorage.setItem('batch', batch);
 | |
| 	}
 | |
| 
 | |
| 	function setTheme({ commit }, theme) {
 | |
| 		commit('setTheme', theme);
 | |
| 		localStorage.setItem('theme', theme);
 | |
| 	}
 | |
| 
 | |
| 	async function setSfw({ commit }, sfw) {
 | |
| 		commit('setSfw', sfw);
 | |
| 		localStorage.setItem('sfw', sfw);
 | |
| 	}
 | |
| 
 | |
| 	async function search({ _commit }, { query, limit = 20 }) {
 | |
| 		const res = await graphql(`
 | |
|             query SearchReleases(
 | |
|                 $query: String!
 | |
|                 $limit: Int = 20
 | |
|             ) {
 | |
|                 releases: searchReleases(
 | |
|                     query: $query
 | |
|                     first: $limit
 | |
|                 ) {
 | |
|                     id
 | |
|                     title
 | |
|                     slug
 | |
|                     date
 | |
|                     url
 | |
|                     isNew
 | |
|                     entity {
 | |
|                         id
 | |
|                         slug
 | |
|                         name
 | |
|                         url
 | |
| 						type
 | |
|                         parent {
 | |
|                             id
 | |
|                             slug
 | |
|                             name
 | |
|                             url
 | |
| 							type
 | |
|                         }
 | |
|                     }
 | |
|                     actors: releasesActors {
 | |
|                         actor {
 | |
|                             id
 | |
|                             slug
 | |
|                             name
 | |
|                         }
 | |
|                     }
 | |
|                     tags: releasesTags(orderBy: TAG_BY_TAG_ID__PRIORITY_DESC) {
 | |
|                         tag {
 | |
|                             id
 | |
|                             name
 | |
|                             slug
 | |
|                         }
 | |
|                     }
 | |
|                     poster: releasesPosterByReleaseId {
 | |
|                         media {
 | |
|                             id
 | |
|                             thumbnail
 | |
|                             lazy
 | |
|                         }
 | |
|                     }
 | |
|                     covers: releasesCovers {
 | |
|                         media {
 | |
|                             id
 | |
|                             thumbnail
 | |
|                             lazy
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|                 actors: searchActors(
 | |
|                     search: $query,
 | |
|                     first: $limit
 | |
|                 ) {
 | |
|                     id
 | |
|                     name
 | |
|                     slug
 | |
|                     age
 | |
| 					ageAtDeath
 | |
|                     dateOfBirth
 | |
|                     dateOfDeath
 | |
|                     gender
 | |
| 					aliasFor: actorByAliasFor {
 | |
| 						id
 | |
| 						name
 | |
| 						slug
 | |
| 						age
 | |
| 						ageAtDeath
 | |
| 						dateOfBirth
 | |
| 						dateOfDeath
 | |
| 						gender
 | |
| 						entity {
 | |
| 							id
 | |
| 							name
 | |
| 							slug
 | |
| 						}
 | |
| 						avatar: avatarMedia {
 | |
| 							id
 | |
| 							path
 | |
| 							thumbnail
 | |
| 							lazy
 | |
| 							comment
 | |
| 							credit
 | |
| 						}
 | |
| 						birthCountry: countryByBirthCountryAlpha2 {
 | |
| 						  alpha2
 | |
| 						  name
 | |
| 						  alias
 | |
| 						}
 | |
| 					}
 | |
|                     entity {
 | |
|                         id
 | |
|                         name
 | |
|                         slug
 | |
|                     }
 | |
| 					avatar: avatarMedia {
 | |
| 						id
 | |
| 						path
 | |
| 						thumbnail
 | |
| 						lazy
 | |
| 						comment
 | |
| 						credit
 | |
| 					}
 | |
|                     birthCountry: countryByBirthCountryAlpha2 {
 | |
|                       alpha2
 | |
|                       name
 | |
|                       alias
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         `, {
 | |
| 			query,
 | |
| 			limit,
 | |
| 		});
 | |
| 
 | |
| 		return {
 | |
| 			releases: res.releases.map(release => curateRelease(release)),
 | |
| 			actors: res.actors.map(actor => curateActor(actor)),
 | |
| 		};
 | |
| 	}
 | |
| 
 | |
| 	async function fetchStats() {
 | |
| 		const {
 | |
| 			scenes,
 | |
| 			movies,
 | |
| 			actors,
 | |
| 			networks,
 | |
| 			channels,
 | |
| 		} = await graphql(`
 | |
|             query Stats {
 | |
| 				scenes: releasesConnection { totalCount }
 | |
| 				movies: moviesConnection { totalCount }
 | |
| 				actors: actorsConnection { totalCount }
 | |
| 				networks: entitiesConnection(filter: { type: { equalTo: "network" } }) { totalCount }
 | |
| 				channels: entitiesConnection(filter: { type: { equalTo: "channel" } }) { totalCount }
 | |
| 			}
 | |
| 		`);
 | |
| 
 | |
| 		return {
 | |
| 			totalScenes: scenes.totalCount,
 | |
| 			totalMovies: movies.totalCount,
 | |
| 			totalActors: actors.totalCount,
 | |
| 			totalNetworks: networks.totalCount,
 | |
| 			totalChannels: channels.totalCount,
 | |
| 		};
 | |
| 	}
 | |
| 
 | |
| 	return {
 | |
| 		search,
 | |
| 		setFilter,
 | |
| 		setRange,
 | |
| 		setBatch,
 | |
| 		setSfw,
 | |
| 		setTheme,
 | |
| 		fetchStats,
 | |
| 	};
 | |
| }
 | |
| 
 | |
| export default initUiActions;
 |