Skip to content

Commit ced60f8

Browse files
committed
feat: add ttl param to LocalStore
1 parent 16701bb commit ced60f8

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

lib/algora_web/local_store.ex

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)