comment votes: fix error handling.

Return the comment itself and a standard error response on failure.
This commit is contained in:
evazion
2019-08-19 16:57:38 -05:00
parent b8450671f2
commit 782d9f3d61
8 changed files with 19 additions and 48 deletions

View File

@@ -2,20 +2,17 @@ class CommentVotesController < ApplicationController
respond_to :js, :json, :xml
before_action :member_only
skip_before_action :api_check
rescue_with CommentVote::Error, ActiveRecord::RecordInvalid, status: 422
def create
@comment = Comment.find(params[:comment_id])
@comment_vote = @comment.vote!(params[:score])
rescue CommentVote::Error, ActiveRecord::RecordInvalid => x
@error = x
render status: 422
respond_with(@comment)
end
def destroy
@comment = Comment.find(params[:comment_id])
@comment.unvote!
rescue CommentVote::Error => x
@error = x
render status: 422
respond_with(@comment)
end
end

View File

@@ -1,8 +1,4 @@
<% if @error %>
Danbooru.error("<%= j @error.to_s %>");
<% elsif @comment_vote.errors.any? %>
Danbooru.error("<%= j @comment_vote.errors.full_messages.join('; ') %>");
<% elsif @comment_vote.is_negative? %>
<% if @comment_vote.is_negative? %>
$(".comment[data-comment-id=<%= @comment.id %>]").remove();
<% end %>

View File

@@ -1,7 +0,0 @@
<% if @error %>
{"success": false, "errors": <%= @error.to_s.to_json.html_safe %>}
<% elsif @comment_vote.errors.any? %>
{"success": false, "errors": <%= @comment_vote.errors.full_messages.to_json.html_safe %>}
<% else %>
{"success": true}
<% end %>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<% if @comment_vote.errors.any? %>
<response success="false"><%= @comment_vote.errors.full_messages.to_json.html_safe %></response>
<% else %>
<response success="true"/>
<% end %>

View File

@@ -1,7 +1,3 @@
<% if @error %>
Danbooru.error("<%= j @error.to_s %>");
<% else %>
$("#comment-vote-up-link-for-<%= @comment.id %>").show();
$("#comment-vote-down-link-for-<%= @comment.id %>").show();
$("#comment-unvote-link-for-<%= @comment.id %>").hide();
<% end %>
$("#comment-vote-up-link-for-<%= @comment.id %>").show();
$("#comment-vote-down-link-for-<%= @comment.id %>").show();
$("#comment-unvote-link-for-<%= @comment.id %>").hide();

View File

@@ -1,5 +0,0 @@
<% if @error %>
{"success": false, "reason": <%= @error.to_s.to_json.html_safe %>}
<% else %>
{"success": true}
<% end %>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<% if @error %>
<response success="false"><%= @error.to_s %></response>
<% else %>
<response success="true"/>
<% end %>