Files
archived-teslamate/lib/teslamate_web.ex
T
marvelm da819054f6 feat: Upgrade web development framework to Phoenix 1.7 (#3615)
* Upgrade to phoenix 1.7.0
The minimal changes necessary to compile the application

* Import Phoenix.Component instead of LiveView

* Fix compilation warnings

* mix format

* Update tests to trim newline characters

* mix gettext.extract --merge

* style: correct linting

* rebuild gettext

* fix: correct spacing before unit for energy added

* fix: use unicode character for whitespace

* fix: spacing with witespace

* fix: use numeric value for charge_energy_added in charging test

* fix: avoid warning about unsued function, which is actually used in plug

* fix: use whitespace in test before charge_energy_added

---------

Co-authored-by: JakobLichterfeld <jakob-lichterfeld@gmx.de>
2024-02-07 19:23:53 +01:00

120 lines
2.8 KiB
Elixir

defmodule TeslaMateWeb do
@moduledoc """
The entrypoint for defining your web interface, such
as controllers, views, channels and so on.
This can be used in your application as:
use TeslaMateWeb, :controller
use TeslaMateWeb, :view
The definitions below will be executed for every view,
controller, etc, so keep them short and clean, focused
on imports, uses and aliases.
Do NOT define functions inside the quoted expressions
below. Instead, define any helper function in modules
and import those modules here.
"""
def static_paths, do: ~w(assets fonts images favicon.ico robots.txt android-chrome-192x192.png
android-chrome-512x512.png apple-touch-icon.png browserconfig.xml
favicon-16x16.png favicon-32x32.png mstile-150x150.png
safari-pinned-tab.svg site.webmanifest)
def controller do
quote do
use Phoenix.Controller, namespace: TeslaMateWeb
import Plug.Conn
import TeslaMateWeb.Gettext
alias TeslaMateWeb.Router.Helpers, as: Routes
unquote(verified_routes())
end
end
def view do
quote do
use Phoenix.View,
root: "lib/teslamate_web/templates",
namespace: TeslaMateWeb
# Import convenience functions from controllers
import Phoenix.Controller,
only: [get_flash: 1, get_flash: 2, view_module: 1, view_template: 1]
# Include shared imports and aliases for views
unquote(view_helpers())
end
end
def live_view do
quote do
use Phoenix.LiveView,
layout: {TeslaMateWeb.LayoutView, :live}
unquote(view_helpers())
end
end
def live_component do
quote do
use Phoenix.LiveComponent
unquote(view_helpers())
end
end
def router do
quote do
use Phoenix.Router
import Plug.Conn
import Phoenix.Controller
import Phoenix.LiveView.Router
end
end
def channel do
quote do
use Phoenix.Channel
import TeslaMateWeb.Gettext
end
end
defp view_helpers do
quote do
# Use all HTML functionality (forms, tags, etc)
use Phoenix.HTML
# Import convenience functions for LiveView rendering
import Phoenix.LiveView.Helpers
# Import basic rendering functionality (render, render_layout, etc)
import Phoenix.View
import TeslaMateWeb.ErrorHelpers
import TeslaMateWeb.Gettext
alias TeslaMateWeb.Router.Helpers, as: Routes
unquote(verified_routes())
end
end
def verified_routes do
quote do
use Phoenix.VerifiedRoutes,
endpoint: TeslaMateWeb.Endpoint,
router: TeslaMateWeb.Router,
statics: TeslaMateWeb.static_paths()
end
end
@doc """
When used, dispatch to the appropriate controller/view/etc.
"""
defmacro __using__(which) when is_atom(which) do
apply(__MODULE__, which, [])
end
end