mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-13 20:03:51 +02:00
829 lines
20 KiB
JavaScript
829 lines
20 KiB
JavaScript
import { useUserStore } from '../stores';
|
|
import { applyGroup } from '../coordinators/groupCoordinator';
|
|
import { queryClient } from '../queries';
|
|
import { request } from '../services/request';
|
|
|
|
/**
|
|
*
|
|
*/
|
|
function getCurrentUserId() {
|
|
return useUserStore().currentUser.id;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param groupId
|
|
*/
|
|
function refetchActiveGroupScope(groupId) {
|
|
if (!groupId) {
|
|
return;
|
|
}
|
|
queryClient
|
|
.invalidateQueries({
|
|
queryKey: ['group', groupId],
|
|
refetchType: 'active'
|
|
})
|
|
.catch((err) => {
|
|
console.error('Failed to refresh scoped group queries:', err);
|
|
});
|
|
}
|
|
const groupReq = {
|
|
/**
|
|
* @param {string} groupId
|
|
* @param {{isRepresenting: bool}} params
|
|
* @returns
|
|
*/
|
|
setGroupRepresentation(groupId, params) {
|
|
return request(`groups/${groupId}/representation`, {
|
|
method: 'PUT',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
groupId,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(groupId);
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{ groupId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
cancelGroupRequest(params) {
|
|
return request(`groups/${params.groupId}/requests`, {
|
|
method: 'DELETE'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{ groupId: string, postId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
deleteGroupPost(params) {
|
|
return request(`groups/${params.groupId}/posts/${params.postId}`, {
|
|
method: 'DELETE'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @type {import('../types/api/group').GetGroup}
|
|
*/
|
|
getGroup(params) {
|
|
return request(`groups/${params.groupId}`, {
|
|
method: 'GET',
|
|
params: {
|
|
includeRoles: params.includeRoles || false
|
|
}
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
args.ref = applyGroup(json);
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{ userId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getRepresentedGroup(params) {
|
|
return request(`users/${params.userId}/groups/represented`, {
|
|
method: 'GET'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{ userId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getGroups(params) {
|
|
return request(`users/${params.userId}/groups`, {
|
|
method: 'GET'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{ groupId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
joinGroup(params) {
|
|
return request(`groups/${params.groupId}/join`, {
|
|
method: 'POST'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{ groupId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
leaveGroup(params) {
|
|
return request(`groups/${params.groupId}/leave`, {
|
|
method: 'POST'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{ query: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
groupStrictsearch(params) {
|
|
return request(`groups/strictsearch`, {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
userId: string,
|
|
groupId: string,
|
|
params: {
|
|
visibility: string,
|
|
isSubscribedToAnnouncements: bool,
|
|
managerNotes: string
|
|
}
|
|
* @param userId
|
|
* @param groupId
|
|
* @param params
|
|
*/
|
|
setGroupMemberProps(userId, groupId, params) {
|
|
return request(`groups/${groupId}/members/${userId}`, {
|
|
method: 'PUT',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
userId,
|
|
groupId,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(groupId);
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{
|
|
* userId: string,
|
|
* groupId: string,
|
|
* roleId: string
|
|
* }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
addGroupMemberRole(params) {
|
|
return request(
|
|
`groups/${params.groupId}/members/${params.userId}/roles/${params.roleId}`,
|
|
{
|
|
method: 'PUT'
|
|
}
|
|
).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{
|
|
* userId: string,
|
|
* groupId: string,
|
|
* roleId: string
|
|
* }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
removeGroupMemberRole(params) {
|
|
return request(
|
|
`groups/${params.groupId}/members/${params.userId}/roles/${params.roleId}`,
|
|
{
|
|
method: 'DELETE'
|
|
}
|
|
).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
getGroupPermissions(params) {
|
|
return request(`users/${params.userId}/groups/permissions`, {
|
|
method: 'GET'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{
|
|
groupId: string,
|
|
n: number,
|
|
offset: number
|
|
}} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getGroupPosts(params) {
|
|
return request(`groups/${params.groupId}/posts`, {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
editGroupPost(params) {
|
|
return request(`groups/${params.groupId}/posts/${params.postId}`, {
|
|
method: 'PUT',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
createGroupPost(params) {
|
|
return request(`groups/${params.groupId}/posts`, {
|
|
method: 'POST',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{
|
|
* groupId: string,
|
|
* userId: string
|
|
* }} params
|
|
* @returns { Promise<{json: any, params, ref?: any}> }
|
|
*/
|
|
getGroupMember(params) {
|
|
return request(`groups/${params.groupId}/members/${params.userId}`, {
|
|
method: 'GET'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{
|
|
* groupId: string,
|
|
* n: number,
|
|
* offset: number
|
|
* }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getGroupMembers(params) {
|
|
return request(`groups/${params.groupId}/members`, {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{
|
|
* groupId: string,
|
|
* query: string,
|
|
* n: number,
|
|
* offset: number
|
|
* }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getGroupMembersSearch(params) {
|
|
return request(`groups/${params.groupId}/members/search`, {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{
|
|
* groupId: string
|
|
* }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
blockGroup(params) {
|
|
return request(`groups/${params.groupId}/block`, {
|
|
method: 'POST'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{
|
|
* groupId: string,
|
|
* userId: string
|
|
* }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
unblockGroup(params) {
|
|
return request(`groups/${params.groupId}/members/${params.userId}`, {
|
|
method: 'DELETE'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{
|
|
* groupId: string,
|
|
* userId: string
|
|
* }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
sendGroupInvite(params) {
|
|
return request(`groups/${params.groupId}/invites`, {
|
|
method: 'POST',
|
|
params: {
|
|
userId: params.userId
|
|
}
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{
|
|
* groupId: string,
|
|
* userId: string
|
|
* }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
kickGroupMember(params) {
|
|
return request(`groups/${params.groupId}/members/${params.userId}`, {
|
|
method: 'DELETE'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{ groupId: string, userId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
banGroupMember(params) {
|
|
return request(`groups/${params.groupId}/bans`, {
|
|
method: 'POST',
|
|
params: {
|
|
userId: params.userId
|
|
}
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
unbanGroupMember(params) {
|
|
return request(`groups/${params.groupId}/bans/${params.userId}`, {
|
|
method: 'DELETE'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{ groupId: string, userId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
deleteSentGroupInvite(params) {
|
|
return request(`groups/${params.groupId}/invites/${params.userId}`, {
|
|
method: 'DELETE'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
deleteBlockedGroupRequest(params) {
|
|
return request(`groups/${params.groupId}/members/${params.userId}`, {
|
|
method: 'DELETE'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
acceptGroupInviteRequest(params) {
|
|
return request(`groups/${params.groupId}/requests/${params.userId}`, {
|
|
method: 'PUT',
|
|
params: {
|
|
action: 'accept'
|
|
}
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
rejectGroupInviteRequest(params) {
|
|
return request(`groups/${params.groupId}/requests/${params.userId}`, {
|
|
method: 'PUT',
|
|
params: {
|
|
action: 'reject'
|
|
}
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
blockGroupInviteRequest(params) {
|
|
return request(`groups/${params.groupId}/requests/${params.userId}`, {
|
|
method: 'PUT',
|
|
params: {
|
|
action: 'reject',
|
|
block: true
|
|
}
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
refetchActiveGroupScope(params.groupId);
|
|
return args;
|
|
});
|
|
},
|
|
getGroupBans(params) {
|
|
return request(`groups/${params.groupId}/bans`, {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{ groupId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getGroupAuditLogTypes(params) {
|
|
return request(`groups/${params.groupId}/auditLogTypes`, {
|
|
method: 'GET'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{groupId: string, n: number, offset: number, eventTypes?: Array}} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getGroupLogs(params) {
|
|
return request(`groups/${params.groupId}/auditLogs`, {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{ groupId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getGroupInvites(params) {
|
|
return request(`groups/${params.groupId}/invites`, {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{ groupId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getGroupJoinRequests(params) {
|
|
return request(`groups/${params.groupId}/requests`, {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{ groupId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getGroupInstances(params) {
|
|
return request(
|
|
`users/${getCurrentUserId()}/instances/groups/${params.groupId}`,
|
|
{
|
|
method: 'GET'
|
|
}
|
|
).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{ groupId: string }} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getGroupRoles(params) {
|
|
return request(`groups/${params.groupId}/roles`, {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
getUsersGroupInstances() {
|
|
return request(`users/${getCurrentUserId()}/instances/groups`, {
|
|
method: 'GET'
|
|
}).then((json) => {
|
|
const args = {
|
|
json
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{
|
|
query: string,
|
|
n: number,
|
|
offset: number,
|
|
order: string,
|
|
sortBy: string
|
|
}} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
groupSearch(params) {
|
|
return request(`groups`, {
|
|
method: 'GET',
|
|
params
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @param {{
|
|
groupId: string,
|
|
galleryId: string,
|
|
n: number,
|
|
offset: number
|
|
}} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getGroupGallery(params) {
|
|
return request(
|
|
`groups/${params.groupId}/galleries/${params.galleryId}`,
|
|
{
|
|
method: 'GET',
|
|
params: {
|
|
n: params.n,
|
|
offset: params.offset
|
|
}
|
|
}
|
|
).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
getGroupCalendar(groupId) {
|
|
return request(`calendar/${groupId}`, {
|
|
method: 'GET'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params: {
|
|
groupId
|
|
}
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @param {{
|
|
groupId: string,
|
|
eventId: string
|
|
}} params
|
|
* @returns { Promise<{json: any, params}> }
|
|
*/
|
|
getGroupCalendarEvent(params) {
|
|
return request(`calendar/${params.groupId}/${params.eventId}`, {
|
|
method: 'GET'
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
},
|
|
/**
|
|
* @type {import('../types/api/group').GetCalendars}
|
|
*/
|
|
getGroupCalendars(params) {
|
|
return request('calendar', {
|
|
method: 'GET',
|
|
params
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @type {import('../types/api/group').GetFollowingCalendars}
|
|
*/
|
|
getFollowingGroupCalendars(params) {
|
|
return request('calendar/following', {
|
|
method: 'GET',
|
|
params
|
|
});
|
|
},
|
|
|
|
/**
|
|
* @type {import('../types/api/group').GetFeaturedCalendars}
|
|
*/
|
|
getFeaturedGroupCalendars(params) {
|
|
return request('calendar/featured', {
|
|
method: 'GET',
|
|
params
|
|
});
|
|
},
|
|
|
|
followGroupEvent(params) {
|
|
return request(`calendar/${params.groupId}/${params.eventId}/follow`, {
|
|
method: 'POST',
|
|
params: {
|
|
isFollowing: params.isFollowing
|
|
}
|
|
}).then((json) => {
|
|
const args = {
|
|
json,
|
|
params
|
|
};
|
|
return args;
|
|
});
|
|
}
|
|
|
|
// getRequestedGroups() {
|
|
// return request(
|
|
// `users/${API.currentUser.id}/groups/requested`,
|
|
// {
|
|
// method: 'GET'
|
|
// }
|
|
// ).then((json) => {
|
|
// const args = {
|
|
// json
|
|
// };
|
|
// API.$emit('GROUP:REQUESTED', args);
|
|
// return args;
|
|
// });
|
|
// }
|
|
|
|
// /**
|
|
// * @param {{ groupId: string }} params
|
|
// * @return { Promise<{json: any, params}> }
|
|
// */
|
|
// API.getGroupAnnouncement = function (params) {
|
|
// return request(`groups/${params.groupId}/announcement`, {
|
|
// method: 'GET'
|
|
// }).then((json) => {
|
|
// var args = {
|
|
// json,
|
|
// params
|
|
// };
|
|
// this.$emit('GROUP:ANNOUNCEMENT', args);
|
|
// return args;
|
|
// });
|
|
// };
|
|
};
|
|
|
|
export default groupReq;
|