defmodule BerrypodWeb.Shop.Contact do use BerrypodWeb, :live_view alias Berrypod.Orders alias Berrypod.Orders.OrderNotifier alias BerrypodWeb.OrderLookupController @impl true def mount(_params, _session, socket) do {:ok, socket |> assign(:page_title, "Contact") |> assign( :page_description, "Get in touch with us for any questions or help with your order." ) |> assign(:og_url, BerrypodWeb.Endpoint.url() <> "/contact") |> assign(:tracking_state, :idle)} end @impl true def handle_event("lookup_orders", %{"email" => email}, socket) do orders = Orders.list_orders_by_email(email) state = if orders == [] do :not_found else token = OrderLookupController.generate_token(email) link = BerrypodWeb.Endpoint.url() <> ~p"/orders/verify/#{token}" OrderNotifier.deliver_order_lookup(email, link) :sent end {:noreply, assign(socket, :tracking_state, state)} end @impl true def handle_event("reset_tracking", _params, socket) do {:noreply, assign(socket, :tracking_state, :idle)} end @impl true def render(assigns) do ~H""" """ end end