Create message read_mark resource

This commit is contained in:
Anton Khorev 2025-01-23 03:41:19 +03:00
parent 8cf77a2f36
commit cc3bccb9b3
9 changed files with 179 additions and 116 deletions

View file

@ -0,0 +1,39 @@
module Messages
class ReadMarksController < ApplicationController
layout "site"
before_action :authorize_web
before_action :set_locale
authorize_resource :message
before_action :check_database_readable
before_action :check_database_writable
def create
mark true
end
def destroy
mark false
end
private
def mark(message_read)
@message = current_user.messages.unscope(:where => :muted).find(params[:message_id])
@message.message_read = message_read
if @message.save
flash[:notice] = t ".notice"
if @message.muted?
redirect_to messages_muted_inbox_path, :status => :see_other
else
redirect_to messages_inbox_path, :status => :see_other
end
end
rescue ActiveRecord::RecordNotFound
@title = t "messages.no_such_message.title"
render :template => "messages/no_such_message", :status => :not_found
end
end
end

View file

@ -10,7 +10,7 @@ class MessagesController < ApplicationController
before_action :lookup_user, :only => [:new, :create]
before_action :check_database_readable
before_action :check_database_writable, :only => [:new, :create, :mark, :destroy]
before_action :check_database_writable, :only => [:new, :create, :destroy]
allow_thirdparty_images :only => [:new, :create, :show]
@ -73,30 +73,6 @@ class MessagesController < ApplicationController
render :action => "no_such_message", :status => :not_found
end
# Set the message as being read or unread.
def mark
@message = current_user.messages.unscope(:where => :muted).find(params[:message_id])
if params[:mark] == "unread"
message_read = false
notice = t ".as_unread"
else
message_read = true
notice = t ".as_read"
end
@message.message_read = message_read
if @message.save
flash[:notice] = notice
if @message.muted?
redirect_to messages_muted_inbox_path, :status => :see_other
else
redirect_to messages_inbox_path, :status => :see_other
end
end
rescue ActiveRecord::RecordNotFound
@title = t "messages.no_such_message.title"
render :action => "no_such_message", :status => :not_found
end
# Moves message into Inbox by unsetting the muted-flag
def unmute
message = current_user.muted_messages.find(params[:message_id])