Current section
Files
Jump to
Current section
Files
lib/error_tracker/web/router/routes.ex
defmodule ErrorTracker.Web.Router.Routes do
@moduledoc false
alias ErrorTracker.Error
alias ErrorTracker.Occurrence
alias Phoenix.LiveView.Socket
@doc """
Returns the dashboard path
"""
def dashboard_path(socket = %Socket{}, params \\ %{}) do
socket
|> dashboard_uri(params)
|> URI.to_string()
end
@doc """
Returns the path to see the details of an error
"""
def error_path(socket = %Socket{}, %Error{id: id}, params \\ %{}) do
socket
|> dashboard_uri(params)
|> URI.append_path("/#{id}")
|> URI.to_string()
end
@doc """
Returns the path to see the details of an occurrence
"""
def occurrence_path(socket = %Socket{}, %Occurrence{id: id, error_id: error_id}, params \\ %{}) do
socket
|> dashboard_uri(params)
|> URI.append_path("/#{error_id}/#{id}")
|> URI.to_string()
end
defp dashboard_uri(socket = %Socket{}, params) do
%URI{
path: socket.private[:dashboard_path],
query: if(Enum.any?(params), do: URI.encode_query(params))
}
end
end