@@ -4,9 +4,9 @@ defmodule AlgoraWeb.LocalStore do
44
55 require Logger
66
7- defstruct [ :key , :ok? , :data , :checkpoint_url , :checkpointed? ]
7+ defstruct [ :key , :ok? , :data , :checkpoint_url , :checkpointed? , :ttl ]
88
9- defp ttl , do: Algora . config ( [ :local_store , :ttl ] )
9+ defp default_ttl , do: Algora . config ( [ :local_store , :ttl ] )
1010 defp salt ( % __MODULE__ { } = store ) , do: to_string ( store . key ) <> Algora . config ( [ :local_store , :salt ] )
1111
1212 def init ( socket , opts ) do
@@ -17,6 +17,7 @@ defmodule AlgoraWeb.LocalStore do
1717 |> Keyword . put_new ( :data , % { } )
1818 |> Keyword . put_new ( :ok? , fn _ -> true end )
1919 |> Keyword . put_new ( :checkpointed? , false )
20+ |> Keyword . put_new ( :ttl , default_ttl ( ) )
2021 )
2122
2223 assign ( socket , :_store , store )
@@ -87,14 +88,14 @@ defmodule AlgoraWeb.LocalStore do
8788 defp restore_from_token ( _store , nil ) , do: { :ok , nil }
8889
8990 defp restore_from_token ( % __MODULE__ { } = store , token ) do
90- case Phoenix.Token . decrypt ( AlgoraWeb.Endpoint , salt ( store ) , token , max_age: ttl ( ) ) do
91+ case Phoenix.Token . decrypt ( AlgoraWeb.Endpoint , salt ( store ) , token , max_age: store . ttl ) do
9192 { :ok , data } -> { :ok , :erlang . binary_to_term ( data , [ :safe ] ) }
9293 { :error , reason } -> { :error , "Failed to restore previous state. Reason: #{ inspect ( reason ) } ." }
9394 end
9495 end
9596
9697 defp serialize_to_token ( % __MODULE__ { } = store ) do
97- Phoenix.Token . encrypt ( AlgoraWeb.Endpoint , salt ( store ) , :erlang . term_to_binary ( store . data ) )
98+ Phoenix.Token . encrypt ( AlgoraWeb.Endpoint , salt ( store ) , :erlang . term_to_binary ( store . data ) , max_age: store . ttl )
9899 end
99100
100101 defp clear_browser_storage ( socket ) do
0 commit comments