mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 07:07:35 +01:00
100 lines
2.6 KiB
JavaScript
100 lines
2.6 KiB
JavaScript
'use strict';
|
|
|
|
angular.module('habitrpg')
|
|
.factory('Challenges', ['ApiUrl', '$resource', '$http',
|
|
function(ApiUrl, $resource, $http) {
|
|
var apiV3Prefix = '/api/v3';
|
|
|
|
function createChallenge (challengeData) {
|
|
return $http({
|
|
method: 'POST',
|
|
url: apiV3Prefix + '/challenges',
|
|
data: challengeData,
|
|
});
|
|
}
|
|
|
|
function joinChallenge (challengeId) {
|
|
return $http({
|
|
method: 'POST',
|
|
url: apiV3Prefix + '/challenges/' + challengeId + '/join',
|
|
});
|
|
}
|
|
|
|
function leaveChallenge (challengeId, keep) {
|
|
return $http({
|
|
method: 'POST',
|
|
url: apiV3Prefix + '/challenges/' + challengeId + '/leave',
|
|
data: {
|
|
keep: keep,
|
|
}
|
|
});
|
|
}
|
|
|
|
function getUserChallenges () {
|
|
return $http({
|
|
method: 'GET',
|
|
url: apiV3Prefix + '/challenges/user',
|
|
});
|
|
}
|
|
|
|
function getGroupChallenges (groupId) {
|
|
return $http({
|
|
method: 'GET',
|
|
url: apiV3Prefix + '/challenges/groups/' + groupId,
|
|
});
|
|
}
|
|
|
|
function getChallenge (challengeId) {
|
|
return $http({
|
|
method: 'GET',
|
|
url: apiV3Prefix + '/challenges/' + challengeId,
|
|
});
|
|
}
|
|
|
|
function exportChallengeCsv (challengeId) {
|
|
return $http({
|
|
method: 'GET',
|
|
url: apiV3Prefix + '/challenges/' + challengeId + '/export/csv',
|
|
});
|
|
}
|
|
|
|
function updateChallenge (challengeId, updateData) {
|
|
|
|
var challengeDataToSend = _.omit(updateData, ['tasks', 'habits', 'todos', 'rewards', 'group']);
|
|
if (challengeDataToSend.leader && challengeDataToSend.leader._id) challengeDataToSend.leader = challengeDataToSend.leader._id;
|
|
|
|
return $http({
|
|
method: 'PUT',
|
|
url: apiV3Prefix + '/challenges/' + challengeId,
|
|
data: challengeDataToSend,
|
|
});
|
|
}
|
|
|
|
function deleteChallenge (challengeId) {
|
|
return $http({
|
|
method: 'DELETE',
|
|
url: apiV3Prefix + '/challenges/' + challengeId,
|
|
});
|
|
}
|
|
|
|
function selectChallengeWinner (challengeId, winnerId) {
|
|
return $http({
|
|
method: 'POST',
|
|
url: apiV3Prefix + '/challenges/' + challengeId + '/selectWinner/' + winnerId,
|
|
});
|
|
}
|
|
|
|
return {
|
|
createChallenge: createChallenge,
|
|
joinChallenge: joinChallenge,
|
|
leaveChallenge: leaveChallenge,
|
|
getUserChallenges: getUserChallenges,
|
|
getGroupChallenges: getGroupChallenges,
|
|
getChallenge: getChallenge,
|
|
exportChallengeCsv: exportChallengeCsv,
|
|
updateChallenge: updateChallenge,
|
|
deleteChallenge: deleteChallenge,
|
|
selectChallengeWinner: selectChallengeWinner,
|
|
}
|
|
}]);
|