From d248485989baeb5bd9f9ffde3fd0b42856f0886a Mon Sep 17 00:00:00 2001 From: Cristen Jones Date: Mon, 16 Mar 2026 13:57:07 -0400 Subject: [PATCH 1/2] refactor: extract assign_service --- lib/dotcom_web/live/schedule_finder_live.ex | 25 ++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/lib/dotcom_web/live/schedule_finder_live.ex b/lib/dotcom_web/live/schedule_finder_live.ex index dde71fdbb0..f5d094272c 100644 --- a/lib/dotcom_web/live/schedule_finder_live.ex +++ b/lib/dotcom_web/live/schedule_finder_live.ex @@ -231,18 +231,9 @@ defmodule DotcomWeb.ScheduleFinderLive do end def handle_event("select_service", %{"selected_service" => selected_service_label}, socket) do - selected_dated_service = - socket.assigns.service_groups - |> Enum.flat_map(& &1.services) - |> Enum.find(&(&1.label == selected_service_label)) - - daily_schedule_date = - selected_dated_service.last_service_date - {:noreply, socket - |> assign(:selected_service_name, selected_service_label) - |> assign(:daily_schedule_date, daily_schedule_date) + |> assign_service(selected_service_label) |> assign_departures()} end @@ -365,6 +356,20 @@ defmodule DotcomWeb.ScheduleFinderLive do end end + defp assign_service(socket, selected_service_label) do + selected_dated_service = + socket.assigns.service_groups + |> Enum.flat_map(& &1.services) + |> Enum.find(&(&1.label == selected_service_label)) + + daily_schedule_date = + selected_dated_service.last_service_date + + socket + |> assign(:selected_service_name, selected_service_label) + |> assign(:daily_schedule_date, daily_schedule_date) + end + defp get_departures(route_id, direction_id, stop_id, date) do case daily_departures(route_id, direction_id, stop_id, date) do {:ok, departures} -> {:ok, %{departures: departures}} From b3e3ab1ced4bfa07daf7ff26fda9372f1b335120 Mon Sep 17 00:00:00 2001 From: Cristen Jones Date: Mon, 16 Mar 2026 13:58:12 -0400 Subject: [PATCH 2/2] feat(ScheduleFinderLive): remove departures immediately on selecting service --- lib/dotcom_web/live/schedule_finder_live.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/dotcom_web/live/schedule_finder_live.ex b/lib/dotcom_web/live/schedule_finder_live.ex index f5d094272c..d65fb46d0f 100644 --- a/lib/dotcom_web/live/schedule_finder_live.ex +++ b/lib/dotcom_web/live/schedule_finder_live.ex @@ -233,6 +233,7 @@ defmodule DotcomWeb.ScheduleFinderLive do def handle_event("select_service", %{"selected_service" => selected_service_label}, socket) do {:noreply, socket + |> assign(:departures, AsyncResult.loading()) |> assign_service(selected_service_label) |> assign_departures()} end