[Enhancement] Add Apprise support (#170)
* [WIP] add settings sidebar entry and placeholder page * [WIP] added placeholder UI and logic for settings form * Added column and UI for apprise server * Add some tests * Added placeholder command runner for apprise * [WIP] Adding apprise package * Added apprise command runner * Hooked up apprise notification module * Ensured apprise was running in verbose mode * Updated wording of apprise notification * Added apprise to README
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
defmodule PinchflatWeb.Settings.SettingController do
|
||||
use PinchflatWeb, :controller
|
||||
|
||||
alias Pinchflat.Settings
|
||||
|
||||
def show(conn, _params) do
|
||||
setting = Settings.record()
|
||||
changeset = Settings.change_setting(setting)
|
||||
|
||||
render(conn, "show.html", changeset: changeset)
|
||||
end
|
||||
|
||||
def update(conn, %{"setting" => setting_params}) do
|
||||
setting = Settings.record()
|
||||
|
||||
case Settings.update_setting(setting, setting_params) do
|
||||
{:ok, _} ->
|
||||
conn
|
||||
|> put_flash(:info, "Settings updated successfully.")
|
||||
|> redirect(to: ~p"/settings")
|
||||
|
||||
{:error, %Ecto.Changeset{} = changeset} ->
|
||||
render(conn, "show.html", changeset: changeset)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,20 @@
|
||||
defmodule PinchflatWeb.Settings.SettingHTML do
|
||||
use PinchflatWeb, :html
|
||||
|
||||
embed_templates "setting_html/*"
|
||||
|
||||
@doc """
|
||||
Renders a setting form.
|
||||
"""
|
||||
attr :changeset, Ecto.Changeset, required: true
|
||||
attr :action, :string, required: true
|
||||
|
||||
def setting_form(assigns)
|
||||
|
||||
def apprise_server_help do
|
||||
url = "https://github.com/caronc/apprise/wiki/URLBasics"
|
||||
classes = "underline decoration-bodydark decoration-1 hover:decoration-white"
|
||||
|
||||
~s(Server endpoint for Apprise notifications when new media is found. See <a href="#{url}" class="#{classes}" target="_blank">Apprise docs</a> for more information)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,21 @@
|
||||
<.simple_form :let={f} for={@changeset} action={@action}>
|
||||
<.error :if={@changeset.action}>
|
||||
Oops, something went wrong! Please check the errors below.
|
||||
</.error>
|
||||
|
||||
<h3 class="mt-8 text-2xl text-black dark:text-white">
|
||||
Notification Settings
|
||||
</h3>
|
||||
|
||||
<.input
|
||||
field={f[:apprise_server]}
|
||||
type="text"
|
||||
label="Apprise Server"
|
||||
help={apprise_server_help()}
|
||||
html_help={true}
|
||||
inputclass="font-mono text-sm"
|
||||
placeholder="https://discordapp.com/api/webhooks/{WebhookID}/{WebhookToken}"
|
||||
/>
|
||||
|
||||
<.button class="my-10 sm:mb-7.5 w-full sm:w-auto" rounding="rounded-lg">Save Settings</.button>
|
||||
</.simple_form>
|
||||
@@ -0,0 +1,12 @@
|
||||
<div class="mb-6 flex gap-3 flex-row items-center justify-between">
|
||||
<div class="flex gap-3 items-center">
|
||||
<h2 class="text-title-md2 font-bold text-black dark:text-white ml-4">
|
||||
Settings
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rounded-sm border border-stroke bg-white px-5 py-5 shadow-default dark:border-strokedark dark:bg-boxdark sm:px-7.5">
|
||||
<div class="max-w-full overflow-x-auto">
|
||||
<.setting_form changeset={@changeset} action={~p"/settings"} />
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user