Skip to content

Commit 9e8eecc

Browse files
committed
feat: add LocalStore on admin page
1 parent 311129b commit 9e8eecc

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed

lib/algora_web/live/admin/admin_live.ex

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ defmodule AlgoraWeb.Admin.AdminLive do
99
alias Algora.Admin.Mainthings.Mainthing
1010
alias Algora.Analytics
1111
alias Algora.Markdown
12+
alias AlgoraWeb.LocalStore
1213

1314
@impl true
1415
def mount(_params, _session, socket) do
@@ -53,7 +54,7 @@ defmodule AlgoraWeb.Admin.AdminLive do
5354
@impl true
5455
def render(assigns) do
5556
~H"""
56-
<div class="space-y-8 p-8">
57+
<div class="space-y-8 p-8" phx-hook="LocalStateStore" id="admin-page" data-storage="localStorage">
5758
<div class="text-sm text-muted-foreground">
5859
Connected from: <code class="font-mono">{@ip_address}</code>
5960
</div>
@@ -310,6 +311,21 @@ defmodule AlgoraWeb.Admin.AdminLive do
310311
"""
311312
end
312313

314+
@impl true
315+
def handle_params(_params, _uri, socket) do
316+
{:noreply,
317+
socket
318+
|> LocalStore.init(key: __MODULE__, ttl: :infinity)
319+
|> LocalStore.subscribe()}
320+
end
321+
322+
@impl true
323+
def handle_event("restore_settings", params, socket) do
324+
socket = LocalStore.restore(socket, params)
325+
326+
{:noreply, assign(socket, :query_results, execute_sql_query(socket.assigns.sql_query))}
327+
end
328+
313329
@impl true
314330
def handle_event("select_period", %{"period" => period}, socket) do
315331
{:ok, analytics} = Analytics.get_company_analytics(period)
@@ -372,13 +388,17 @@ defmodule AlgoraWeb.Admin.AdminLive do
372388

373389
@impl true
374390
def handle_event("validate_query", %{"query" => query}, socket) do
375-
{:noreply, assign(socket, :sql_query, query)}
391+
{:noreply, LocalStore.assign_cached(socket, :sql_query, query)}
376392
end
377393

378394
@impl true
379395
def handle_event("execute_query", %{"query" => query}, socket) do
380396
results = execute_sql_query(query)
381-
{:noreply, socket |> assign(:sql_query, query) |> assign(:query_results, results)}
397+
398+
{:noreply,
399+
socket
400+
|> LocalStore.assign_cached(:sql_query, query)
401+
|> assign(:query_results, results)}
382402
end
383403

384404
@impl true
@@ -393,7 +413,12 @@ defmodule AlgoraWeb.Admin.AdminLive do
393413
def handle_event("load_query", %{"name" => name}, socket) do
394414
queries = get_saved_queries()
395415
query = Map.get(queries, name)
396-
{:noreply, assign(socket, sql_query: query, new_query_name: name)}
416+
417+
{:noreply,
418+
socket
419+
|> LocalStore.assign_cached(:sql_query, query)
420+
|> LocalStore.assign_cached(:new_query_name, name)
421+
|> assign(:query_results, execute_sql_query(query))}
397422
end
398423

399424
@impl true

0 commit comments

Comments
 (0)