feat: alignment on import conflict resolution terms

This commit is contained in:
2026-05-01 18:54:14 +02:00
parent f39fe9c40d
commit b2ced48cc5
5 changed files with 35 additions and 8 deletions

View File

@@ -583,8 +583,8 @@ defmodule BDS.Desktop.ShellLive.ImportEditor do
<input type="hidden" name="item_type" value={Map.get(item, :item_type)} />
<input type="hidden" name="item_name" value={Map.get(item, :slug)} />
<select class="resolution-select" name="resolution">
<option value="skip" selected={Map.get(item, :resolution) == "skip"}><%= translated("importAnalysis.ignore") %></option>
<option value="merge" selected={Map.get(item, :resolution) == "merge"}><%= translated("importAnalysis.overwrite") %></option>
<option value="ignore" selected={conflict_resolution_selected?(item, "ignore")}><%= translated("importAnalysis.ignore") %></option>
<option value="overwrite" selected={conflict_resolution_selected?(item, "overwrite")}><%= translated("importAnalysis.overwrite") %></option>
<option value="import" selected={Map.get(item, :resolution) == "import"}><%= translated("importAnalysis.importNewSlug") %></option>
</select>
</form>
@@ -883,4 +883,12 @@ defmodule BDS.Desktop.ShellLive.ImportEditor do
defp present?(value), do: value not in [nil, ""]
defp blank?(value), do: value in [nil, ""]
defp conflict_resolution_selected?(item, "ignore") do
Map.get(item, :resolution, "ignore") in ["ignore", "skip"]
end
defp conflict_resolution_selected?(item, "overwrite") do
Map.get(item, :resolution) in ["overwrite", "merge"]
end
end

View File

@@ -230,11 +230,12 @@ defmodule BDS.Desktop.ShellLive.ImportEditor.AnalysisState do
def importable_entity_count(items) do
Enum.count(items || [], fn item ->
item.status == "new" or
(item.status == "conflict" and
Map.get(item, :resolution, "ignore") not in ["ignore", "skip"])
(item.status == "conflict" and conflict_importable?(Map.get(item, :resolution, "ignore")))
end)
end
defp conflict_importable?(resolution), do: resolution in ["overwrite", "merge", "import"]
@spec detail_items(term(), term()) :: term()
def detail_items(nil, _bucket), do: []