diff --git a/CHANGELOG.md b/CHANGELOG.md index fcd6c8109a..7daaf0faec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,9 @@ and this project adheres to ### Fixed +- Fix `collaborative_editor_url/2` incorrectly mapping trigger/edge selections + to `job` param when switching from legacy to collaborative editor + [#4375](https://github.com/OpenFn/lightning/issues/4375) - Consider manual runs for "next cron run input" via the `last_run_final_dataclip` function [#4584](https://github.com/OpenFn/lightning/issues/4584) diff --git a/lib/lightning_web/live/workflow_live/edit.ex b/lib/lightning_web/live/workflow_live/edit.ex index 6fe805d3d3..81f77ec330 100644 --- a/lib/lightning_web/live/workflow_live/edit.ex +++ b/lib/lightning_web/live/workflow_live/edit.ex @@ -1644,7 +1644,11 @@ defmodule LightningWeb.WorkflowLive.Edit do }) collaborative_url = - Helpers.collaborative_editor_url(params, socket.assigns.live_action) + Helpers.collaborative_editor_url( + params, + socket.assigns.live_action, + socket.assigns + ) {:noreply, push_navigate(socket, to: collaborative_url)} end diff --git a/lib/lightning_web/live/workflow_live/helpers.ex b/lib/lightning_web/live/workflow_live/helpers.ex index 4f32430eb7..8870021dca 100644 --- a/lib/lightning_web/live/workflow_live/helpers.ex +++ b/lib/lightning_web/live/workflow_live/helpers.ex @@ -417,12 +417,12 @@ defmodule LightningWeb.WorkflowLive.Helpers do "/projects/proj-1/w/wf-1?custom=value&job=job-123&v=42" """ - def collaborative_editor_url(params, live_action) do + def collaborative_editor_url(params, live_action, assigns \\ %{}) do collaborative_params = params |> Map.drop(["id", "project_id"]) |> Enum.reduce(%{}, fn {key, value}, acc -> - convert_param(key, value, acc, params) + convert_param(key, value, acc, assigns) end) base_url = collaborative_base_url(params, live_action) diff --git a/test/lightning_web/live/workflow_live/helpers_test.exs b/test/lightning_web/live/workflow_live/helpers_test.exs index 25d8bf0239..a3af2f9aad 100644 --- a/test/lightning_web/live/workflow_live/helpers_test.exs +++ b/test/lightning_web/live/workflow_live/helpers_test.exs @@ -78,6 +78,45 @@ defmodule LightningWeb.WorkflowLive.HelpersTest do assert result == "/projects/proj-1/w/wf-1?job=unknown-id" end + test "maps 's' to 'trigger' when assigns identify it as a trigger" do + params = %{ + "s" => "trigger-xyz", + "project_id" => "proj-1", + "id" => "wf-1" + } + + assigns = %{selected_trigger: %{id: "trigger-xyz"}} + + result = Helpers.collaborative_editor_url(params, :edit, assigns) + assert result == "/projects/proj-1/w/wf-1?trigger=trigger-xyz" + end + + test "maps 's' to 'edge' when assigns identify it as an edge" do + params = %{ + "s" => "edge-123", + "project_id" => "proj-1", + "id" => "wf-1" + } + + assigns = %{selected_edge: %{id: "edge-123"}} + + result = Helpers.collaborative_editor_url(params, :edit, assigns) + assert result == "/projects/proj-1/w/wf-1?edge=edge-123" + end + + test "maps 's' to 'job' when assigns identify it as a job" do + params = %{ + "s" => "job-abc", + "project_id" => "proj-1", + "id" => "wf-1" + } + + assigns = %{selected_job: %{id: "job-abc"}} + + result = Helpers.collaborative_editor_url(params, :edit, assigns) + assert result == "/projects/proj-1/w/wf-1?job=job-abc" + end + test "converts 'm=expand' to 'panel=editor'" do params = %{ "m" => "expand",