mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-13 20:03:51 +02:00
276 lines
6.8 KiB
JavaScript
276 lines
6.8 KiB
JavaScript
import { patchAndRefetchActiveQuery, queryKeys } from '../queries';
|
|
import { request } from '../services/request';
|
|
import { useUserStore } from '../stores';
|
|
import { applyCurrentUser } from '../coordinators/userCoordinator';
|
|
|
|
const avatarReq = {
|
|
/**
|
|
* @type {import('../types/api/avatar').GetAvatar}
|
|
*/
|
|
getAvatar(params) {
|
|
return request(`avatars/${params.avatarId}`, {
|
|
method: 'GET'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @type {import('../types/api/avatar').GetAvatars}
|
|
*/
|
|
getAvatars(params) {
|
|
return request('avatars', {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @type {import('../types/api/avatar').SaveAvatar}
|
|
*/
|
|
saveAvatar(params) {
|
|
return request(`avatars/${params.id}`, {
|
|
method: 'PUT',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
patchAndRefetchActiveQuery({
|
|
queryKey: queryKeys.avatar(params.id),
|
|
nextData: args
|
|
}).catch((err) => {
|
|
console.error(
|
|
'Failed to refresh avatar query after mutation:',
|
|
err
|
|
);
|
|
});
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{avatarId: string }} params
|
|
* @returns {Promise<{json: any, params}>}
|
|
*/
|
|
selectAvatar(params) {
|
|
return request(`avatars/${params.avatarId}/select`, {
|
|
method: 'PUT',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
const ref = applyCurrentUser(json);
|
|
patchAndRefetchActiveQuery({
|
|
queryKey: queryKeys.user(ref.id),
|
|
nextData: {
|
|
json,
|
|
params: { userId: ref.id },
|
|
ref
|
|
}
|
|
}).catch((err) => {
|
|
console.error(
|
|
'Failed to refresh current user query after avatar select:',
|
|
err
|
|
);
|
|
});
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{ avatarId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
selectFallbackAvatar(params) {
|
|
return request(`avatars/${params.avatarId}/selectfallback`, {
|
|
method: 'PUT',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
const ref = applyCurrentUser(json);
|
|
patchAndRefetchActiveQuery({
|
|
queryKey: queryKeys.user(ref.id),
|
|
nextData: {
|
|
json,
|
|
params: { userId: ref.id },
|
|
ref
|
|
}
|
|
}).catch((err) => {
|
|
console.error(
|
|
'Failed to refresh current user query after fallback avatar select:',
|
|
err
|
|
);
|
|
});
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{ avatarId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
deleteAvatar(params) {
|
|
return request(`avatars/${params.avatarId}`, {
|
|
method: 'DELETE'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{ avatarId: string }} params
|
|
* @returns {Promise<{json: any, params}>}
|
|
*/
|
|
createImposter(params) {
|
|
return request(`avatars/${params.avatarId}/impostor/enqueue`, {
|
|
method: 'POST'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{ avatarId: string }} params
|
|
* @returns {Promise<{json: any, params}>}
|
|
*/
|
|
deleteImposter(params) {
|
|
return request(`avatars/${params.avatarId}/impostor`, {
|
|
method: 'DELETE'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @returns {Promise<{json: any}>}
|
|
*/
|
|
getAvailableAvatarStyles() {
|
|
return request('avatarStyles', {
|
|
method: 'GET'
|
|
}).then((json) => {
|
|
const args = {
|
|
json
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {string} avatarId
|
|
* @returns {Promise<{json: any, params}>}
|
|
*/
|
|
getAvatarGallery(avatarId) {
|
|
const params = {
|
|
tag: 'avatargallery',
|
|
galleryId: avatarId,
|
|
n: 100,
|
|
offset: 0
|
|
};
|
|
return request(`files`, {
|
|
params,
|
|
method: 'GET'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
uploadAvatarImage(imageData) {
|
|
const params = {
|
|
tag: 'avatarimage'
|
|
};
|
|
return request('file/image', {
|
|
uploadImage: true,
|
|
matchingDimensions: false,
|
|
postData: JSON.stringify(params),
|
|
imageData
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{ imageData: string, avatarId: string }}
|
|
* @param imageData
|
|
* @param avatarId
|
|
* @returns {Promise<{json: any, params}>}
|
|
*/
|
|
uploadAvatarGalleryImage(imageData, avatarId) {
|
|
const params = {
|
|
tag: 'avatargallery',
|
|
galleryId: avatarId
|
|
};
|
|
return request('file/image', {
|
|
uploadImage: true,
|
|
matchingDimensions: false,
|
|
postData: JSON.stringify(params),
|
|
imageData
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {string[]} order
|
|
* @returns {Promise<{json: any, params}>}
|
|
*/
|
|
setAvatarGalleryOrder(order) {
|
|
const params = {
|
|
ids: order
|
|
};
|
|
return request('files/order', {
|
|
method: 'PUT',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
}
|
|
};
|
|
|
|
export default avatarReq;
|