mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
delete chat message
This commit is contained in:
@@ -53,6 +53,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A
|
|||||||
|
|
||||||
.controller('ChatCtrl', ['$scope', 'Groups', 'User', function($scope, Groups, User){
|
.controller('ChatCtrl', ['$scope', 'Groups', 'User', function($scope, Groups, User){
|
||||||
$scope._chatMessage = '';
|
$scope._chatMessage = '';
|
||||||
|
|
||||||
$scope.postChat = function(group, message){
|
$scope.postChat = function(group, message){
|
||||||
if (_.isEmpty(message)) return
|
if (_.isEmpty(message)) return
|
||||||
$('.chat-btn').addClass('disabled');
|
$('.chat-btn').addClass('disabled');
|
||||||
@@ -62,9 +63,20 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A
|
|||||||
$('.chat-btn').removeClass('disabled');
|
$('.chat-btn').removeClass('disabled');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$scope.deleteChatMessage = function(group, message){
|
||||||
|
if(message.uuid === User.user.id){
|
||||||
|
group.$deleteChatMessage({messageId: message.id}, function(){
|
||||||
|
var i = _.indexOf(group.chat, message);
|
||||||
|
if(i !== -1) group.chat.splice(i, 1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$scope.sync = function(group){
|
$scope.sync = function(group){
|
||||||
group.$get();
|
group.$get();
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.nameTagClasses = function(message){
|
$scope.nameTagClasses = function(message){
|
||||||
if (message.contributor) {
|
if (message.contributor) {
|
||||||
if (message.contributor.match(/npc/i) || message.contributor.match(/royal/i)) {
|
if (message.contributor.match(/npc/i) || message.contributor.match(/royal/i)) {
|
||||||
|
|||||||
@@ -8,10 +8,11 @@ angular.module('groupServices', ['ngResource']).
|
|||||||
factory('Groups', ['API_URL', '$resource', 'User', '$q', 'Members',
|
factory('Groups', ['API_URL', '$resource', 'User', '$q', 'Members',
|
||||||
function(API_URL, $resource, User, $q, Members) {
|
function(API_URL, $resource, User, $q, Members) {
|
||||||
var Group = $resource(API_URL + '/api/v1/groups/:gid',
|
var Group = $resource(API_URL + '/api/v1/groups/:gid',
|
||||||
{gid:'@_id'},
|
{gid:'@_id', messageId: '@_messageId'},
|
||||||
{
|
{
|
||||||
//'query': {method: "GET", isArray:false}
|
//'query': {method: "GET", isArray:false}
|
||||||
postChat: {method: "POST", url: API_URL + '/api/v1/groups/:gid/chat'},
|
postChat: {method: "POST", url: API_URL + '/api/v1/groups/:gid/chat'},
|
||||||
|
deleteChatMessage: {method: "DELETE", url: API_URL + '/api/v1/groups/:gid/chat/:messageId'},
|
||||||
join: {method: "POST", url: API_URL + '/api/v1/groups/:gid/join'},
|
join: {method: "POST", url: API_URL + '/api/v1/groups/:gid/join'},
|
||||||
leave: {method: "POST", url: API_URL + '/api/v1/groups/:gid/leave'},
|
leave: {method: "POST", url: API_URL + '/api/v1/groups/:gid/leave'},
|
||||||
invite: {method: "POST", url: API_URL + '/api/v1/groups/:gid/invite'}
|
invite: {method: "POST", url: API_URL + '/api/v1/groups/:gid/invite'}
|
||||||
|
|||||||
@@ -166,6 +166,26 @@ api.postChat = function(req, res, next) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
api.deleteChatMessage = function(req, res, next){
|
||||||
|
var user = res.locals.user
|
||||||
|
var group = res.locals.group;
|
||||||
|
var message = _.find(group.chat, {id: req.params.messageId, uuid: user.id});
|
||||||
|
|
||||||
|
if(message === undefined) return res.json(500, {err: "Message not found!"});
|
||||||
|
|
||||||
|
if(user.id !== message.uuid || (user.backer && !user.backer.admin)){
|
||||||
|
return res.json(500, {err: "Not authorized to delete this message!"});
|
||||||
|
}
|
||||||
|
|
||||||
|
group.chat = _.without(group.chat, message);
|
||||||
|
|
||||||
|
group.save(function(err, data){
|
||||||
|
if(err) return res.json(500, {err: err});
|
||||||
|
|
||||||
|
res.send(204);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
api.join = function(req, res, next) {
|
api.join = function(req, res, next) {
|
||||||
var user = res.locals.user,
|
var user = res.locals.user,
|
||||||
group = res.locals.group;
|
group = res.locals.group;
|
||||||
|
|||||||
@@ -61,8 +61,8 @@ router.post('/groups/:gid/invite', auth.auth, groups.attachGroup, groups.invite)
|
|||||||
|
|
||||||
//GET /groups/:gid/chat
|
//GET /groups/:gid/chat
|
||||||
router.post('/groups/:gid/chat', auth.auth, groups.attachGroup, groups.postChat);
|
router.post('/groups/:gid/chat', auth.auth, groups.attachGroup, groups.postChat);
|
||||||
|
router["delete"]('/groups/:gid/chat/:messageId', auth.auth, groups.attachGroup, groups.deleteChatMessage);
|
||||||
//PUT /groups/:gid/chat/:messageId
|
//PUT /groups/:gid/chat/:messageId
|
||||||
//DELETE /groups/:gid/chat/:messageId
|
|
||||||
|
|
||||||
/* Members */
|
/* Members */
|
||||||
router.get('/members/:uid', groups.getMember);
|
router.get('/members/:uid', groups.getMember);
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ li(ng-repeat='message in group.chat', ng-class='{highlight: message.text.indexOf
|
|||||||
span(ng-bind-html="message.text | linky:'_blank'") -
|
span(ng-bind-html="message.text | linky:'_blank'") -
|
||||||
span
|
span
|
||||||
span.muted.time
|
span.muted.time
|
||||||
| {{relativeDate(message.timestamp, _currentTime)}}
|
| {{relativeDate(message.timestamp, _currentTime) + ' '}}
|
||||||
a(ng-show='user.backer.admin || message.uuid == user.id', x-bind='click:deleteChatMessage')
|
a(ng-show='user.backer.admin || message.uuid == user.id', ng-click='deleteChatMessage(group, message)')
|
||||||
i.icon-remove(tooltip='Delete')
|
i.icon-remove(tooltip='Delete')
|
||||||
|
|||||||
Reference in New Issue
Block a user