2e9bc2c31c
* add colors palette * add secondary menu component and style it * add box shadow to secondary menu * misc css, fixes for secondary menu * client: add equipment page with grouping, css: add some styles * add typography * more equipment * stable: fix linting * equipment: add styles (lots of general styles too) * remove duplicate google fonts loading * add dropdowns * design: white search input background, remove gray from items * start adding drawer and selected indicator * wip equipment * fix equipment * equipment: correctly bind new properties on items.gear.equipped * equipment: fix vue binding. version 2 * equipment: fix vue binding. version 3 * back to first fix for equip op, fix for sourcemaps, send http request when an item is equipped, load bootstrap-vue components where needed * checkboxes and radio buttons * correctly renders selected items in first postion during the first render * add search * general changes, constants part of app state, add popovers * add toggle switch, rename css * correct offset * upgrade deps * upgrade deps * drawer and lot of other work * update equipping mechanism * finish equipment * fix compilation and upgrade deps * use v-show in place of v-if to fix ui issues * v-show -> v-if * Start of guild syyles * fix linting in test/client * fix es6 compilation in test/client * fix babel compilation for tests * fix groupsUtilities mixin tests * More designs * Added public guild state * Added my guilds store * client: buttons * client: buttons: fix colors * Added join and leave * Began adding new guild form * Create form updates * Added search to local data * Added filtering * Added initial code for group create * Added more create checks * Added more guild routes * Added styles to guild page * Added more chat styles * Began porting over angular functions * Moved over group service functions * Added paging * Updated sidebar * Updated join/leave and minor text * Added new sidebar functions * Updated paging * Added some form updates * Added more translations and styles * Updated shrinkwrap * Removed features config * Lint cleanup * Added member modal * Added more member actions * Updated nav * Fixed filter toggling * Updated create guild * Added no guild page * Added sort select * Added more styles * Added update guild form * Removed extra css and other minor changes * Many css and syntax fixes * Fixed color and merge conflic * Removed paging from my guilds * Removed extra strings * Many requests updates * Small style fixes
163 lines
4.3 KiB
JavaScript
163 lines
4.3 KiB
JavaScript
import axios from 'axios';
|
|
import omit from 'lodash/omit';
|
|
import findIndex from 'lodash/findIndex';
|
|
|
|
export async function getPublicGuilds (store, payload) {
|
|
let response = await axios.get('/api/v3/groups', {
|
|
params: {
|
|
type: 'publicGuilds',
|
|
paginate: true,
|
|
page: payload.page,
|
|
},
|
|
});
|
|
|
|
return response.data.data;
|
|
}
|
|
|
|
export async function getMyGuilds (store) {
|
|
let response = await axios.get('/api/v3/groups', {
|
|
params: {
|
|
type: 'privateGuilds',
|
|
},
|
|
});
|
|
|
|
let guilds = response.data.data;
|
|
store.state.myGuilds = guilds;
|
|
|
|
return response.data.data;
|
|
}
|
|
|
|
export async function getGroup (store, payload) {
|
|
let response = await axios.get(`/api/v3/groups/${payload.groupId}`);
|
|
|
|
// @TODO: should we store the active group for modifying?
|
|
// let guilds = response.data.data;
|
|
// store.state.myGuilds = guilds;
|
|
|
|
// @TODO: Populate wiht members, challenges, and invites
|
|
|
|
return response.data.data;
|
|
}
|
|
|
|
|
|
export async function join (store, payload) {
|
|
let response = await axios.post(`/api/v3/groups/${payload.guildId}/join`);
|
|
|
|
// @TODO: abstract for parties as well
|
|
store.state.user.data.guilds.push(payload.guildId);
|
|
if (payload.type === 'myGuilds') {
|
|
store.state.myGuilds.push(response.data.data);
|
|
}
|
|
|
|
return response.data.data;
|
|
}
|
|
|
|
export async function leave (store, payload) {
|
|
// @TODO: is the dafault for keepChallenges 'remain-in-challenges'
|
|
let data = {
|
|
keep: payload.keep,
|
|
keepChallenges: payload.keepChallenges,
|
|
};
|
|
let response = await axios.post(`/api/v3/groups/${payload.guildId}/leave`, data);
|
|
|
|
// @TODO: update for party
|
|
let index = store.state.user.data.guilds.indexOf(payload.guildId);
|
|
store.state.user.data.guilds.splice(index, 1);
|
|
if (payload.type === 'myGuilds') {
|
|
let guildIndex = findIndex(store.state.myGuilds, (guild) => {
|
|
return guild._id === payload.guildId;
|
|
});
|
|
store.state.myGuilds.splice(guildIndex, 1);
|
|
}
|
|
|
|
return response.data.data;
|
|
}
|
|
|
|
export async function create (store, payload) {
|
|
let response = await axios.post('/api/v3/groups/', payload.group);
|
|
let newGroup = response.data.data;
|
|
|
|
// @TODO: Add party
|
|
if (newGroup.privacy === 'public') {
|
|
store.state.publicGuilds.push(newGroup);
|
|
} else if (newGroup.privacy === 'private') {
|
|
store.state.myGuilds.push(newGroup);
|
|
}
|
|
|
|
return newGroup;
|
|
}
|
|
|
|
export async function update (store, payload) {
|
|
// Remove populated fields
|
|
let groupDetailsToSend = omit(payload.group, ['chat', 'challenges', 'members', 'invites']);
|
|
if (groupDetailsToSend.leader && groupDetailsToSend.leader._id) groupDetailsToSend.leader = groupDetailsToSend.leader._id;
|
|
|
|
let response = await axios.put(`/api/v3/groups/${payload.group.id}`, {
|
|
data: groupDetailsToSend,
|
|
});
|
|
|
|
let updatedGroup = response.data.data;
|
|
|
|
// @TODO: Replace old group
|
|
// store.state.publicGuilds.push(newGroup);
|
|
|
|
return updatedGroup;
|
|
}
|
|
|
|
export async function rejectInvite (store, payload) {
|
|
let response = await axios.post(`/api/v3/groups/${payload.groupId}/reject-invite`);
|
|
|
|
// @TODO: refresh or add guild
|
|
|
|
return response;
|
|
}
|
|
|
|
export async function removeMember (store, payload) {
|
|
let response = await axios.post(`/api/v3/groups/${payload.groupId}/removeMember/${payload.memberId}`, {
|
|
message: payload.message,
|
|
});
|
|
|
|
// @TODO: find guild and remove member
|
|
|
|
return response;
|
|
}
|
|
|
|
export async function invite (store, payload) {
|
|
let response = await axios.post(`/api/v3/groups/${payload.groupId}/invite`, {
|
|
uuids: payload.invitationDetails.uuids,
|
|
emails: payload.invitationDetails.emails,
|
|
});
|
|
|
|
// @TODO: find guild and add invites
|
|
|
|
return response;
|
|
}
|
|
|
|
export async function inviteToQuest (store, payload) {
|
|
let response = await axios.post(`/api/v3/groups/${payload.groupId}/quests/invite/${payload.key}`);
|
|
|
|
// @TODO: Any updates?
|
|
|
|
return response;
|
|
}
|
|
|
|
export async function addManager (store, payload) {
|
|
let response = await axios.post(`/api/v3/groups/${payload.groupId}/add-manager/`, {
|
|
managerId: payload.memberId,
|
|
});
|
|
|
|
// @TODO: Add managers to group or does the component handle?
|
|
|
|
return response;
|
|
}
|
|
|
|
export async function removeManager (store, payload) {
|
|
let response = await axios.post(`/api/v3/groups/${payload.groupId}/remove-manager/`, {
|
|
managerId: payload.memberId,
|
|
});
|
|
|
|
// @TODO: Add managers to group or does the component handle?
|
|
|
|
return response;
|
|
}
|