update a user's unread message count after bulk-delete
only count messages that are both unread and undeleted
This commit is contained in:
parent
285fd82c16
commit
efe1353b87
|
@ -109,6 +109,8 @@ class MessagesController < ApplicationController
|
||||||
|
|
||||||
flash[:success] = "Deleted #{deleted} message#{deleted == 1 ? "" : "s"}."
|
flash[:success] = "Deleted #{deleted} message#{deleted == 1 ? "" : "s"}."
|
||||||
|
|
||||||
|
@user.update_unread_message_count!
|
||||||
|
|
||||||
return redirect_to "/messages"
|
return redirect_to "/messages"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -120,7 +122,6 @@ class MessagesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def message_params
|
def message_params
|
||||||
params.require(:message).permit(
|
params.require(:message).permit(
|
||||||
:recipient_username, :subject, :body,
|
:recipient_username, :subject, :body,
|
||||||
|
@ -128,7 +129,8 @@ private
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_message
|
def find_message
|
||||||
if @message = Message.where(:short_id => params[:message_id] || params[:id]).first
|
if @message = Message.where(:short_id => params[:message_id] ||
|
||||||
|
params[:id]).first
|
||||||
if (@message.author_user_id == @user.id ||
|
if (@message.author_user_id == @user.id ||
|
||||||
@message.recipient_user_id == @user.id)
|
@message.recipient_user_id == @user.id)
|
||||||
return true
|
return true
|
||||||
|
|
|
@ -244,7 +244,7 @@ class User < ActiveRecord::Base
|
||||||
|
|
||||||
def update_unread_message_count!
|
def update_unread_message_count!
|
||||||
Keystore.put("user:#{self.id}:unread_messages",
|
Keystore.put("user:#{self.id}:unread_messages",
|
||||||
Message.where(:recipient_user_id => self.id,
|
Message.where("recipient_user_id = ? AND (has_been_read = ? AND " <<
|
||||||
:has_been_read => false).count)
|
"deleted_by_recipient = ?)", self.id, false, false).count)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue