traxxx/assets/js/users/actions.js

127 lines
2.1 KiB
JavaScript
Raw Normal View History

import { graphql, post, del } from '../api';
2021-05-15 01:49:27 +00:00
import { actorFields, releaseFields } from '../fragments';
2021-03-17 01:09:34 +00:00
import { curateUser } from '../curate';
function initUsersActions(store, _router) {
async function fetchUser(context, username) {
2021-03-15 02:30:47 +00:00
const { user } = await graphql(`
query User(
$username: String!
$hasAuth: Boolean!
$userId: Int
2021-03-15 02:30:47 +00:00
) {
user: userByUsername(username: $username) {
id
role
username
stashes {
id
name
slug
public
primary
2021-03-15 02:30:47 +00:00
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
2021-03-15 02:30:47 +00:00
}
}
}
scenes: stashesScenes(first: 20) {
2021-03-15 02:30:47 +00:00
comment
scene {
2021-03-17 01:09:34 +00:00
${releaseFields}
2021-03-15 02:30:47 +00:00
}
}
}
alerts {
id
notify
email
2021-04-04 22:48:03 +00:00
stashes: alertsStashes {
stash {
id
name
slug
}
}
tags: alertsTags {
tag {
id
name
slug
}
}
actors: alertsActors {
actor {
${actorFields}
}
}
entity: alertsEntityByAlertId {
entity {
id
name
slug
2021-04-04 22:48:03 +00:00
type
independent
2021-04-04 22:48:03 +00:00
hasLogo
parent {
id
name
slug
2021-04-04 22:48:03 +00:00
type
independent
2021-04-04 22:48:03 +00:00
hasLogo
}
}
}
}
2021-05-15 01:49:27 +00:00
}
}
`, {
hasAuth: !!store.state.auth.user,
userId: store.state.auth.user?.id || null,
username,
});
2021-03-17 01:09:34 +00:00
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;