From ce4322cf8842f708326966d1b207293420adf518 Mon Sep 17 00:00:00 2001 From: zoey Date: Sat, 18 Jan 2025 13:08:42 -0300 Subject: [PATCH 1/2] Atualiza supabase (#252) --- lib/pescarte/storage.ex | 44 +++++++++++ lib/pescarte_web/design_system.ex | 44 +++++------ .../design_system/authenticated_navbar.ex | 4 +- .../design_system/multiple_select_input.ex | 10 +-- lib/pescarte_web/design_system/navbar.ex | 2 +- lib/pescarte_web/layouts/app.html.heex | 2 +- .../layouts/authenticated.html.heex | 2 +- lib/pescarte_web/layouts/root.html.heex | 4 +- lib/pescarte_web/live/blog/post_live/show.ex | 4 +- lib/pescarte_web/live/navbar.ex | 2 +- .../pesquisador_live/form_component.ex | 2 +- .../pesquisa/pesquisador_live/index.html.heex | 8 +- .../live/pesquisa/pesquisador_live/show.ex | 4 +- .../pesquisa/pesquisador_live/show.html.heex | 6 +- .../pesquisa/relatorio_live/form_component.ex | 4 +- .../pesquisa/relatorio_live/index.html.heex | 10 +-- lib/pescarte_web/{markdown => }/markdown.ex | 0 lib/pescarte_web/templates/agenda_html.ex | 8 +- .../templates/agenda_html/show.html.heex | 4 +- .../templates/censo_html/show.html.heex | 2 +- .../cooperativas_html/show.html.heex | 2 +- .../templates/equipes_html/show.html.heex | 56 +++++++------- .../templates/error_html/404.html.heex | 2 +- .../templates/error_html/500.html.heex | 2 +- .../templates/landing_html/show.html.heex | 66 ++++++++--------- .../templates/noticias_html/show.html.heex | 74 +++++++++---------- .../templates/pgtrs_html/show.html.heex | 2 +- .../relatorio_html/relatorio_anual.html.heex | 26 +++---- .../relatorio_html/relatorio_mensal.html.heex | 46 ++++++------ .../relatorio_trimestral.html.heex | 22 +++--- mix.exs | 38 +++++----- mix.lock | 44 +++++------ 32 files changed, 295 insertions(+), 251 deletions(-) create mode 100644 lib/pescarte/storage.ex rename lib/pescarte_web/{markdown => }/markdown.ex (100%) diff --git a/lib/pescarte/storage.ex b/lib/pescarte/storage.ex new file mode 100644 index 00000000..26d82776 --- /dev/null +++ b/lib/pescarte/storage.ex @@ -0,0 +1,44 @@ +defmodule Pescarte.Storage do + @moduledoc "Módulo que centraliza operações de gerenciamento de arquivos" + + # bucket padrão onde as imagens da parte pública são + # guardadas de forma comprimida, geralmente em formato webp + @public_image_bucket "static" + @public_image_folder "reduced_images" + + @one_year :timer.hours(24) * 365 + + @doc """ + Recupera a URL de uma imagem guardada no Storage (atualmente Supabase), + para renderizar ela na parte pública da plataforma. + + ## Params + + - `path`: O caminho até a imagem a ser renderizada, a desconsiderar o bucket, por exemplo, se o caminho no Supabase Storage é `reduced_images/aplicativos/card_censo.webp` então o argumento dessa função será `aplicativos/card_censo.webp`. + - `expires_in`: Tempo de expiração da URL, opcional, valor padrão de 1 ano. + - `opts`: Argumento opcional de configuração, por exemplo para usar a API de transformação de imagens da Supabase, passando a opção `:transform` onde o valor são parâmetros válidos de `Supabase.Storage.TransformOptions` + - `bucket`: O nome do bucket a ser usado, opcional pois o valor padrão é `static`, já com a pasta `reduced_images` adicionada ao caminho. + + ## Examples + + iex> Pescarte.Storage.get_public_area_image_url("aplicativos/card_censo.webp") + {:ok, "https://supabase-url"} + + iex> Pescarte.Storage.get_public_area_image_url("arquivo-nao-existe") + {:error, :file_not_found} + """ + def get_public_area_image_url( + path, + expires_in \\ @one_year, + opts \\ [], + bucket \\ @public_image_bucket + ) + when is_binary(path) and is_binary(bucket) do + with {:ok, client} <- Pescarte.Supabase.get_client() do + path = Path.join(@public_image_folder, path) + storage = Supabase.Storage.from(client, bucket) + opts = [{:expires_in, expires_in} | opts] + Supabase.Storage.File.create_signed_url(storage, path, opts) + end + end +end diff --git a/lib/pescarte_web/design_system.ex b/lib/pescarte_web/design_system.ex index 19d36404..9c957a64 100644 --- a/lib/pescarte_web/design_system.ex +++ b/lib/pescarte_web/design_system.ex @@ -45,7 +45,7 @@ defmodule PescarteWeb.DesignSystem do def text(%{size: "h" <> _} = assigns) do ~H""" <%= content_tag @size, class: get_text_style(@size, @color, @class), style: @style do %> - <%= render_slot(@inner_block) %> + {render_slot(@inner_block)} <% end %> """ end @@ -53,7 +53,7 @@ defmodule PescarteWeb.DesignSystem do def text(assigns) do ~H"""

- <%= render_slot(@inner_block) %> + {render_slot(@inner_block)}

""" end @@ -136,11 +136,11 @@ defmodule PescarteWeb.DesignSystem do {@rest} > <.text :if={@style == "primary"} size="base" color="text-white-100"> - <%= render_slot(@inner_block) %> + {render_slot(@inner_block)} <.text :if={@style != "primary"} size="base" color="text-blue-80"> - <%= render_slot(@inner_block) %> + {render_slot(@inner_block)} """ @@ -249,7 +249,7 @@ defmodule PescarteWeb.DesignSystem do required={@required} /> """ @@ -297,7 +297,7 @@ defmodule PescarteWeb.DesignSystem do class="radio-input" /> """ @@ -350,7 +350,7 @@ defmodule PescarteWeb.DesignSystem do ~H"""
""" @@ -438,7 +438,7 @@ defmodule PescarteWeb.DesignSystem do def text_area(assigns) do ~H"""
- <.text size="base"><%= render_slot(@label) %> + <.text size="base">{render_slot(@label)}