File tree Expand file tree Collapse file tree 2 files changed +32
-1
lines changed Expand file tree Collapse file tree 2 files changed +32
-1
lines changed Original file line number Diff line number Diff line change @@ -140,6 +140,16 @@ defmodule NervesHubWeb.Live.Firmware do
140
140
} } ->
141
141
error_feedback ( socket , "No matching product could be found." )
142
142
143
+ { :error ,
144
+ % Ecto.Changeset {
145
+ errors: [
146
+ uuid:
147
+ { "has already been taken" ,
148
+ [ constraint: :unique , constraint_name: "firmwares_product_id_uuid_index" ] }
149
+ ]
150
+ } = changeset } ->
151
+ error_feedback ( socket , changeset )
152
+
143
153
{ :error , % Ecto.Changeset { } } ->
144
154
error_feedback ( socket , "Unknown error uploading firmware." )
145
155
@@ -151,6 +161,20 @@ defmodule NervesHubWeb.Live.Firmware do
151
161
end
152
162
end
153
163
164
+ defp error_feedback (
165
+ socket ,
166
+ % Ecto.Changeset { errors: [ uuid: { "has already been taken" , _ } ] } = changeset
167
+ ) do
168
+ socket
169
+ |> assign ( :error_message , "Duplicate Firmware Is Not Allowed" )
170
+ |> assign ( :error_code , :duplicate_firmware )
171
+ |> assign (
172
+ :firmware_path ,
173
+ "/org/#{ socket . assigns . org . name } /#{ socket . assigns . product . name } /firmware/#{ changeset . changes . uuid } "
174
+ )
175
+ |> noreply ( )
176
+ end
177
+
154
178
defp error_feedback ( socket , % Ecto.Changeset { } = changeset ) do
155
179
error_message =
156
180
changeset . errors
Original file line number Diff line number Diff line change 9
9
< . live_file_input upload = { @ uploads . firmware } required />
10
10
11
11
< div class = "has-error " >
12
- < span :if = { @ error_message } class = "help-block " > <%= @ error_message %> </ span >
12
+ < span :if = { @ error_message } class = "help-block " >
13
+ <%= case @ error_code do %>
14
+ <% :duplicate_firmware -> %>
15
+ <%= @ error_message %> < a href = { @ firmware_path } target = "_blank " > View Firmware</ a >
16
+ <% _ -> %>
17
+ <%= @ error_message %>
18
+ <% end %>
19
+ </ span >
13
20
</ div >
14
21
15
22
< div :for = { entry <- @ uploads . firmware . entries } class = "mt-1 " >
You can’t perform that action at this time.
0 commit comments