@@ -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