diff --git a/lib/decentralised_book_index_web/live/dbi_server_live/index.ex b/lib/decentralised_book_index_web/live/dbi_server_live/index.ex index db5ef3e..df9c291 100644 --- a/lib/decentralised_book_index_web/live/dbi_server_live/index.ex +++ b/lib/decentralised_book_index_web/live/dbi_server_live/index.ex @@ -2,12 +2,21 @@ defmodule DecentralisedBookIndexWeb.DbiServerLive.Index do use DecentralisedBookIndexWeb, :live_view alias DecentralisedBookIndex.Metadata + alias DecentralisedBookIndex.SyncTasks.SyncServerTask @impl true def render(assigns) do ~H""" <.header> Listing Servers + + <:actions> +
+ <.primary_button phx-click="sync"> + Sync now + +
+
@@ -177,4 +186,32 @@ defmodule DecentralisedBookIndexWeb.DbiServerLive.Index do {:noreply, push_patch(socket, to: ~p"/servers?#{params}")} end + + @impl true + def handle_event("sync", _params, socket) do + Task.async(fn -> + SyncServerTask.sync_all() + send(self(), :sync_completed) + end) + + socket = + socket + |> put_flash(:info, "The sync is started") + + {:noreply, socket} + end + + @impl true + def handle_info({_pid, :sync_completed}, socket) do + socket = + socket + |> put_flash(:info, "The sync is done") + + {:noreply, socket} + end + + @impl true + def handle_info(_params, socket) do + {:noreply, socket} + end end