Files
habitica/website/client/src/store/actions/members.js
T
Phillip Thelen 6e43d4dc79 Add Transaction log for gem and hourglass changes (#13589)
* Log all gem transactions to database

* Also store hourglass transactions

* Fix tests

* Display transaction history in hall of heroes for admins

* add tests to new API call

* hide transaction settings tab for non admins

* fix(lint): remove console

* fix(lint): various automatic corrections

* fix(transactions): use enum expected pluralizations

* fix api unit tests

* fix lint

* fix failing test

* Fix minor inconsistencies

* Log all gem transactions to database

* Also store hourglass transactions

* Fix tests

* Display transaction history in hall of heroes for admins

* add tests to new API call

* hide transaction settings tab for non admins

* fix(lint): remove console

* fix(lint): various automatic corrections

* fix(transactions): use enum expected pluralizations

* fix api unit tests

* fix lint

* Fix minor inconsistencies

Co-authored-by: Sabe Jones <sabrecat@gmail.com>
2022-01-31 15:36:15 -06:00

155 lines
4.0 KiB
JavaScript

import axios from 'axios';
// import omit from 'lodash/omit';
// import findIndex from 'lodash/findIndex';
const apiv4Prefix = '/api/v4';
export async function getGroupMembers (store, payload) {
const url = `${apiv4Prefix}/groups/${payload.groupId}/members`;
const params = {};
if (payload.includeAllPublicFields) {
params.includeAllPublicFields = true;
}
if (payload.lastMemberId) {
params.lastId = payload.lastMemberId;
}
if (payload.searchTerm) {
params.search = payload.searchTerm;
}
const response = await axios.get(url, { params });
return response.data.data;
}
function unpackResponse (response) {
return response && response.data
? response.data.data
: undefined;
}
export async function fetchMember (store, payload) {
const url = `${apiv4Prefix}/members/${payload.memberId}`;
const response = await axios.get(url);
return payload.unpack === false
? response
: unpackResponse(response);
}
export async function fetchMemberByUsername (store, payload) {
const url = `${apiv4Prefix}/members/username/${payload.username}`;
const response = await axios.get(url);
return unpackResponse(response);
}
export async function getGroupInvites (store, payload) {
let url = `${apiv4Prefix}/groups/${payload.groupId}/invites`;
if (payload.includeAllPublicFields) {
url += '?includeAllPublicFields=true';
}
const response = await axios.get(url);
return response.data.data;
}
export async function getChallengeMembers (store, payload) {
const url = `${apiv4Prefix}/challenges/${payload.challengeId}/members`;
const params = {};
if (payload.includeAllPublicFields) {
params.includeAllPublicFields = true;
}
if (payload.lastMemberId) {
params.lastId = payload.lastMemberId;
}
if (payload.searchTerm) {
params.search = payload.searchTerm;
}
const response = await axios.get(url, { params });
return response.data.data;
}
export async function getChallengeMemberProgress (store, payload) {
const url = `${apiv4Prefix}/challenges/${payload.challengeId}/members/${payload.memberId}`;
const response = await axios.get(url);
return response;
}
export async function sendPrivateMessage (store, payload) {
const url = `${apiv4Prefix}/members/send-private-message`;
const data = {
message: payload.message,
toUserId: payload.toUserId,
};
const response = await axios.post(url, data);
return response;
}
export async function transferGems (store, payload) {
const url = `${apiv4Prefix}/members/transfer-gems`;
const data = {
message: payload.message,
toUserId: payload.toUserId,
gemAmount: payload.gemAmount,
};
const response = await axios.post(url, data);
store.state.user.data.balance -= payload.gemAmount / 4;
return response;
}
export async function removeMember (store, payload) {
const url = `${apiv4Prefix}/groups/${payload.groupId}/removeMember/${payload.memberId}`;
const data = {
message: payload.message,
};
const response = await axios.post(url, data);
return response;
}
export async function getPurchaseHistory (store, payload) {
const response = await axios.get(`${apiv4Prefix}/members/${payload.memberId}/purchase-history`);
return response.data.data;
}
// export async function selectMember (uid) {
// let memberIsReady = _checkIfMemberIsReady(members[uid]);
//
// if (memberIsReady) {
// _prepareMember(members[uid], self);
// return
// } else {
// fetchMember(uid)
// .then(function (response) {
// var member = response.data.data;
// addToMembersList(member); // lazy load for later
// _prepareMember(member, self);
// deferred.resolve();
// });
// }
// }
// function addToMembersList (member) {
// if (member._id) {
// members[member._id] = member;
// }
// }
// function _checkIfMemberIsReady (member) {
// return member && member.items && member.items.weapon;
// }
//
// function _prepareMember(member, self) {
// self.selectedMember = members[member._id];
// }
//
// $rootScope.$on('userUpdated', function(event, user){
// addToMembersList(user);
// })