[#1149] Addressed code review comments (code style, jobs pruning etc.).
[akkoma] / lib / pleroma / web / push / push.ex
index 951dab53531fd6f13c28bac7cd6eb5fdf381b853..4973b529ceec978a4fcd489a20155c00e100ca71 100644 (file)
@@ -3,44 +3,15 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.Push do
-  use GenServer
-
-  alias Pleroma.Web.Push.Impl
+  alias Pleroma.Repo
+  alias Pleroma.Workers.WebPusherWorker
 
   require Logger
 
-  ##############
-  # Client API #
-  ##############
-
-  def start_link() do
-    GenServer.start_link(__MODULE__, :ok, name: __MODULE__)
-  end
-
-  def vapid_config() do
-    Application.get_env(:web_push_encryption, :vapid_details, [])
-  end
-
-  def enabled() do
-    case vapid_config() do
-      [] -> false
-      list when is_list(list) -> true
-      _ -> false
-    end
-  end
-
-  def send(notification),
-    do: GenServer.cast(__MODULE__, {:send, notification})
-
-  ####################
-  # Server Callbacks #
-  ####################
+  import Pleroma.Workers.WorkerHelper, only: [worker_args: 1]
 
-  @impl true
-  def init(:ok) do
-    if enabled() do
-      {:ok, nil}
-    else
+  def init do
+    unless enabled() do
       Logger.warn("""
       VAPID key pair is not found. If you wish to enabled web push, please run
 
@@ -48,17 +19,24 @@ defmodule Pleroma.Web.Push do
 
       and add the resulting output to your configuration file.
       """)
-
-      :ignore
     end
   end
 
-  @impl true
-  def handle_cast({:send, notification}, state) do
-    if enabled() do
-      Impl.perform_send(notification)
+  def vapid_config do
+    Application.get_env(:web_push_encryption, :vapid_details, [])
+  end
+
+  def enabled do
+    case vapid_config() do
+      [] -> false
+      list when is_list(list) -> true
+      _ -> false
     end
+  end
 
-    {:noreply, state}
+  def send(notification) do
+    %{"op" => "web_push", "notification_id" => notification.id}
+    |> WebPusherWorker.new(worker_args(:web_push))
+    |> Repo.insert()
   end
 end