refactor solution for #3804

This commit is contained in:
Albert Yi
2018-08-07 13:31:45 -07:00
parent d053e135ab
commit b56681a609
5 changed files with 25 additions and 16 deletions

View File

@@ -1,2 +1,17 @@
module UploadsHelper
def render_status(upload)
case upload.status
when /duplicate: (\d+)/
dup_post_id = $1
link_to(upload.status.gsub(/error: RuntimeError - /, ""), post_path(dup_post_id))
when /\Aerror: /
search_params = params[:search].permit!
link_to(upload.sanitized_status, uploads_path(search: search_params.merge({ status: upload.sanitized_status })))
else
search_params = params[:search].permit!
link_to(upload.status, uploads_path(search: search_params.merge({ status: upload.status })))
end
end
end

View File

@@ -117,6 +117,14 @@ class Upload < ApplicationRecord
status =~ /error:/
end
def sanitized_status
if is_errored?
status.sub(/DETAIL:.+/m, "...")
else
status
end
end
def duplicate_post_id
@duplicate_post_id ||= status[/duplicate: (\d+)/, 1]
end

View File

@@ -2,18 +2,4 @@ class UploadPresenter < Presenter
def initialize(upload)
@upload = upload
end
def status(template)
case @upload.status
when /duplicate: (\d+)/
dup_post_id = $1
template.link_to(@upload.status.gsub(/error: RuntimeError - /, ""), template.__send__(:post_path, dup_post_id))
when /\Aerror: /
@upload.status.gsub(/DETAIL:.+/m, "...")
else
@upload.status
end
end
end

View File

@@ -67,7 +67,7 @@
<br><%= time_ago_in_words_tagged upload.created_at %>
</td>
<td class="col-normal">
<%= upload.presenter.status(self) %>
<%= render_status(upload) %>
</td>
</tr>
<% end %>

View File

@@ -28,7 +28,7 @@
<% elsif @upload.is_duplicate? %>
<p>This upload is a duplicate: <%= link_to "post ##{@upload.duplicate_post_id}", post_path(@upload.duplicate_post_id) %></p>
<% else %>
<p>An error occurred: <%= @upload.presenter.status(self) %></p>
<p>An error occurred: <%= render_status(@upload) %></p>
<% if CurrentUser.user.is_builder? %>
<ul>
<% @upload.backtrace.to_s.split(/\n/).each do |line| %>