139 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| import { graphql, post, del } from '../api';
 | |
| import { actorFields, releaseFields } from '../fragments';
 | |
| import { curateUser } from '../curate';
 | |
| 
 | |
| function initUsersActions(store, _router) {
 | |
| 	async function fetchUser(context, username) {
 | |
| 		const { user } = await graphql(`
 | |
| 			query User(
 | |
| 				$username: String!
 | |
| 				$hasAuth: Boolean!
 | |
| 				$userId: Int
 | |
| 			) {
 | |
| 				user: userByUsername(username: $username) {
 | |
| 					id
 | |
| 					role
 | |
| 					username
 | |
| 					stashes {
 | |
| 						id
 | |
| 						name
 | |
| 						slug
 | |
| 						public
 | |
| 						primary
 | |
| 						actors: stashesActors {
 | |
| 							comment
 | |
| 							actor {
 | |
| 								id
 | |
| 								name
 | |
| 								slug
 | |
| 								gender
 | |
| 								age
 | |
| 								ageFromBirth
 | |
| 								dateOfBirth
 | |
| 								birthCity
 | |
| 								birthState
 | |
| 								birthCountry: countryByBirthCountryAlpha2 {
 | |
| 								  alpha2
 | |
| 								  name
 | |
| 								  alias
 | |
| 								}
 | |
| 								avatar: avatarMedia {
 | |
| 									id
 | |
| 									path
 | |
| 									thumbnail
 | |
| 									lazy
 | |
| 									isS3
 | |
| 									width
 | |
| 									height
 | |
| 									sfw: sfwMedia {
 | |
| 										id
 | |
| 										path
 | |
| 										thumbnail
 | |
| 										lazy
 | |
| 										isS3
 | |
| 										width
 | |
| 										height
 | |
| 									}
 | |
| 								}
 | |
| 							}
 | |
| 						}
 | |
| 						scenes: stashesScenes(
 | |
| 							first: 20
 | |
| 							orderBy: CREATED_AT_DESC
 | |
| 						) {
 | |
| 							comment
 | |
| 							scene {
 | |
| 								${releaseFields}
 | |
| 							}
 | |
| 						}
 | |
| 					}
 | |
| 					alerts {
 | |
| 						id
 | |
| 						notify
 | |
| 						email
 | |
| 						stashes: alertsStashes {
 | |
| 							stash {
 | |
| 								id
 | |
| 								name
 | |
| 								slug
 | |
| 							}
 | |
| 						}
 | |
| 						tags: alertsTags {
 | |
| 							tag {
 | |
| 								id
 | |
| 								name
 | |
| 								slug
 | |
| 							}
 | |
| 						}
 | |
| 						actors: alertsActors {
 | |
| 							actor {
 | |
| 								${actorFields}
 | |
| 							}
 | |
| 						}
 | |
| 						entity: alertsEntityByAlertId {
 | |
| 							entity {
 | |
| 								id
 | |
| 								name
 | |
| 								slug
 | |
| 								type
 | |
| 								independent
 | |
| 								hasLogo
 | |
| 								parent {
 | |
| 									id
 | |
| 									name
 | |
| 									slug
 | |
| 									type
 | |
| 									independent
 | |
| 									hasLogo
 | |
| 								}
 | |
| 							}
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 		`, {
 | |
| 			hasAuth: !!store.state.auth.user,
 | |
| 			userId: store.state.auth.user?.id || null,
 | |
| 			username,
 | |
| 		});
 | |
| 
 | |
| 		return curateUser(user);
 | |
| 	}
 | |
| 
 | |
| 	async function addAlert(context, alert) {
 | |
| 		return post('/alerts', alert);
 | |
| 	}
 | |
| 
 | |
| 	async function removeAlert(context, alertId) {
 | |
| 		return del(`/alerts/${alertId}`);
 | |
| 	}
 | |
| 
 | |
| 	return {
 | |
| 		addAlert,
 | |
| 		fetchUser,
 | |
| 		removeAlert,
 | |
| 	};
 | |
| }
 | |
| 
 | |
| export default initUsersActions;
 |