Skip to content
Snippets Groups Projects
Commit 61cd092e authored by Travis Odom's avatar Travis Odom
Browse files

Allow deleting of files whose corresponding message is not currently loaded in the client

parent 39b320be
No related branches found
No related tags found
No related merge requests found
...@@ -24,9 +24,7 @@ Template.uploadedFilesList.helpers ...@@ -24,9 +24,7 @@ Template.uploadedFilesList.helpers
return s.escapeHTML @name return s.escapeHTML @name
canDelete: -> canDelete: ->
msg = ChatMessage.findOne { file: { _id: @_id } } return RocketChat.authz.hasAtLeastOnePermission('delete-message', @rid) or RocketChat.settings.get('Message_AllowDeleting') and @userId is Meteor.userId()
if msg
return RocketChat.authz.hasAtLeastOnePermission('delete-message', msg.rid) or RocketChat.settings.get('Message_AllowDeleting') and msg.u?._id is Meteor.userId()
Template.uploadedFilesList.events Template.uploadedFilesList.events
'click .room-file-item': (e, t) -> 'click .room-file-item': (e, t) ->
...@@ -53,9 +51,15 @@ Template.uploadedFilesList.events ...@@ -53,9 +51,15 @@ Template.uploadedFilesList.events
timer: 1000 timer: 1000
showConfirmButton: false showConfirmButton: false
# Check if the upload message for this file is currently loaded
msg = ChatMessage.findOne { file: { _id: self._id } } msg = ChatMessage.findOne { file: { _id: self._id } }
RocketChat.models.Uploads.remove self._id, () -> RocketChat.models.Uploads.remove self._id, () ->
chatMessages[Session.get('openedRoom')].deleteMsg(msg); if msg
chatMessages[Session.get('openedRoom')].deleteMsg(msg);
else
Meteor.call 'deleteFileMessage', self._id, (error, result) ->
if error
return Errors.throw error.reason
'scroll .content': _.throttle (e, t) -> 'scroll .content': _.throttle (e, t) ->
if e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight if e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight
......
...@@ -38,4 +38,8 @@ Meteor.methods ...@@ -38,4 +38,8 @@ Meteor.methods
if showDeletedStatus if showDeletedStatus
RocketChat.models.Messages.setAsDeletedById originalMessage._id RocketChat.models.Messages.setAsDeletedById originalMessage._id
else else
RocketChat.Notifications.notifyRoom originalMessage.rid, 'deleteMessage', { _id: originalMessage._id } RocketChat.Notifications.notifyRoom originalMessage.rid, 'deleteMessage', {_id: originalMessage._id}
,
deleteFileMessage: (fileID) ->
Meteor.call 'deleteMessage', RocketChat.models.Messages.findOne { file: { _id: fileID } }
...@@ -17,6 +17,7 @@ Meteor.publish 'roomFiles', (rid, limit = 50) -> ...@@ -17,6 +17,7 @@ Meteor.publish 'roomFiles', (rid, limit = 50) ->
uploadedAt: -1 uploadedAt: -1
fields: fields:
_id: 1 _id: 1
userId: 1
rid: 1 rid: 1
name: 1 name: 1
type: 1 type: 1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment