defmodule BerrypodWeb.Shop.Pages.Search do @moduledoc """ Search page handler for the unified Shop.Page LiveView. """ import Phoenix.Component, only: [assign: 3] import Phoenix.LiveView, only: [push_patch: 2] alias Berrypod.{Pages, Search} def init(socket, _params, _uri) do page = Pages.get_page("search") socket = socket |> assign(:page_title, "Search") |> assign(:page, page) {:noreply, socket} end def handle_params(params, _uri, socket) do query = params["q"] || "" results = if query != "", do: Search.search(query), else: [] socket = socket |> assign(:search_page_query, query) |> assign(:search_page_results, results) {:noreply, socket} end def handle_event("search_submit", %{"q" => query}, socket) do {:noreply, push_patch(socket, to: "/search?q=#{query}")} end def handle_event(_event, _params, _socket), do: :cont end