defmodule BdfrBrowser.RenderUtils do def selftext(txt) when is_binary(txt) do Earmark.as_html!(txt) end def comment(cmt) when is_binary(cmt) do Earmark.as_html!(cmt) end def message(msg) when is_binary(msg) do img_replacement = "

" msg |> maybe_insert_image(img_replacement) |> String.replace(~r/https:\/\/i\.redd\.it\/(.+)/, img_replacement) |> Earmark.as_html!() end def link_to_user(name) when is_binary(name) and name in ~w([deleted] DELETED), do: name def link_to_user(name) when is_binary(name), do: "#{name}" # Helper defp maybe_insert_image(<<"mxc://reddit.com/", filename::binary>> = msg, replacement) when is_binary(msg) do chat_directory = Application.fetch_env!(:bdfr_browser, :chat_directory) img_directory = Path.join([chat_directory, "images"]) imgs = Path.wildcard("#{img_directory}/#{filename}.*") if Enum.empty?(imgs) do msg else img = hd(imgs) String.replace(replacement, "\\1", Path.basename(img)) end end defp maybe_insert_image(msg, _replacement) when is_binary(msg), do: msg end